目录

. 引言
. 页表
. 结构化内存管理
. 物理内存的管理
. SLAB分配器
. 处理器高速缓存和TLB控制
. 内存管理的概念
. 内存覆盖与内存交换
. 内存连续分配管理方式
. 内存非连续分配管理方式
. 虚拟内存的概念、特征及其实现
. 请求分页管理方式实现虚拟内存
. 页面置换算法
. 页面分配策略
. 页面抖动和工作集
. 缺页异常的处理
. 堆与内存管理

0. 引言

有两种类型的计算机,分别以不同的方法管理物理内存

. UMA计算机(一致内存访问 uniform memory access)
将可用内存以连续方式组织起来,SMP系统中的每个处理器访问各个内存区都是同样快 . NUMA计算机(非一致内存访问 non-uniform memory access)
多处理器计算机,系统的各个CPU都有本地内存,可支持高速访问,各个处理器之间通过总线连接起来,以支持对其他CPU的本地内存的访问,但是跨CPU内存访问比本地CPU内存访问要慢
) 基于Alpha的WildFire服务器
) IMB的NUMA-Q计算机

aaarticlea/png;base64,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" alt="" />

0x1: (N)UMA模型中的内存组织

Linux支持的各种不同体系结构在内存管理方面差别很大,由于Linux内核良好的封装、以及其中的兼容层,这些差别被很好的隐藏起来了(下层的代码对上层是透明的),两个主要的问题是

. 页表中不同数目的间接层(向上透明的多级页表)
. NUMA和UMA系统的划分

内核对一致(UMA)和非一致(NUMA)内存访问系统使用相同的数据结构,因此针对各种不同形式的内存布局,各个算法几乎没有差别。在UMA系统上,只使用一个NUMA节点来管理整个系统内存,而内存管理的其他部分则认为它们是在处理一个只有单节点的NUMA系统(这也是Linux内核中常见的兼容思想)

aaarticlea/png;base64,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" alt="" />

上图表明了内存划分的大致情况

. 首先,内存划分为"结点",每个结点关联到系统中的一个处理器,在内核中表示为pg_data_t的实例,各个内存节点保存在一个单链表中,供内核遍历
. 各个结点又划分为"内存域",是内存的进一步划分,各个内存域都关联了一个数组,用来组织属于该内存域的物理内存页(页帧),对每个页帧,都分配一个struct page实例以及所需的管理数据
) CONFIG_ZONE_DMA ) ZONE_DMA:
ZONE_DMA is used when there are devices that are not able to do DMA to all of addressable memory (ZONE_NORMAL). Then we carve out the portion of memory that is needed for these devices. The range is arch specific.
2.1) parisc、ia64、sparc: <4G
2.2) s390: <2G
2.3) arm: Various
2.4) alpha: Unlimited or -16MB.
2.5) i386、x86_64、multiple other arches: <16M.
ZONE_DMA标记适合DMA的内存域,该区域的长度依赖于处理器类型,在IA-32计算机上,一般的限制是16MB,这是古老的ISA设备强加的边界,但更现代的计算机也可能受这个限制的影响 ) CONFIG_ZONE_DMA32 ) ZONE_DMA32:
x86_64 needs two ZONE_DMAs because it supports devices that are only able to do DMA to the lower 16M but also bit devices that can only do DMA areas below 4G.
ZONE_DMA32标记了使用32位地址字可寻址、适合DMA的内存域。显然,只有在64位系统上两种DMA内存域上才有差别,在32位计算机上,这个内存域是空的,即长度为0MB,在Alpha和AMD64系统上,该内存域的长度可能从0到4GB ) ZONE_NORMAL
Normal addressable memory is in ZONE_NORMAL. DMA operations can be performed on pages in ZONE_NORMAL if the DMA devices support transfers to all addressable memory.
ZONE_NORMAL标记了可直接映射到内核段的普通内存域,这是在所有体系结构上保证都会存在的唯一内存域,但无法保证该地址范围对应了实际的物理内存,例如
. 如果AMD64系统有2GB内存,那么所有内存都属于ZONE_DMA32,而ZONE_NORMAL则为空 ) CONFIG_HIGHMEM ) ZONE_HIGHMEM
A memory area that is only addressable by the kernel through mapping portions into its own address space. This is for example used by i386 to allow the kernel to address the memory beyond 900MB. The kernel will set up special mappings (page table entries on i386) for each page that the kernel needs to access.
ZONE_HIGHMEM标记了超出内核段的物理内存 ) ZONE_MOVABLE
) __MAX_NR_ZONES
) 对可用于(ISA设备的)DMA操作的内存区是有限制的,只有前16MB可用
) 通用的"普通"内存区
) 高端内存区域无法直接映射

内核引入了下列常量来枚举系统中的所有内存域
\linux-2.6.32.63\include\linux\mmzone.h

enum zone_type
{
#ifdef CONFIG_ZONE_DMA
/*
* ZONE_DMA is used when there are devices that are not able to do DMA to all of addressable memory (ZONE_NORMAL). Then we carve out the portion of memory that is needed for these devices.
* The range is arch specific.
*
* Some examples
*
* Architecture Limit
* ---------------------------
* parisc, ia64, sparc <4G
* s390 <2G
* arm Various
* alpha Unlimited or 0-16MB.
*
* i386, x86_64 and multiple other arches <16M. ZONE_DMA标记适合DMA的内存域,该区域的长度依赖于处理器类型,在IA-32计算机上,一般的限制是16MB,这是古老的ISA设备强加的边界,但更现代的计算机也可能受这个限制的影响
*/
ZONE_DMA,
#endif
#ifdef CONFIG_ZONE_DMA32
/*
* x86_64 needs two ZONE_DMAs because it supports devices that are only able to do DMA to the lower 16M but also 32 bit devices that can only do DMA areas below 4G. ZONE_DMA32标记了使用32位地址字可寻址、适合DMA的内存域。显然,只有在64位系统上两种DMA内存域上才有差别,在32位计算机上,这个内存域是空的,即长度为0MB,在Alpha和AMD64系统上,该内存域的长度可能从0到4GB
*/
ZONE_DMA32,
#endif
/*
* Normal addressable memory is in ZONE_NORMAL. DMA operations can be performed on pages in ZONE_NORMAL if the DMA devices support transfers to all addressable memory. ZONE_NORMAL标记了可直接映射到内核段的普通内存域,这是在所有体系结构上保证都会存在的唯一内存域,但无法保证该地址范围对应了实际的物理内存,例如
1. 如果AMD64系统有2GB内存,那么所有内存都属于ZONE_DMA32,而ZONE_NORMAL则为空
*/
ZONE_NORMAL,
#ifdef CONFIG_HIGHMEM
/*
* A memory area that is only addressable by the kernel through mapping portions into its own address space.
* This is for example used by i386 to allow the kernel to address the memory beyond 900MB.
* The kernel will set up special mappings (page table entries on i386) for each page that the kernel needs to access. ZONE_HIGHMEM标记了超出内核段的物理内存
*/
ZONE_HIGHMEM,
#endif
//内核定义了一个伪内存域ZONE_MOVABLE,在防止物理内存碎片的机制中需要使用该内存域
ZONE_MOVABLE,
//__MAX_NR_ZONES充当结束标记,在内核想要迭代系统中的所有内存区域时,会用到该常量
__MAX_NR_ZONES
};

根据编译时的配置,可能无须考虑某些内存域,例如

. 在64位系统中,并不需要高端内存域
. 如果支持了只能访问4GB以下内存的32位外设外,才需要DMA32内存域

处于性能考虑,在为进程分配内存时,内核总是试图在当前运行的CPU相关联的NUMA结点上进行(UMA只有一个结点)。但这并不总是可行的,例如,该结点的内存可能已经用尽,对这个情况,每个节点都提供了一个备用列表(借助struct node_zonelists),该列表包含了其他结点(和相关的内存域),可用于代替当前结点分配内存,列表项的位置越靠后,就越不适合分配

0x2: 数据结构

1. 结点管理

pg_date_t用于表示结点的基本元素

http://www.cnblogs.com/LittleHann/p/3865490.html
//搜索:0x3: struct pg_data_t

2. 结点状态管理

如果系统中结点多于一个(NUMA),内核会维护一个位图,用于提供各个结点的状态信息,状态是用位掩码指定的,可使用下列值
\linux-2.6.32.63\include\linux\nodemask.h

/*
* Bitmasks that are kept for all the nodes.
*/
enum node_states
{
/*
The node could become online at some point
结点在某个时刻可能变为联机
*/
N_POSSIBLE, /*
The node is online
结点是联机的
*/
N_ONLINE, /*
The node has regular memory
结点有普通内存域
*/
N_NORMAL_MEMORY,
#ifdef CONFIG_HIGHMEM
/*
The node has regular or high memory
结点有普通、或高端内存域 如果结点有普通或高端内存则使用N_HIGH_MEMORY,否则使用N_NORMAL_MEMORY
*/
N_HIGH_MEMORY,
#else
N_HIGH_MEMORY = N_NORMAL_MEMORY,
#endif
/*
The node has one or more cpus
结点有一个、或多个CPU
*/
N_CPU,
NR_NODE_STATES
};

状态N_POSSIBLE、N_ONLINE、N_CPU用于CPU和内存的热插拔。对内存管理有必要的标志是N_HIGH_MEMORY、N_NORMAL_MEMORY

两个辅助函数用来设置或清除位域或特定结点中的一个比特位
\linux-2.6.32.63\include\linux\nodemask.h

static inline void node_set_state(int node, enum node_states state)
{
__node_set(node, &node_states[state]);
}
static inline void node_clear_state(int node, enum node_states state)
{
__node_clear(node, &node_states[state]);
} //宏for_each_node_state用来迭代处于特定状态的所有结
#define for_each_node_state(__node, __state) \
for_each_node_mask((__node), node_states[__state])

如果内核编译为只支持单个结点(平坦内存模型),则没有结点位图,上述操作该位图的函数则变为空操作

3. 内存域

内存划分为"结点",每个结点关联到系统中的一个处理器,各个结点又划分为"内存域",是内存的进一步划分

http://www.cnblogs.com/LittleHann/p/3865490.html
//搜索:0x4: struct zone

4. 冷热页

struct zone的pageset成员用于实现冷热页分配器(hot-n-cold allocator),在多处理器系统上每个CPU都有一个或多个高速缓存,各个CPU的管理必须是独立的

尽管内存域可能属于一个特定的NUMA结点,因而关联到某个特定的CPU,但其他CPU的高速缓存仍然可以包含该内存域中的页。实际上,每个处理器都可以访问系统中所有的页,尽管速度不同。因此,特定于内存域的数据结构不仅要考虑到所属NUMA结点相关的CPU,还必须考虑到系统中其他的CPU

pageset是一个数组,其容量与系统能够容纳的CPU数目的最大值相同,并不是系统中实际存在的CPU数目

struct zone
{
..
struct per_cpu_pageset pageset[NR_CPUS];
..
}
//NR_CPUS是一个可以在编译时配置的宏常数,在单处理器系统上其值总是1,针对SMP系统编译的内核中,其值可能在2~32/64(在64位系统上是64)之间

struct per_cpu_pageset

struct per_cpu_pageset
{
/*
pcp[0]: 热页
pcp[1]: 冷夜
*/
struct per_cpu_pages pcp;
#ifdef CONFIG_NUMA
s8 expire;
#endif
#ifdef CONFIG_SMP
s8 stat_threshold;
s8 vm_stat_diff[NR_VM_ZONE_STAT_ITEMS];
#endif
} ____cacheline_aligned_in_smp; struct per_cpu_pages
{
/*
number of pages in the list
列表中页数,count记录与该列表相关的页的数目
*/
int count; /*
high watermark, emptying needed
页数上限水印,在需要的情况下清空列表,如果count的值超过了high,则表明列表中的页太多了,对容量过低的状态没有显式使用水印,如果列表中没有成员,则重新填充
*/
int high; /*
chunk size for buddy add/remove
如果可能,CPU的高速缓存不是用单个页来填充的,而是用多个页组成的块,batch添加/删除多页块的时候,块的大小(即页数)的参考值
*/
int batch; /*
Lists of pages, one per migrate type stored on the pcp-lists 页的链表
lists是一个双链表,保存了当前CPU的冷页或热页,可使用内核的标准方法处理
*/
struct list_head lists[MIGRATE_PCPTYPES];
};

下图说明了在双处理器系统上per-CPU缓存的数据结构是如何填充的

aaarticlea/png;base64,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" alt="" />

5. 页帧

页帧代表系统内存的最小单位,对内存中的每个页都会创建struct page的一个实例,内核需要保证该结构尽可能小,否则可能会出现"内存描述元信息占用了大量内存"的情况,在典型的系统中,由于页的数目巨大,因此对struct page结构的小的改动,也可能导致保存所有page实例所需的物理内存暴涨

http://www.cnblogs.com/LittleHann/p/3865490.html
//搜索:0x5: struct page

在安全攻防产品的研发中,我们会大量用到cache的机制。在学习和使用cache缓存的时候,经常会遇到cache的更新和替换的问题,如何有效对cache进行清理、替换,同时要保证cache在清理后还要保持较高的命中率。通过对比我们发现,操作系统的内存管理调度策略和cache的动态更新策略本质是类似的,通过学习操作系统的内存管理策略,我们可以得到很多关于cache更新的策略思想

Relevant Link:

https://www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=27&ved=0CDwQFjAGOBQ&url=%68%74%74%70%3a%2f%2f%6f%61%2e%70%61%70%65%72%2e%65%64%75%2e%63%6e%2f%66%69%6c%65%2e%6a%73%70%3f%75%72%6c%74%69%74%6c%65%3d%25%45%36%25%39%36%25%38%37%25%45%34%25%42%42%25%42%36%43%61%63%68%65%25%45%38%25%38%37%25%41%41%25%45%39%25%38%30%25%38%32%25%45%35%25%42%41%25%39%34%25%45%37%25%41%44%25%39%36%25%45%37%25%39%35%25%41%35%25%45%37%25%41%30%25%39%34%25%45%37%25%41%39%25%42%36&ei=veo1VN_RJZfj8AWBnoCACQ&usg=AFQjCNHVjRFlRvV-0O1tYyb4Inv33Pop4A&bvm=bv.76943099,d.dGc&cad=rjt
http://www.cnblogs.com/hanyan225/archive/2011/07/28/2119628.html

1. 页表

页表寻址和传统的(DOS时代)的线性寻址的好处在于

. 页表用于建立用户进程的虚拟地址空间和系统物理内存(页帧)之间的关联
. 页表用于向每个进程提供一致的虚拟地址空间,应用程序看到的地址空间是一个连续的内存区
. 页表也将虚拟内存页映射到物理内存,因而支持共享内存的实现(同一个物理页同时映射到不同进程的虚拟地址空间)
. 层次化的页表用于支持对大地址空间的快速、高效的管理
. 可以在不额外增加物理内存的情况下,将页换出到块设备来增加有效的可用内存空间,即将进程中某些不常用的虚拟内存进行"解关联",将对应的页表映射删除,从而释放出这部分物理内存,让其他进程可以用于映射

内核内存管理总是"假定"使用四级页表,而不管底层处理器是否如此,在IA-32系统中,该体系结构只使用两级分页系统(在不使用PAE扩展的情况下),因此,第三、第四级页表必须由特定于体系结构的代码模拟,页表管理分为两个部分

. 第一部分依赖于体系结构: 所有数据结构和操作数据结构的函数都是定义在特定于体系结构的文件中
. 第二部分是体系结构无关的
//需要注意的一点是,在Linux内核中,内存管理和体系结构的关联很密切

0x1: 数据结构

1. 内存地址的分解

根据四级页表结构的需要,虚拟内存地址分为5个部分(4个表项用于选择页、1个索引表示页内位置)。各个体系结构不仅地址字长度不同,而且地址字拆分的方式也不同,因此内核定义了宏,用于将地址分解为各个分量

aaarticlea/png;base64,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" alt="" />

BITS_PER_LONG定义用于unsigned long变量的比特位数目,因此也适用于用于指向虚拟地址空间的通用指针,需要明白的是,在不同的体系结构下,这个"BITS_PER_LONG"长度是不同的,以及用于各级页表的地址分隔长度也是不同的

. PGD
. PUD: PGDIR_SHIFT由PUD_SHIFT加上上层页表索引所需的比特位长度,对全局页目录中的一项所能寻址的的部分地址空间长度: (PGDIR_SHIFT)次方
. PMD: PUD_SHIFT由PMD_SHIFT加上中间层页表索引所需的比特位长度
. PTE: PMD_SHIFT指定了业内偏移量和最后一项页表项所需比特位的总数,该值减去PAGE_SHIFT,可得最后一项页表项索引所需比特位的数目。同时PMD_SHIFT表明了一个中间层页表项管理的部分地址空间的大小: (PMD_SHIFT)次方字节
. Offset: 每个指针末端的几个比特位,用于指定所选页帧内部的位置,比特位的具体数目由PAGE_SHIFT指定(通过位移+掩码的形式来进行分段)

在各级页目录/页表中所能存储的指针数目,也可以通过宏定义确定

. PTRS_PER_PGD: 指定了全局页目录中项的数目
. PTRS_PER_PUD: 对应于上层页目录中项的数目
. PTRS_PER_PMD: 对应于中间页目录
. PTRS_PER_PTE: 页表中项的数目
/*
我们知道,Linux的四级页表实现是向下兼容的,即在两级页表的体系结构中,会将PTRS_PER_PMD、PTRS_PER_PTE定义为1,这使得内核的剩余部分感觉该体系结构也提供了四级页表转换结构
*/

值2(N)次方的计算很容易通过从位置0左移n位计算而得到,同时Linux的内核的内存页管理的基本单位都是以2为底

2. 页表的格式

内核提供了4中数据结构,用来表示页表项的结构
\linux-2.6.32.63\include\asm-generic\page.h

/*
These are used to make use of C type-checking..
*/
. pgd_t: 全局页目录项
typedef struct
{
unsigned long pgd;
} pgd_t; pmd_t: 中间页目录项
typedef struct
{
unsigned long pmd[];
} pmd_t; . pte_t: 直接页表项
typedef struct
{
unsigned long pte;
} pte_t; pgprot_t:
typedef struct
{
unsigned long pgprot;
} pgprot_t;
typedef struct page *pgtable_t;

内核同时还提供了用于分析页表项的标准函数,根据不同的体系结构,一些函数可能实现为宏而另一些则实现为内联函数

...
#define pgd_val(x) ((x).pgd) //将pte_t等类型的变量转换为unsigned long
#define pmd_val(x) ((&x)->pmd[0])
#define pte_val(x) ((x).pte)
#define pgprot_val(x) ((x).pgprot) #define __pgd(x) ((pgd_t) { (x) } ) //pgd_val等函数的逆,将unsigned long整数转换为pgd_t等类型的变量
#define __pmd(x) ((pmd_t) { (x) } )
#define __pte(x) ((pte_t) { (x) } )
#define __pgprot(x) ((pgprot_t) { (x) } )
...

PAGE_ALIGN是每种体系结构都必须定义的标准宏,它需要一个地址作为参数,并将地址"舍入"到下一页的起始处,即总是返回页的整倍数。为了用好处理器的高速缓存资源,将地址对齐到页边界是很重要的

从某种程度上来说,四级页表的索引是体现(基于)对内存地址的分段索引之上的,即将一个内存地址切成几段,每一段分别代表不同层次的索引信息

3. 特定于PTE的信息

最后一级页表中的项不仅包含了指向页的内存位置的指针,还在多余比特位包含了与页有关的附加信息,尽管这些数据是特定于CPU的,但是它们提供了有关"页访问控制"的一些信息

. _PAGE_PRESENT
指定了虚拟内存页是否存在于内存中,因为页可能被换出到交换区
) 如果页不在内存中,那么页表项的结构通常会有所不同,因为不需要描述页在内存中的位置
) 如果页存在于内存中,就需要信息来标识并找到换出的页 . _PAGE_ACCESSED
CPU每次访问页时,会自动设置_PAGE_ACCESSED,内核会定期检查该比特位,以确认页使用的活跃程序(不经常使用的页,比较适合换出)。在读或写访问之后会设置该比特位 . _PAGE_DIRTY
表示该页是否是"脏的",即页的内容是否已经被修改过 . _PAGE_FILE
数值和_PAGE_DIRTY相同,但用于不同的上下文,即页不在内存中的时候,显然不存在的页不可能是脏的(因为它不可能被进程修改),因此可以重新解释该比特位
) 如果没有设置,则该项指向一个换出页的位置
) 如果该项属于非线性文件映射,则需要设置_PAGE_FILE . _PAGE_USER
如果设置了_PAGE_USER,则允许用户空间代码访问该页,否则只有内核才能访问(或CPU处于系统状态的时候) . _PAGE_READ、_PAGE_WRITE、_PAGE_EXECUTE
指定了普通的用户进程是否允许读取、写入、执行该页中的机器代码
//内核内存中的页必须防止用户进程写入,对于访问权限粒度不是非常细的体系结构而言,如果没有进一步的准则可以区分读写访问权限,则会定义_PAGE_RW常数,用于同时允许或禁止读写访问 . _PAGE_BIT_NX
IA-、AMD64提供了_PAGE_BIT_NX,用于将页标记为"不可执行"的(在IA-32系统上,只有启用了"可寻址64GB内存的页面地址扩展(page address extension PAE)"时,才能使用该保护位)。它可以有效防止执行栈页上的代码,否则,恶意代码可能通过缓冲区溢出手段在栈上执行代码,导致程序的安全漏洞 . __pgprot、pte_modidy()
每个体系结构都必须提供两个东西,使得内存管理子系统能够修改pte_t项中额外的比特位
) 保存额外的比特位的__pgprot数据结构
) 以及修改这些比特位的pte_modidy()函数

内核还定义了各种函数,用于查询和设置内存页与体系结构相关的状态,某些处理器可能缺少对一些给定特性的硬件支持,因此并非所有的处理器都定义了所有函数
\linux-2.6.32.63\arch\x86\include\asm\pgtable.h

. pte_present: 检查页表项指向的页是否存在于内存中,该函数可以用于检测一页是否已经换出
. pte_read: 从用户空间是否可以读取该页
. pte_write: 检查内核是否可以写入到该页
. pte_exec: 检查该页中的数据是否可以作为二进制代码执行
. pte_dirty: 检查与页表项相关的页是否是脏的,即其内容在上次内核检查之后是否以已经修改过,需要注意的是,只有在pte_present确认了该页可用的情况下(即存在于内存中),才能调用该函数
. pte_file: 用于非线性映射,通过操作页表提供了文件内容的一种不同视图,该函数检查页表项是否属于这样的一个映射,要注意的是,只有在pte_present返回false时,才能调用pte_file,即与该页表项相关的页不再内存中
. pte_young: 访问位(通常是_PAGE_ACCESSED)是否设置
. pte_rdprotect: 清除该页的读权限
. pte_wrprotect: 清除该页的写权限
. pte_exprotect: 清除执行该页中的二进制数据的权限
. pte_mkread: 设置读权限
. pte_mkwrite: 设置写权限
. pte_mkexec: 允许执行页的内容
. pte_mkdirty: 将页标记为脏
. pte_mkclean: "清除"页,通常指清除_PAGE_DIRTY位
. pte_mkyoung: 设置访问位,在大多数体系结构上是_PAGE_ACCESSED
. pte_mkold: 清除访问位
//这些函数经常分为3组,分别用于设置、删除、查询某个特定的属性

0x2: 页表项的创建和操作

下列为用于创建新页表项的所有函数
\linux-2.6.32.63\arch\x86\include\asm\pgtable.h

. mk_pte
#define mk_pte(page, pgprot) pfn_pte(page_to_pfn(page), (pgprot))
创建一个页表项,必须将page实例和所需的页访问权限(__pgprot)作为参数传递
. pte_page
#define pte_page(pte) pfn_to_page(pte_pfn(pte))
获得页表项描述的页对应的page实例地址
. pte_alloc
. pte_free
. set_pte . pgd_alloc
\linux-2.6.32.63\arch\x86\mm\pgtable.c
分配并初始化一个可容纳完整页表的内存
. pgd_free: 释放页表占据的内存
. set_pgd: 设置页表中某项的值 . pud_alloc
. pud_free
. set_pud . pmd_alloc
. pmd_free
. set_pmd

2. 结构化内存管理

在内存管理的上下文中,初始化(initiation)可以有多种含义,在许多CPU上,必须显示设置适合Linux内核的内存模型(例如在IA-32系统上需要切换到保护模式,然后内核才能检测可用内存和寄存器)。在初始化过程中,还必须建立内存管理的数据结构,以及其他很多事务。因为内核在内存管理完全初始化之前就需要使用内存,在系统启动过程期间,使用了一个额外的简化形式的内存管理模块,然后又丢弃掉

0x1: 建立数据结构

对相关数据结构的初始化是从全局启动例程start_kernel中开始的,该例程在加载内核并激活各个子系统之后执行,由于内存管理是内核一个非常重要的部分,因此在特定于体系结构的设置步骤中检测内存并确定系统中内存的分配情况后,会立即执行内存管理的初始化。此时,已经对各种系统内存模式生成了一个pgdat_t实例,用于保存诸如"结点中内存数量"以及内存在各个"内存域"之间分配情况的信息。所有平台都实现了特定于体系结构的NODE_DATA宏,用于通过结点编号查询与一个NUMA结点相关的pgdat_t实例

1. 先决条件

由于大部分系统都只有一个"内存结点",为了确保内存管理代码是可移植的(同样可以适用于UMA和NUMA系统),内核在"\linux-2.6.32.63\mm\page_alloc.c"中定义了一个pg_data_t实例管理所有的物系统内存,这不是特定于CPU的实现,大多数体系结构都采用了该方案

linux-2.6.32.63\arch\x86\include\asm\mmzone_64.h
#define NODE_DATA(nid) (node_data[nid]) \linux-2.6.32.63\arch\m32r\mm\discontig.c
struct pglist_data *node_data[MAX_NUMNODES];
EXPORT_SYMBOL(node_data);

尽管该宏有一个形式参数用于选择NUMA结点,但在UMA系统中只有一个伪结点,因此总是返回同样的数据。内核也可以依赖于下述事实: 体系结构相关的初始化代码将"MAX_NUMNODES"设置为系统中结点的数目,在UMA系统上因为只有一个(形式上的)结点,因此该值总是1,在编译期间,预处理器会为特定的配置选择正确的值

2. 系统启动

下图给出的start_kernel的代码流程图,其中包括了与内存管理相关的系统初始化函数

aaarticlea/png;base64,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" alt="" />

. setup_arch
特定于体系结构的设置函数,其中一项任务是负责初始化自举分配器 . setup_per_cpu_areas
) 在SMP系统上,setup_per_cpu_areas初始化源代码中定义的静态per-cpu变量,这种变量对系统中的每个CPU都有一个独立的副本(这类变量保存在内核二进制映像的一个独立的段中),setup_per_cpu_areas的目的是为系统的各个CPU分别创建一份这些数据的副本
) 在非SMP系统上,该函数是一个空操作 . build_all_zonelists
建立"结点"和"内存域"的数据结构 . mem_init
另一个特定于体系结构的函数,用于停用bootmem分配器并迁移到实际的内存管理函数 . setup_per_cpu_pageset
为"strcut zone->struct per_cpu_pageset pageset[NR_CPUS]"数组的第一个数组元素分配内存。分配第一个数组元素,即意味着为第一个系统处理器分配,系统的所有内存域都会考虑进来
该函数还负责设置冷热分配器的限制
//SMP系统上对应于其他CPU的pageset数组成员,将会在相应的CPU激活时初始化

3. 结点和内存域初始化

build_all_zonelists建立管理结点及其内存域所需的数据结构,该函数可以通过内核的宏和抽象机制实现,而不用考虑具体的NUMA或UMA系统,因为执行的函数实际上有两种形式,一种用于NUMA系统,另一种用于UMA系统。Linux内核经常采用这种技术

#ifdef CONFIG_WORK_HARD
void do_work()
{
//start
}
#else
void do_work()
{
//stop
}
#endif

\linux-2.6.32.63\mm\page_alloc.c

void build_all_zonelists(void)
{
/*
在当前处理的结点和系统中其他结点的内存域之间建立一种等级次序,接下来,依据这种次序分配内存
考虑下面的例子
内核想要分配高端内存,它首先试图在当前结点的高端内存域找到一个大小适当的空闲段,如果失败,则查看该节点的普通域,如果还失败,则试图在该结点的DMA内存域执行分配
如果在3个本地内存域都无法找到空闲内存,则查看其他结点,在这种情况下,备选结点应该尽可能靠近主结点,以最小化由于访问非本地内存引起的性能损失 内核将内存域分为层次结构,首先试图分配"廉价的"内存,如果失败,则根据访问速度和容量,逐渐尝试分配"更昂贵的"内存
1. 高端内存是最"廉价的",因为内核没有部分依赖于从该内存域分配的内存,如果高端内存域用尽,对内核没有任何副作用,这也是优先分配高端内存的原因
2. 普通内存域的情况有所不同,许多内核数据结构必须保存在该内存域,而不能放置到高端内存域。因此如果普通内存完全用尽,那么内核会面临紧急情况,所以只要高端内存域的内存域没有用尽,都不会从普通内存域分配内存
3. 最昂贵的是DMA内存域,因为它用于外设和系统之间的数据传输,因此从该内存域分配内存是最后一招(一般情况下不会从DMA中分配内存)
*/
set_zonelist_order(); if (system_state == SYSTEM_BOOTING)
{
__build_all_zonelists(NULL);
mminit_verify_zonelist();
cpuset_init_current_mems_allowed();
}
else
{
/* we have to stop all cpus to guarantee there is no user of zonelist */
stop_machine(__build_all_zonelists, NULL, NULL);
/* cpuset refresh routine should be here */
}
vm_total_pages = nr_free_pagecache_pages();
/*
* Disable grouping by mobility if the number of pages in the
* system is too low to allow the mechanism to work. It would be
* more accurate, but expensive to check per-zone. This check is
* made on memory-hotadd so a system can start with mobility
* disabled and enable it later
*/
if (vm_total_pages < (pageblock_nr_pages * MIGRATE_TYPES))
page_group_by_mobility_disabled = ;
else
page_group_by_mobility_disabled = ; printk("Built %i zonelists in %s order, mobility grouping %s. "
"Total pages: %ld\n",
nr_online_nodes,
zonelist_order_name[current_zonelist_order],
page_group_by_mobility_disabled ? "off" : "on",
vm_total_pages);
#ifdef CONFIG_NUMA
printk("Policy zone: %s\n", zone_names[policy_zone]);
#endif
}
//将所有工作都委托给__build_all_zonelists /* non-NUMA variant of zonelist performance cache - just NULL zlcache_ptr */
static void build_zonelist_cache(pg_data_t *pgdat)
{
pgdat->node_zonelists[].zlcache_ptr = NULL;
} #endif /* CONFIG_NUMA */ /* return values int ....just for stop_machine() */
static int __build_all_zonelists(void *dummy)
{
int nid; #ifdef CONFIG_NUMA
memset(node_load, , sizeof(node_load));
#endif
//对系统中的各个NUMA结点分别调用build_zonelists
for_each_online_node(nid)
{
     //pg_data_t *pgdat包含了结点内存配置的所有现存信息,且新建的数据机构也会放置在其中
pg_data_t *pgdat = NODE_DATA(nid); build_zonelists(pgdat);
build_zonelist_cache(pgdat);
}
return ;
}

build_zonelists(pgdat);

static void build_zonelists(pg_data_t *pgdat)
{
int node, local_node;
enum zone_type j;
struct zonelist *zonelist; local_node = pgdat->node_id; zonelist = &pgdat->node_zonelists[];
j = build_zonelists_node(pgdat, zonelist, , MAX_NR_ZONES - ); /*
* Now we build the zonelist so that it contains the zones
* of all the other nodes.
* We don't want to pressure a particular node, so when
* building the zones for node N, we make sure that the
* zones coming right after the local ones are those from
* node N+1 (modulo N)
*/
//迭代所有的结点内存域,每个循环在node_zonelist数组中找到第i个zonelist,对第i个内存域计算备用列表
for (node = local_node + ; node < MAX_NUMNODES; node++)
{
if (!node_online(node))
continue;
//实际工作委托给build_zonelists_node
j = build_zonelists_node(NODE_DATA(node), zonelist, j, MAX_NR_ZONES - );
}
for (node = ; node < local_node; node++)
{
if (!node_online(node))
continue;
j = build_zonelists_node(NODE_DATA(node), zonelist, j, MAX_NR_ZONES - );
} zonelist->_zonerefs[j].zone = NULL;
zonelist->_zonerefs[j].zone_idx = ;
}

build_zonelists_node

/*
* Builds allocation fallback zone lists.
*
* Add all populated zones of a node to the zonelist.
*/
/*
备用列表的各项是根据zone_type参数排序的,该参数指定了最优选择哪个内存域,该参数的初始值是外层循环的控制变量i,我们知道其值可能是
1. ZONE_HIGHMEM
2. ZONE_NORMAL
3. ZONE_DMA / ZONE_DMA32 nr_zones表示从备用列表中的哪个位置开始填充新项,由于列表中尚没有项,因此调用者传递了0
*/
static int build_zonelists_node(pg_data_t *pgdat, struct zonelist *zonelist, int nr_zones, enum zone_type zone_type)
{
struct zone *zone; BUG_ON(zone_type >= MAX_NR_ZONES);
zone_type++; do
{
//在每一步结束时,都将内存域类型减一,即设置为一个更"昂贵"的内存域类型(例如从ZONE_HIGHMEM -> ZONE_NORMAL -> ZONE_DMA)
zone_type--;
zone = pgdat->node_zones + zone_type;
if (populated_zone(zone))
{
zoneref_set_zone(zone,
&zonelist->_zonerefs[nr_zones++]);
check_highest_zone(zone_type);
} } while (zone_type);
return nr_zones;
}

0x2: 特定于体系结构的设置

在IA-32系统上内存管理的初始化在一些细节方面非常微秒,其中必须克服一些与处理器体系结构相关的问题,例如

. 将处理器从普通模式切换到保护模式
. 授予CPU访问32位地址空间的权限
. 兼容16位8086处理器
. 分页在默认情况下没有启用,必须手动激活,这涉及处理器的CR0寄存器

1. 内核在内存中的布局

在学习各个具体的内存初始化操作之前,我们先来学习启动装载程序将内核复制到内存,而初始化例程的汇编程序部分也已经执行完毕后,此时内存中的具体布局,内核被装载到物理内存中的一个固定位置,该位置在编译时确定,配置选项PHYSICAL_START用于确定内核在内存中的位置,会受到配置选项PHYSICAL_ALIGN设置的物理对齐方式的影响

aaarticlea/png;base64,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" alt="" />

.  ~ 0x1000(4KB): 第一个页帧,一般会忽略,以为通常保留给BIOS使用
. 0x1000 ~ 0x9c80(640KB): 原则上是可用的,但也不用于内核加载,原因是该区域之后紧邻的区域由系统保留,用于映射各种ROM(通常是系统BIOS和显卡ROM),不可能向映射ROM的区域写入数据。但内核总是会装载到一个连续的内存区中,如果要从4KB处作为起始位置来装载内核映像,则要求内核必须小于640KB
. 0x9c80 ~ 0x100000: 可用内存区域
. 0x100000 ~ end: 为了解决内核加载的问题,IA-32内核使用0x100000作为起始地址,从此处开始,有足够的连续内存区,可容纳整个内核,内核占据的内存分为几个段,其边界保存在变量中
) _text ~ _etext: 内核代码段的起始和结束地址,包含了编译后的内核代码
) _etext ~ _edata: 数据段,保存了大部分内核变量
) _edata ~ _end: 初始化数据在内核启动过程结束后不再需要(例如,包含初始化为0的所有静态全局变量的BSS段),保存在最后一段,在内核初始化完成后,其中的大部分数据都可以从内存删除,给应用程序留出更多空间
//准确的数值依内核配置而异,因为每种配置的代码段和数据段长度都不相同,这取决于启动和禁用了内核的哪些部分,只有起始地址(_text)是相同的

每次编译内核时,都生成一个文件System.map并保存在源码目录下,其中包括了

. 全局变量
. 内核定义的导出函数
. 例程函数地址
. 内存分段常数的值
) _text
) _etext
) _edata
) _end
// /proc/iomem也提供了有关物理内存划分的各个段的一些信息

2. 初始化步骤

在内核已经载入内存、而初始化的汇编程序部分已经执行完毕后,内核必须执行一些特定于系统的步骤

aaarticlea/png;base64,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" alt="" />

. machine_specific_memory_setup
创建一个列表,包括系统占据的内存区和空闲内存区,BIOS提供的映射给出了在这种情况下使用的各个内存区,在系统启动时,找到的内存区由内核函数print_memory_map显示
dmesg
BIOS-provided physical RAM map:
BIOS-e820: - 000000000009ec00 (usable)
BIOS-e820: 000000000009ec00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000dc000 - (reserved)
BIOS-e820: - 000000007fee0000 (usable)
BIOS-e820: 000000007fee0000 - 000000007feff000 (ACPI data)
BIOS-e820: 000000007feff000 - 000000007ff00000 (ACPI NVS)
BIOS-e820: 000000007ff00000 - (usable)
BIOS-e820: 00000000f0000000 - 00000000f8000000 (reserved)
BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
BIOS-e820: 00000000fffe0000 - (reserved) . parse_cmdline_early
分析命令行,从本质上来讲,内核也是一个进程,需要被链接进系统中,载入内核映像的时候也有参数传入,例如
) mem=XXX[KkmM]
) highmem=XXX[KkmM]
) memmap=XXX[KkmM]
如果内核计算的值或BIOS提供的值不正确,管理员可以修改可用内存的数量或手工划定内存区 . setup_memory
) 确定(每个结点)可用的物理内存页的数目
) 初始化bootmem分配器
) 分配各种内存区,例如运行第一个用户空间过程所需的最初的RAM磁盘 . paging_init
初始化内核页表并启用内存分页,因为IA-32计算机上默认情况下分页是禁用的,如果内核编译了PAE支持,而且处理器也支持Execute Disabled Protection,则启用该特性
) pagetable_init: 该函数确保了直接映射到内核地址空间的物理内存被初始化,低端内存中的所有页帧都直接映射到PAGE_OFFSET之上的虚拟内存区,这使得内核无需处理页表,即可寻址相当一部分可用内存 . zone_sizes_init
初始化系统中所有结点pgdat_t实例
) add_active_range: 对可用的物理内存建立一个相对简单的列表
) free_area_init_nodes: 这是体系结构无关的函数,建立完备的内核数据结构

3. 分页机制的初始化

我们知道,paging_init负责建立只能用于内核的页表,用于空间无法访问,这对管理用户态应用程序和内核访问内存的方式有深远的影响
\linux-2.6.32.63\arch\x86\mm\init_32.c
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZMAAAF7CAIAAACYafHZAAAgAElEQVR4nOy9X2hcSXY/bhYzoJ1dRDahYR40LKHxiyY/CO03fScJaSdhkRzYvR3jDULeGXQlJkFWvIHbOIaVhJNdXQkv2fZ6k3DbMCFuxWuyvjjDrDt+GOh1niItyaZZDUkQ85AJ3A1MXvrFebn3+3C+fX6nz6mqW/dPt1qz/jyIq6pTp06dqvp0Vd2quueSl3iJl3iJs4Zzp23AS7zES7xEZrxkrpd4iZc4e3jJXC/xEi9x9vCSuV7iJV7i7GGEuf73f//3ThruDQHPNEQCY7/zne/I2CAI3n333Tt37vzlX/7luxo8ePDg4cOH+O9Dazx58gQfnjx58v777z8Z4tmzZ8+ePXv//fef6fHjH/84ViFJEvZQHOB8XTiLwhD6UNCecptUkbxyWM4edLkoY2PivVNE1lKn+kTqzJSLNCwhfp4SjDDXz372s1qt5vu+7/tBEMBfgC+gC/d9f2tryxsFhMODp4Lrup7nbWxs4L9Z4QwhQyDQSUN9iFqtVqvVoihS1laO6k9Gu4euKZg1MEmpPNWAybQ8aUzW3HUew2dWRkvlSocnp81c9s3JXtJe2KBBaefk/JIGBXOFduj3+/1+PwzDXq+HITphGxmJIAjYQ6ZUhhxpoBTwPK9SqSBzZW06qe3A0AJkQpZ7MtqGsrY/e0tyg/mqoA0GHxocotSgjEo1YKzI0IysUVwzNY9qOwUH6ZGfuRC9Xs/MLJl4xx6WJEjpFZOY03qeV61Woyiiw67cDYh5XDYOQ2uTAvLB3PjMGEeLjAUdmLMw22wulNJF8UvmKoO58JkGTg/SmSuVIPKNp6YZrutWKhWYwAZBQGu0SIPQNQ57eZoKn1k4k8d/ZRKl8uKQCrPmQg02+MGQUOcB6UmlwRODfQM4LSTTSmHljLngoQhzwdwTVYX6kRqVUSqRligN63Q6NAsq43neuXPnZmZmZmZm6IJX1souKMPkEw03IQzyiYbCdFYp20qqbTJTFmUDaY8yd6XaWDhWaY+UtzevROj8OVVgjmLhp4gU5ur1ev0hoHvTaRfSjT1nMUlY5qdsQqOUGgzMlQlYEGm87/szQ0wDc2EFKf/VycvsMJw1AqlW2VZsjFSanQNKsw1qZWGVFrLkysBxw2ChoRQ2ScYBabwyfPJQMFdnFMgUvV6PsgayTLfbTeWXdru9t7cXhuHTp09R83vvvQdK4F+WkLKYRKfTabVaoNOMTqfTbrf/4i/+QmkhpV3M0fO88+fPA3N98Ytf7Pf742gQk08LtWwviWCBsYpTpGZliBnKXNiDNElXRnMpZEEmBmnG9MNg/6lAwVzKQRAOjuAvHacwigmCAEKonmaz6TgO7rFAyXB02MVyCTUjLBBzXRdGiDQ7+AszwSAIwE7Xdd955x2qwfd9NlukmXqeNzMzAxPGubk5yVzJGOaD04DE2KloYKJiLpaENTUZIrOwyZ1lqkuu0yZN0hlWLmyKrwxMRVb5fLApSyZvFFSSzlywdQt6u+d5SAq4mavVajFO2draYsy1u7tLd4cBQDnqD8Pw6dOngQCjFWYAZS5GhfjX9/3d3V1KUq7rtlot3YSUMle1Wu33+zl2SNAaUsbmbj05EtrrjzXckQhKUtpjENPBIMA0G2KlpEylC0m1sBRkLcW0Aa1Npp+5gFxgZyb8dRyn0Whg54eQhYUFYBBgNxAGedd1gTgWFhbomMvzPNQJSiB5s9mEcNgX6jgOHfTRERNk4bou0iv86zhOrVZbWlqiQzPHcba3t1EPbHoAk8BCNvKCFfrizJU7ttxUNmoTMTujLSw2NjIbw1KTK8PNyc255AsZH6RjafhZATO+LG/kgJq56JjF9/1KpVKv1yF8eXkZeAp3zK+srACDBEFQrVZhOAOUhKSwvb2NGkCyXq9fvnwZxnGVSgVGXo1GA3TWajUIVDIXkAvOFlFhtVqt1+ue5126dAnJ1PM8x3GuXbuGkr7vV6vVRqOB+x5QMwzoYMwFeP311yVzldICJp/ckCrRkFSsGSawKMusbRqxvYVSgJkn1dJ6TOzIURmeA9KxZwjM+fiQyVGxppbz+TNltoh8BEQQBMHOzg6MU1zXhUHT/Pw8MJfneUBP8ExfU+7u7tbrdVQYBIHjOM1mE3kEKOzatWuwOAXJg+GSmWQuSEhlwB6I2tzcBEpC8l1fX6eFoqMwVthwOFscB3Mlo/1qwjDkS9uTubUpm6ll1lKV1GYwjworY5WIVayX6gqdQ/LBoJz6ZwLIl1GiZ65Y0yR0TmCpbBIqkTJbfPToETBXo9Fot9tBELz11lvNZhNYAwZKX/7yl5eXl1utVqvVWlhYWFtb831/aWkJl887nc6f/umfLiwsBGTxfnFx8etf/3qv12u1WtVqdWtrq9VqffnLX97d3W21WsvLy9VqtdPpPHr0KCRLV0rmApmNjY16vQ7Zvf3228Bc8G+r1Xr77bfpG0zHcf7sz/5MrnM9evSo0+nQda7XXnut3+8PBoMCrUXbCMYN+7xk72Kxyp6m7ITmXJR9QJmFpbVMAzVJdhJ7I2VnKwimyt6eclE862T6mQtpApaiYIS1traGnR+WohYXF2GSiOtKi4uLdCrned7CwgJM5WC1C2IvX74Mgy+I8n0f17lAAKiH0VY4XOeq1WrVarVWqyGTwsqa7/tvvvkmECsMA+v1+oULF+h0FYyEIniehyXF2SLuRFW+Wyyl4jPJ52vx9vJMuUxI25m0KlNGulxklFmt0khlr1CmTY0qF0r9htJNLaRvaXEsPcAUprpOBqYzFw6vcBRDX+EFw1eEKAwXQgBJ0SESJSB4hrd7uF4GySEEia/ZbLIrJSAV3j/h+z4MBjEEnnG2CM9wCwU1YHV1FZLQwkLp6E5UYK5SZotF2uuE27rMKFExF7VNl5ApUTZ3mUWO8hq6ikFemp3akZSlsJSPhSfPHBINc9FAswcyJdH5OYW52u02rnwjE7FN53RjFL40xAUvoAk8lR2Q7WByr2mj0YCRFA6FFhcX66PAQZ+0hIJxJebV7/eD4Z4vmUqu0JfIXPmgq/tys2APMkoZkhhZjAXKUiiLo9NgXxZ7j0mB1F6UGzLTRHRdgyWWxS+ITBnRgsiyKD2QqOjb0nUsMH3MFY6ujtsAKIMeG5LaaHiggYyyMUnOLsPRLbUGy3WzxVNkLsRYW7Ch8+gkdbHyWZdE2ax1krGxX5ntTC21ztR80KliXk2M3mbe0BWhxJZpyEiaGmdnrtxQqrVirtxQjonkOpocGTHhTGRqb7+S4ILR/VyVSqUU5jK3v1OHNI81RxYuW5VSpzKJsi3qxKgqgwOlEoOY0jCdqQbo5A2lVmYqPWaPyf+msrLTwIJ+y4QU5oLXdmbYyDB2UAZ2Oh04Aqk8zYPQKcFYeCOJzwZLsKR4khyZ6/z583B0Ed4tFmwftI7Lgo1C+0xZK1SGMGH7QiWifcdGipFR0iSD8WbDpKQyuQ46U4urOiuwdEKJUObCmatardJpmjxYozvJSOmAnVukCiWFMeVSTDltpDIyO2qYbrwmcw/Hs85VSmOVyQsqlLYZWgnLS5l1oicXpjbW+wRjDaZmKpq51LqSFoTMSGanM8yydKcLczHH5FIWMsJcg8GAvRCUhw3xhaAhJBWgHxJSMOZSpqUylIMoMQUasmN6pAyEuK7LmKt4NbNqKN5WsiZUJtHZpmw0Bp3mAqY2SiYmk+uysPGnLIVMZWOVdIi5RLooQ16pBbGUHDfMxbf0kqXHdOBfLYuiqN/v44nCqsD8/LwuCnZXwa56eKbhGEu/UkEfAPgJDPiqBey6op+3gLeNqZ/DAA2oyvDpDfqND9g84TgO0Na5c+fm5uZsBlysDnRROpkczcVSW6KhBl2LUYawZ2mMtE1anloQy3Bpp6UHdBbaFMEsnAnMJMtSGFyaNW1W2LhLV0x74VhTQboknLniOI6iCMcdeE2VBCxg418EpMLnc6PAtEoYEpqhUytto4H0AQDlpfKWYy5D69HVU6amo6xgc77UMGVLUlpoE5IaKw3TJVcmNEfJ4hg8ViRHswElqrWpR3MBM6XNCsuClIvUfBXMFcdxFEVhGFar1dnZ2cooMAR7++zsLD5XBHTEx1CpVBhzTRLMTmrANMwWzRVsTkgfzMl1jSbVBilmabxSiU6Drlw0ylK5IWTCoFWT1gr48DlVfkw4XY8h1MwVx3EYhrVa7Ytf/GK1Wp2bm5ufn58bAkIQr732GpAUDcQQJDsMhBDKibOzs3Nzc+fPnwcShAcaC+QCgV/4whdYrNQmCVTG6kh5ZmaGyjDmSgrwTsHmwp5tdCbiJ13ZCJSaWWxqS6Ji7NlSCTXDXDpDuSyLyWxLLd2YwLK2rM1JQpnp6ThrFFrmiuNY7h5QLnu3Wi3l92IN0H0sFg79VCoVWJnK99VY+0/D6r4XS1fWFhcXS9kSkZTX7JK0uRKTjDXcEds1QXuxeLShJ6O0ZaMnHuU+ZSpDuVIzUnrAsoClw2CqZRs4FUzWSVqYmKtE4F0LURrgAHYYhsgXqUlA0kYsH2id5Sj7mBxrU2WJoABpUlktSWaUCCbKqkGZKhZ0Y1+oeCqZS1ei6cSp+EpiQsyVCqQJ13WRuewpiSnRUQ+F8uIaxrAs1uAfc5SMze1qqk1XZYno9jRcVnfxZqTMSGewWU+qmM4JqRpkFDNy8pD2JNNKW0qDTxFTylzj+NxOcSSjbd0+VYmOTSx+nBM75qICBSHNYwZk1cMKwmRkuEyoUy5VTRssW4IOpSiROqnyaUBm5rKXzIHBYABLXdPMXNKJqakMMIgplSjlZXIqw5IbUpWFuLy2riwsq5FYMKalqmlDPEr6+YCqikOqOjXXCEzLmAtAmavEa0hLgaV/psGNmWBoHLGK+1JBNWdKaNamM56VQpbLvrynDl3pDAUfK6RVSpuVz+OGLXNRy2KN41KVpGLKx1xnEaxSZAtQBqZGpaJIWqYnFl2IhiuLHGu6U1lWjQmGGtTVqSFhcUjbWL70X2Wq1PJmd9L/gxVz2chQ4SLO+hQwVxRFdMCoe0VQVl6x6n3CuEesBZudPTA7GpLomYvKnDnEKo6msWZv2FRZQSRG31q6XdaXjUNYFGcuszuUecelEn+JzKWjDOjn0zYb1UHnc6VkidnpGhnLy9zybGBWonSCfFAaWYp5k4HOfll2ZaGkE+xr3AaJsbpjwS8TcL5pzKULScr2C0VZzAWfPlMerqZ32LPNrnDiWiJ1by1syqXP9NILw6VADMpbZPu5gK9r6XMRgGMp45fSBGPjL7msWRqufEjOGnNRa2UBlWKJprzKkBJhX6LibjEjZbaojGWSMlURlMVcQRDUajUlDQG2trbo9n22lT/Tfn16QQULpFdc4M7+uhGpAjaQd2woM2ICmArBvgMA8sBi426asskpw80PkzGyILDRJnbMlYpMwlkVSuOVxbEpr1nMDCvmkr4wW1MEpTDXYDAIgsBxHDlhZCHwL5s5DgikZin/ySefoDxVONADpqtmRFFENbMoMz766CND7PHxMftXiQ8//JCFHB0dff3rX4faMTcs6p/EojWb9bCQRDMAYYFSVQ4Dxg3Zemm4QWySSFTMFat+HpiMrsjswcZFLFCxziVNVOaamlMOlPJuEQzQMRcgDMOTkxPsujBBYzJyooThUiHMAZWxoAHpBsMPDw8NCgHAgNFwGd4sxkKi0aMFurT2AMd+85vfNDOXIW1qy9Fp07XAWNUHdBkVMWN8iEd5IRbMJQVOBYmKTBPh+TiLey2FlWIp61yZ7FAqyYQczKXLTslcKOx5HnyLGwAzIxQOyFcgt7a2HMeh62Krq6uokCaBaZQcxPm+77ou3hPtD78p2Wg0giAAGfiWmrzN9fr165JSlR5gfrB//5C1Wu2ZSwbmbkup+hPR1c8oYhVznSKkAcxUKZOvsJaSiPRdEfnsyIcS93OZx1ye592/fx8HXLA+hbF0tLW/vw9388shWBRFwGVwWwZ8TxcYZ29vj+blui5k5DgODs1u376NxYyiKBSfSoKPVwK7YRR87EMOA5nHcETJFuyTJAHNruu2220QVrYMVMUq9M6dO8hcVIY1AxmoFDa3JVZr0jBdKpssphyymLERqQJlQdqZEJ5l4allpEWzkURkW6FnYjKJ1JAJpTOXLtbzvEajgSMpWHumAlCQKIoajUalUoHP1spPaXieV6/X5QvBGzduUBnXdWH6BswFSm7duqWcWsbDa2kdxzk6OoLwMAzr9XqlUoGVcqBCTPXs2TNcOAfs7OzAB3fxjcHNmzfjOIaruqEsyOyJqs/rXJebuSzbKFMS2zUqQ9ZTDqW10l2yvKkhY4LBSBoVZ6xlG3mKDCv0MkuWRKkhKybGXHfv3sUxFHRvKgDhnuetr6/DYAomfY7jdLvdeEgxcGm9vMPn9u3b6AqQgTkgqAKau3btmiwmjOPq9brneTQWjJmZmYHpZLVapeR1586dSqUCozPI99mzZzMzM57noUmtViseXhgJIZubm4y5dK2KPqQylxI2MpYJlRXKbM6X1/QgTutNMsogXC6YkTI8yctcuiTKqPT9XMyVuuxl8nxYXV2dn5/PwVxIH4PB4MWLF8hcdMUHX+o1m829vb0HDx48ffr08ePHm5ub29vb8PpsMBh0u912u729vX1wcPDRRx/Nz893Oh14qff8+fM//uM/RsrY2NhYWFj4/ve///jx42632+12Hzx48Pjx42984xuYKYzver3e48eP6/V6q9U6Ojrqdrt/9Ed/pBxzMTak4bOzs77vR1EEnyk5OTmBQn31q199/fXXL1y4ACFxHH/wwQczMzNbW1vw7/Hx8U9/+lN4fv78eRRF3W53c3MTQgw1iwL4N3Wdq1zEqi4hA+nDxGwrCMuyTBvM9uuKaR9uKalgLl1iG0mDKZZ+gZsFoW9YvhTrdrswkKHyYRjCbIhqgCUe3IAKu5Po6vvOzg4MjmBYFARBr9ejX88NgoC+74NRGCw84bpSFEW9Xg8zhbxwnQuXzG7cuKFjLlx0Q79BeKVScV13e3u7Wq3ieCoMw/39fd/3Z2ZmMOHz589nZmZqtRos4dVqtWfPnqGqfr9fq9WOj49t6isZ7U6nzly6QF3s1IJ6mAayB2USlja1jxSB0jxDSFaBfNAyFzPa7EeWpIhn6c2Clkl6vV69Xq/VasALcM+EYbYI600HBwewSoWkE4YhHenAAjmsvsPbQNd16/U63XDgOA4umSEnuq5769YtzAtSbW1t+b4PszwQu3TpkpK52OsCDAfmchxna2uL3rzouu7e3l4QBHB3PgQCc7muC0tanuc9f/4ctcFLCXi2aSVxGcyVL0kseo5SDxYtX0anCHtrZUs2RJWC8ZS4HFgxV6rLpJhUawnXdfEeerq1HXe3KzfEA99B163Vas1mE/Y6KC2HEQe+vMMhWL1exxXxeLj6TtewmM4oiur1ehAEy8vLyCMworlz5w4tEUzxgDFxzHX79m0lO0MxI/H2ENa5fN/HkDiOoSyw071arcLaVjxkLhiXgVhEXokCTetqShmCf5G5pKQZtArMMgZhm/Cshp0uUs2WLYR5QBmlS2WPyRQ/N1KYy1wY+zLb+ws4iH53FkED5edp6ZfHLly4ADNBZRawUh6GIayFw8QQGIftw2LMxcZxwBr9fn91dZUyVxiGt2/fxlSO4+DkF5krjmPJXDCaY8yF3vN9v1KpMObCqWgcx2EYwstHWMZCYdBweHiIOoGUlbNFWYPxaE8oMuaSyqWMIa2lcqX9Uwsb82QbNgsok9gjk22nhULMxcQSfQuz9xosyuAx44jsSNKh1+vBTApYzHXdx48fs/ERWoL00Ww2gd3kXgcAMFen08G9DjhbRAEY4KyurlJ7giDA2SIst8FzNNwVAf/eunVL+SKCvehMNMwVD7c40E1hsHMiCIJnz57BZg7k02azicUEJ0+MuWLRqMzCFMpmZtCfaJgrk8GThI1hSp/oBJRJMoHZllplpwL1u0UZmFgUwyBg7zWYwWV6t3h8fHz37t2Dg4OjoyN83Qab2oFl0IDDw8N2uw0rPh9//PHDhw/39/c3Nzc3NjZc111dXfV9H4mp3W5vbm7SU3thGO7s7EBsr9drt9vwwrHZbB4N0ev1wjD8m7/5G8hud3f3+PgYDBgMBmtra0+fPgUz5DrX4eGh67rz8/Pb29vs3eLh4eHBwcGdO3fa7fbHH38M2h48eHDnzp1ut/vixYs4jk9OTvb392/durW/vw/sefv27Xa73W637969+7d/+7eobTAYmJfnE0FYCHgZYk6rq3p74UTfpePRZqZ8sLRtSpBaXh2UMqmpMiERjmVZnxZs3y1irBSwKYald+JczCWBzEX3KxVH6ksDXUaJIIIkSXAHA8tClp0m1NnAZCxP/9hXGYbQ/Vw2lW7fTqRJyiTxp4i57E1lVSYdJQWyQplQZpfaciaDosxlLoalH5PxMBfOuRJRtaxWaEIbI7OiSFqqJFWPgVuVaW3qmj3kYC6b7AxtKRZNTmkejUq1bUpg4xYpnNoklIE2kAmlkZlsHh9MzKU00ewve2Gdv4owF9UjmSufbTZ5nS2Y61d6ieGb3/wmLNWZU9EHm4yUYrGq7lhZWImk/BmFLMUY2kIKWNY6w04FmZlLymcS0zkIn8c05rK0hNmjLGARw3Ig1Z/JKEGk6jFrTq1EmzFXTFp5bN3idVaxkspCST9kK9ipwsZa+9ZSOnKXaNy1kDJbtMzeIBaPNlydd/AZd4cWcTdd58qnqqABZwvKWtPBkrli/ZwuU0OKRYOkqmQuSiXTDFlAGV5aTWcEM0wGmstlL5wD6cwVj3qQhtPC6KyMVS3YAM/z8p1bZOh0OouLi3DZi/nqUZBnIfjw4sWLgebGVAyBV3s0FfvX/rasUwGra7MwYy6dnlgQVpzWjqmwOYTqT844czFId2WtzRKhs8RgfCya05ig/vYPNUVph7KEBiWy8Cw5PsNFVzmYi2UHlyIAsl7inhXy+nZ2xbu8pd7mknvlaQHP8+AgEW79R6R+5oMh0IBebUi/AwLPV65c6ff7iZ4mZLuPBSEq5ZVtSSds09imGakF0clLd2XtKalI7PpsqnnleUsBK+YqaApLbvZaWcyFh59TN7IiDJ/koYDbTWkI7eSUFPAYI5xbpAJIPYyDJB+ZTz7pWG95eRlYEunSFd/7sASSLxIxmy2aK0VZ9bnbGFVrFphy5DAytc1PAInGwzqTyiq7RLYxl2WWsfF30uwaz/PwrogcPk3Vz4ykaZkqQ0J7e+I4DoKgWq3Czs8zDdyOz8KlS2UbUIYoXZratMySlnqmBzZFxgeD582wkckEaSQN14llKrgZKXvoMxkUCy6Q4amwZC57hamQhS0RcNqxUqnQs9xTC3tX6NqGrpHIEGXjUYYrVekUKq0yZ326oH7TCVDJfPWFKOvVEzOPheNzrC8a02NQqJRM34nKDFI6V5d3omrQZoyPuXRJZEmLaJM4E8zFKlcnk6gapfKB6Yz1LUfmrmx+8sGgUGfzFMLeMF2NKKMoKFvlY65ktCqVsYa0iWgV5uRMXomU/VzJaK0bFCldnOpTiVL2c0lIp+vMtrTZvrBw+fLR0ZHOS6cOy+IrGwZLJZMz5Qa3M/0sL51mcyNU6pwqGAyTRTDUSHHYvAFnNmMgFVCmymSJlJfOsdoVoUxpg0zmAvIxly5HQ6FkBaT+y1JZFhPWuaZ5zMVqn4YrxXTOlEl0qZSu02mWNaWsBUPypHBLHhNSTbKvOANK3JyYaqelzYZwQyyF1U5Ug8W62NyuycpchnxtLDSXyCBjX1jJXEX8MyZI1+memT+ZjCyajdPMNUWjaC6Z6i7VnsnD3j+GWrMXLgWppuY2BlUpSyQzHcuYK5/pgILMpfOjToaFSD8o02Yq71SNuSxrhxU2Fq1C+k2nX+neVEhLskImL6iwdJjtUTrQ4NuyYB6gmU2NMzKXZTGV+Sp2RcSqhisTx8a+nRvlMhcTi1XO0hUq1nRXZZQyR3igzFXQOacCXduwLIvOaQa1ugrVScaixabmOA1QWhirGgmVHzfM16XoimCvX5eQ6aThytytmEuZQWqV5MNYmUsW0Fx8Q+lscoSHgsxV0J8GhTk8lppQBurEzC6VWVBLDPJnCDpvJHY+PBUo7WRlUT7Hqhali2LhyqzVzEUz1iWORxuTwe+ZkIO54rROyASktcqy68SkgMGwODtzFXSgDcZ3ntxcBfigrIjUgksZZQ0a6nf6ofShDJkY0Cp74YRUtIxixdR5gKWVktqdqMosdXbossyBfCeupYVmgUQQkFJeJpcJU8tb1mwRD2/DAW95bpz+RRlMK0+D40HxSUL6MLZuNoZqMrRGmR3997RgKI4MP0NIsnhYKcPS6vRY3UNvIxAX8zumGvfpHxSWhTIImD1gzguYCy6/TwR1MvsN6Pf7cHiQHvDG49zsgLc8BA4nGQ1HHZUnvTMdAsePg9h7PrUiWEKzNl2sLtBszFgRiybE/p1a6MyOSR2llj22GHOZkTLmUnqTSeosy+oOeMjNXFmzSzXY4LV4DMyVCtDjuu7GxgY7hq3jIHYphf0paxt5dmEG2Gbjdp17szoktusqMl+W/FQQC2JNhKnTCWa2LtZQZJRUJknVA1AzFzNFaZzO7uyuGME0MJe9+wyuAMC5RTlbzOEo/EzkBKC8OcN8nQbQmf1HRqj3bDwp06YKJyqSUtowechSJ2eBucwlion9Y/Pc/4NphZ6ZYlmwgq7Jd24xa76JvrmwZ5pE6Stz1oy5chscD5krCAL4BCTlEfpRSAB8PM3m6h4pY07V6/WoAD7DyAsvodW9XM/UnHTIoUHZvAt2niJQlkXGTiHMJcLncTvQasylDNeVqqBfLN8tFsxI5444rbxKeUNGJd4VAQzIrgZTwiyTaTwFDIgy8iIz+LfX6zmOA8QKN47ZfF2tOPJpS26rkOcAACAASURBVEa72WlBaZgyfHqQ6F1Hw5UC5SLPbHGsyPduMQd0rk9NYg5hAOaanZ390Y9+lMk8NmbBsRtlE3x49OgRZRM6BOv1eiAGMvgv4yYa2Ov1nj59Cs/dbpemggdkKxrlOM65c+dmZmZmZmYqlcqzZ88ylTcfDM6XNcX+TaZgkV7alkw3c1Eoi5OM51dBKkzZz8VCbKIkMu0eGt86V6Jquzo3ZVJikMcxV7fbpYGIWPgHksBwhkoic+mgHGphYKfTgdd/NqM2KqYcZMnwer2OzDUzM5OJuSwbUsGEsm3HU8BchqjSPVAuDMWRsZl8wpIrA7PtRJUqmLB9mXVRk2GuRNNuWJSNzlQxyVw6DAYDYDEgqVqttre3J5kLxjjyRmnlv5S5HMexpC1MSIdv5vUvZC74m8pcuRtPnLGOGPCz58lUMhezzd4VY4UhF2WhWMLEwtVUm1ItC7FdoWfhBvmCmNiYCwNTPZCayiwchmGlUmk2m+ybFHCfPf1EBWUN13Urlcrc3JzjODBW8n2fzRYRzWbTdV24wx4Dfd+HPROgv91uw8YFuCZfx0fsexmtVgtlmJ26MZclc6VWTbkJDT0kPiX+ssk3U6HGh2SUUlnuskTKhDYltZdPWedS6o01zKVTkgmT2RWBYJ6K9Z1BWVKbwoZhWK1W5+bm8FtEVQtUKhVcM4Lxl+M4lUpFDnZ834f3eqAZGKfZbMJHj+BvEATb29ugCgIpxzFt9GtJCwsLSExAfHt7e2AMSwjMhXjy5Ek8/s9WJqofVIOwbO32XWUcYDazkKQYc6Umt4dUpSuOjDLIK8VshJPUMZdSb6zvukkBZ8GHEcfBXNJOFmXwgE0Ss3wURaHYuKD+Xtjw40BBEABPzc7O1ut1GDfhfi425nIc5+bNm5AQ54OLi4uosF6vu67b6XSAeoCeDMMux3Gq1SpQ27Vr13zf7/f7yGiNRgNygVR0V4RkLqX3bKosB5QNlcXKiktOm7nMudsUWSdmoyErbIoTq/jB3hWxXaWo7+eSyahepVJqNCuqpVNgNSf3nai6cLOblGW3zFGW3QCbQ4J4tLDT6dy4cePOnTs/+tGPcHtUp9OZm5ujFAMUtrW19fu///uNRqPRaFy6dKndbrdarVqttrS0BIFLS0vr6+uPHj2an5/f2NgIxbwPqbDb7XY6Hc/zYEj19OnT1dXVVqvV6XQ6nU6r1YLxGoQYxlwzMzPvv/++zm+WHs4KZUNlsZatfZJgxsuQ1CKnio0JMmtaCmUBbfwQ52YuZoeMsjQihwtgzJWbuXS5M9uYp5T2J5pmpExoaV5B4E5URhmO4zQaDVjVAoEgCJaWluDrjbBkBqM2ONIIAp7ntdvtUACGe/V6HRbX1tfXgcVgTuq6LsxD2agN9nNl3RXBaiRr+9G1zPiMM5dSwNID44Y0klmSqdT50gK0zGXIz96mrMjNXLGetpjNceHGyhSmFrm4WwC60z+u6+KylOd5MH3b29uD8RGsSXmeB7sicA3LcRw5bkJttVrNdV0gO5hjgirf92GlH6gNp4rIXDjmUjKXzvOZ/Cl9q6sXm4rTmTQxUM/EgsIsi2/vsaxIVLWjtD9HqXMkRNiu0NtbWcRNxZlLZwCNze0snRNsbMtaHAk25sId7XTsQ/dAKF9c0pC9vT15jhqWt9gLUKVmqtaeufL5UxnL6tSQhSEjqyofJ1gLwUAaa4CNTEFIU6X9Mty+4PmQ8o1rZX5mOwq6qeC3f3QGKGOzFlyXJDXH4m6Jh5u8kLbYWImtlyPjAOmwWEC73WYX1+BlNUrlSFJyewTcwGPJXMoaMftTGcs8bFNrBsnTAlqotLN4s8kHZiEzVRk7YWi/oJHboIIuGxNzMTGZyqbImMo+x7i8JhiI0z8SyCkGmZAcNjTESm6CBzzLTdmw1+uxd4uUuZjDmXNkXVi6UcrL2pRi5iqeMAxlKYKCelKtjafgx0D7bpG5wKBCxhbxWrnfWzSLmQtCUymzMGeajDJdQQwGgyAI2LtFJKn33nuPHWaEU4odAoiFBxSmS12dTufRo0dMnoIpYTL5mMvSmTo3KlPp6lTGni4MBdQ9mwMtY3NAaTCLnTDST1wrLTML2HhBJ1aEuSzzZcI2xbfPxayhCMIwxLsicKWJntGhgRQ0hJERE2CB+K/ymQp3Oh0Dc1E/GJqKufkZohLjz6dB5nShLLuMKg5ljvZpY/2PwSki2wq9Elm9Y5aE91+l76E3Z5oaZfZS7nwtAVu6wjCsVCoOuakZry1dXFykVzkrbzdlNzKzQJlEh42NDeXlzrVaLStzZfWhTJ5ofoFks5xCsDJSg7O3kXQHFkkrzZ6Yl3RIZy5pqPy3uIMQp8Jcsd0Pfo4CmuUzaYuiyBneQ49ngwDnz5+nrIEhKHDu3Lnz58/PaICSTAbPIVJVBmRiLnsHKltdYs1cZiUTg9kDyajB0wOD/cUdUiS51WwxJp020bs4VYkNxs1csiCxkZJYVI4Cmr2aSVUcx1EUnZyc1Go1HXFQxpHclBXIiaiEcaLMwoa57Iuf6PtMqnKlvKk3TByymNMGZurpuYrDtBPVUIBY1fOlDI1VqpXIem7RXrkhVmk2jUo1O9XCgkoooiiCw9WVIWZnZ2dmZuhAbHZ2tpIRlIYMYpiXObluD72hqegaD0vIhGU7lMllwilB7jYwMRjszFHYEl2XbcxlI1kQRb5altuq8RWnXMCpxv/5n/9ZW1u7dOnSxYsXL168+P+NgoVcuHDhwoULNPbCEL/6q7/6xhAXBF5//fXXX3/9l3/5l+HhjTfeeF0AxQBwy8Xc3Bx+60hCNmIZxULM0GWhE5A5JmV3KhvkbAETh8HUxPrHAMRevHhRogNtmcu+PAUx4Vtuziii6UOfIIoi3Rc0AMoml6nhxnZjNBYY65tunt5TDNmrfbrAKiK1sOV6rxzmypTWgMFgAPfnnQnmKqvUuQGUEauuh8brVREy5BSR2uQMTRYFYhUNJYK5dLkkdqQpY2UuLCNl6VhUZpdNB1gVSD8oK0snYE5rqIKkCHOV6H3ao/Dmz7KUvwTAPAg6Fdi0otRWLuWVyc0ZpfYZg0yi4UqDthL7zimClT1WVRYTNvgtq/Ot9nON2QP/P3NFUfQpYK7pGdpMJ7K2KNnK6XMiqEo+MzFdOzf3BaUem26mzMhgTCqm5EfIzBi6kkrnKJ3PXCrFUu7ninN5Nh9gsvMpYK6JwUCRU9K4JXSkkC+JkjVolLJtGwzQpVKGyHBdrDLkrEN6I1b5Xxku9WSF7ekfy8CsYB3sk08+2dramp+f7/V6MemZ5n5oc92oLl+pmYXgPaUYJbN78eIFLC0hMpkEageDwSeffEJzBz2gkLoCZIDoMbuBCjSJjYC9zblh2W8tWxfrGzJVbqbQdTydmOyNhtxL6TunDnPRmGcM1SQpSOe90pireAXIUQM9t0iXnwtmlMmkSPUZxNRUyudMepCh6HJ7LDxAmSsm6/FskZ6Bycgs7AtbBONjLoNAbubS5ZKoQCWVfU92Yxszslo+MbCisQelgLI6dMwVC89nZi57u7NCyVz4bjF3d4JeKr5NkQfsdLG8QSEVsFEAPg09JrB9CVEUQXZKqsqKfFWgQ+nMlTVH2drls1ImFj1KJxarOmqSkbOmH4aCx2kkpVSlq6lY5fBymKtElMJcURTBzQr0A1z4aS8A/VcpAFhYWKBfG6vVavPz8/CAXxhjz0rMz89T/anyRVCv1+fn5/EZvz/GSkdD6iq4rru4uDix4RiFrnGnipnlU2MNlKT8VwYyw5iYIV+dqVMLZXlZrLL4BrYxu5QifYXexu4SQfdzFWGuQPO9CXoxi7zRJdR8T0wXzgDflbCR8X2/1WrhcyZsbW15KrDLGxg2NjZQTAJl6O0Rnue98cYb435bYtn2lDI2TVR2Bl2m5lSGXiTtUUoabB5HVxo3lOVlscriG5xP1RoSJgWZy1IyE0phLriHr0a+N0Hv/+yrbgSFeZbN7A8vBVVyonK2aNBmzld5w58OOSazqUW+du1aGIYlDrvMTVwnpmzoqa3O3LZtOpvsNjrJ2Mhc5nzPKHTlpbEGTxokpUtlbP7Z4jjw4sWLUnZFfPLJJ0EQzM/Pp3Zmyl/2txtTwFWikFZHNL1er9vtmi0JhxeZmsGMgXyVyiGq1+spy9XpdGQqCKHyV69eXV9fPzg4ePLkyfPnz0t5/5ijmcnGadlcdQ1bl9bc32RCs9iUdKsxQVkuyUdMUlkXSphlSmOuUpTEJe2hh9ki3iCalQ5Y/5exlqMzewTimxQ6SRaVKknHdDm8cfXqVbzBplarRVE0jkZi0JmIn9x8OVoKKPtPph6V/HwwF3OaDJfeYKlkuI0nEWWOuYorwXOLYTHmGgwGYRjCOhf2wz754oPs/0p66pN3ghhOuYyl0lGDjl+yMqBynmuPHNPJr3zlK4y5zJ43176hUZoV5muiNql0fYbZWRAsO/siTDOSLHRv9ozSVywvhnHNFnNr8zyvUqkEQaB7Ny/3JZ2cnNAdAHH2MZcZlF+Qy3RiNApzh0BYoUcelOtlkpJkiDJrGy6zUc6sDcPwS1/6El4rWK1WCzKXspGYm4qBBSw1y1S6PmPTr3LDoMfeY+NAbgPG5BapX5lXZuYaq6/hS7Ew5opUezspN+FDt9uFzztDqiiK5JhLRzc5IBez6McNAQH5vAWg3W7DLe8sVRAE8CKvXq9TzfSdJsuOMU4QBNevX0/laPjGNRigcwVqRha+evUqXtBcnLlo45Ht0qxQyihTycasSygtUfYrs0AmyKzPHKhP8OFUkIe5xucXZC4cm8B4CoZUdNclAgI9z4OrOB3HCYLg8PBQN+ZiAyhzb9d1b5Zwb28PP7Cq09npdOAb9zIKdirUajXJifIFqAwMgmBpaQmZLtTPCsG39FuwsM2CZYejQslc/bTbh8zNgzYz2eSUIfRvYiSgOK0XMTGlKmUSs1pLSFVmT045SvGJvetk4HiZK5NwHMcvXrzY2tqqVCq4GbLRaNTr9aWlpUajsbi4uLi4+Du/8zuLQ4DA4uLiwsICXDQM+I3f+A3P8+S7xWazefny5fX19eXl5dXV1fX19Xa73el02u328vLyxsbGW2+91Wq1oPO3Wq2VlZWrV69ubm5euXLl+vXrwCyw3anRaKyvr0PI7/7u7166dGllZWVtba3ZbIZh+L3vfW9tbW15ebnRaKysrIBOuGJ/ZWVleXl5eXkZJJFrqtUq/Y7hzs7OysrKW2+9BUbquCwMw83NzZWVFfxIYqvVunbt2h/+4R/euHFjfX19c3Pz6dOnYRjevXt3ZWUFJCHh48ePYZ8tiDWbTXi3qGSu8+fPU+bKWrO6JmGvh7VPZaPVtXuph3aJ1ExtOlIqZKqsHsjkn7EiU3ktk8QZx3GZ93Mlow2lXI/g+lQYhvHoibxYfxHo8fFxvV6H/eiu6wZBAF+QlztRQbnjOL7vdzodOn3zfd913eXlZQgBlvE8LwgCnMAGQeA4TrPZhAEOJA+CYH19HSTpeMf3fdje6TgOjKfg5QPMaoMgWFtbC8geV2QuGBzVajXYrQpzSRBTvkkIgmB5eRk2tUKI67pvvvkmqIVShMPZIh1zgQfq9TpuiEWdyFxvv/02fkEjdcyV2h6KNBhDi7cRSzSMo0ybmqMhl6zI7ZCxwmCYfbloAe3lLZE+5kpUtVumkwiiXLfc9Ho9ICw6l2SzRRiqQE/GTg4EARxET8DQKOAgUAU68bOGcG6GMRdgd3cXT/bAA/IIEEQQBO+88w5dzKLM5TgOpMIDOuZlrCtXrlADPM9D5XCIJxwO5Shz9Xo9KAUSrmGdC5jLsM5laEJMJhYDnzjj4ItpSzXDvv9IqyzD88GyyJOH2bZMDrRPkgkpYy7LwLKQj7mkEnr6h+5ggECgOSAIGH8hs2xubgJz0dGK67rIXPV6vdlswngKF4mAueiA69q1a0AlQIuw+o4ZId0gh0J2MKkMwxDIkR7ZocwFI8qQrKmtr6+z1SvY+w6qgLkAbJ3LdV0sL80CNduvc9k0DHNbNFdrKa0OlRgMoLkoZcylsITOLQULOAGYyxKnObks5BxzKSULAhhnfMyFBFGtVl3XvX79OnRjGO+4ruv7/oULF3BYBMMuWE3D4RuscMHcCj4HHYZhs9kEBoQpp+d5wGXwL5yshlOKMFeF5PV6HWmLrZ17ngfM1Wq1gLnQfrqtFJOvrKwgk4K29fV1ZGdganiVSYec+NIgGIIuqJmZC5smut2mYcj2R7WlonirS4xDgFiUwqYLWYopC64rXfGSjg+pBVcKl46cK/Q2kllRFnPF5NwiYy4Yg8Da0+LiIjAFvJqEYc7GxgZ2deCXZrMJFIZksby8DFNLYCvo8DjTBGKCEBADdgB2g2PMELW5uQnjI7ywYWFhAUkEUsFsEQeJEjAMxJshYHQGCcPhaBHCr1+/XqvVKpUKWOX7Pq4GguXVanVvb4/p/8pXvmIYcyWis5kbhn0z06XNkZApYaqkSTRE2TtK6Xjj6EETQKZSlOUoJabo3CJcCloKc7148aLT6QAR0H64tbW1sLDgOM7y8jIbX9AdCfCebnd3d2Nj42tf+1qj0VhbW0OZ99577+nTp1Qezhvi2z1Ar9fDf+FsI1UOIZgEQyQxgYDv+/BGEq5z2NjYWF5e3traogpBEvJ9+vQpUDbNrt1ut9ttMB7PLXY6nVarBVFoORpw+fJl/Mz1WfkmUw6wLmDoMDRJrB/EKZXE0z2YsoclaTAB5iupJxPyMJe99zPVE7xJLOseehhehWQPlM3uLeQaSnlsDSi02wimOyFE8wrIu8Uw480Qqbmn7lyzOWFuHnNNA0rhAl0XMPQ9KhD/fDOXslDSdTroYs0Jp4u56Gyx4M0q4XAPfY5uj+vf+baqKo9GGjJC5spxWYXByP4QOm3sTaIyO8pclUql4E7UKYG5p8keFWtGWPLB3Bt1WZ8t6CjGLBZn4TKpWUZN0WwRUOKYS7lhHSFpQtIcnFKUCc3jKcpclDtyUKF5FKbkZTrGtMzOIJl1D/2nDAbeSUbHX8p+xJ4navrYoOMXGWh2kS5QSUcyijPX6fq33NkifY+mJAU2DcQXcAjkDhrILlOlStiDYcTHoqQ2mlcqDGKMkrIOQvGWm9QV+iKY2l5t0zWST8tgKhOyllfJUzJEKaAUmxbmwh2kZTFXoLnNGXkBCYhGsbUnudolmSscJSzlihXlI5qXTCuZS5mWhSjJVEmOqZQqmcvy3WJunPrvZaxawMJ/dX1Jp0fGJqqR2qcDqeVlYqfMXOPzfrljLtillXovOwVe8Y4J8fZ3eMZAGovJ/dF75WlyJYIggH0M8C/s+UIlgQb0AnsMQSUQIh8YaDjjTQq6ziXv55IdPl/bmKr+bNmXmDx7ZoFF7JnCj/4yNlHGSjGdM/MJTN06V0DOLRbB4eHhvXv3bt++ffv27StXrszocf78eZuo2dnZSqXCYmdnZ+EBAOe9X3311VdeeQVDXn311VdfffXzn//87Cg+//nPv/rqqyAAIb/0S7/0KgHIVCqVubm5ubk5eqS8Uqngv5VK5Rd/8Rch5Atf+MIXvvCFSqUCGvABw1GG/vv666+/9tprGPL666/D39dee+0XfuEX6Inrk5MTcK+uqUxDEyoI1hGUvYNRlY6kPgXeMCCVMZhnpoK5qN5CpRcoi7ko+v0+9Hwl4Hoc5AIWRWNZOEZhKhauzAJD4DBgKljCarXKjGRZ2wNoF7Jg2dF/8bk2/IJvrO+ik++rZrJQ2mNu6pKMZO+QsbrcJ++QicGmdEo32hBTqsCndsxFATNHG+ZiIUrukEzBmEuqpTIohieZZzQMqLTNAJY1S0t5Kh8MzIXI2oRsiKZ0hfmYS6lW9jGdnk8fdKVj3qOB9sSUKqBlLoPTx1QfsBN1TGMu5VdgJeAYTVUFKsOi5LdjdRrov0AlQApArHNzcxgLgTQEw1kgasBUubnJjHq9Xpy5ZDMrq5bLAnYY+i8+J4LCUrvcBG2fKBI9fStJR4YUQcnMVbCqxsRccRxH5OP1qYDXavb7oQxfYDRge3t7ZmYGz0iy5XNcs9dF0WV+GcteDrC3DYCtrS32hsEM3/dxhV7Wsk3VF2wekwTrETrLdX0ynkpSLhGysEoPSG4xsVEWWN0VwaLsJWVsqkeyMpel2kwouH3fEr1er1KpBEGAOcI1imgDDEKVtukuWcRYSCijqHIZrtMsjTc0AEORzS0kB8ZR+zrl5iLLflR6YXNgrM6hfyVkOCYsBVbrXCxKKUYty+cL6GytVmscY65pAKMhYC7f9wdDvHjxorjmU3yJbmhCVCB3C5kkpJ1K42XX0GFCdk8WhrKbY4vDdoXeLKbTnsMXZe3nmn4gc01miDcm0IpOrfEiDaNcSDNYiE7AEK6UZLHTUPZSoCxIkmVglVWeIQ9zGaKoTQZtOpS4EzW27ieWYrnldUDmKqinOGSJlG3FrCE+U93S3Ixj0oDZQ2r7lyE01RlykRnJKOmwKCUJ6NyiDE9FhnUupYzZshweKZ25lKZKsVRrZUkLmnd0dDQlzKUEc0vx8lK1ZanS6c+RRTLaFVGJ8tkApVihck43lCXVldogKQPNSGEuGxUG5HDEmN4tSnuoyyw1GP7NgRKZ60zPNzPh56ek0w/Z0wvSRSak74rQpUyVyeQCfB4rc8ky5khlmTZV0oa5LHOZwqNtLzEN0L1TPkWTisCKuWKxeGHPXHGBIcm4mQv/jUeLZqPB8G8OAHPBrgjLTHX44Q9/eM+Id999lz0/fPjwBz/4wZMhHlrjBz/4gQx8Mgoq9kTg2bNn7F8KFvj+++8/swYkfP78+bNnzz744IPnGhwdHcnAH//4x0dHR0dHR/CAf//1X//1ww8/pFE/+clPjo+P4fnDDz/88MMPj4eg/344BMZ+9NFHURThv/BM/1JgCO6PUW5YgbfS+aIYDFEUcRy/ePGCheCDhCEqK6yYy0Bn9oiz9/AczKUzVSmD/7JYXSr5rCymLkeD2UdHR9Vq1cxcNoii6MaNG0HaxTX04h28IoL9yy75YRdO0Hss6D5YuqlVt7UVZehNGxIuAfvXHpBweXkZPrIrIcPxAyiLi4vwL4tlYvagJzRYiDzUQY9q6BKmHgXBT7cYJNE8+Mi5MqoglL6tjzpWVzsADIHvNwdBkJm5lD0wK4VZIt9OVEse+VQyVxzHN2/enPAUQOkZG+GfB0Sj24ktAWc2Tk5OItV5DxYYktu6U0+DSPTFjd72CEYvvAxU18alQh4FMQN+kGins2WuIshU6wWZK1UM/2Wxyn+V/TMRE+RUw5QCU8VcqTVlWY9Zq/vTB9mWCvqETrWi0RMUTNLcBvCEBlWCk8QiFpYO6bR+v+/7Pu1TVt+4tkSsf7VsjxLHXNI2nTEylQyPCWdJ5amGSYHj4+PUdS5LTGDMpSxCviqecrCWLKMMqbJG5UO+uj6t1zhZi69sVOnMxZIpw3VJzLC0u8i5RZaRNFspL4usc5/OCTrDdHoAmZjL7MDJzxYRmSr3TMBQZaklnYw3ijOXQYOS4Ca/FsHcGEVRhjFXnEZSBoHYom8rUeTdIstLGqC0R2m8Trl96VJ1Hh8f288WzT60Ya7chyLzAV4/4b+WP/ipRpYycLCsOBmufC4O+kaPhuveymWqStQgq8PemUpLxjeIk33HarYoe7IZyiTxxJlL5pWjIPEo/VlqM9ujlEmSxH6dK9WNNsx1584dz/NS80LgOgiri5s3b8KCcTxsTzRrNPLevXtBEGCU7/v3799nWTx58oSZtLq6qly+YW/0cWlGWWqwgQ0xwjDEEHOVxcThURS1Wi1U4vu+/G5bFEWHh4csJI7jUHwzVDnqYcv5KGMuow4ozPZDUAEJqUQmof/Sm0jMaSV03UH5jP9ajbkM/+r6bWqgoSQMYxpz2ZRIKlHKx0ZHy6yZGGoocQ+9mbmgMcHOCdZP4iH76F7owMtp7K5RFC0vL8N7q3j4gaUoih48eMAa982bN7ESoyiq1+sPHz5khgFz0S7UaDRAORLi8+fPUcb3/Xq9juY5joPEJ19pbW1t4bPnefV6/fj4mOaeiB4iqzUMwytXrtBS0FuJQCwIgrW1NcgIXoH5vg9XnqB5ykZiySyZhjaobTB6Y1JMuAx+eHRZ04SAzc1NKhyGYbPZjEcp9dmzZ77vyxeR4A3pZ6W3lb5K8jFXbuhMTEXBnahJYeaKVSyjEzaUzqA/HjLXzMyM8q4IMw1JASVz9ft92pMXFxf90WsIof1RzbSBRlHked79+/fh3yRJoihyXRfeqUMfBuYCEsEhRhRFQRBsbGxAw4UX8LVa7fDwEExCU+/fvw8JkYxAG5AmtAGYU0OvAAJCI2HvTxzHg8GA7QYIguDKlStsfwCjAFkjifiZ8TwPKBiYsVareZ7X6XQom4dhuL+/DwUHMoX+T2kO9gFANwZHIQvAzwPERlHU6/XAA+AW2IKgawwSUFKsYiSpeDjwxAsmQfLk5IRungiGX3enrWJtbY01jHq9Ho8Or+7du+d5ntx1ARuypLcZdN2WmjHVY65B3jtRDXkxeyyTKGV0xbQxTAbmYC6ov2azSVtkPJzBSWHak9fW1qCfQM+BrUMoTDcNIQd5nkcHSp7nVSqV1dVVYBBgGRhZHB8fU+aCKM/zgHRAHkOgcqMo2tzcrFar9XodWzw8sx9q3LwKA0DMBZlLot/vv/POO4YakbXDqhiU1Gq1x48fo3nIXHTaGATBnTt34Bk4CCxkzFWtVt98803XdavVKpQiiqJGo4H+qVar/X7/8PAQtqQCv3ie12g0DL9kssahmnAnKpgaRVG73a7VasiSjuPUarVutwv8Ala5rruxsVGr1ZBegbmA1CAtjLmgLWE1AXPJfVvIXDroOizrZaWNuSzFqLwNYFUllbnMpbXMy2BkomKu3KVTyiTW2xvODwAAIABJREFUs0X6WwdN8+LFi9CFkCwMs0UIh6FNv9+nxEEFXNcFcoFGDG2dMRc01k6nA1QIhFKv14EEkVMgF/gxhz4AucfDD49Dn4dwGHEEw236i4uL+MtPi4BjFtd1cZGFzhYZwjB8++23WRkllFWJleX7fqVS6fV6OE6pVquu6zabTbo6CeM7MBs6KgyUoOwgA664ffs2mD0zMwPVd/nyZahWbPYwWINniGq32/JnyYAwDCuVysHBAegEVf1+/80336Rz836/7zjOwcFBPPxNAs6FkTUMjaHU9Xodmc51XTqMRcfCKir86oAHbt68CcnpKDtWDSDM9YI1WM6Yixlh2atTO/mLFy86nU6RMZdBQMrrkieq32TLIqRmjTg+Pp6bm5ufn4efx6WlpaWlpUajgf82Go2rV682Go1GowGxEP7GG2/MDVGr1VZXV9966y1d5+x2u0tLSzs7OzATmZ+f7/V6g8Hg+Pj4v/7rv1BsY2MDqAe6HGjb2tqizNXv9+fn51ut1u7u7tzcXKfT6fV66+vr6+vrN27cuHXr1tHRURzHURRVq9XDw8Nerzc3N3f9+vVOp3NwcDAYDFqt1vz8PCjf2dm5fv361tZWr9eDUUyn01lfXw+CYHd3t9ls3r17N4qiFy9eHB4euq57eHgIvei73/3u/fv39/f3FxYWdMzV6/V+7dd+rdlsbm5u3rt3j61w2dRUt9tdW1t74403nj59CiOvXq+3sLDQarU8z8Nl+ziOO53ON77xjePj416v5zjOxsZGr9c7OjpaWFjodDrAsycnJ/Pz87u7u4PBYGNjA4auJycnv/Irv/LOO+8ABRwcHBweHp6cnCwsLIB7T05OTk5OfvSjH6UudeHbRiDBSqXy13/91ycnJ/V6fXZ2ttPpNJvN3/qt34IN+tFwMevw8PCf//mfT05OgLlardbJycm//Mu/PH36lB5j/L3f+71er/fgwYN6vb61tQWVwgz4zne+s729/ezZs2azWa1W2+32tWvXoBK73a7Bz2bmwhAr5ooFE2EGOgEmptRgCd1sMQdl0LTSTuk+ZSmUMplKp5OB/Vw4uYhUoOH4/Oabb8L5MpwI3LhxQ8lcMP+CYRF8vrtSqeAIgjYpmIjhbB20+b4PzJUMZ084+6tUKvADCzRHxwXAXHAOsVKpgIX1eh0WcWvkQ9kPHz4E6oFM8fQiXds+Pj52HAdGpvA7jwcS5cs7WnCYLcKSnG5SqasmfEVQr9d7vR6McMEwx3EajQYbc925cweqBkaR0eg6Vzwcc12+fNl1XRy5xHHcbrcrlQp8yxKET05OarUaTPdgmHPr1i1WTPPkEZhreXkZxm6QV61Wg0EoDvFgitpsNmFwDTZAjuBtGJcFQXDx4kUYT0GTY06Dhzt37sCyGqwGhmGIb4RAT6rnDWwTT3KFXgdT2xm2gxKZy9Ie9pAYGVypRKfW8G+m/VwI3/dXV1fpopKOuaB1IrlAA4KZIHMRqKWLU9HoOheYDR0ATroBc8EgCNo0FiSKokqlcnx8TLPzff/JkyewVoKZAnPhXMkfnt+mzHXv3j2gP1S+vr4OzIUh0kvIXPGwB9JY/CVgfmBtDJir2+3C7AmMDILg8ePHNLnv+ysrKzB9hl8UGJQhGcVD0r927RroweSDwQB8ODMzA8phoIRTvH6/3263qcH0l0wCx1zLy8tAN6CkXq9fvXqV/igGQVCpVGBgiyuSYRju7u7i7wQUZ3FxEXxIa5kBZovwagUa0rVr16BCdcuR5l4Wj/aX02QuZYFleFbm0oUzGbNViZ65qAadNl0WShswBMdcqfZTKFfilcwFgx1YWsL2ypgL7cHXdrCYxcZcqLBWqzWbTRxMwYPjOL1eDw2AXgptHVe1IHfopVEUJYS54uGnfIPheV0Y44C258+f18gXaoGSYHUsGr6ek5MpylysIsAqXJWjrkhUzHV0dAR9Gwzr9/ssO8/znjx5Eot3i5S5wPOwkE9/cg4PD6PhsvrMzEy9XocxFy41xnEMU7x4OBKE8hqGXf1+v1KpIN+h/t/+7d9GY5Dg4N0xXeeCBUqsr36/v7KyEg9Hr7RjUnfBmAu3rTiOs7u7C4unbNWSQdebWNSpMZfObokczKXLJdFzjdnUhPjBRkNqoZTCmZjLnItuthiTLVfx8K2fcugOEzEWSJkrSRLoybC5AboWKoexA2gGaoAxF80OZOibpocPH0LxgbnwHSL8/oMMROEoAxaVKXPhmj0FZS4ZBS80aaCyQoGJgLlgTMpek4Gk4zjPnz+HEHzdBrNFLAV4/t1336XV1O/39/f3kV9gXo9jLvTb8fExvqOEYZ2BCHBkfXBwQCkyDMP5+Xl8OaNkLswFRmRoGLz/oW9XaPEBsJAK7AZtaXt7G3k81gwCpOcTDQVZMZeyIulfpWqDgM7LEjl2RSjtpw5SmmqIssyFSSqVsAcWWyJzGd4twlQOdzzAQABmEHSZmQF+Px3HoWMu6F2QFpkLxlCDwQDeKMXDMRdOVHHMBQvYdHfPwcEBMhcOZ6LhpgrI9NmzZ7iHC37D4QGYC0ySC/D9fv/27du60sF+URYoax+Yq9frxYTvGO9DX0XqRM0R2baKBbxx4wZLe+nSJfAnzJF938d1LqymnZ0dyoCu6167dk1XtGi4AwNeGsZkdrmysoKLg9FwtkjfLQLLwII95WjYiQrtQdfMtra24uGPFjS21dVVNrW07IDKKNsxly6zTEANOi9LDAaDHO8WdfkqXRCPtlFz8ZVZ0ECdl2RyZlWcd7aohIG5nj59ur6+DjeFwmWh3W4XXn598MEHOoU/+9nPnjx5cuvWLfr+cTAYrK+v//jHP7558+b6+jq8oLx169bNmzd3dnZu3boFQ4/BYHDjxo2PP/74+Ph4f38fj8j9+Z//+ZUrV+D9I+CHP/xhq9UaDAa9Xm95eTmKoo8//nhjY2NhYeHp06eYaRAErVbr4OAAxhGDwaDb7d64caPZbF6/fv3q1av/8R//wezv9Xrf/e53lUU7PDzE8QiFrLjBYLC8vByG4d7e3s2bN+Gy1ps3b/7BH/zB/v4+nPhhLzr29vbgOEGz2YQ1QdAD97X+8Ic/ZIcH/+7v/u7+/fv37t27f/9+t9sdDAZHR0f3799/991379+///DhQ3igV49GUYSsxDAYDA4PD+/fv3/nzp2///u/Z4cN//3f/x3yarfbOzs7d+/effLkyb/927/1er179+5985vfvHfv3sHBwV/91V/duXMHLD85Odnd3V1aWoI9XHJ+jS79h3/4B3D7/Px8s9l88ODBT37yk5s3b7quu76+3m63wRLZgwy8QWE75jKrlkkMFmRCvp2oykx1tmGsLrnUw8TMzpGxsYYNcXe4fUl1SD39Y05epMpKBBrADMZZz1iz1tWX7K7KZaZEsB6bJU0GOK3OLcOm3tFwP7OUVNaXfOGLflA2M2UnksjPXLo8zNmbPahEwdmiNMBgMNMjnxM97yizjlWMqdSQJIklc9m4seAtN7K+DM6xt+psgTUPG3mzsLnxjA/mlmBDbeODrlOk9uJJM5dltVGx3MxF/1VqVtppticZdXFi4WsZK82Iy2Yuwwr9S1jCvrlaJsynbdw43Xai6xQGAknyMVdMKsas3ZBrJhRhLplpYsGtieCpREVVMipVGzVMml3WbDGKohs3bmQ6IDINyNc8xgdzZRmslVHKFvhphexx5n6k7LCp3TPnmEvmqkxijrVEQeayF1MWNrZjLssymotf4gr95uYmbv8B4KQgGgVNpbvCaUqgXC6ZMHI04LJw6jWSr1Vk7fW0r+n4JM435tIZp5Mvwly5zy2mgjGXpKSsegyls9RWInP9yZ/8ydOnT2FbI2IwChqufBgMBp988olMaI94eHkmy5cKpIIVgYazF3OD4dFrvH+V5WKZo728pP6sWWBCJSkMBgM8EkhLpKxQmrv8V9qpBPtyIqsyyHfCt+kqAXs1TMyl4zz2oERx+wYZ3y1myp0WIVaVTtKZVFsKc4FAPuZSKr9z5w58qg+/bQff0Uv/Kp4K9ON38I28TKl0AvApw+KgH+ODB/geH4MMhAOP7LOM+FVHLy/8IfBZRtFY5b8GtFotQ6y8WMYMvLEH/qXfH7NEvzzgCXAayELgXzjKlsJc9mCd2b7v6eQtmctgjEG/0maz8Uyt2fhUsLRsnStVp9lvrEnB6UJDo2FtER6UqbK2bAbWc8ydrdVqMWEzmAzlDh1NMN7JwVny27QbGxsykCIfR9OfBMOvC5O3+Y2xlETh1CRSwOaHE3/MbCxJYa5MndC6z9oi65irLJRCu1nTsjGXjWazAJ2A5JjFTGZhZay50KW98eViyNoQa0Y8anaqvBn90fuaDSGpwyKaNlXMDDgRSX8ODcJMIAzDKIpKYK4xYdzMlZDZogxPTVuuo7K+WzRnzbrBgHwWNLLrxpZipaQaE7IaMzjV76RiBZnFBqMvUgzyrMaZsM2PmVK5TcJxUweb8eRhrrES3FiZi1rOiqArVKKahI6PuVKbyKn/tEy+k2caPE4VjZqRykTsR4j9LOmS5AiJNT9vlAHTyzMGYEdLVJi6MVfWd4v2Nidi0SpHEsZ9+V4tAT766KNqtQpHVQHT8BLHDPryS4lxN6EiDp9CGEgBR830ZR9G6ZKwV6s2AzpmyVg9nNo85FiB/Tu9zBVa3ENPYTlOjDXMZS61IYk99+kSRsO7Q230vMRZRJEOFZE1LxY1VnIZjO5EsUmiHBMpw2kSnR6ZUJmLibkSPf8Zsi+CaHhHxyRX6A2llpI6X5mTKKNSmWua5z6lVz3gUzakOovMlRupXKPkE12gTJiBuWxsLV5gilNhrkzI4Sszc9mv0P88QNknp5nBDcjRoZQ4K8wVG/fBJ2J8QPlIpj2rzBVkvJ39LCKVubL22DPaw1Nx5spFu19xbVPLUxI6GqHsowuJR7leklIG5lJSnT3B5ag2fLc4VuYqnXDz5VX6OlfWV+BTCGm2zTLzVEGOEU7bojhO++5GWTBzTaxhrlQotVmNuSZWAS9evMi6Qm+PpNgvYelOKJG54H2f7lAbgB1Mi1Tn4Jiw1BmRw4O0M+DxNwxnJ+CU9ihfU7I+BkcpmcJ49Bgj3TSATEeVY0L6Bg0MYK/tJKSLdG9XzXqwLFQbhqD9VIbZHAkwzWbQqmfAUzjMjWgSaw+G98tK3tGRkS6Jjo5yMpeu56fmZ49BrneL1EFmmaTAj6GNl3SGKRFFEVz+nckMJQ4PD9mBm06nQw+pSfSHJ4Tk6R8Kdh7IvO85FdgZlP/2yVZs2ouYpDJQZpED8egO3lgc86YyZj2yrgsaVlwDNRutMpQlJj9CUZbBmmQDMzcZogxqbe/nMvf8RAwC8wGZy362mGo/szA2copZg30WNojKY64bN27ASTEDFhYW6JkyOFaGh8vkKTNMqAxMhVKYKZEm0RAaRf+CjDxeLgsllShBj+bhXzxPZ3NQnJ7uZqcU6elFduTbHrrzkhgrhTc2NoqczQTozoqah5YAZX+hITrCskS2O1Ets8zR95Lhxs6szJVJPz7kMLJ4GRnKYq4oim7cuKE7yawMx4PQ7EQ0+xcuKjAoNBx+RjF8hk+QMnnLk9W0O8HHuu3hkmshWCfH7i1lmIZyYX3meoQBlSerMUQZVR89Cy01SLqnt4zAA/5UIAxDsEQMEWg46z5Z2YoiD3OxLKVkbuRmrtSsDc5iMjo9rA4MkpaAE9clMhfM5tgkEf7FiR6bHtIJIJ0typDS0Se3UCgNUKZitBuK8iJQlXnWfFqAIuuMpKWjE3/6oCsXhMP1New3SYqx3y2qXPmT5vt+rVaTY67UvpCMMpf8NyumhbmSMY+5aEYFjVfWQQ7YMJeNcmCuIv0TiUMiN3PZXPxElaMBrCC9Xk9nG5WXPU0pJvXnAK79FdTT7/c7nQ5zvo3DUxcx7cGqKbVQvu/Dh3stGyrrJoxMMhCVQKF1LpnEpqcZZMbKXDonyihLbQXtKYu54jiWzMU6QBAEZgrAIQ9bhpeSIMOiZELGSiwkHH1FIM2WWbNhIy1aaE1MNh2eDUjzcbdukGuTb2gsDo7CSuRiewBzAd/1h98A1jVd2dfoQzxu5pJ2xGWMOHQIx7MrQpZcKSOTsFjqgYImRVE0NzfneZ7NeidCvpMeDAbvvPOO7/vQtuBnvNvtYmvDvmfohBDFZovKsQBopjzI0lIxnf5UexDvvfeejTD2XsNY79133w1V/dw87oAP6yKUlvzTP/0ThFNXg4vwAYWV1YFWPXr0yFBMarOSsGg1Ib/Aw6NHjzpDmMlOybOQ0Pf9SqVSqVRmZ2ehnxpaL+OpWNWnxsJcus6ZSgFFEI6BuZQlx6hY9VNgUMISKiVtrMIxV6ZXzsq315S52IKFTTeQ7R6br4EIdOMIOsIyj/JKWURTLuJYpmIhdE0QQYeTqQrth4oysN/vB6rtLLoqsC8yXfkKVWtk9qqAuWZnZ2dmZiqVSjj8LqykDtpfktERVlyMswA5v6Bh39NkYcxiYQHmMivPZzbTIGsozrthPYqimZkZylw2ejzPu379OjR0JK/bt29L5vI8D3a6mjsAgM6MlL0an5V6ms1mvV5HG0LrSZbv+/DiTEZhf2MrWVJyZ2fHcZxUClOSAr46lPLK2aLyNQiL1UGqarVarusaltvD4SAanuXqu5QPgsDzPPkDplzpb7VaBlVoAD57njczRFbmkj0olZ4MMqUxl7JLy8KYNU9ghT6rSTKJDMzNXHCbsxxzISXJTYBRFP36r/96tVqFvgpibMyFP93wblu+IaIdgE4MlctbtFnj1IMJbG1twet22gHY28Ner0f1hEPigFfvMi9pgG5x5+bNm7VazTBUoV2XKQGzocmxfA00ZDAS/6XOZFWAYru7uzDuxvBgFKHqLSFb52KAYdH29jY1lenEv7VaTdpvYDHf9xlz6fqFJaWYacsgYLVCb98bC6YqsisiR3aniyiKqtVqvV6ne3zkxkKGer1+8eJFWGuA7/04jnPlyhXYGxWO/izDzh1ocFtbW7QFw8YobKmwbQrIBUgwGO7nQs0wncEo1nmgCMoeLrsNTQtGok7WkRjdsKyDUUaj9tDurSQFFIZVZ0yl67RUs+zewShtSd6UuWNF6IpDXcEElIYhSzqOAxvxmAFMYRAEGxsb4AEMbzabzAZaFmSuc+fOGcZcsX7YZRBLxCBLCoydufJhwmOu0wWMuYB9cMtf6k70arU6NzdXGQK47/Lly7Tbh4S5HMeBnrmwsAACnufhnkOYJcEmnWq12mg0IMrzPBiJQKY4LgjDcGVlBa3CwHDIXLpOFYbh5uZmtVoF8gXs7OwEQeC6LpQCR4gwzwVtrVYL/ADcSh0Cvcv3fdgqSTtbEARYFrSz0WigV6GvgpfAPwbLwWPAsGA/dnXHcWq1WqPRgBDwm+u68LU3yBfM9jwPttq7rovJG40GVBCSC/x0geUwkYR1cawX13WvX7/O2I0yC1Q6biHGjbVwGCAgPwCu666urlK69Dzv0qVLYKSSmnXMpUQyOjGMjbupdCHZmGuSbEWBJ647nc5YM0rS5rYsfBwOAeba2Nig528Haej1eo1G49q1a/v7+91uF74Oi7NFNmRYXl5+4403Ll68uLS09L3vfS8Mw2azOTc3t7a21mw2Xdedn59vNpvw2mh+fv6rX/1qSN67V6vVW7dudTqd5eXlWq3Wbrd3d3f/z//5Pzdv3tzc3FxdXa3VapD8+9///vLy8uLiouxOaBLc0728vNxut4GSGo1GGIaO47zxxhu7u7udTufLX/4yaNjc3KzX661W69vf/na9Xt/b2wOamJ+fv3Xrlud5jUYD35Rtb29Xq9VWqwV5dTqdpaWlzc3NIAja7fbly5fByHfeeWd9fX1tbQ2OEOHIiDLXo0eP2Cu/brcL7NloNK5fvz43N/e1r30NidJ13eXl5UajMT8/3+l02u12o9GoVqvb29u7u7tra2sLCwtbW1tLS0vz8/PXr1/f3d1dWVlZWFjY3d0Nw/DWrVuwFol++83f/M1Go7G5udlsNhcWFhqNxvb29uLi4ubmZqvVajab1Wp1bW1NyVxBEOzu7m5ubtZqte3tbSAvqPGFhYVms7m0tAR11Ol0QBL+BXQ6nWaz+aUvfQlyl8wF1EaZq9Pp0IOQqTAPkpRiSkbLz1ypeefDBPZz2YczmdLtiXLdFYEL86gkiqKrV6/S1XEEDBNgLWl3dxeHM3T6icLAFLSlQqpwOOiA5AsLC/RICubLZotsqgILZLSXAhOFZEobBMGVK1dorOM4tJcCUywuLsK4CbMAZqFitVqNlQXGlXCQCAZQ1EI65lIub8HADSR3d3dBFQy4gLxwoQ2KgzNKuIKNDkjBPBiOgeW4SB8EwcrKCo7IYHy3vr4OAhCOY1UlswDq9TpQD6RCt0NLoGnBKuq69fV1FmJgrjAMizCXZDHlOEum1TKXpRH2wpYYN3NljRr3mCv3LTesrdAV+nC47xRaMLCD67qXLl0Kh+MLmKHs7u4C9UCjhB9qOnNBvoMJHUQtLi7SrgWB7XYbpjOYXL7/arfbMP3EidXly5fBNuz2MO0FeVhpXl5exnI5jgM9EEqBknt7e6gB/kLXhVhveHL4ypUrWC46uwQ2p6ayB0iC01VkLnx1C0MhZK5qtdput6lmcCD98QBhYC465gLuBgAJ7u3toWM9z6tUKshKaCRb1KPMBeyJzIU/EiBMx1zg2PX1dUncjLnOnz8PzBUM3xEpW6nsNQa2UY6cEj2m9Asa42AuA1KZaxwowlwMjLmAOKALAXP5vj8/P48HmGH1Z35+HtePcBGNjh2q1er6+jr8UENUGIYwvsA1OBwIwHIYrFgpmavT6aAewM7ODvT/SqUCw4oLFy7gYKrf78OIIxyOg+r1eqVSgVUtHMKA8ZVKhQ7EoPfimhqOROr1enUIWAyCYlYqFdDJptvwG+C6LugHa1dXV8FgGHPBHLZSqcDvgeM4lUoF1rmQ2oBxlpaWgMJwFQlKhEtvQRBcvHgR9KBntre3gdzBe5VKBcZcrLrRGyAMi5hAmlAv4AHMHda/QAzfEgRBsLCwwAaJmZhLkg5tqJZsk4gRWTpznS55TYy5pENtxMpFFEXwe5svLf1XyVysB9KXdPgDy3668V94jUh/xikBQb8KyBhHbjiAaxjotHRrawvnazAOglRUGzUJKOnBgwfIXJBqY2ODvY7Y2tpCUsa5HmyVopPTZrOJ4y94aLfb9GYIX9xvgfJQhGD4vhWnyUCOmFc4nDVfv34dCCgk8z5YoacjLHobBOQIN+FARhC+vb0N/4IxtVptb28PLcR6RIOBoBcXF5G5gJR3d3chCigJwoFh6Z4yeI+BgbQJhWJXBDAXbYo2zMUk5b+y31kx1ylS2PjuijDLnznmikfJizGX7vSG8igiNFnl5u/Uc44oIDcKwFsz7CrwDOMLHNbp9iXBGzqQx0kfLQjLS6mHbhlnIVgEuQcCpmb0Ze7CwgLduKDUTC2HkRHsFsbeDiPN1dVV3FmiA9vpDj859HYaeBdRJxeWgZF0HU2OlUIy82X6mQz7BWJ6ijCXmWQMz0rknC2Oid3w3WJW5ioIA3Mlxt0oRYCzxXwbWSneeecdujkLHtiObcsDcRTKffDsQCKIyUA0Bl7/gQHtIcyp4CUdAMxWWoLnBJke5Z6sYPgmEe1RaoNjklQSjvthID3AyNDv99vt9t7e3t7eHpyRBEpttVoQ+O1vf5vRLoohsJpQ8vHjx6B2Z2dnb29vd3f33XffbQvQDVwhOaWI9KcsNX3zq4sCkyhzvfLKK+fPn8d3i7pmqSOgeHQ+SAVYQh1tlc9cBeks352o9voNNmeKUobYmwEocZ2Lnf6hG+Jpz5QNV/ZempBtgqenYdhue3ngMfV2GnmfhNLIVLN1t0cYoBxjZlWlO6IYEpakAxzlEM8wfMNBUOrgEWNRgB5RomM3XVmUUJoEzHX+/Hl2+oeB9RpJMjbMZaCtSTBXVi4LszAXdYRNLjrzpKMNsZaaU1EWc8F+LjxBgmsruk6SFUyVkkp0PVDOXPLZkAk4FZWBjG5SfcJmWAaZcJQvJHNRV8hwNqGjAh1yctNshpwkMvIyF1YHWrm+OP1jYK44jX1Yp9N1QKWeoswliUBXBkuEacyl02bOiForbVZ6jf6rdLRVefQod8yFzCU7CWv37IE2aOUSkrKThJpuyboKDWdvG2V3CsRNCTKE2UD/lVmzfw0DHKkHnxlxKB2rfB+is1bHKTJrHeTBJvn6xR4GB0rz5Ilr1hQzcZYllNpy3nKjNDeTEh3CvOtcMutUC+VDavKsVhlQOnMF5KUYvT+eheA7KRtQPQaSgheOIXk5SHPHPV+BqgNTyHeUMneZ1tBvMxU2lTLMaSUFsBDK3SxT6smsZujYUIbQt5CYXaBiaqU2eL9ZqVRsmCsulbwkMjOXlMR/dUqUenSYQuZiCTMVxwBkrkz3cynNu337Nm5TqmgwNzdXJajVavT8o00qeGumBGxo0sVCwvn5edzMheEGsHd88ghnbfRDDywKD4HW9aBfi5BAPfB6FLY71IdflKiPfpwCZQCwKYFueoBARwU8S18nH7lwRr8bBGCBVMwZPa5PPw5CQUPoV0J88pkSpQCgXq+fO3fu3Llz7N2irisVIicj8py4tglhptv3w7EylyFW+WyvIQdKHHP993//9/Hx8eHhYa/Xm5+fn5mZ+fznP39+iFdfffX8+fOvvPIK/FTOzs7CzXDwFxZc4flzn/scysDDK6+8QuVnZ2c/+9nPzs7OgmYmBgu350eBkwtMhSGf+9znMBDw2c9+lqqdnZ2lJkEUvNiipUMZCDl37hyUV2kPdDx4/sxnPgPP8BcOtUhJ6KhMFY1FYNEwa4xSmkETogzqgZDPfOYz6DQaQpVgCPM8E6O5M+FXX30Vq1Li1TwiAAAgAElEQVSqYpZ/5jOfmZ2dnZubk+eLleRwCswlAy3ZTWqw7PYFmSsH7O3Upc2HHMyVmmMURbANCm+txL+zs7N0MAXh9M4JJKzUgRjTMEOAsZgdCzcrhGEgtZyZLbNGGVleZpU0iVk+I0CV62RYAZFnlZ6RljM9GELLkpq71JMD0m/USMrLEF4dvQFUyR70uVyk76HPF8Ji7ft5EeaKR0etOsjYOAvDZiqOQazEMRfVCZsVYZZXGc7gKpUKzg0xxDDBNASyO3ZYj8V/JeMgKzFJqodS58zMTLVapXpmNAwo+y1TxTCjYoGKpt/KrA09n7lCxurSKsHIIgekhlQzlCTIkkClIHPp2COZJHPJjGWgZae1BNOWj7l0RdAJJITgpIwueUx8YukHg4z9l2IzOVzu5Smy8GwAXeiFCwgzwVN9QhnP8eDiC3wXliaRiy/KdRm5SCQhv00tF5VQhi4tWYKuhdHAVCgX+OTynHmhsDZ6StSwXEgBy5FyIZIta4Iq+PyP7FMTgJa5lD3TvsfaI5k4czFJ+a85rUxitkoXW9Y3rnXKCy78Awz7+2UWpeRIlcv7fMqCpcLS87VEn+Dk5AQeDMInJyc0FdMwJkSjB61lhxorso25lGIG2Esics8WbYyh9svSxSquSYxjNJtMdVFRFFWrVdd1M5QhO7B9jzWXuABXylS0W8aCO1heynyVlphdYW88zTpTEvgZULIPszBTrD2kK2iUFLOEshONG5lni3HaUKIgxsdcsWbSJ2Vs9BQ35j//8z8nwFxnF9DP4SZYFijFsqo9E2BlL6gqNSQrktGfc0kj4yKtJEks93PJcGWfzwFJ8CUyl7LAGBVr+EuKFcndoCcqb8xVYm801GwpNZ4VZ4hoft6ATSU5Q8xVVuHLZS5ppxJMkhVc+iEfmE4pUCJz5Rjhv8S4UVZDOl2YS5FoSIolHwesZovK8DGh3BV6Q8mZWAmmC5PM+k9OTsraFZGVuXSrHmdxgDO1Zstmduag7CxMgEnSJJmYKCus9tBLa2LVUMXsAhtPZb3lhtqgs1+WwixZHJbKozHs5/o5xLjHm1mbymRa2lgbcA6kUkcqsiYx3Ykq1cV6Gja70tLRlsyls9CQr7Jcue00w1JJicyFL87le+to+IKcvUtiAvJlkzLQ8ELKElh2++TMaUpVqA0Dcw/EmPI448Iua2altChlLuNQmxu63mcPQxJllNUtN6wm7GsxB8b0bnEcjamgnqgk5hoMBt/61rdWVlZuEOzv798cM+CKzp2dnU0B+CAjojkEPG9vb8PzrVu3tgWaFriehtXV1dXVVRDe2NhYHQKiNgg8z4PNroAbN25A+Orq6vr6+snJiWUt0KbF+lvB+p1+6AihIHOZteVnrjFVSZF1rljfUOxtNsuw2CJOiIYr9FHh+c7t27dDiy/fpQqcFbBSjGOdKwzDWq3W7/d1Aqk9kD38PED2DnuwJPRfpSrbFXqpQhpaCsa0h56J6WLZg0Emq6RERN4tFvSkjrno3GowGJwuc5W+NQlniErNqbv/da6AcDNzyZ4mmxbrI7KKx9F9JgxLGrJHrGIrpapCzDUO9Pv9rMylNJuFGIpprzmTQGrarLNFg/3AXJZ6TgslMhdd1aLMxZiapkqlbOZVylyG9qPscga1nzLQIkv/SL/Zg2ah1JaZuWJNDcmc8sEw5lIaqSybLmGqd8zQuSgfcjCXLmp/f183OhjrIOu0RnDR6JYOQ6wlZM0amAuT0LRSRtcaP33QEUichbyYfGryDMzFwnMUz0bMPOZSGqnzAi1CnObfTDYnovnapGIoa4U+TmMum56snGnm1mbIpay07PUfPuvGXFkBzGUwOLWWdW1D19HOIgw0ZCAdQ5/V/SuRwlyGWCpmLpuNGCI3c8lYs7BNESxtNiQ0+A2Ya2NjI18WFN/61rd6vZ4ul/X19W63a9YwGAz29/d/8pOf4L93795tt9svXrxgkj/96U/b7TZ06Xa7fXBwILUdHBx88MEHz58/hy8hdrvdbrd7dHQUhuH+/r6SDnq93rNnz5hJ9BnX6V68eHFwcIDlpWJRFHW73YODA3rir9vt3r9/31x8pT21Wk2+W0zE7yI+W/YXHUo8pTh50D4ow3WI9VSVmly9n8smV3Oq1CIpMRgMbJhLqV9XbHxmepQFVGahNEM+mF0nk0cWp3+kGXQ0gbGGda4oiuCO8yiKQvKdxH6/Tz/z2e/3a7Xa8+fPgR1gxBGGoVwtunPnju/7kLBeryvtdxznwYMHURT1+334tD3sDoOPy+PwkJFOvV4/Pj6mIfAX5MEqlPR9n2Xa7/fDMHSGn7lHVVh86lVl/dJwcEi/3ze3diUMSSw1TD90ZZwYTDtRmYk6c2MLoo0JWRjcgcwl2yVqtndcrG+jOlOV4Uo9rDhKL8UqHsR/oyiqVCqO47DXf7FxUhZFEQwEqIySuYA14I69Wq3WbDbhq/fwGXff9xcXF1EDUBVc8wRkB5TU6/WYJWtra0glwFzSWsdxcAAFn12I43gwGARBQKdgz549o9cTuq4bDL9D47ou8OM//uM/Oo7T7/fhVr9+v//06VNgLqBC5EHP82q1Gtw+WKvVcDCIBjD/6xoteg/4TlmbOaDLyAAbmXFDaUMRP5QF7W3OiaqzKVVYlkTnBYpU5pIOTc0xUTGOrg7MOpk3Yk03SFSkRsOT0TFXptUf3/eXlpaCIKALW0rmgtEKjLOq1er9+/cpJcVxfP36dRCDvl2r1RYXFz3Pg04Lo6SdnR2qOYqi5eVl/Bd4MI7jGzdu0GGy4zjb29vIR7VaLQiC69evA7lEw43poJxu5YfDAGEY1ut1UNjtdsFFQMG+7zebTfBbEAT0KnQoBQwn6/U6bBPp9/uO44ABMApjTULXTpC54pI6qiGvaYbS1FIcUhAm5rJHrOrPUqeNg1J3RSjzNZiUNcqy7LLIrCxSLBllNGAux3FC8bF7gDzNA+FvvvlmtVqt1+vwddh+v2+eLQJfwNzQcRx4JxBF0erqKvRM6N6e5+3v78PcCnghCIJms0nnd2EYXrx4EakWmCsMw6WlJcq/juPs7e3h6Alk4GuMdMy1vb2N4zU66oTrp0Hm+fPnMCyFAaPv+3fv3sUxF2iDWafnefCb5/t+tVpdXl6GISdczO+67vPnz2W9yNrHdkjfLdo3jNQ2IxvM1EK6JZ4O2kp0zJUYu7cSWCpD8cw+gofU2aI01WCJrnTmgtAHmW8sml0inEaTSHkAMBd+QoJdAc6+V4gXgeOnKDBtrVZbWlrSMVcQBHBndKPRAIYC39LRE/TSIAjgi7NIi/D1WRz+APFduvR/2/ue0LiW7HwvTEAzDwSz6J12nSwik00bJtC8RWjjBCTxHtxGYz+U9hDcEi9B1rzgdI/zBiTFCajl8eL1i8OE7he8cHsGLXwxj2BhyEJ4M+R5J3BWYgKZhQg4m954Vfe3ONHJ6XNOnVv3T7fk+flbiNtVp06dc6rqU1XdW/deo8wF7yNn+/RRFD1//hzYChjn+Pj48PCQrhaTJIFc/JRsFEXwmVJ4ozyIvXz5EhgEGLDX6z19+hRMgq6CxAckBZXCJh2ufIH7WE+zQZmLNnQRqBoyWTVLSCPdhaGtpFzmyiQmwwQXgTv0hn5bLESACctWlPY7P3Op/roz5gLSeSXwchKYEsfxn/3Zn1Wr1Y8//vjWrVuPHj2K4/gnP/mJulqM43h9fR3IZWNj4/T0tF6vv3jxwjk3Ho9//OMfg+RwOKzX6ycnJ3/+539+cnLS7/e//vprMOOXv/zl/v4+3PaCr1h/8cUXUPz169dXrlz5oz/6o6dPn+ItSPAUmCuKorW1tTiOnz59+uTJk5/85CfAXLgx/+7duydPnnz99dcnJycnJyeLi4tv376FjTwkmlevXtVqtaOjo2azuby8DEcRr1y50u12nzx5sri4uLW19Zvf/GY8HgNzPXny5MmTJ7Va7e///u9brdZ33323ubnZaDRCbtvRZiqduWQtrEOmmpdqc3Ek/gGiJp4jymEun7dSLSsiQxb4VERi0kQmSzLl5tOs+jIej3O8WXAwGOzs7LARxVaLUCNuIcHaqtvtwgQK99fX19dBHsZ8r9drtVo4eYGyjx49YhbirlMURbDahXScSTnnYBYGK1BckH755ZfAXDQCsO8GG1KVSmVvb6/X68HUCWRevXoF+02wz3V6evrs2TP4lA5Mr2BiBTM1SIf5KRgwGAzAVHlvMRH/maibbLVYsGMYnYQ2WT4UKWvoTCYHmvtdZa4cdatxD1ktOj9zhVhiyxRpIaMs88LlYq4kSdTtfHufC5Z+sNaD7SFAt9tFGeCUlZUVuGGHm9O/+tWvmIXNZhNWkaAQ7zDQmwY458Kbfe12G5kLXRiPx6DBOQfM9d133+Hrd0Dm8PAQaBQ57ptvvsGVLHUT6A/J6+XLl6AEGE1GMhHMRRNV5lLli8PT2qEorkHVmfzOMxfzVtWWqhCVFJxzFY9voMF2WVmc9rAkL3P5YJ9bBMKCyQuSy/Hx8b1791AGxny9Xoc9JpykSOaij87inUpYrGGrNRqN58+f45MNwCmPHj2CSR+y0ps3b4BV4eEG2LRiz1jAahF2wYB/7927BwthOjUDF8AeIB18+BY+cUhdSG1E59mhD9QQ3kmk5qwoRYlPLe2x6s9zhPd5rqz25fBHjTtjLpZL5dWq3SRB5LCT1pvbI19xqvzU8ySq1KD2Hgofc4EwMMj+/j5EFZ/zevDgAYjh0xLfffcdPOoFTTAYDLa2tnA9COh2u8gsMJ2J4/jo6Ig+lRpF0e7uLuy7463S4XAI61As/vz5c6A24MpKpfLixYtTAufcq1ev8GYo3F0FA2BuCOtBeJgGJmL4VAQ8VYtb+2qEfQ3kzHuLOToGq0KtMR9KUaLqTMhoKu516bDmXDlsNZyUiWrU5JyLCavXquasxrOyOZRIa53GOPDTN+fyaaOJrEjqnKvT6fT7fYxwu92uVqvwsChQAF2ew2oRKODrr79mFsIaMznbSqNfZsZn64G5YgFch0JxWSkFnujEWRsQLhIfPvBxeHgILAnLXtiAg8NGQIjscKiMsOwAvn0upqE4fK0WiFKUqGrlxYVCCnOpYaJivrL401ecCSSkx6jM5VOoBje1XgPMnhANntbnZZme8Xi8uLiYem4xtaLxePzzn/9cPbcIRd68eXM6eQJ5PB6/efMGbgiOx+P/+I//oKXevHnz+vVrKslyHYkP3Hb8n//5H6r/9evX//3f/62aitrG4/Fvf/tblvuf//mfr1+/fvXq1evXr6XB4AU7Snl6evru3Tu6wHz9+jUcXQRrnz59yjYH1UiyIANz+f4fZOpRIT0ntRf54POloLZEjOKyXC4LKftc+YwOLKKGzGCufOHLWqqIv04MACmJieH7XLSsCpxzMUm1FBNQzbNLqSmpRsqqwwsaUG9ZhJvB0hFyziWbuyBkpSwrxBFVPl88DTtL8bdcpDNXDqV2KTWymGKvFgNrZy5MO/S+WMlIUtvG43GtVgs5cc0UJiJ6Dx48QOYK7KPsp7TZLk7lDc0hZvhUTQ9GjQnph/aJ60xQDVBNyhQKVT53MFWzE9GxfcIzhpe55HU4jCiwFBo1uJBPReQ2Q62liAu2cNYiPuYy1Pr65TTeiapWFFjQ1plb81TBGsiYc5UC24asNsvEghEwspKLMQub4pxLxkKK0dDARSBzhRvmi36gF1klA6tzaczFwsIqYkXu379f+teS3lOwhypyA97NS9fgRYBq1UQj3YatKqvLvoKpBp8L3g/mSsQATjWsSIiz+s5sS1UC8nBgOORdEVIPE4AzQLYSplAqCSyVaD04qypaPHfZ0kF9KX3ORatQwyhtCDRYbZFy21f6UkpMisD7rogixjl/j5S1YDpc+OZcWePucyTENRfMXHZFPm0g/Pbt29R9LlW/lPnlL38ZRdFtgs8//zz1o4SZsH4G+XVF40uLGxsb9OcXX3xBv9h49+5d9g3Hv/u7v7t37x4V+5u/+Rsq8MUkHjx4gNf379+/f/8+ywWwUvdNPHjw4P79+7du3YKznCHdIARqL1VbORw+bfngMyzRWLWUmBRBme9EpcUTz6g2AgQX+N4CmSUtlCFWZbK65jIyl++nDVgtsockjS6ViJBeNGRaptFlHT56yt6SqsqwR1VPyQfZsoJ9G5xmQQpUHd6mdldx/j6cr1mlHl9icW2GI+eC0t4VEa7Bae2UhDFXJqtyu5CvLtnSqgYUC2Qu1TC7t31AubD7SaYeovYZV+o/pNxdQrWqoNfTg/U254Jw2qhjKU5wubFanJ6p0jDVYLsIa36fBhSD57ls5gqpLkcf/YBMMJogUw/xNeI0rC2lYLgvs0fKUxFZc6mMS2MuWcqZ74pgSrLqD4dqf2oR1tiy7d0kr52evRM1tTNRk2QVpUDVxhwJ0VCuVRcHspVpej7MxtSCBX2WF3G8FMxutWhEwZGukDrnook+/UbQs3qRSd4JrlEVuuDVIlOupgQihy8s+KqqTPqlPXbKVOGrywiCTMkUVSMa5fqVT7laUPXUFR5cxTEj5pIBomL0ApiLHpGVMj5tMvoF7Q/XYNvDUuACnooIYS5phlEkH5jvsgrDRyNRlmXygcKzgQy107qfr32z4jxctOBrU3pdlu/FYT0VwRzwiYVosLXRXPupiNRawu03IPWouSEu+/Q7wlzsRcOqTsO2UpB4RqmUcf6xPXsEVp3DQrtZnacPZOpjBS0sHbZhtvGzR/45lyGmxsLQQ6HOuWwlLKt4QJ02kgMLqrWrFoY/FWH3G6NIoCQr4quFOiKryGrexUegL6yJXcCIuMhRkt3YlTq4ykIJzOVI4+GF6p6bZAQmDPAxl6zRZ2Hx4DI7A1XJHqDagz+RuUIeg7Lruji4yLZND3Y/OV/bCsLnSOBQmh7yvxPVeZhLdc/QhpJwkcpctklG3MPhMjKXdNwwGwV+J5kLUMrJwfcFyeQ/JyP3fUTgEMiBgjozPxXBxAyHA0HlneepiHDD8tkglSRhzOU8rERt9smEM5evig8IhB3hUni2rJPeFw2JGKG5h1W5yM9cZYHFxfc8l2GYm5zg0CK5TTKqs4uw2lVLIDHTnIspZIA9fvukCztYA6Vk1exsDZbCozbsrwqsruBgpmZTq0IKFql3xngvrGXdL8eAKhczfSrClk9M5kINUpWsSA16EftZrsxyacwl2z4rcxn4xS9+sbS01CS4du0afFq12WyunQFz4eeNGzeWz4DCVABkmpO4ceMGq6vZbEIKVLG0tER/Ygp8OBb/RlH04x//OCIAGYZPPvlkaRI0pdls3r59G0xioIb58OmnnzJ/l5eX0ezbt2+zsMDPTz/9lIX05s2brVar2Wyur6+zKtbX1yGr2Wy2Wq1Wq7WxsbGxsdE6w+rq6urq6q1btz755JPDw8OQL9qeC3wjLmQ0uSmsOmfHXCHy7uyLOMb7uaj/qqm+gjlc8GX5XJMtzZqNZpXIXPfv32+32/RbFaPRSH7AguHo6Ai+poPAs8d2QRAIFMuUyHLpp4MQ1DUmoMobGBDYMjmUq4YNNEA6dPsLu+r0jTiZ4hsvVE9xTIW5VJ1SoZsc3oDAt9wYpkqxfNbaGmzzVNcYQp5EVXVKtZK5ikCSCxu0qZxlaLbLHh0dsXqRp+jgxwvJCIby0WiUiX0MU8Mj4JMES8AkANyYYqv1c4cx+nzDIetYy1oEMDvmsnMB8OE8dm/RF9BU/TkcydFUvsZOFSuRuR48eNDpdMLHpBzAdID5mMs3M1ILMg4ylBtGUuZC+KaTNivReVOR2RMgE3MZwpRM4XMqkEK/8n2+SPz/yJ3okOpwU8saWaqkxIyYS1XoxPDOwVw0uMUdUVvLp8EQto0HZGUuQy2dc9kLqOPjY0ZDvtGIQ843zumaEf/aUwyjunCoXEb1qwarAioJSoJGv3xZPpr2AaeHdM5VqVQqlcrCwgJ8IPLikBeFPX5VSVkwfCQaBaf4lhtmR2quC2aurGrzmer8nJiEcZONHHMuH+7fv49zLraqyjG/yD3nCtSmKvdlyVyZohKQXHhKmcAJnWTkVKdo7UZZ5Fxgrrm5ucuXL8/NzbXb7YvPXHIssJTAcZqqTcVUmMsRyqB2qH9prtOeRKVuyJ9q7bKiTGYbbcDSi+Dt27fVarVer+NTC2/fvh0T0KcZMPHNmzf/9m//dnJygrnj8fhv//ZvNzc3cdSxi9FoxHa1Q/bvUYOcUBwdHUEiDkLfpOPFixc4Pg8ODpgNBwcHR0dH1Dwqw4wcDAb9fn9vb49xEBWjqthEDKrDmQ6IHRwcwDXGBFLAKuovKun3+8+ePYMUTD88PGTCWBFNp3M9bBp0rVqtXr58+dKlS5cuXYKvE0DjFu9p5UIdU4awHGK+oSdHnE8+mR5z2Q5QSWqfO3snqo+5spqRlMFcPuEiSM7eLAifaZCbsuozWZB+9epV+Hh9HMeQ6Nvnwv/nbDNbSvpAhY3bgnRYqkrYHTq2dmu326m7VJ1Op9FowLc4WRbjZcYaWDud4LDZnL1+RLTb7Wq1OhwODQMAH3/8ca/XM0iWpcCcC2gL5lwXcMIFkGPEGBTqEPMNPfuaYUarRRVOMKvTmIsJGM6o+sPlpWFGjcV7AKwWK5VKo9Fot9vtdjuKona73SFoE8DPKIquXr1aqVSq1Wq1WgUKa7VajLnoBkqv1+v1enIks6FLR3U8OWtgq0WVClkiFlQJq9fr4c9erwd3k1WyoHp6vR686VsSx0Cg3+9TC6kYTaFGSnJhdfV6vU6nY8sAut0ui3C73d7d3VV9BMlqtTo3N0eZ6+LcYWRQ+z9LlEMP0/ONRIZzYC7nISO4UJmLSspwSP0ujLYNC5l5siXyNvr/YTweR1EE0y7A4uJizQSw1eLiYoUAlpwwbUFyGQ6HtVqt0Wg0Gg0ou7KygsMPsur1OvAdpNRqtc3NTdh6a7fbKBNFEVxD8WazCTZHUQQpURQ1m02sCHQOBgMoCMKdTmdnZwc4GhUCuURRNDc3Byl37txhjDAajfBGQa/Xq1Qqe3t74BfwSK1WQyOjKEI2rNfrmAK1wBOwUBaNBE9BMooiOS2Cp95AEiKDfBdFEfw7WVpaovuMnU5nbW2N0lav14P4gIZYUDkw16UzXOQ5lw+JxlzsOvd4lIkX6PQPXNgnrmUgfNqSAk9FSKtU5bK1sjYz/FPFD88cT4KuE2nixsYGEBbSxBdffCFXi+12GyZ0sGxpNBowhuFTaYPBAKgEEjudDszgQBh5p9VqwTiHZdpgMNje3gb5SqUCg7DT6SwuLrbbbRyfoBxYo9frgSWwlQMvsO50OlEUbWxsACNUKhVI3N7eVmcllLlarRbIgxlzc3NLS0tzc3NQNbjW6XRu374NvAYM2+l0FhYWoigCe+ARBDAJJ7x0JShndu12G5arIAORhIaAsjhtbLfb9XqdMRfwI3A3m46ha2zOla9rzR6J4CzfmErEv//AUSklZzfnUqtPNOaS+1xUkvlvOC8jFWKkLK62CjOMWZgPIduxcRwDlSC1OfEk6vHx8Wg0QrqBxI2NDZikwFiFyQKMN2S03d1dnLXBZOTevXvAEbVaDSRhegVjGKcPbEI3GAw2NjaAy4AXarXazs4OMAuO1U8++QSnG3JXCEAXub1eb25ubnFxsdPpwM/BYADPEICnYBgIg53A74y7gZdh0gfFYUEtV4IYz/hsTVer1XAdivWORiN0DXDr1i22/o2iSK4W6dJVrhYLdqcSoY5ZmuvC/ovLISaV26MSkTLnUsukVsYMZRe2pI+5WBDdJFkYDoeEJgSpFSXFmCv1RhKeYf7tb3/LhO/fv0/vLcZxfHBwALOMO3fuwNC6efPm9vb2zs5OtVptNpvwVdf19fV+vw+3zGCE9/t9uLMGK8e7d+9GUdTv9+v1+vb2drfbbbVae3t7oByfnPzss8+gdpjm9Pv91dXV5eXljTOsrKw8fPgQVrXAR71er9VqQfHFxcXt7e3RaPT48WMkLHrXbzgcjkaj7e3tSqUCBwD39vYgt1KpfPnll0CXcPgR2PPu3bt37tyBaQ6SDuz3DQaDtbU1YK61tTU4ObiyslKv17/66ivKmHBHElN6vd7i4iIaCZNNyGo0Gpubm7jCZavF0WjUbrd/+tOfUtfis3upYNLCwgLcW7x8+TLucxXpUdMAGwv0gg2BUgadAetJVNWIEMuoDLtwGi3SC9+9RWkGrSuj1+nwea3WJX30tbp6HVjEADzPJbeTYdzC32azCem4hwWAyQtOT2BtBTMUWA/C4h23llAh7GHBuu/KlSswr8F7DjDDwlpgglapVKBxgWWuXLkCNoMM8I4684rPtopgsYarzna7PTc3d/v2bdAPqzZY1i0tLYE8SMKkBmoB4zudzu7uLt4hgcS9vb14cs8eJ0dQsFKpgJEQXggR/D8AZoTp1dWrV8E8vBfR6XSazSaEC++l0lsE6g59SOvPEoHjJZnawETkeYY+1SA3SU/Oz1ws0fnvLbpzZa7Uiuxm9jV8nr6jQX0SFaY/sAii9xbjs3tksGOFKbj+oosjWHXGZ4u14+Pjvb09HI1wATM1TIHqjo6O4Bo2sHq93rNnz+BicLaJjuspGNhRFME+1+DsfigD3G+ltaAj9CdcbG5uwjWWWl5ehlpgtyuO4729PeA7YDSIEg0FdY3e5wX78Z5vv99HPmKS9C7q+vo6pS3JXOypiHzMVW7XCu//4YOrFEzrXRHoJ7uQsWACmeZcIabmcEStMUReNdjoB2UBmYvdW8RpFA6VkMff2UkX3BtSi/sU5jgQE5+tm/AOIJ21AW/GaQ8uxJMzJryAySPoUasG7O7u4owSkelMqIQRc4ySylzldpJ8YD0261CaHgq9h17KOD9JyQsWILgwmEstm8PnVKds5TLLZ2pqPygLkrnY81w4SHahH/cAACAASURBVOQRPDq64AkAKoBDC29uShl7TGJxfKlOCHsOJoGJqiTNYkWoAMzCaK76aCjOknDWmWqtBC2FZ0Xxp+rFRWOuRMwPXMBtsZmh0JyLOsPKUv+TkpiL1StrL44QzbY90qNUF4rj4cOHbF6AZ1BSyUI9RRwL5sIsymXG0EUDGN34TmUbrOTLDRHOpCEOe69ZCAyafr+Yi17T3lvuuMsB63uLWXW5SW6WSpxnPFNkmnNRtcx+mS5zVQtZcSmmNm2qqUZicXz11Vebm5ux5yQdG4146pD+pOcQjwTgKJ/xUgRaHdTIUo6Ojg4PD9lpR3rbjqXEZ/fg8O6bdERlGXoIkaWzU42oPHxhC9FgrsVxfHh4CJpR1bfffotFpCX4F1TB9QVkLqPPh9PClFDmPlfWgmq8bOai4UvVbGflaDbVjBANUlWqAWpdvlJ0zuXb95FnX4xpCMsKnLDQ6mgVctlFl3i+hSHd+aKl5PFDedKI+RuTQ0IyJkyVz341RGgSc0RSp6p8NPlmwQvCXPYg8qXPGGU+Q5/VJZSnUQtkrhDNdtxVtU7MrWw3fap8RrK6wmHX9ejRI7xjRcdbfLbJgsDnTgdnJ/tkKTZofbkDwW426BHIAeEgCV+N1PjUGqXyfr+PdzapjK1K5TIaVcllA0FzKr/TuMHhzYvJXDTRGBczRvnMlaM4jVrIatE22Jb3tQfLVQV8rRtiqtE5iuPRo0d4/hGeYMIbi3hCBXNRhh6ZhJ9w1o9lqSmIBoEqoBaBv/DIldSDAvCEF8uq1+tUpnZ2bhEApeBZB5qIBSEXnyBjytWveODRd0wBDXCBQGE4I9n2gJqHKY1GAx7mugjMRSGHGE0/R5R5+kc6nCpPL6BgQeYKEfYJOD+jGS7YTe6TtMsysVThN2/ewGwCzqNcmibwHVI40qYHeNNevoI+82iWqlwWnDuDTxvNpRcSPpPYz4vGXLInBw6Q6SGFuUKsdJ77iaqYqt9lZy7jOjXuPr+MLNVmZ06djFJ2QSYWIk+/twiPlQPgEC9gfn5eTccUmogvosBSahFakGkIgV2EZRmS8/Pz0ngpBq8bZSmMRJgMshsryFKwlI+w7OJzGnOl9o3ZgA0xln6OSGeuEC3ojPRKOu/LgrI5nueSNfoKSlOdYEBfcakkEGqRQD2JYC671Hg8hkM2lHpgYP/gBz+giZVJoBhmYYoqL4uriVTt3CQhGhXRFGYb6EFtkEJdg9yFhYV5gY8++oilzE0S+tzc3EcffeSjG9UkdI06S32hWWBnKq9VKpULxVy+6/NF+rnFQEUFncHqUplLpvhU2e2hSvqK+5wNryvxcGVqWWZw4u9JcCG35OnGNk2hf+keNsu1ASds4PyND3gER80ycil820Zt8i5GQ6bdbuPeE24w4TdrETIlH6Aumd4Iw2AwCOlapYP1STms8o/wspHyVES4rT5JNznqjFxAJuZS1Qa2EBWWF2qlrEjWumwjU6tOvbABL7Z3Z4tKSMy6mVJk88V4E4bPHnl2j77VGoHv7GeJTMxnkgwLrUutUU3xwZA8OTlhL2IzrJ02ZM8MHOPngqkzl11EIoS5kkn6CFGb2jBUv1pKOuuryNCgmmGXtbX5JC/glxdmg3MZ9uENauNcCMuAPWTOFyUwl/NMBKQYTfcFK/D0TzLJArIioyxNlNeqjM/fQBj15oBRPLdmu1F8AgUdubBIjYZL27gIVFI6UsdXDm147QLYYGYobc6VisDIBr4rwqfWp1nNTcKYi9UiZVKRVd4ua2jLV1FgKeq+3YjvHYyu5ctlHcMQK9HITL6Eq1U9Yom2j7NH5jcLqvLhYmpBikzMpWYFNlgRZK2lRKtsVWrDSZnUQBmlQoKcBBCcmmtozmSAM313osP4fqpVS0tsAdXNQC8yIVN8AvXk8HQ2KOHcopT0lQ0JLjCXeldYWhiC3HsHF2rTIdxftRQtLuNPm8aljXnbGDtL7V2qGUYP8VklzVBV+dT6eqzUo0qGINWdCwLVciMm54KSmSu1FI2OGrUQ5mKq3iMUZEPaOrmL05+yUWiKzJJmsD7jAvq9UWMm70K6geFjeJbPl0xQVZWLsnTaLtgyM0PRNwsyN8KdT7Izl8s4dE9PT2PySrxMUAueig+LsVwQOJ38yBi9/01z2V1w391xSnaZ3JehS201Jklz5bWamyovCzKPfFYFOkXVqqaGSKresbBkRYg7FwSG70zmHFF0zmW74SY7YqJ1awabucJxenoafgY48JxwQYVMg9QmTzXDt2OjKJL8lRUhbUdTWF2pHUDaRjuA1KD6IgVYunQq0FmfDbaDdogKwmis84Xtu0w/F6Ts0KeWRzEnSEq9kGUZSmSu2tmH9gzI1yrZ8gawLvlsuiqJL11hWfIh9Vqtdnx8XDAggR0CheVFJnkneoVdUNZiJ6Z6mtVl1U3DpHD9PoUhvpwLQmKVw/dyUQ5zMWFZlqbYUQPGKYu54GOCMXlpZ+oLMI/9n4Sgrw+NxctFY/KyY7rehLeJqu8IlcqZzMHBAby5aTQanZ49F54PtHFZQ6stJcumdgBZ0E02ulGRNE9NCXczRLmh0xcKX42pMEJ00RAS/0Cvp4cg5gox1JnMlQT3g6zMxfQzPYPgl3kei9exG4x2HPYlCLplhi8mz1pvp9OZm5vDxWa73c7BX2rTyNzAtlZbFlWx6owuofYcQ3kOr23lrIqsjudDEY9mA2atav9sYmVAf1eE6oltbkgIUjEej3G1CDs7uWcZoAeXhJId5HRJXrANe0xnOtlHJY4n39eeSnAG4KuF9EUCtVotU0zs5s8kHKLEl8skmUCIbTmQw4tMRfJBRuOiYQZBKA7vW26oGyEu2SFwwa1VymoRGBDO3OdmDQZGQKjZlx6bRBnH8YsXL2L/nAv1lMVczr8GlCk5QDUY14mgKtWkkK6S2rUMO6WSUoIQAmm5Yd65wDY+VWY2sOZc8qdqsfREikltKoBx4HPqeMg+NdBQij5AANcw52KrvMFgAK/i3d/fz81c8H1jeHWvTyZcJ27MD4dDKYPMBe+cq1arueehMvh5u43SslShVM5sULNUC0M8UksZpgamTwmGqZl8nx5Um9XrcwRnLtUB2zFMdJP90lfKjloO5jo5OYE3LsVxTB+DkvtcwFzwLqeNjQ1GN4PJrzz4ACs4fPsSm2SFkBfdv4/jOIoi2MZaX19nJjHmunTpUrVazf04azKF/5mBmh3pFUaiamqIR2o/LOhmubGSdib+IaOaMTOoxpcShBKRwlwujYaSyY5CC/oiYoTs3bt3JycntVqtXq8/ePDgkR/fnOHhw4c///nP19bWFhYWFhYW/uAP/uD69et//dd/PRwOFxcXe70e/RAe/XzpX/3VX1E22d/f39jYuHnz5v7+PhTp9/tbW1s3btzY2tra2dlBdrt79+7Gxkar1Wo2m3JBClUcHBz0+/0vvvhia2tra2vr3r17v/jFL/b29ra2trrdbr/f393dvXv3Lnz1bzgcwtMYS0tLVAncW9ze3p47e+/w5cuXy2IuX2tKhMsYatUsp41kVlY1O/EQls9On6e2X4HxCYQvOGroMqEUJapCZmQpcSgLoczFBKS8LJ4PMFeCrS77tZP4+RZArVbDV+XCrK1SqeADU3QWAykbGxtIOrB+7PV6/X4fdOJ8B6ZX1WoVhKMo6na7sL6DiZI6QRsOh9VqFb/z3m63t7a2sFStVmOfiYeHtq5fv06NjON4NBrBvcXicy61gWSHcJ5/S74OJBWya5/mRLCS7E6pPcpnm68unwu+rLJgV5GlGWcKZt60o5QJeZgrIfzlc1KGIDBYuEPvOwqjIo5jYK5Go9HpdF68eAH3FvH7emyDfDAYtFqtwdmTqPC0AawWgUSgYKPRgKfYK5UKEE2tVtvb20M+AuaSa8zd3V0kNSgIe1jAXLA7hh8TBYFOp0OLxGerV2Au/LxCuXMu2SHUdKd14sBmTTz0l1pKlbH7mGoV88sQTo0Di0Y47CJ2KM4R0jxfZGTKtGExF3Mg0YwuMUy4sUXvLeI7iA28efNG7nPBfhlMbWLxTAMyF+TiPIsyF0zl+v1+p9NB5mo0Gv1+H2gF5n0D7YPG+/v7jUYjFh8EBe6DuRjLjeP41q1bg8kvj5bIXGp7yQ6hpjtz/Ns9ISmbuexeKi8My52gOefnMhmNcNjOvhdg4Soek4JIn3Op10xelk0NgQ85norAu4r03iIwlzrngjXgysoK5sJ8B1eLMP8CM7a3txuNRqVSARJst9t37twZnH3ZEJeEbJXX7/fpkrDT6cAHpXHORfkOl7QrKyuMy+KzJ1FLYS41RXYAtUvIXDfZj0Nq9/W0QIPtilJNle6EWGJEIxwhOs8dhjGpEVATp4pQ5nKiZ0j5gjg9+xRCWc9z0dUipS38MDKwFbBGu92GRKAtoBvccYNjz5AOX13GzbV2u63ekYTieMoaTik2yCed9/f3j4+PIRFw7do1ulqMyT5XPuYKbCC7i1AZpjm8AyTZmSuHI2pBny+ZjGdK7IgZYXQiCLldOxfYjpSFEG1BzJWIEPuKFAF9mqEgc8GcS2UuXLiNRiM2XYI5F9tp6vf7uMAEseFwSNXSJyTwo1i4osSPgGHVzCRYxoIY1o5gO/Rw8yETc4U0kNpdbFWZWj8p/D9PlQ9JVGsMtEE1m40Fc3BxSAtLH0SA3DuhqfCF15XNXKkKizJXiUEB2oKnIpC53r17l08VMhclAjjVDFOkg4MDZAe8ePz4MSOOg4MDKEI3s+jP4XC4u7u7u7t779693TNQnbEH7Ax2HMfPnj2TMpS54KmI//qv/woJQqYGSqbJXMWhVhSSaA+JwEqlksDRFR7PcjGDLz+xeLpczJWvFCDDalE1ulzQc4uYUkQPTnCQQUIOVDPyisVWOl6why1oQTpNCwSti+1zIXmFz7kyNZOvV6nafB0mVbnzdyrVErVqKpnVL6Osr//bkZG5Pvi8u8gwjKSh8AWqLNAaEXmYa3rhKJe56BNVPrKQdOOTp3tPeKPQ4CmbtuQdSZ+GIs9zhbeg2l2SkphL6jesVbusIR9YdbhYMjkgbZNoKTWAsmCmuF18SMfDUUTDOTCXjekxF6UGlXQGAmqiZDfgMqoN2Y3J0BR5BptZBRclPs9lwNexEjFE3Xkwl1okpHafX7I4c9n2V81So6f6Eh63TM6eC4wIpMLWgLmq2HvAXPkGqvpOVMpiRV5/Gg4f9w3I86s0hZWFHfpLBFOac7mwZZGUzNImKfYkAcwVXmPKoNF6u9r/Q8ISXle+uF1AqDHJinylABmeoZd22yn5wN7PlRvAXI1Gg77cXb76HVLkC+AN4EMMWLxer9MsKsOAh5YajQY8XSEha5kNczmtxZNSmSuTJVQ5NYwl+lxgpqZaTl22IfWHlGIFLzJCGjfE34Jw5t5/hidRE09vkC4ViRoyF10n5lgzjsfjw8PDV69ePX369OnTp7//+78/Pz8/Pz///e9/H/4CMBFw2Q8UmD8DHISWmJ+f/73f+z24hi2qy5cvf+9734NSkEhlfICbiQxTWi0CEo0gMEv2h4JtnWqGL0teGzJyJPhKGePEp0cdIyEF33ekRok5nrVIkoO5ZJVORFzmJiU1SVlf0KA4PT29evVqxYO5uTl6DcCU+fl5X0EqA0WwrLyoVCrVapXWYmtmZmDiNJhL7QCqjF3E6AapOuV1ah9T61JNSlWuyvuQSVjWbpvxviCH+zmCZiCIuQw7pD+qk7YAxTSYyzl39erVqgYgFPaTJi4sLKiSSEPISjRxYWGBkQ7qoQWlnlRMlblkOv0r21H2E6MK5+m7zs+DtpG+zpapLqY8BFnlU+uS4Q1HvlK5kcPxKUFnLjcZSprrs96Io5roA31XRJEQM+CNvIE4Ai2BXwwbDAbwXDsFfm2MfV6Mpmxvb7Ms1KN+l0wt5ZMs9zlDtfUxy/mZS+0DvrZOTDbx6ZRZquUyUc2VNtjuGD7mQ2pdQQ02iVI+ZydTDHtyu18u9G//SJdolqpIjQJTGIIpMRfVDxcw/uk7oKkMQqbL252YIguy6tQajbf3uMnz5Kq1BWG0Y6IxV2JykNrcdheUMk7rOSEpzmQuX0WpFqq2lYjMbUZQ4oc4ZSL9SS/KdTxf2QzvRE0EkbG6pcM5cHp6Cm9rmN4+dOkImQQVmSjNIBSJRlJMwO5wVI9R1iefqkrtnz473WQXlYmsV6sWThWGCzNGiA2JFvnzRcr7uWQBlq5K5g7i27dv30fm+h1AEral5Sa5hsnIsk5QA5NJPMQhzVOtkhesFqlW/vQJzwD5GssJKpk2mMHnFS6KoC9o2JBFcgeIvuXmA3PNHknafyYnKIxJygupUMobPYoV9/U3aTmrTvqiVj175Gmnc2Wu8wvVBLzMhT9TVUgPpcNJcKCBufDbP/kwg7Py/x8imWQHeq1m+ZQweRfWT6hAohGlzwxfQV9HnT2Cou8PS5Hi4bVQU88vVP+H9HuLdnnVwyIxgqciijMXe0sqQE3ELHunnCpn8mz33ShLzZD06jvqJBPpHYCQGqcE2RN8HUMWwZ/swi4oE2XxxKSkEF9mDNvx1LAUKR5eCzP1/KL1v0h/nsv303CySIzKZa4ZQ3KZzHWEuRjdqNSjUpIscqGYqyx5tbjzb3LJa5dGXong3Nkj0H1fTIoUz13ROYYLkP/c4pQCdFrGahEGMH6K9ZiA/SwOrMjGycmJpBifHlVSJakiYOE6JQ98YC6dTjoPt9LuYXcMtafhz8CyatWJoMLET0mpts0YhtepKFg8a10XBzm/FDs9nJ4xV0ElJycnjUaj2Wyurq7eunXrs88+a7VarVZrdXV1Y2NjdXUVUuCbr4jPPvtsdXW1JbC6uorpqszKysrKygpKggykNJvNZrN58+ZNKg8pTRMg1mq11tbW1tbWMP3GjRtrBMvLy8vLy81mE/8uLy9/+umnmIUpICCxtLS0tLS0traGF5j1ox/9iGX96Ec/qtfr6+vr+TYTZU/L3cESz4RLpqvd22cYGw5qil3Kp8ppM5ccjgdqyNFAqfYYUTIE8sFN/h9iCP1qWdYQ5AZlrtO80y6YF9RqtYH/9X7yPcuGcCYMxFvAQjSrb8hRcex5faut2RBgCo/JF97oBcwHj46O4JMivvlXauuwnmZ0vFQ9slKqTR0MtlW+wcNS6N9AqBX5PMoRhFKQqs2Iki83N1xu5mKFpx0UR56KKMJcOKLoe+jh9I8x5llWpqEuYbx+XoUkl7JoFEFff1gQ8NFvlbkCkZTBXE7rVEZfT1XlK6KmGKUywXCnlHFXLnwuJFNgLhYilhj6PFeqP4E+2zLIOMWZ69j8xnUOZJrpvHjxIlWPzW6ZWIa9ZZ+WPfa/KT81JsfHx6qRwFydM8RxnKOZANgrZN8LLC4vjO5uqDWGjTo07FKZEOJpEeReu/ig2p/P8fD4sMSgOVeIJ6VEZBrMFThKGQbilc2I1PmUWgoTDQakminhsiLSF+P7IL7qkONyTMSiKKIv4el0OrlbXO14zrxXqIol4j8/S0/tzL5xlVpvETiNFt8LyCgVcT9VTEqGnrhOdaOUcDDmKqKHMRfdspGDeTAYQGIIwanfhVVlskIyVwjslaaccxnUie7bE8woiuAFrcBf7DWQmZB4CCKwH6oFWVlf91a1yXGlavYNpxxQbTaMvGgoxfdUMSmZvkNv51KZ4lGAfa7FxcWlpSVgsbdv39Lc8XiMX2AE4fF4/Jvf/CaO45cvX3733XdYiu1zZQWSyE9/+tPbt2+32+3bt2/D2O50OteuXet2uyh5cHDAPsj47bffwk+afufOnWaz2e12Ycvp4OCAMQ79BCS8lh5TAMPhcH19/S/+4i9oYr/fv3nz5tbWVnz2QUnmAioHY0AAJPv9/tbW1srKClgVx/HOzs7q6urOzg4tzgi93W7j26UvX75c+svUikDtinSc+Eox4USjktThZI89Vb64v7YAjJqCtchKfW7aQQiMSUIay6ct9N4iq7vcQFCckue5fI8gscSTk5NOpwMrlyiKBoPBycnJsfalWAl1ckET19bW4sl5zWg0gs9Zo4y8J4jb4TQljmMoCIlyy5zNuaQMXINJiF6vt7+/32g01JkXzjGHw2Gj0ej1enSjDWqBt+NTYoqiKPavcClzXbp0qeAE2XmmM0zAKCtVhST6lBjDQWb5xpXqkSGT6maI5SoCt1x88bGDIH3JlGvoTK3ROrcoS4aEoCCAuYC82u322toaXMBfiSiK1tbWYM8Yd16Wl5d7vR5+tUwFm0eoS8hOp7OwsAADG7aiYcDD2yxQbGlpCW4FtNttlOx0OlEU4ecw7t27B2Mev4uxvr7OaqTMBcXr9TowHRWD2R+1c2dnRzIXQ7fbrVQq8BUP4HfMghT8CUbCX2lkXCpz2V2WiQWm+7q+bYZqkmoh1ebL9RUxnM03vlJdy33/N7XSEAeN3BBVhkC2E9eqDyVGBBaA7IM9NlASmAtf8R5FEdz/MgYzhTr56vV69Xod7qDhpxthkkLnXCsrK/hOVOQF4Ah4kWkURVtbW71eDxgW0pvNpsE1wMvb29vw5oyYzICazSYT3tnZsR9ei+N4f38f5qSdTgfZEP5S5gLvUBL+B0jbKHPNYLXo635ZiwcqMYZf4MALLEtrzO3d7JEvIC4Lc6VC2aGn1UjVzPrSg3J69rUx9ZwN3jekgNlTo9GA17RHUbS3twerxXDmYkAWwKFLHysFVsKft27d6nQ6SGrIXGAAsB68zRlygeZarRalD8Y7wHdA4pS5BoMBY67BYNDv91OZazgcwiSUrnyRuXDKBkaCtsFgsLu7C21BVSFzwf+J4qtFgN2dZG54n2Rd2icZPpykDYFwnqmAz/dpDLEckHErHpCs8gwZzi3K3GRqzJV6bvF08tgdXabRJ1EZc9GxfXR0ZNxBoxMcudNEmSuO49XVVZyYwAIW5l/0847dbhcna0AK6pwLH1YA+t7c3GRzLpW59vb2Upnr2bNnyFxsGsWYC/e5oFStVmOqSt/nAmTtTrJbqn3VN2AClfsQIuOzR9owjaE0DfhYggmEByRTDClyfuNaCtvp4UDmCrwhAncb37x5g/dQ8B0Mi4uLwFyj0ejw8BBGHdsFxzuAkHJwcEDvzXW73Xq93mq1tra29vf3IfFnP/tZrVa7du3axsbGzs7O0dHRz372M7g912q14MOx//RP/1Sr1Vqt1u7u7u7ubqvVunv37nA4XF5evnbt2v7+/mAw+JM/+RN6gxKtGo1Ge3t79Xq92+2ur69Xq9Xl5eV+vz8ajZ49e7a7u/unf/qnoDaO46Ojo+Fw+Jd/+ZeLi4tbW1uQqGI0Gi0uLrZarX6/f+/evXv37o1Go/39/d3d3eXl5StXruzu7j5+/Hg4HDabzYWFhY2NjX6/v76+vra2dnSGC8VcLmxLy+jhqsBs4N4r5pLmnUvQKPTnuRJtUu1TocrT3Ewo5dwi6sE519HREcw18MlvuIaJBn59h+L4+Jh+cQef+dre3kYlmAh7WKj22bNnIADbVTDHYV8DQg1gGLs7CQq73S5c4Iq10+lsbm7iw+uQuLm5CRVB4kDD0dERbsNRk2CGBYnwWSPQA8tV5FY8uhjOXHbPU2V8rWkXl5Jq2VSTZg9XYKRMA9IMZq2afi7wvp+L2ZdqLhVwBSZfpTyJ6gRzAT01COr1Oi4wGwKwQJNHkUMWmLj1RrPYeSCgEnwigQI2wtQq5OFK1R64KQnrTfjbaDSGwyGSGoix9bI8aE1/4l84cR3IXM7/z4+l2K0pu6jz9DGWqPZSn+bzRUivnjakGWhb8r4wl0xnFqteSSVqOAwE7nMF6qFzLkkx+MQTTkzw+Xg6vH3EgZAy9iYahZwc+TTLbSzfxhaqolO5VDOYC2gA5etw5qLdxu6Czv+PnWlTu6JRrxMcp1adauGUIM07dyQB9GRkzRKhzBUCN0lY1MPw2MFTEaUwFzx4ifSEI5D+NSBnWL5ZieQpefon08FJ1GaXSuUjW8znDoU6L0tlrtzdJryr+ORpolEjlc9qcEEEGnYRYBg5tfCEItvbnNUs5+9G7pyYC9+WgztZcrjG5nljTC/IQQWh1sVMsilYOuJ7/VZMZlhI7uoCudPp4FMRkrloi2fqSLIgXkv9rF/JPulLZLBtmwZSw5K7208DPvOmGKAwWF/QYA5IZ2RuIuIuU2ycnp7W6/WCzPXu3TvQA8xFDw/iNR4bxEOC8gLlGZAUmCS7WcmOLlIN1CpMefz4MdNAzy3iSSCwHH/iIR5q/OPHj5k7eG4R6/3222/pApndZpXch7h9+zacWIS/xqak7FSJRmq+n1JVkjbajYKyCkNm2kiN2EVDkhbVGcP7JGri3xfAa58bRqIN+mbBUlaLeNgFgYlLS0s0F66lPJ49MgBHlKgwHEiKzk4sqTpDQG8aYiIop5ApWC8tSFXhDVZ6v5XdeKU/MWVzc7PRaIQ8Q+/rDIawr/OkwnkeMkgEY6oys0e+Xj1tJNq4dlrznUPIJuF9KgKvVbtt6+1SBuA5rLL2ufAx9EajMT8/D0sbBB4VuiRgSKqlZMrly5fn/KBF6IVdStqAgIJqVumQkaRzrsQz/VH7lZolf9pd1JfLlMseElLRVFGke88G5xicVHjfz2Wn0HTMdVrHRUm1FAOeWyzOXG7yczU//OEPjdFYqVTUn3DBcn2lbOXz8/NwGjykiK+ifMV9Og2/MAt4SgWyNjIXa195bXRE1oXsziarYN1M1u4zzLZqqsjfs81QTAnS8nMK2/+iNOaS4fMVN6JTLnMBgLk+/vhjHJMU6himAsg4TFjK+DQgqtVqtVpFDZTLZF0+0ILSSGYD/cuMZDqlqbYAVQXMZbcsNr3vr/zptE4o1Ur97ELaJn+WDlWt84wCn3eZUIoSQ7lq9pRCF6I86P1cIY450Y1yaCudufAM4/Xr131jBYf0+gAADnxJREFUz2YKH3PZ8xeVgygd+JhLnQHNTc62qCptMqQYVtFocWFhwWcA6mel1HCFM5fRWeWFm+xIySSjsQtWkU+hXap0OEG+qkfSHjuGIcIzgOpjKUFz/rgh8jPXlCJY+pwL8Otf//rly5dPCeA22dOnT58/f/7y5cvnz58/NfH8+fNvvvnm+fPn//qv//r8DL/61a+++eYbKvaNH6kC//zP/2ykPHr0SC0F6Y88gKzHjx/7BB49evTw4UO4+Oqrrx48eIClHp4BJe9PAnLj4C9opHZ0J8a27NBSIUuRwr5S6jgpDqnZMPj9BXO2xOi56TFXoHCONpsSc8la5InuU/GR50Ab5PtaUY8hphakcOT0uM8SrM62h+WGOOWrrsgHYl0aWfjSZSmq2Vbozo+5fFnMhSIoS094dUaQjUSjeKo2tWA25ko8XSFVPrzIbJjLeb4AXMobu3NbXqLL6IjBerOE7F2JGOHO7NlUT2BfTe2uIQMpB5yHuVileWPpdXMGSCZHtOqXL1Ea7IueLCjFcjJXaqLqp60cMDPmUlH6twamXbs6syvJHC+KDBWjR7pg5gqvSDU40YZfiXAe5pLuFEeJqnJUnSmSLqy5pTZVMv9qMUQga1incW+RmTRtXJA5Tj6UGyJVm+ygTrCM3aGLG586eGaD4EBeOCTafwLb09RQsLCkRq+cfa6ymmGqzDVtsC0qn4Chgc65ZsmAJQ4n2afVlMT8X+00LpPK1ZRwO5NizOUzPquG9xGsRcqNVaBwBuZielmWep0VU2Iu+rpUgLqx7c64Y0zAslKNB+BHISno5v14PIaPQkojqSqZxYwpa3krWy21P6TqUTtVSE+TBiRTYy6Xl31yFwyPwIUFjYBL4y9WKjAsqWJ55lxMntVXMCjIXEWUwHg+PT2F724cHx9jCpsZyTt6PrizLSR6/3FK8CmnUaIm5YPdz1ThcJ2yCrteHwo6hYnhRaYEIyCzQcGbwixFemc7bgiEhE4mpn+1DH/a1qtiaooBOucKLyUBAxvOLaaelw48CM1k5EnmNjliLY9Ay7PTqgY8C42l8NgzZuEp6CK0lRW0DzlPs4b0pcCeWtDO1G5JE0NMKg5ZVxE3ZwZpp8+7TL5nElCzgphLzfLVXTBSpTAXvnMC3suskksqPTFGo++BYClMvu3hSlmLBL7KQr2Av0tLS/B9yfBHQDOBNTdNpD3JEFB7i5QxOlKqeb6yvhRa3GUn0+KQ0XhfwKxNdS13cHxK1HTvuUVmcaqJUixrRFx5cy7UI7+3GPiSZcRU3yOY1RiUHwwG8JmyIlHKBKOf+ARC+p8UkGrDK5K5zuy6gZZPAyU3z9QgTZ1eNDIVSX8naqBGKhkeBYZpMBf9pqzki5A3Gsss/Cpi4FvnA98fHQ5kLrb/lRtGmzIBp7Vyat+QTa8qTDUDVRnpqm0hds4YOZrpvJBcvABazGVYTBNZEcN5W8Cdvcu0XOaCSdO///u/wwX7dCC9RtCUw8ND+hOuQ/iOFcEPPhYHfDSoUqn88Ic/vHHjxo0bN/7lX/6lSLic2MZSBdQU1qxqh1HrMvqM2iGLGO88/CWNOUcYDl5AnHe00t6JqprI0p3ZTbNiGnMuHPODyW9cMw7yvaBdztFSCYspj7N8DUgFMwmYC18l+PnnnxcMO2tB2ZRqiixriKmSvop8PTC8RllvqhmzhxrYCwVpZ3IxGL/Mb/+ghoKAPemCSlKZy0cNmbLKhT37o2DMdevWrXxRMtoumRz/auMmHipRa3EefkzteEaWDdVOw/1zATUjXyOWAl/tzFR38ZnLNj0RNOzTw7TZoPcE5faN3NOBnycnJ/BpVfY8lNyhh89M0A8C+faw7JRAQF2+z75KyZDvDOGcq1qt4ounb9y4ERhhBrv1fdepqtRcWZ3RqaQqtaxaY6pH4WqnDdWALA04dfismmGQdOirRdtEmq764/sZCJhzhW88n56etttt4DuYZAF/qczVbrer1Wq73Q4noCLMVa1W2byPCVBJ+Ay1zJXG4JwLkJu5bAQ2Zdb+gzK+C1WV+lNVSLuovPAVmT0Kts5soNp5jkFDpD9DL8u4NCZOjYUtBt+Ux09yGcMYAF/lajQa8IrOWq12586dOI7lahH0wENePiphFY1GI/VepJFCtbXbbd+c68WLF+gXSPb7fczt9Xq1Ws1XV6/XgzlXJuZKbZ1ETFJ8ZdXOpDaur+exGlV5aUDi4SC1lFqdz+DZI6TJjJYqqCFTXepPZkMO94tEL/NbbnzygRpCEEVRNRiVs/e703clz8/PNxoNObcCYoqiqNPp7O/vw1PpvV4Pnw6Fx+5hpgYruKWlJWAfKNtut7e3t+GJUPmwGOUXUAsrU6An+vmvKIr6/T6ko+RwOEQii6KoUqnAk/f4+EXsmXN98sknIYENbyAplnh4hLW7r2Ow62SSuZwYD6oBiaC5EMvVXGNIyFwsaJRKVeLTfMGhGpkUIKyyYD2JavvD5AMLhuDNmzevX79+/fr1q1evfv3rX78KQK/XW1paunLlyvXr1z///PN//Md/PDo6qtfr6tyq0WgsLy+vrKxsbW3t7OwMh0P49mK3263X691ud3FxcTgcjkajO3fu3L59u91uLy4u9vv94XC4trb2x3/8x/v7+/v7+61Wq9FosCUeot/v7+7uUht2dnZqtdra2trW1la32/3000/jOB6NRsPhcGtrq1ar7ezs4Oda79y5s7CwcPfu3d3dXbr/BTtfjLmazWbgqbTw9lVTEg9/yURVFWb5BIpbHghmiRwC8qcUk0NA+m4klujOecHw10AmYR8yMJeaq9pRdnxSMB6PYV4DO1zubC+/VqupzAVzumvXruFEDCZcg8FgeXkZFmIwM4K9M5i+waKv1+ttbGxQElR31uOzZSBdmcLjo6BnMBg0m02cYYHk/v4+FofVIl264jWsjqe0zyU7g/Eza3Mn2v85qkQVKOiFIeAKMBdNTNXAfMwRugsF1kw+f+04+IoEImiHXtpNzZKJhpOzgWQuepMO1oNra2u43IMnyOI4bjabyFxQHGkCFoy9Xq/ZbNIbfPROpQRjrkajgdtey8vLtGAURd1uFykYzIDapdper5djtZiK1O7CxPCnT5uaompjRYr3FlW/tD8J4B1VTFZhaPAJFPRxemBtJHMdCaztrxSQteRAOnPZjiVa40knU2NRLvDeImwSUeaCmRRsh1erVWAx2CaDLKAM/D722tpao9GArwrCzteVK1dwRhZFkW+HHjRUq1WgxdFoBDdAQc9gMKjX60CdsM9Vq9WAN+M4Pj4+hgna9vY2vCUCeNNgrrLeG8E6XOIf/3a6BK5nWVdRNZTVT9SwsNpdMMsYfVgtog6T0n2cMXwNZ/sbUiQTcu5zOa1bhxTPVEUmULXGiWugicFgAFQCzAUXvV5vc3MTBECGCkBKp9OB7S1Qjss9BlQOtBVF0XA4xNdLwNwNl6jAcfg+CWrq0tIS3jGgwOe5yp1zubQ1jk8mU+dRlZdlv7SWkRerPQlgLiqshkWVVOV/x2DE0Ik+I1OKoND3Fgs2z/Sa02AugG+ipO5YUSppNBo4V8I1Y0Og2+1iRZkOOfok2UEixlzT2+fy9cJUmUD9LGsaXqhZVEb1SFVip7CyTKAs13wo/WVt4TaH9Af1oghK+8b1DNomHKenp+PxuNFobG5uZuKmg4MDJnBwcAAXg8FgOBzu7+//wz/8Azx4hZKPHz9+8eIF3CWEv1iKHu1mF3AGm1YHpeghcNRDaQuMWVhYyMFcqc0kmzKwz4Uol2Uz2VYWqLWJn7mcoCpbQA2FlJ+SU+f72SpfEHydx1cqHN7VomwD2+JUSbWsep0Dsrg954rPjkDTOVEc8DYuduIa33LDBDAF9RvneKTaVMCcCw4tZlotpsY5tT+oMkmWkekrwtKzWs70hxhgQIq5YOayFWZ15+JADWxIuJxnozA8ehI5d+h9jrELWyw1sQhSmSsfVHIJOSntS8nNXPnuLabGObXHODGAqU61/9gdI7DLFe8h0s5wN1XHQ/SomsvyaAYw7KcyUthpTJ1Mdpgc0UN4mStrWMObJAkjuILApyLkgR6VCOBCPoVgry6hbIhMTI4W0eOK9Domm/2pCn3MFRh8W0DtDL6uwoqriTSXlVWL5LA8xBKW6zPM56PP+ExI9Sirp1OFdD9VgMVHFZPyWWExl4x1Dm9nA7VG3105es04RWUuJmMoZKUoK2EKq0vSma0ZC07p3qLL2J9UeV/r5OhRrJZMBVMd9LmsJuaQSS1o+HtBYNiTeFqfuRkonxXp76Fndksx6aTP1RkDTxeqX9mR6Z1Oh35rZ9qAZ7UA8IDY9vY2XODxRibQO0On05nGk6gA1hnsDsQKZtKc2yRZYyIYweiKtndqpYbvqWK+UpkiYESmFD3h+mUThLiZNUqp0JmL/VWr9zmZZOzN00Mcxw8fPvzyyy+//PLLP/zDP5w/w9zc3DzBHMH3vvc9VQxy5z346KOPIBf1QAoCZBYWFhYWFmSlqJkpkXbOz89XKpUf/OAH8/Pz3//+9y+focRn6F3wiA1XiNdF9KhFEj9zSQOkDT6XfbWrYqnhyu11yO3CTApzIER/iMtZo5QKL3Oxa+oGTVFNZ8I+PwvGlGpLFbt+/Tp9mYQPQA1ZAbSiZkE6/GUvtAiELEJTirwTNdFoxYnB7HINzkSjEqOn2b1CzbITWT80DMjhYEHkaKzzQiI6A6afL6znuRKNsHySiYfU7IgUQXhdzrmVlRX1xTgMCwsL4S/YQQZZWFhgzCLpBjTDdxIltWViLpZYrVZzzLnUdpQyUl7tBjJR1ayKGf1KljUsdH62sg0wvCsdRrQvJlSbZxYuA9YXNH6XcHJychwAfMgL9sJDiqjPu6vPQPjki+O777477wB/wAfMFP+/MNcHfMAH/C7hA3N9wAd8wPuHD8z1AR/wAe8f/h/1fvQ1HG6sYwAAAABJRU5ErkJggg==" alt="" />

/*
paging_init() sets up the page tables - note that the first 8MB are already mapped by head.S.
This routines also unmaps the page at virtual kernel address 0, so that we can trap those pesky NULL-reference errors in the kernel.
*/
void __init paging_init(void)
{
//初始化系统的页表
pagetable_init(); //在pagetable_init完成页表初始化之后,则将CR3寄存器设置为指向全局页目录(swapper_pg_dir)的指针,此时必须激活新的页表 //由于TLB缓存项仍然包含了启动时分配的一些内存地址数据,此时也必须刷出,与上下文切换期间相反,设置了_PAGE_GLOBAL位的页也要刷出
__flush_tlb_all(); //kmap_init初始化全局变量kmap_pte,在从高端内存内存域将页映射到内核地址空间时,会使用该变量存入相应内存区的页表项,此外,用于高端内存内核映射的第一个固定映射内存区的地址保存在全局变量kmem_vstart中
kmap_init(); /*
* NOTE: at this point the bootmem allocator is fully available.
*/
sparse_init();
zone_sizes_init();
} static void __init pagetable_init(void)
{
//以swapper_pg_dir为基础初始化系统的页表
pgd_t *pgd_base = swapper_pg_dir; //建立固定映射和持久内核,用适当的值填充页表
permanent_kmaps_init(pgd_base);
}

我们之前学习过per-CPU(冷热)缓存,我们接下来学习内核如何处理相关数据结构的初始化,以及用于控制缓存填充行为的"水印"的计算
zone_pcp_init负责初始化该缓存,该函数由free_area_init_nodes
\linux-2.6.32.63\mm\page_alloc.c

static __meminit void zone_pcp_init(struct zone *zone)
{
int cpu;
//用zone_batchsize算出批量大小(用于计算最小和最大填充水平的基础)后,代码将遍历系统中的所有CPU
unsigned long batch = zone_batchsize(zone); for (cpu = ; cpu < NR_CPUS; cpu++) {
#ifdef CONFIG_NUMA
/* Early boot. Slab allocator not functional yet */
zone_pcp(zone, cpu) = &boot_pageset[cpu];
setup_pageset(&boot_pageset[cpu],);
#else
//调用setup_pageset填充每个per_cpu_pageset实例的常量,使用了zone_pcp宏来选择与当前CPU相关的内存域的pageset实例
setup_pageset(zone_pcp(zone,cpu), batch);
#endif
}
if (zone->present_pages)
printk(KERN_DEBUG " %s zone: %lu pages, LIFO batch:%lu\n",
zone->name, zone->present_pages, batch);
} static int zone_batchsize(struct zone *zone)
{
#ifdef CONFIG_MMU
int batch; /*
* The per-cpu-pages pools are set to around 1000th of the
* size of the zone. But no more than 1/2 of a meg.
*
* OK, so we don't know how big the cache is. So guess.
*/
batch = zone->present_pages / ;
if (batch * PAGE_SIZE > * )
batch = ( * ) / PAGE_SIZE;
batch /= ; /* We effectively *= 4 below */
if (batch < )
batch = ; /*
* Clamp the batch to a 2^n - 1 value. Having a power
* of 2 value was found to be more likely to have
* suboptimal cache aliasing properties in some cases.
*
* For example if 2 tasks are alternately allocating
* batches of pages, one task can end up with a lot
* of pages of one half of the possible page colors
* and the other with pages of the other colors.
*/
batch = rounddown_pow_of_two(batch + batch/) - ; return batch; #else
/* The deferral and batching of frees should be suppressed under NOMMU
* conditions.
*
* The problem is that NOMMU needs to be able to allocate large chunks
* of contiguous memory as there's no hardware page translation to
* assemble apparent contiguous memory from discontiguous pages.
*
* Queueing large contiguous runs of pages for batching, however,
* causes the pages to actually be freed in smaller chunks. As there
* can be a significant delay between the individual batches being
* recycled, this leads to the once large chunks of space being
* fragmented and becoming unavailable for high-order allocations.
*/
return ;
#endif
}

上述代码计算得到的batch,大约相当于内存域中页数的0.25%,根据经验,缓存大小是主内存的千分之一,考虑到当前系统每个CPU配备的物理内存大约在1GB ~ 2GB,该规则是有意义的,这样,计算得到的批量大小使得冷热页缓存中的页有可能放置到CPU的L2缓存中
在zone_pcp_init结束时,会输出各个内存域的页数以及计算出的批量大小

dmesg | grep LIFO
DMA zone: pages used for memmap
DMA zone: pages reserved
DMA zone: pages, LIFO batch:
DMA32 zone: pages used for memmap
DMA32 zone: pages, LIFO batch:

4. 注册活动内存区

活动内存区就是不包含空洞的内存区,必须使用add_active_range在全局变量early_node_map中注册内存区

5. AMD64地址空间的设置

AMD64系统地址空间的设置在某些方面比IA-32要容易,但在另一些方面要困难,虽然64位地址空间避免了古怪的高端内存区域,但有另一个因素使情况复杂化,即64位地址空间跨度太大,基本没有应用程序需要这个

0x3: 启动过程期间的内存管理

在内核加载启动过程中,尽管内存管理尚未初始化,但内核仍然需要分配内存以创建各种数据结构,bootmem分配器用于在启动阶段早期分配内存。显然,对该分配器的需求集中在简单性方面,而不是性能和通用性,因此Linux内核实现了一个"最先适配(first-fit)"分配器用于在启动阶段管理内存

. bootmem使用一个"位图(bitmap)"来管理页,位图比特位的数目与系统中物理内存页的数目相同
) 比特位为1: 表示已经使用该页
) 比特位为0: 表示空闲页
. 在需要分配内存时,分配器逐位扫描位图,直至找到一个能够提供足够"连续页"的位置,即所谓的最先最佳(first-best)或最先适配位置
/*
该过程不是很高效(原因在于每次都需要遍历操作),因为每次分配都必须从头扫描比特链,因此在内核完全初始化之后,不能将该分配器用于内存管理。伙伴系统(连同slab、slub、slob分配器)是一个更好的技术方案
*/

1. 数据结构

最先适配分配器也必须管理一些数据,内核为系统中每个结点都提供了一个bootmem_data结构的实例,该结构所需的内存无法动态分配,必须在编译时分配给内核。在UMA系统上该分配的实现与CPU无关(NUMA系统采用了特定于体系结构的解决方案)
\linux-2.6.32.63\include\linux\bootmem.h

/*
node_bootmem_map is a map pointer - the bits represent all physical memory pages (including holes) on the node.
*/
typedef struct bootmem_data
{
//node_min_pfn保存了系统中第一个页的编号,大多数体系结构下都是零
unsigned long node_min_pfn; //node_low_pfn是可以直接管理的物理地址空间中最后一页的编号(即ZONE_NORMAL的结束页)
unsigned long node_low_pfn; //node_bootmem_map是指向存储分配位图的指针,在IA-32系统上,该内存区(位图)紧接在内核映像之后,对应的地址保存在_end变量中,该变量在链接期间自动地插入到内核映像中
void *node_bootmem_map; unsigned long last_end_off;
unsigned long hint_idx; /*
内存不连续的系统可能需要多个bootmem分配器,一个典型的例子是NUMA计算机,其中每个结点注册了一个bootmem分配器,但如果物理地址空间中散布者空洞,也可以为每个连续内存区注册一个bootmem分配器
注册新的自举分配器(bootmem)可以使用init_bootmem_core,所有注册的分配器保存在一个链表中,表头是全局变量bdata_list
*/
struct list_head list;
} bootmem_data_t; extern bootmem_data_t bootmem_node_data[];

2. 初始化

bootmem分配器的初始化是一个特定于体系结构的过程,同时还取决于计算机的内存布局,在IA-32使用setup_memory实现

aaarticlea/png;base64,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" alt="" />

setup_memory在setup_arch中被调用
/source/arch/m32r/kernel/setup.c

#ifndef CONFIG_DISCONTIGMEM
static unsigned long __init setup_memory(void)
{
unsigned long start_pfn, max_low_pfn, bootmap_size; //setup_memory分析检测到的内存区,以找到低端内存区中最大的页帧号,因为高端内存处理太过麻烦,因此对bootmem分配器无用
start_pfn = PFN_UP( __pa(_end) ); //全局变量max_low_pfn保存了可映射的最高页的编号,内核会在启动日志中报告找到的内存数量
max_low_pfn = PFN_DOWN( __pa(memory_end) ); /*
* Initialize the boot-time allocator (with low memory only):
*/
bootmap_size = init_bootmem_node(NODE_DATA(), start_pfn, CONFIG_MEMORY_START>>PAGE_SHIFT, max_low_pfn); /*
* Register fully available low RAM pages with the bootmem allocator.
*/
{
unsigned long curr_pfn;
unsigned long last_pfn;
unsigned long pages; /*
* We are rounding up the start address of usable memory:
*/
curr_pfn = PFN_UP(__pa(memory_start)); /*
* ... and at the end of the usable range downwards:
*/
last_pfn = PFN_DOWN(__pa(memory_end)); if (last_pfn > max_low_pfn)
last_pfn = max_low_pfn; pages = last_pfn - curr_pfn;
free_bootmem(PFN_PHYS(curr_pfn), PFN_PHYS(pages));
} /*
Reserve the kernel text and Reserve the bootmem bitmap. We do this in two steps
first step was init_bootmem()), because this catches the (definitely buggy) case of us accidentally initializing the bootmem allocator with an invalid RAM area. 由于bootmem分配器需要一些内存页用于管理分配位图,必须首先调用reserve_bootmem分配这些内存页
但还有一些其他的内存区已经在使用中,必须相应地标记出来,因此还需要用reserve_bootmem注册相应的页,需要注册的内存区的准确数目,高度依赖于内核配置,例如
1. 需要保留0页,因为在许多计算机上该页是一个特殊的BIOS页,有些特定于计算机的功能需要该页才能运作正常
*/
reserve_bootmem(CONFIG_MEMORY_START + PAGE_SIZE, (PFN_PHYS(start_pfn) + bootmap_size + PAGE_SIZE - ) - CONFIG_MEMORY_START, BOOTMEM_DEFAULT); /*
reserve physical page 0 - it's a special BIOS page on many boxes, enabling clean reboots, SMP operation, laptop functions.
*/
reserve_bootmem(CONFIG_MEMORY_START, PAGE_SIZE, BOOTMEM_DEFAULT); /*
* reserve memory hole
*/
#ifdef CONFIG_MEMHOLE
reserve_bootmem(CONFIG_MEMHOLE_START, CONFIG_MEMHOLE_SIZE,
BOOTMEM_DEFAULT);
#endif #ifdef CONFIG_BLK_DEV_INITRD
if (LOADER_TYPE && INITRD_START) {
if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) {
reserve_bootmem(INITRD_START, INITRD_SIZE,
BOOTMEM_DEFAULT);
initrd_start = INITRD_START + PAGE_OFFSET;
initrd_end = initrd_start + INITRD_SIZE;
printk("initrd:start[%08lx],size[%08lx]\n",
initrd_start, INITRD_SIZE);
} else {
printk("initrd extends beyond end of memory "
"(0x%08lx > 0x%08lx)\ndisabling initrd\n",
INITRD_START + INITRD_SIZE,
max_low_pfn << PAGE_SHIFT); initrd_start = ;
}
}
#endif return max_low_pfn;
}
#else /* CONFIG_DISCONTIGMEM */
extern unsigned long setup_memory(void);
#endif /* CONFIG_DISCONTIGMEM */

3. 对内核的接口

1. 分配内存

内核提供了各种函数,用于在初始化期间分配内存,在UMA系统上有下列函数可用
) alloc_bootmem(size)
) alloc_bootmem_pages(size)
按指定的大小在ZONE_NORMAL内存域分配内存,数据是对齐的,这使得内存或者从可适用于L1高速缓存的理想位置开始,或者从边界开始
/*
需要注意的是,用alloc_bootmem/alloc_bootmem_pages函数申请指定大小的内存。如果需要在其他地方调用这块内存,可以将alloc_bootmem返回的内存首地址通过EXPORT_SYMBOL导出,然后就可以使用这块内存了,这种内存分配不是不是通过动态分配获得的,而是类似于"内核引导参数"在编译时就预留出来的内核内存
这种内存分配方式的缺点是,申请内存的代码必须在链接到内核中的代码里才能使用,因此必须重新编译内核,而且内存管理系统看不到这部分内存,需要用户自行管理
*/
) alloc_bootmem_low
) alloc_bootmem_low_pages
alloc_bootmem_low、alloc_bootmem_low_pages和alloc_bootmem、alloc_bootmem_pages类似,区别在于alloc_bootmem_low系列只是从ZONE_DMA内存域分配内存,因此,只有需要DMA内存时,才能使用上述API函数

这些函数都是__alloc_bootmem的前端,__alloc_bootmem将实际工作委托给__alloc_bootmem_nopanic,由于可以注册多个bootmem分配器(这些分配器都保存在一个全局链表中),__alloc_bootmem_core会遍历所有的分配器,直至分配成功为止
/source/mm/bootmem.c

/*
1. size: 所需内存区的长度
2. align: 数据的对齐方式
3. goal: 开始搜索适当空闲内存区的起始地址
1) SMP_CACHE_BYTES: 对齐数据,使之在大多数体系结构上能够理想地置于L1高速缓存中
2) PAGE_SIZE: 将数据对齐到页边界,适用于分配一个或多个整页
*/
static void * __init ___alloc_bootmem(unsigned long size, unsigned long align, unsigned long goal, unsigned long limit)
{
void *mem = ___alloc_bootmem_nopanic(size, align, goal, limit); if (mem)
return mem;
/*
* Whoops, we cannot satisfy the allocation request.
*/
printk(KERN_ALERT "bootmem alloc of %lu bytes failed!\n", size);
panic("Out of memory");
return NULL;
} static void * __init ___alloc_bootmem_nopanic(unsigned long size, unsigned long align, unsigned long goal, unsigned long limit)
{
bootmem_data_t *bdata;
void *region; restart:
region = alloc_arch_preferred_bootmem(NULL, size, align, goal, limit);
if (region)
return region; list_for_each_entry(bdata, &bdata_list, list)
{
if (goal && bdata->node_low_pfn <= PFN_DOWN(goal))
continue;
if (limit && bdata->node_min_pfn >= PFN_DOWN(limit))
break; /*
alloc_bootmem_core韩素的功能相对而言很广泛,在启动期间不需要太高的效率,该函数主要实现了最先适配算法
1. 从goal开始,扫描位图,查找满足分配请求的空闲内存页
2. 如果目标页紧接着上一次分配的页,内核会判断所需的内存(包括对齐数据所需的padding空间)是否能够在上一页分配或从上一页开始分配
3. 新分配的页在位图对应的比特位设置1
*/
region = alloc_bootmem_core(bdata, size, align, goal, limit);
if (region)
return region;
} if (goal)
{
goal = ;
goto restart;
} return NULL;
}

2. 释放内存

内核提供了free_bootmem函数来释放内存

/**
* free_bootmem - mark a page range as usable
* @addr: starting address of the range
* @size: size of the range in bytes
*
* Partial pages will be considered reserved and left as they are.
*
* The range must be contiguous but may span node boundaries.
*/
void __init free_bootmem(unsigned long addr, unsigned long size)
{
unsigned long start, end; kmemleak_free_part(__va(addr), size); start = PFN_UP(addr);
end = PFN_DOWN(addr + size); mark_bootmem(start, end, , );
}

4. 停用bootmem分配器

在系统初始化进行到伙伴分配器能够承担内存管理的责任后,必须停用bootmem分配器,在UMA和NUMA系统上,停用分别由free_all_bootmem、free_all_bootmem_node完成,在伙伴系统建立之后,特定于体系结构的初始化代码需要调用这两个函数

/**
* free_all_bootmem - release free pages to the buddy allocator
*
* Returns the number of pages actually released.
*/
unsigned long __init free_all_bootmem(void)
{
return free_all_bootmem_core(NODE_DATA()->bdata);
} static unsigned long __init free_all_bootmem_core(bootmem_data_t *bdata)
{
int aligned;
struct page *page;
unsigned long start, end, pages, count = ; if (!bdata->node_bootmem_map)
return ; start = bdata->node_min_pfn;
end = bdata->node_low_pfn; /*
* If the start is aligned to the machines wordsize, we might
* be able to free pages in bulks of that order.
*/
aligned = !(start & (BITS_PER_LONG - )); bdebug("nid=%td start=%lx end=%lx aligned=%d\n", bdata - bootmem_node_data, start, end, aligned); //扫描bootmem分配器的页位图,释放每个未用的页
while (start < end)
{
unsigned long *map, idx, vec; map = bdata->node_bootmem_map;
idx = start - bdata->node_min_pfn;
vec = ~map[idx / BITS_PER_LONG]; if (aligned && vec == ~0UL && start + BITS_PER_LONG < end)
{
int order = ilog2(BITS_PER_LONG); //到伙伴系统的接口是__free_pages_bootmem函数,该函数对每个空闲页调用,该函数内部依赖于标准函数__free_page,它使得这些页并入伙伴系统的数据结构,在其中作为空闲页管理,可用于分配
__free_pages_bootmem(pfn_to_page(start), order);
count += BITS_PER_LONG;
}
else
{
unsigned long off = ; while (vec && off < BITS_PER_LONG)
{
if (vec & )
{
page = pfn_to_page(start + off);
__free_pages_bootmem(page, );
count++;
}
vec >>= ;
off++;
}
}
start += BITS_PER_LONG;
} page = virt_to_page(bdata->node_bootmem_map);
pages = bdata->node_low_pfn - bdata->node_min_pfn;
pages = bootmem_bootmap_pages(pages);
count += pages;
while (pages--)
__free_pages_bootmem(page++, ); bdebug("nid=%td released=%lx\n", bdata - bootmem_node_data, count); return count;
}

在页位图已经完全扫描后,它占据的内存空间也必须释放,此后,只有伙伴系统可用于内存分配

5. 释放初始化内存

许多内核代码和数据表只在系统初始化阶段需要,例如

. 对于链接到内核中的驱动程序而言,则不必要在内核内存中保持其数据结构的"初始化例程(init函数)",在结构建立后,这些例程就不需要了
. 驱动程序用于检测其设备的硬件数据库,在相关的设备已经识别之后,就不再需要了

内核提供了两个属性(__init、__initcall)用于标记初始化函数和数据,这些必须置于函数或数据的声明之前,例如

int __init hyper_hopper_probe(struc net_device *dev);
static char stilllocking_msg[] _initdata = "found.\n";

__init、__initdata不能使用普通的C语言实现,因此内核必须再一次借助于特殊的GNU C编译器语句。初始化函数实现的背后,其一般性的思想在于,将数据保持在内核映像的一个特定部分,在启动结束时可以完全从内存删除
\linux-2.6.32.63\include\linux\init.h

/* These are for everybody (although not all archs will actually discard it in modules) */
#define __init __section(.init.text) __cold notrace
#define __initdata __section(.init.data)
#define __initconst __section(.init.rodata)
#define __exitdata __section(.exit.data)
#define __exit_call __used __section(.exitcall.exit)

为从内存中释放初始化数据,内核不必知道数据的性质,唯一相关的信息是这些数据和函数在内存中开始和结束的地址。由于该信息在编译时无法得到,它是内核在链接时插入的,为提供该信息,内核定义一对变量__init_begin、__init_end
\linux-2.6.32.63\arch\x86\mm\init.c

void free_initmem(void)
{
free_init_pages("unused kernel memory", (unsigned long)(&__init_begin), (unsigned long)(&__init_end));
}

free_initmem负责释放用于初始化的内存区,并将相关的页返回给伙伴系统,在启动过程刚好结束时会调用该函数,紧接其后init作为系统中第一个进程启动,启动日志包含了一条信息,表明释放了多少内存

dmesg
...
Freeing unused kernel memory: 1292k freed
Freeing unused kernel memory: 788k freed
Freeing unused kernel memory: 1568k freed
...

3. 物理内存的管理

在内核初始化完成后,内存管理的责任由伙伴系统承担,伙伴系统基于一种相对简单却十分强大高效的算法,它结合优秀内存分配器的两个关键特征: 速度和效率

0x1: 伙伴系统的结构

struct zone
{
..
//不同长度的空闲区域
struct free_area free_area[MAX_ORDER];
..
}

相关数据结构,请参阅另一篇文章

http://www.cnblogs.com/LittleHann/p/3865490.html
//搜索:0x4: struct zone

struct free_area是一个辅助数据结构
\linux-2.6.32.63\include\linux\mmzone.h

struct free_area
{
//用于连接空闲页的链表,页链表包含大小相同的连续内存区,其中又定义了多个(MIGRATE_TYPES 个)页链表
struct list_head free_list[MIGRATE_TYPES]; /*
指定了当前内存区中空闲页块的数目
1. 对0阶内存区逐页计算
2. 对1阶内存区计算页对的数目
3. 对2阶内存区计算4页集合的数目
..依次类推
*/
unsigned long nr_free;
};

阶是伙伴系统中一个非常重要的概念,它描述了内存分配的数量单位,内存块的长度是2(order)次方,其中order的范围: 0 ~ MAX_ORDER
\linux-2.6.32.63\include\linux\mmzone.h

/* Free memory management - zoned buddy allocator.  */
#ifndef CONFIG_FORCE_MAX_ZONEORDER
#define MAX_ORDER 11
#else
#define MAX_ORDER CONFIG_FORCE_MAX_ZONEORDER
#endif
#define MAX_ORDER_NR_PAGES (1 << (MAX_ORDER - 1))

该常数通常设置为11,这意味着一次分配可以请求的页数最大为2(11)次方 = 2048

struct zone->struct free_area free_area[]数组中各个元素的索引也解释为阶,用于指定对应链表中的连续内存区中包含多少个页帧

. 第0个链表包含的内存区为单页: ()次方 =
. 第1个链表管理的内存区为两页: ()次方 =
. 第3个链表管理的内存区为4页
..

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiYAAADDCAIAAAA5uk0JAAAgAElEQVR4nOx9X4gcyX3/EvZloocBJwxcYAUXGoWwikJuBEoyCD2MInPsKrI1m7MI61t+G40UGVZC9mXW4mxWG10umhUK3CjifPSKKFgj64xRR+eYVZbgY5AejFb3cClYGdvLxcSYVsw9jR+Ul+rfw9f91XfqW1Vd3dMzu6vbz8PQU/2tb33rW9X16frbI9EOdrCDHexgB0PByGYbsIMd7GAHO/isYIdydrCDHexgB0PCDuXsYAc72MEOhoQdytnBDnawgx0MCTuUs4N08H0/CAIe/vTp0zAMB5q0EEIIkSGilBJs63a7mTX4vk9D7t69S/82m024CMOw2WxSF9EUHzx40Gw2pZQYsra2Bhe+71PJMAzpX6pQStlsNrvdLt6ittFYT58+pUaGYfjkyROMhZaAQsXsHexgEOihnGazWSgUdu/eHUVRGIaFGB999FG9XofrarUaRdHZs2cLhYLneSBZKpUKhQI8dY1GAyTfe+89qiQMww8++IAqiaKoUCiUSiVoDiD148ePR1EUBAFIlkqlKIrefvtt+AuPRK1Wg9SllFJKuHX27NkoisCSQqHg+36324W/oATtpEr27dsXRREqKRQKT58+xSyUy+UoipaWlkAJPMzlcrlQKLz11ltRFAkhMOLjx4/xGpqAQ4cOYWZBslgshmGIlhQKhYcPHyrJff3rX6dKwPNUSaFQmJ6eRo8VCoVarRZF0fT0NEpKKT3PU5QUCoX3338fkysUCkIIyF2hUKjX61EU+b5PPQZKDh06hB4bGRkZGRmhHgO3VCoVzIIQolQqFYtF6rFCodBoNB4+fIgRafFBFsC2PXv20MxCNQNLRkZGoJqBbwuFAs0sZAEz+6//+q/oIqhmDx8+HBkZweSgmkFyqKRQKHzwwQeoBKrZW2+9BRGx8oyOjlKPjYyMLC0tQWbBRY1G4/3331cyOzo6OjIyAmUEmX3llVfgWaB19b333gOdjUYDChpSR4+NjIy8+uqroASSK5fLT58+RSXwTB04cKAQP5jgz9HRUcws6ITMgpJSqUTpcAc7yB09lHP//v07d+786Ec/iqJISrkaQ0r55MkTuP7oo4+iKPrZz362urr68OFDiPjw4cPV1VV4pep2uyD5q1/9SlHyq1/9iiqJogj+wvva06dPV1dXP/74Y6oEXsp++ctfopIoisAYRckvf/lLrhMMQzufPHmCb3kfffTR6uoqZFbRiZkFJT//+c+pErDtZz/7GVx/9NFHT58+BbVPnz6Fu2AneAntfPr06YcffojXkAR1IMRSMhtF0YMHD/CVFmz79a9/jUrQMLCTZvCnP/0pvsZSL2GhdLvdX//613CNb8QffvghXkN2fvWrX1ElkAQ4E3P38ccfoyUAcBEqUTyPfx88eIBKpJQPHz78v//7v0gHyK/2Vrfb/a//+i8lBPSAx5T3fZMSWkOgNMHzUHUxg0+fPsXcYQgUCrf5o48+Qp0KVldXf/7zn6OkEpGG/Pd//7fJbEvWtCZZ9Lz//vtY03awg0HgOeUIIUZGRuDFbQc72MFnDdCLxRHCzzJ4V08S8BAM54GJtxLVaqOnMsCieXDAFBVPqpQDAyOKozObaym2zKoSAy02mEK2OLRPxXYxPhVMGeR/ZW+1tMQyiTn6c1NcbanqFrMtApGuGVU0+L5fKpV83+eSXP9w/DBo8IwEQdCI0Ww2G72o1+v1ep1e418u5gJFrUXMrqdWq9Xr9bm5ucTotVptenra3UJHA0xRWq0W9XaUSDlKlVUi51LzMtRs0zPjqD+zkZmj9wltM/EiPfnS0CbiLZ5fi09yQV6ZyqbKYk/mjCRKBkFQr9eFEFyYa+jPMZsMmiMaHoZhuVwulUpjY2OlUsnzPM/z4KJEgOGJQDGTPBWw6PQ8D0yyhKDZ2ujaLGDuLOD2K3ftWdu3bx91e6TM5WhfcCId5diLc/iVctApbvdnbBvhhWnXckFaV0SEuWVv22qBPekXj3IQSkaEEJ7n1Wo1WL/n+77v+3ihoNVqacNBHmO1Wi0M4VCSoJI8CsrANWhWBHgSip0QojVGSYhnn99SkqaaIaRSqYRhiN5WKcexLr7Y6Ha7sKgsQ1whBEQEDd1uN2/rbECzQwJFhpvEhcEDeFeR4VnTpkVluBkZ3JutRPqBJUWeZSVEm2V7ldCWGvo/WxYAlIEsgGXZkJa2HXiRWgZtLoByqtVqEAQiCZ1Oh/61RIFbQRC4qE2lXAkPdFBUgXKMiDJonjZEiZVoGN4dHx+HIUrcQfGccsIw3LVr1+TkJK9VXQKlkLovEKBFcBELw/DTTz9Vwj/99FOlXcYQjPjpp59ubGzw5htT5427ImZKKwzDn/zkJ+vr6xYNYRj+z//8TxiGGxsbdlUciuaPP/6Yp+6i5JNPPlECeYgF3HuKfndVLkro9dra2sbGht0AF+UIfndtbW1tbQ3F6C1Md21tDe5qHa7E+sUvfiHNk14KhbTb7fHx8Xa7zfkJ42rDtyO0WdjY2ADKuX//fiIrmLCxsdHpdGhDj9epmAyVQNMPJm1sbKCSR48e4XWHgKriKYIM5SQaXfTyFoaIXsqEW1QPBir59TyvUqmUy+VOp6NSjmBzOVAMzWazFqNareLFgFCpVEy3yimBUbgeqjCD5gwYQip0jBVCxsfH6V8IAclEDQpSydAk6F3P88AALknFUAYDMSMuhnGdpoiKcgxRtGlV0YzYE7Jbrr3FPZANMzMz0m14TUoZBEG1Wg2CgAubog+HHgYBbS7CMPQ8r1ar8Z7BpgPadxiwwkBt14TG0vZLFMqhPaEgCGCvtwKqyiSj9I1ETDlQk0W8Q3mE+r1erwe9m5yllLVarVKpIOvAmgctqjEhbSLSLqvIF8q6DtNaFL7EZQfugJHihYUFu0CTLTcyxeKBphCq2TIUzs2wD53nCxxkbzQaR44cwRZWOszoCOeBNQvrbAtO0tqWSDku3RQL+okOrXm1WvXi2SbOCrRToqRImUAYuApCgNKUHo/o7bvAq4mWk5TwvXv3AusgsyTP5VSr1evXr7uUYug89h2aB8EHjSEnNJzkhpYpF2wpYz7LEEIcPnwYrh0ph/KNVmci3yhi+edqkEjVy8nQE8LOAW+aHdFoNODsiVKpVKlUYBqfN/1KCKYObySXL1+u1+tIWhAF3pPq9ToobLfb+BITBAHEwlUDnufV6/WFhQWqhJIZYs+ePUbKkVJ6ntfs3QgmpazVanfu3DEV0nasWNsRipOH7PbucNdBbE1kptJc3qgyFEEQBAcPHuThJsoJgqBWq9Flq33avO2QdmAtDEPa1CoXyEwKE9AOhCBTIEqgiZY8zxuJAQcy8U4P1YY9mEajAcP7k5OT9Xq9XC5jrNOnT9fiEaxyudxoNFqtVrlcLpVKINNoNPbu3dtoNIIgqNfrpVKpXC5DFCUjihk2yhGGraDVahUo57NZC12w45kdbBZ43cO/qShHSun7vud5QDlc22cBlHKC3gmMjY0NO/0oDb0W2IGgIbSbgn8xUFmBHQRBtVqFU/tGCIADzp49yztSdIKnXq97ngcGwEwEyExOTqINwEwgU6/Xq9Vqo9Go1WqtVgvVQj2hqWgzLoSwDayFYfjyyy9X4wM3eS+HV77PVHW0YGh+iFLukfos47PjpcgwaIaUQ6uNlmzgd21t7c0337x//z7VvEWq3LNnzwakmWYtDMNyuVytVh89epR23EyhHOhPVCqVSqUyPj4OC6MAGK5dwgN3Dxw4MD4+DjJ79+6F3/Hx8fHx8VKpBMezjjD89m//NjAE7ScB5cDv9PT0xMQEXgPl+L7/p3/6p9PT0/Pz8/Pz89PT06+99tp3v/vdIAhardb4+PiePXsqlcrNmzdRz/j4eKvVun//PqU0vioBejmwFkZDOaZ3nx3KScSLRDnDnFezQKmEO7DAxChpKUerc9MpB2rj4IZ2tZSTYZ7G1MvhDbGlWwAwrQcD1Go1hWlgt3+1Wp2fn7d3O6DX0ul0fN+Ha0huamqKpt5oNNrtNgy+wdBZrVY7evQoqsXwoHcRHV9mnbB8AIRSUc5OiyC3J+Uo+zm0ITxwaGyUinJSGTbkjCjgTWc33njLDXN0u8lRgQPlSPIUCyGazaYQQtEsh/KuY8IwS6ofyhG9EzCCTaVYWIovbtauYwY+8OKveOB4Gq4FUNQK0ssRQgCFeJ63uLjYaDSgRwXTM2fPnoVxNlx1fPHiRRDA5QOwZABUNZtN2GeCo3Mms6GLZhxYw++d2CmHXri3C1sH285ggNJAyD6aANqK0f2nGKLIK3tUUWZTGm7La6/WHmo5bd8HbacW6Dd3SHaUg2K8I+UowgqdgDwsIEJJeqFUvKGR0CBKymQ2Us7a2hrnABe+EWzmnwoEvauNLdG1iw4CsmKtUChMTk4qC8aUPac0ohACJ4RWVlboATbYuYGF9XTFGp0Zon8BCwsL9g6ZyLZ84MWjnG2KyPCWmgEhWWljen6072XKEyI3o+3Gp8tuoR2bRTl06jgVaNMgSEdE5tTLgRYA3mq5ZiWJYVLOIJBIOQPaCppYY03kgdee55VKpVqtBmNfSvuu7MtByhGEunzfpxGFYXMoJ4+A0SfooSE8FlCO53mBdpE0dNN2KGdrIhfKgdd82FBmgvYYWroZvlQqFYtFqEYDyKgR8IIPazc9cootWEVP/+UhNEewtHTIxkspm81msVi0HLvLQ7TG12o1SpkmYqCUwwlGCZFSCiFgmAXVcv00RO5Qjo4wAkMvx0Iw9hCkE6VfwvVrt4LyEwEoiyh6LHzDWZBvFzVRjnEuB85u4pRz48YNSzkNAYnrVWDYoZ85RjxzrE89mwjHVT1hGEJzfObMmatXr16+fPlqjEuXLl014HoM+Ds1NQVr9gedKQUbGxtAGNTsb33rW9/61rdMliu4dOnS/v374VtkQza+0Wjs2bNHcfL1Xty8efPmzZtwody6cePGlStXgIeQcrRcAn9FvBU0MvRyuIV0BE/LNMrFCwYXyuG3AtY1wWuTHkWSL5B79OiRQhuwPIwSA9ePsehBbWihYhIekoYXggwe0HVu+EtTB5O0SQRkNA8pB87ui5ReDkwHDY1y6Ng6DeGSiRwQsjMx+zQsw61NhyNThmEI3Vmc3qC3TEWgaLhx48ZAKcfyHorGZ9MchiGs+dkUyjlw4EA/k0mQfc/zhG5sTREWQtgH1hT5IAiq1SruyzF1bkx0tXWQ2TwXyrF0XJTuhUmMx4Lk6HA3NYAyjRKo7eW42KzoVKaORO9CAMF6Ocg6ikLlGFBBKMf3fZVy8GEeAuVQbkCj+cQpv8UltS7ODJNCx4QGR0guz3mXfXRAC9psaeerXajrxo0b0FEYMgcLIShfOsZSXmvq9brSy8mlJVXenzgajcYrr7yClJPBdSbK0SIIgv3798s0lKMsH/gMUg4sxEocWAt15w6khbbtBmgpR4nLb/ExtEQj0YCBUg5sHVUpJ4qiarVaKpVk7xNYr9dNi6SzlTqUK8wNKCcEl9lRxxju9Z7vy48W5qq0ExW5HNCrgI6/K5u3U/mq/yYPit9CHtAsUsrJkFAYhrdv3y4UCo1Gox+DFUA15V1VaqQQAgbW+hn85JSDyNyewvOm9GAU91LKyYZUZSfiXo40TOdweTzwRpopJ7PxWwravFgoJ5cFBdgWw94XmDmjJGGJwonE0qfRqqURqYzv+3QxTtALxYZUEPbTB6IogpVzSlWzUE62+hcEATw2+KkCoAHt9wXwusy+QaBFrffDCvQvPXAaAycmJvAvXECICSg5MTGhJF2pVAqFAjyx2d5h+0S32202m7ApDNY1cTNyoRwpJVJOjtkMggBqBf1euux1psiJcnIfWBNCeGTjgtb59Xr9lVde6ScVWnbdbtfOAUJ3rKdklKNVEvXCIrlNYaIcaB/7XA9JW3n6hRtoiOfn58vlMuxIwe5CoOu1CAPlmISVWKYQTgwK5fClz0K3zVMR0AYmLB/gkEm9nAxVUAiBm1ddPgoUsDV8ghG14lyqylIkigE0xBJRKTwMXFpaGhkZgaNYRVJrnthSK2/6LgB5mKiAdvns2bNCN3oGnbNEIy2wU062ISMZk8GuXbuq1Sq8AyqWCyGgzc1AOVhXIZVcumi0jPbt2weehx12grAOXORCOZ7nwaK1ubk55QsLEIIfyKjVarSXI3v705kpRwncplCyANdhmhVrlnUEihi0D7Dhv1wuF4tF2MWJvRw6l2NpYZTmTmnrtcJUkoKTCrRaATnnTRsxLfbs2QM9Cs3AmpQShDjl3Lx507EgMduWKQERvw9aSitgTneBu2TmVHhBil7Kwf3AYoibP2ijHAQBbk4eHR2FA19hV3m+lAP8qlCCzESWmAtqPDgTuAfGrPqhHKVK50U5kvDrG2+8oRgP54igQ/Lq5QCr8T49Dzl16hREVJpX6g28EG4Day8Y5dDsAOVAL8fSCEA9dBxqu3v3LjBNqVSip9RgF4c3KUHvS7bQNf3awKCXgWizFgQBHBTdbDZhhAabhSAITp48CUcYgEy1Wl1eXg6CAEJA+OLFi77vYwWD06Zh7Idyp2JMwvKBl156Sbt84N1338WisjzqMGhz7tw5z/MOHDjwjW98A543+gVlKWWn0+GUkwGW8VZY9ueiBJYnustrAb7+p3/6p9HRUWgQK5XKlStXlBWueMFx584d/OV47733cAXtnTt37ty5895776FCxDvvvHPp0qXz58/DaxQ94bxQKOzevfvAgQNf+cpXrly5MjY21j/lFIvFgwcPXrp06XpKoOWwDhgXCsMKZsV4sH/37t3Hjh27evXqlStXisXi+Pg4X8vrbjxQzpEjR7Tm3bx50/d9/Hvnzh0uQ23GwC984QuK5b/1W79VLBb37Nlz7Nix2dnZw4cP59LLKZVKwmH5AEBLMBxSyiAIyuXywsICF9Oq2kaISCfPQpxIORkaAXrUdKfTWV5ePn/+/KFDh37/939/dHSUn8IJtaLdbrfb7b/92789f/780tKSEGJ5eXlmZmZubg4apdOnT8/MzJw+ffr73//+8vLya6+9NjMzs7S0FATBlStXZmZmXnvtNWjfFxcX8VbQux0Hru/evQvHib777rvLy8vz8/OVSqXVanU6nYsXL5ZKpcnJycXFxeXl5Var9f3vf396evrkyZMXL15stVqXL18+ceIE3JqamqpUKsvLyzdv3qxUKq+//vrdu3chLVzJjayDx3rqlw/AgQeccq5evZrYNuEaZSFEtVrFxsLzPHh1EkJAMxEEgSPlhHkvSFMQkN5o/3parRYesQcZ5x9d5iHuoG+vWgFcQMHPNi/EGBsbgwPM+6Sce/fuQU7L5s9ac7Orug+Nl8lXuj1yfhS9wLRqtRr4Fi3PTDkwb2RCzeGz68qtPXv2cLIE49FF+VKONteRbgwtkXKiuKPDHatVtb2Ix55rCqiK/S8WaDabtVrN8zztkc/Yg4d2GU6Mhj6H7/vlcnlychL04AOysrLSbDahFoHkuXPn4Ba0P3BsGozoYrsU9A7k0J5NQL5fsLy8XC6XBaGKdrsNTxxW7/HxcejN+L4PGyRarVa1WhXxcJxgAz9CiH379hl7OabyqNVqV65c4fMBCpDkISd4vDY+deVyGaYW3CmnT+BBeDg0mfs5FkHvwBq0htAyCiE2NjYS/ZYjREzS5XIZ3I7VHVo9GKESQuQ1l8MH1vq0H4yn7TVcwCm2IRtYc2n++F0cWKOpwy24Vk6Qc7T/6tWraDCiHJ+cGIYhrFjL5nC0xN7L0TqEhji2vNq7ibG2PuxZCHW9HPdXUmU4CxqfU6dOwTuo8iKCJzFrx8T4GWuomUMY3p4VtdAy1+t17ADBmJjv+0A59FM9nU6nXC7DzDQ/9QC46vTp03S9jDYjCZQjpQzIXA4UQ71eh+89VNlCsrJhtTGMWtImAy7glJRqtVoqlXKnHO15DPRtFHm4z4S07EUpp1qtQls8/FMMwjAERscmD3uZtHF039thSmUQK9ZkPM+nGB8EAXKAIJST2IyaWpZGozHisGItbdbefPNNSjalUmlpaSkk81ucchJbbcV4TjmKBm2WLZxBhcHCgBx4o6iye3VbwJ4FoBzP80w7ThybBaXZhSa7HE/nwItgOZ7LcVEbsPNmFHoDJC59gnZ7aWkJ1zIAkczPz3ueh7wCqmAWB0+SvnjxIvaQoCuGvTTRy4XCkXKk4Yw13/ft64b5yANtNZB1RkZGdu3aBT2AQVAO9SxcQL8PMg8LePrnG6EjLUgCBta0lKO8Sg8IkBycNQtN3vT0tIgP3wzjA5gHTTm0kU2rudlsFgqFYrEIdV3E/TD0pEhJOVLXywEXwfIBrZGJmzq1ePXVV8HtaLxycHX/lCOlhJZLGCgnUY/FV0II6ArTKNQAe3u9LWDPgpZyANrWPGQj//xgTdpEwPT73r174QmlXxzgbYtCLcq6bW1Tpj0MlEapVquNRgO3pkAthQUF2J3AtQD4TR24NTExQQ+WbjQaU1NTopdstJQDnRM95cA9bXnwdsQywgBb7YrFIn3j8zwPvyBUKpVg6CnHkS7u7gsXLoBP0d0rKyv9J2ShHKWXMxymoRBC0HrDPzEA9uDAWrZULJTTT67ReNyXw/UgXw6hl8NhaWTDMKxUKsrCbkWm2WwOupdjstnFPyLevcDlqTEmr24L2LOQlnIc2wrlt9VqQQ8Dp2G0bYsSy9TLoYEWyoE2Cl6GWq0WfvUg0H30WmGOZrNJ5TEcT5LW/jpRzs2bN69evaqUR9qKtbKy4nkeLNSZnZ29dOnS7du3Hz9+DA8h7JAfGxsDyhkQILd/93d/Rz9XNzExkQvlCEOJvvvuu7BiDXpytN2Bt90HDx788z//86lTpzY2NvJ7iHoACVnOqQOBPilHSvmDH/ygUCjMzc3hQsRnz57hEhL43Mhbb7119uxZ98xiDbHL8LkcqWsi+S1UApRDjaf90Y2Nje985zuzs7Nnz551J85ut/vpp5/aZTLM5fA2UTuXA/Z/8sknQRBcv359dnaWVjPLI0yd0+12nzx5Alk2UY7U9X62PjhrSl0PMowPRuEHdMIRloI06xCCbT09+9LET7Sn0ul0oDmiS90UYdG7Cpc2PkEQ0KM/LRpALAiCixcvwuK3t956KyCHdXbiM0O1QLMfPXoEITgVBMt9KSnSY0ABNsrRQhoqnwlCCBhqg8kDpTjhwRC6fTn5Arxw4cIFpBwhRL1eb7fbOepXQqCXU4j3TIi4341rV6DnBy/X2s5B4jNjF+MHdCpJ4EX/lLO6ujoyMkKZFTMLc3XgCpfjf1J1iRIpR/a2jPyvjCkHe6IyniWCNT8W4/tsZ+2Uo2jWPnGUcihNCiF834cTsmG1CFQz9JIlUXoXKrN8ESnHUkMQnHK0nyATbDRJ2TtpbzoUQgoN63IDXW+G3rUnJAgdYhIKZ4jeTomJcrgxJj3KvhygHNtcDrREklV3Ew9pS1fEDRkf1Rka5QDge6voI96NzYwgCJR3E6QcXFkYBMGpU6eUVb+7d+8OyeC+FoNedJCKckwFvbq6WigUoKsKFRo+Z0CXgWJm8zWent6vNCKO9iPlgEKY86MTkLCFlhs/NMoxNesK5Yj4hUZZE6V0g/iDLHUPtRAChmS1d3ngNqUcSxYUyoE5f7owim4JgD0JdDNAQI6ucYeJcvoH0oASzjdsOlIO1Rw4HAqTQDlRfKwnjpLzZwCv+yl+MSzKWV5ehiUDQRDAKSC5L5JGBEGwvLxciHeQ4LoJZSX+nj17giBA1gmCYG1tDd0CwGuQjKIIKyU+GIKsb8baIMnpD3ALagB9kYdXnlx6OTAhBzOinufxnQcvv/yyktkgnuegmaW30BWQcTQbxohAEijn6dOnIKxtO2jDyo2HRQqwR4G31wBYUESNR3eBk6HgRPz4QScenzSt/+2nD5gaRJo7pJxms4mrb5XKBhOKsPpofX0djIQxerAkIJ8WjaJobW1NkOX1jnM59uphcf6mgNpjZx2gnCCeIcd56FLv1/+83g8AQhHQPTFacHZRmnKsafamxjEQwM/0Er2dJIVdBGMgrt+kja/tBsrxLCdJFwoF7XGB2tpjf4c1fa1dCAGLX+2ezQVwfgOO9Q0uoSBescabANoWwDJxEdctz/OOHj0q49creB2AtgnKCV45L126BKsSwvggMi/+qKXv+yBZr9e73S4qEUJIKY8cOeLFx9FDcpB6KsrRFj30cmiTx7M8OjpK7YTnc3V1VcnsvXv3aKUU8RsJJN1oNDzPO3/+vIwPhIVlgdoviVmaEkna7mazORLvMKVvCUphgYuiKPJ9f2xsDFe4wavum2++KaUE86CkwviLpVBSURQdPHjQiw8XB+P/8A//0OJnexMfRREkAbbR74QqxuPdq1evopFAVEhatVoNUjl69CgUUxiGjUbD8eMFduLZgpTjWE+gZkLTCZSDe1MCMsGuDLhBoTSbTe1LrYUPHPkjtH4rIZGlFGE6ICYMY3Sch5SF44Hh4wUKXSVQDkTWloS9evG7FjYSw+rliHgJOY60DjQh3svhG4/hLD9BpnmWl5fBLc0Y3W4XFvLjJokgCOClFSSDIFhYWAAPgxK8CxHxMzawNEXEHaBmswkR8+rlwNo8Ov9BM/vSSy9BZmX8keNmswnv3WinlHJ9fR3+oj2tVgs7CkF8uLqMN46Ah7GC2Zs/HH+jgUA5sA+uWq3SpZW01cb1eEIIeF+J4m0DaBKYB+t58BaW1PLyMuYLiLb/raDYup08eRLIQ2F9mE0E9z5+/FiyXg5uvwCdKysrQdyfRpfKzzblQHMBK29xpMTy7MPm98RejjauY6DlLobw0X5TdIVRAjNSCXDKOXDggI1y1tfXjx49evjw4SAIut3umTNnZmZmZmZm1tfXNzY2zp8/f/r06cXFRSnlw4cPYfEDDC+srKz8zd/8zd27d6WUYc6l88oAACAASURBVBheuHBhZmbme9/7npQSjgyamZm5e/fuL37xi5mZmaNHj+IiaRM2NjZMCzko3A98pYs3BoFOp/P+++8XCoWxsbFyuTw1NdXpdN55553jx4/v27fvc5/73K5du2A928rKisx1wiaVqmfPnuF7bif+vosjqPC///u/A33CgNL6+vq3v/3t2dnZV1555aWXXoJDpQY0lwMDGlrNiisgs1xsYWFhJD7Ws9vt/uhHP7p69ers7OyhQ4d2794NDDQ2NgakQtFnG9psNsfHx5VAWOnn/kXXcrk8NjYmhIDcPXjw4ObNm7Ozs6+++urv/d7vwYsOvKdzyyPd+JI0vDVqKYfeSpv9TYRCgRbWRMoJgmBubg4nLAPrGfMTExOFQmFhYYGf1vjjH/9YEW632yimPd2xQz5Njc0gb7vo+ZBBvGDs3LlzdG1bhwA7Ivfv3++wE9jgtDfKFgp/8EEzTjC48g1N2rdv3/j4+Pj4uJ5yYEgHxzSCuIuAZ6PhGxy8meJ7UxiGsBgMig1SBTbCWEKIMAzh5R3PF+Jds8ywb4PqE4lTfEEQ3Lp1qxDvBKRbQWEMzfd9eKHGWWvTg2F5ZhIfGEfAe0dApk8SEfYCejnKvhxl3RpmVrKs2S1XWkPlLnSq+iEz+KoQ35cD9gdBcPjwYWhrlFT6bGd939+3b1/oAFxurmgQQsCwntD1UNfW1rDTCTXQVG3SQvbSjElmy8KeNQpKOTCw5rKDEKYkeC8nCIJWq6UMxMF+QRypQ0nkAN/3L1++TEPggk4NAEngCAfcgg0qGEJHd7Ta4ALaZEWYBtKNOzBWAcqhfxzEHX04W1ohIdvHCxyLJGKvPC53kZlkPLCG5wLQfCqlZWnfqfuovOJWqiTQ0TIX4+Dzb1w+6KUcXD1MPRCGIZxkLgxnMlqe28iBctxbAWiV+Jmb9lMsKcbHxznlKLh16xYMSiiDYFL3muxeCcF4fjwoR5l96A9iwXyv5eMF8G4ErbapFBSzTaqoJH5Ar5wEnhfcMQ7jZoIMgPNnLQgCaP6oQOKTbvc/TSixjLYa7FmjoANr8HJsH1iDcKQcKgnDtvBAwTgt3D148CA+btAadDodEINDUuALkH78pQCgE/iwG7IOvNWBQDk+1BHO3CrHH7agkxe0ret0OvAGXI5P1IXTB/Bsm1r8CcpyfMxaEARLS0vKw/X6668H8cEuCNw0CrFsHy9ILJUozYuqFnSRdDU+gtTe3JuKmR4sofwGvcQuemmJp2giHvyrHGKhRMRrPPAGa4CSfeTdDG/opqedCrg3AfAwAPA0I1qf+JlG9RgoXIu/rWJJizfZlurkWAPxSc4AmosgnsxAzdqMcCdrbdZGVMKFENPT03RJCzXJBRAFmN5e0FEvzSR62BGmwtLasHVgsV+R5JQDLZUCZdijFs/l0LGWarUKq2ShEce2+Ny5c7TTg0pgWRBwDLY5eAxau91Gw0B5q9USQoDyWtwVQ3lFuUI5QAlefABjEAR45BoAujJgElg+PT2NPSHI7/Lysu/75XIZ+0MXL16sxntRIC3YCmqcy3GsZ7wIU0EIgbyHeXMEzrFjd9WOIO700VSaBmjv+r4Pk/AWYbg4efIk7sup1Wphfsd6akvE8ZnntzDEhfxwqMcS0k9eTOGOuesf1JnSTCr0r4u1QzOepqg1LNHaVDAl5J6KS6YG6iit8QgT5VjejAOyfIC+nkIjPjc3B60EcsCFCxe0L7j4JiTI0i/s2XQ6HRzxazabZXIqKIRQGS3TKH+BLXwyaFaOTz3HV1JkC9/3p6enUY/v+6VSCVbHAE3Cy9PU1BTIYyoJywfstcRU1dICKAeXtGuXvfNV8BgOgI+M0UCqCsH/KiEcdLk9j2uKjuuFvAGcJK0tEceCMN0axINth9Z+7V1LPczdbK0zI9Y20b+StfU8Uy5F426eNlzrT5PT8oLJY0q43R4t8D3GItOPG2nqESs4hEI5hULBQjnYjiPl0GEP3/cbjQaOUMFQZxAE58+fB7Ew/vI0EBV8RFyhB2QFoBO4hlE1ZXpJkQ/III2FcuCNud1uI+XAGRzwTk9Pm0bKCeJP5lDKqdfrYD/2ePKhHPcKZEEYhuPj45VK5dq1a3//939/Ica1a9cuXLjwzW9+89q1a1euXLnWi8XFRfzFEMA1HRYXF5eWlvDv8vIyRoG/gKWlJdSztLS0vLwMn8zDuxiytLQEwksxUGB5eXlxcfFrX/sa7eVsbGw8e/asvydFKp7Hv5I926m05WJVqhS5tYrZLjWQGp9LVZSGBpSnQv9qc6TNXf9G8ryb1Gqv7cZkADVD8Ymjn9N6IBdw/5vMnpiYAMrpdDqNRqNYLE5MTPB1ZRsbG3TV2dTUFKUcaG0rlcrp06f/4R/+YXFxcWJiAg417nQ63/zmN8+dOwdNx7Vr15aWlv7zP/9zcXFxenp6amoKGqi7d++C8snJyddff31xcfErX/nK2NgYLEjrdDqnTp362te+try8fOvWrWvXrl2+fFkI8ejRo6mpKVAObRp89FP0Lo3DgTX4Ks25c+cWFhYmJyenpqba7TZ8LXRxcfHcuXPgjfn5+ZWVlTfeeGN6evrcuXMQXiwWl5eX2+321NQUmL20tPT1r3/97NmzdOXbgQMH4JiG3Cgn0lVxO2ChZ613HQgW1eAOCNAiwwEVGJH+DeJ9OTiXk23oiTvQsSD6SWJAcKlajnDUmZfM4MCTHpDH8oXWPCUwsTLI9HUvrbxFDxoZkVLgkrVaTVmxVjUsdKI9Blg+gN8rg0AYT5ubm0MqCuMTQGBxSr1ehwE3CKHA0yDBjHq9vri42Iz36sGty5cvQ6+CdmhE3Fvii9DwAnsq1WoVdKIlIu6fwXggzh0EZAYI4HkerFgT8QeBGo3GwsJC0Iv8ezlRf5RDm2yxGZSTFwJyrGc1XrGW7dmwPC32UsicRP9GmsTygqPOvGQGB550jh6jRdOnKq7ZZLny115nEsW0sfoHd5HJZk45NbJiTfmllAM7vRLfobkeGs5bFbzW7idRLix7GRVVMOgHW/LBbIWTaEYAi4uLQJO4fkeJRdPCvwcOHEi9SNpU4bLVPBlTjnYdiHDb3bkFEZDTBwZBOaYiyCWJtNHTJu1YkRJrYGJcmkGLTFq1Ua/l2bJgiqt1VD/IUVWqhBLrgMyPQtKCG2mymVMOtMu41FBZPQjAZfeZdwcq8qgnjE8gNEXUbhk07SOkZAnTNtC/4V910Y7iQFcGt+Zo7VfYFCgnn16OZBVIG4uLaXs5A0XiRs7EuC4a7t69S+dyRJrjZCwPpKUI+CPENZhC3EvWbptdQGubtmppc2fJph2Oku5qlbKwJGrPTmJ+qSeTM7CpsNQxe1VxkcwXitnaXAA45ZTig/gKvYBTKuixik1yxpo75XBJlxAtXE5sEUmzCZb+lkss2vkTQgxqYE0rYKpDQ6actK8bopdgNp1y0jpfq1mblnu5m2wzGWMSs+cl0RL3uKky6CJMxbJl4cWDveKZap1dzFEmLRSzeS4QlHJ834duDd8+peysgiVbAdkvaGp2aD/D3kDR0TztyJ49Ll7z/e+WHfGYkGmdG7WNy6Q+Y82xbmnvSvJA2gGUMzExkdiI94NOp9NqtRYWFnD7rjvoywJcu1PO2NhYpVJJSzkucHE+978pJFW5O5qUKGbJiIsl7tFTZdBFLZXR5sjikAyGaQ3IFnFwsFe8zMhRFdVJ7YzMdbtWq42NjdGvZPLDx7SAJWE0ohAiiL/dyQ9DwyVkgdvxZfwWpIVqFc2KGIXlG6CmzEKgxQ8YUbmA5Wo5U45W2IIwDGG2IxUNZEMQBLUBf7YAF9fjXE4/K9a0D4mLt93lo/TtVzbbTHoyR48cxt/yUutoKopp5XlgjhZuOkwu6qfaDwgW45WLWq0Gh9xQKKddwN9KpYJHy3BJPI0mEdrzjWA3D1WiKHeE9gglVK6EmA5eghQhv5YzmWiKeLFr1y6gnGazCZ7PSDnaUnSscPblA5Qt+mECjD5oysHkclk+YHlItG63y5s0uMtryzRVWlxPqqQTdbrfTRWRmppY26MkynFRlZiQJeKmwFSa/VT7AcFivCIJGyH37t2LW7zhgn7hgs7lKICN5IqY1/uNCRqRbiTHEJDhs0fUJP43ERYxJS/a/GZDsVjMf8Va2go3IMoxTZ3BsXSpVGUAdCQLA6Yci7fd5aNhUY5JT+bo0U4vZyvB5KJ+qv2AYDeeikkpwzC8du2a9pUf3+7L5bLy1g/AQBSG7ZZc0gQv/rg1j5VKj1Yt/I6Pj9Nwz/MgxCPf1VZkULLMvsxN9fBEUU9uB97wmpdY/DCwlkg5FP2snB5mLwfeO8oxofZz4I3iYXvRWEqHy1skLeEm2xw1mBS6CGfQ3z8spcBru8k2XjRaGe31toCSL/zdatBaLhnlIG7fvk2beDqspAxYuTCBXaAaHxPOR6WojCLAzVAMxkBuOZ5KbjFMS6jaRC2gJL3J+3LAiD6Hzhxh7+VkPn2AA1esIaEOgXLSQm5qL4crHJB8/+ApSjNtmML7t3mYWe4HWjszV/5+EOmYz8V+ijAMLccEZwYeE5wokw1wVJpWWxB/TSCzflBu8gANp4ki8OzzTevlVCqVIF7OMSDAGWjVavXs2bNLS0u3bt2CcDoEh1/f6xOdTofO5eRFORa3UwF+bSo7u0JLOLctlQaTQhfhKGXzkQt4clJHOXb/K843JWTXkNr0zYCSTcka/aFBm7rF1M2yEw3blHSVD9Eq191ul3+s1nJiJIrZT5UEb29mL6f/ht4OvpIvR808BOdyoC+Zai6Hu44/JBbnS9ZsKTqVcH6XJ0c18xCTQkeYcuqezUFDWzR4bYqiVaINcc94KrOHicSqa67vw0bkVlElq9taPfRvqpwqwi6OtSRhijhQZMis4vYXf2DNEf0vkOufcjIgrQZeAxKVu8sPDv07qs8U+VO0A9ODz0M2HdlyZBczSSrppjLAMV27zkRX9OlJRwHFJLzeoZx8wClHpBlYcykFi/PdNcgdysmUonI9NDO2MkwPPg/ZdFiyYMmRe975La7ZRa1LoolGKmLcFdlcZ7mr1W/Kfg77clwso+CUs6W4J5sxyiLpDJRjKmlLKWiLI7Eo3eWpbY763c2wZMceMV9LLAlZCiIxboZbmXVuFnh15R7T1u1BgJuk3DJlISK+tcjb9QwNLpmKDAXRj2Oj3tbAdJcKKKnjdc77clzyAPtyyuWy7/umcx1o689/OT2YjmGgd7Wx6FETXBWX59oQKysrA1o+kFjkiljU+6jzspfWZ0zREBmet0QBx3qSNmKGhFJFyZZQ1OvVRHtMMtq7mXOROxT7sxViZKjMVJv22iRjr88uxiRG3zr+zxCFxtI604TI/ICbwiNWdopYX5TDw12y0e12YdH3ysrK97///RWCdgy8hsOCvvvd76IAXNy9exeuQYBHV9SuGPDBBx8oIe+//z79i8rtWF5evnr1Kuy2hWXvuVCOybeJRWMpymgLPD+WbCZGzJBQ2lQyJOQYN1uWTUWf0b4+kLk+byko3qOBprs8POqjdg0N3MJUXnLR75goXuc2sOYOGFgrlUqwYRUvtFDu4l88Lc4SEZEoQMV4uAuAbEZGRgaxFdRUCvaCt0i6yw8Imc1I9Tz0g36SsMR1VGupFZbaIg1PpfavVl7717HGZoPdVI4+D/VINICGJxaHVnjrQ+uBiBWEEkX7V5t3kzCg34G1tAUpY8rxPK9mBh4Pzg8MrzPAh4a04Qrm5uZMt6iM5a4JoFYZWEusqZZSdymXbPJRf+1pP+CZdY+YSj6V2rS3hqDW/gTxuxhLe8tFTJuERSYxel7InWMA7vY7FoR74W5BSFLckS4j/WRNidvvVtAM5eS+LwfnTkyfd0272wZjKSFcRhvCI9JpHr5izbFOy95WGEN4mVn8r71r0mCSdNHQjxjPrEmPNqK7vLvaDLcSxVKpNWkABEEAH2F8/PixlBI+y+j7fhiG6+vrcCsIAnisYNc3RPR9v9Fo4C14MYK7oKTZbELSd+/ebTQaWF19319YWIBbQfztSCGEogT1ACUIIRqNxuXLl+ktSAKVgDFBEMCBIChZr9dBCSYBmfV9H94O8RZ8kwYjzs3NQURQUq/X19fXwRJIPQzDx48fYxaiKBJCzM3NKVlYXV1FOzGJRvzFTJBcWFjAzIIxrVYLbkGge53ZgkhsH5Snr58avmm9nHK5HAQBHARgXz5A23dKOYowRrEsN6A8EcRfIuIE40JjfNEBUE6hUPA8b6eXY0pdZqWcqLdG5WVPhltDUIv5bTabMN577949KSU8OHBo7MOHD2EZDjSLQgj4UBO0gPV6vVwuX7p0SUoZBAFIQvONJ1/BGSTnz58vx6cuSilrtdrExAQ4udlsgrDv+0+ePAElkEQYhjhniUlMTk7CA16r1SCJbrfbaDSonZcuXSqXy/V6HZIASaRGkAQOgCxAEo8fP8ajujBipVKhmS2Xy0+ePPF9n9p57949+IuEh35AO69fv46ZhSTwtbhWq0Fyk5OTYEkURXB3enoauEc5wzdztdlESAfK6V85IJlytM+5qdHUQrlFKSexZTc197y/ItjSsmFC28tJu0ja5EPF59rS0VYLUwgPN8lrb7mIWWRQIFFGEXZX3j8czdOKWUK0JWhRi98GhLoUxsBHiTZ2+LoNEcMw7Ha7oI1GVJR0u10ekepUkrOkrpUMCeCvEMKkBG7xzHa7XfADCgshNjY2LIZhRK2X6F/FS1qdJi/V63XP8+itbQSsZsqTpa3AsrcF0IZo4ypwohx+co79LB2U0R7j0w/lKJ0SE+WAJB7g5vhJ8H4AlANfuRgm5SSWnTYklZJsSEwiW17SxsoMx4TcxdzladGfP3/+2rVrqaqQKSF73ERLXjDYS1Cae9WytyhXV1evX7+OT7q9ZLcaeO6yRac+SYw1gqJhfNIn5XPJmF/ELxrKywu8hmglpZTY9MN1n70cS7tP/3Y6HTzQNN+EtEnjwNpmUY7p2VBkHGtGn0hMIkNd7/MJyZBWNjFLiIta+ujBKhvHR9pFLJv3tHWV3+ofuSukmnP3SdRboNn0bCLsRRBZh0MUryY6GfEbyqnX66VSKYoiIcTo6OjIyAhO/VWr1ampKdAIY6a1Wq3b7fq+j+O8sneINgzDWq02Pj4OSnzfh/Ho69evh/EKaaScPvmA7/HEkPn5+Wr86VaYFewnIRdL6FwOznPm9bS4PDm80kS9NKPUJK1Oi7xdLK2AJdySteHA4nzZ+6Rp41oUJjqEyuD8+TDzbrFKMcO9Dm86EnOXzS2wTAPfrTMo2URw/0hnytGqcklUpRwp5ec+97mRkREgkiAIarXaqVOnQCPMldXr9W63C7dqtRq0rdeuXatWq/h41Ov1iYkJuAXkVK1W7927F4YhjH4OiHLogoLp6WkMqVarzWbTXW0Yj6G7m9Fut/FTr6VSyff9fvblaGtDqieHV6MoiQC2LBRXDD9F/ljy68RAR/vpAy/J3EPaLPRjg6Oq7YV8PQDaGo0GzuXkqHk4sPhHDppyYLUGXENrG5EaT8fZFJim6XAOEP/KeDoH+kB4xtrgOh/tdhuva7VaKspJC0o5nufBb14dHcdCVQTkDuXkl6JyTcW0cU0K3ZOO2LB2BuMV+7O5sZ+qy8Hn81Mhc0QXuBSKEkiXD9g1bEHQjMshU45Ju3tpUYKxRwzjtYkDohzt4ulB93KEEEg55XIZjiTYt29fLqzjUpC81OXWoJxUWbArGb7ZiSmmFXDJgvKk4HpirWbZ+7gpGjAwx6rlXG23NLSFYhLjUTAcGhyt2u0FmYZy+sFvKOeDDz54//33tXY4AtewJY4mdbtdSjm5A1a1wYq1lZWVpaWl6enppaUlx4g//vGPO50OX+RmWfa2sbERBMF3v/vdYrEIlFOpVG7duvX//t//8zzv2LFjN27cWF9flw5fzeN13VQ/TLVcspbIdFcrwDWYzEgUUEzVilki2sUcI2aGXb/Fb3Yxiysi3eNWqVSmp6cVPXD94Ycfvv3221evXr158+bNmzevX7/+7rvvfovgagx6jSFK4HWCqwxc3oK3CS5fvswF3nzzzatXr166dMlFCYaAvMnCt99+G9SifpB85513HM1GKDmFTUKmonz69OmTJ09MD+N2gaWi5o7nczme5zlaE7F2BAD9ZVgkJqzrtWAZwoAoh+4GhdlXbb9HG1G5cEQYhsqKNcgdeKNWq8EBbnSaUQvFsRZkruKW9m5AyKXuamtgnzrTpqjcdTFA+yS7x5LxUk+qBy+mp6dhV2MzCfA5erhotVrKLRckJjEcpLIHxLT5tcjTXDcajVKphLtBtcUEczlQRoklu2WRWJ9zZKDnlFOr1bQpWSzgCMOw2WxCC3vx4kVojul2KskG1gaHxcVFWKiG3DPQ5OjAGi6Shuw3m00Ybbtw4QJnHepqExWZ/O9SWPSWnXIca5VLQnZhav82fVazGW9qubhOfKD4NkO4dfz4cRhz06oype5YQJboLwZMZUGzKYTwPA8HNqWuFOBlXfS+Fmw7WHySO35DOVCztXa4A7fp1Gq1kZERmEKHRh/CkXIy93JSRYEzKmCpArwPpk0uFSjllMtlEVMOVt9arTY2NkbPszLVY/545IWhVaxEM4ZZy4cPU6a0zZzspRx6C17AFV/BX6QcGuiSXMYsvUCU45hNIQTuizJFhM6Q2IaUs1kG204fSFuQuEXU9/1CoTASA3bhNBqNtbU15KQ+ezn8bDQtBwRBAFtBB70hFM7g4b0cxTmvv/46HDUNNJz2CeFVxH6X35JZezlpE0oUw6xtrwdVQVpPaktQmikHtsEpvoK/x48f52M+g3ame2swfLib55hNYaUcyZ4pF81bB9RgfjE4/IZyoFE2Wba2toYNqzIpgiHtdhu3+jebTUo5uFVl7969zWYTNvT02ctJpBxlYmYIBxDQRdI4l6MsHN/Y2IAtUND/E25Hf+ZY3nJrtPJKM7G5xgwCpkzxcO2Tj3/h9UXbsNKBtUFUlbRwqcmDQyobHPMShiGlfB4RxaJtTjnDxPO5nGazqZUIgiDxe2ie58FiLQuwx4NRMlNOXvyRLw8B5WAem81myCDjXiBM7ZTL5U6n4/6cSIeXEUVeG0V5RJWIkrVi2uToLYsAty1iTYMpL5uIxNy5RNeG86I0FauUEt7nFEfBNR9YS2VJ2uyYijgXRLp6myMSM6LNmkI5WhmYpuXzbVsfUtcgDAG/oZy5ubmZmRmthO/7ExMTq6urDwxYZbh48WKpVEISGh0dLRaLu3fv/ou/+IsrV64EQTAxMTE2NobfmcZWW/mLwAM6cQE0cg/KgwzV8OjRI/qXXgTxlwsQig1KuNK76nQ69+/fF72dre9+97tAOXBi0K5du/bt2zc9Pf3mm29ev34dTP3kk09gtK3b7d6+ffvEiRN/8id/cunSpQcPHjgeVQCFYqkilseDX/OnEaMr12kqlRFa27bms8pdMZxElb/r6+uwvD5iLIUDa4q1dp2ZDTMpzwXRNqQcCLx8+XK5XMYzrbO7eOiQm0s5Fvi+Pzs7m6qA4fuY+IlMWKZMX/Zh3TCMwvGzOLGVp1BC6Bd0OKhCGp1ylRKdGsB7P3yYTokYsNMHRnoB4ePj43AOAo623b9/H3o8eHSQy8OjfQDwgj9pUd+UY7qrNc8ErUxirE2Bktl81VruKpJwUpR20ZpCOXlZaDJMW3B5IdpUyuEhgETKiWJm4gltfcjNpRxJTpJWEATBmTNn3Es3CALP80qlEhxxxg+3QMqhq+Ch+cZr5UIrlgtarZY2vGnesmDaB7CwsEBPHxhhgCMJ4BwE6hMhBN27A90dLBdtbcYQrSSNwiPyWNq0lF9+15SiKa1I98Cb7DTBUax/8BxZvEpts2fHMb+YFp3LUWJRyhk0eMFF5jqwBRFZy4UHQkjiwFqUvgJvEaSy2SKWIde/oRzY0KSVQMqJkipZFA9uwsJo00gRLJKGPhCQU+JEkQnQiJvujo2N2ZWXdDDdMsnjLejZwAxNuVz2PA9G2CgOHjwodEsGwjCEjyeWSqXFxUXtYjZ7SZtKRFtFTLdMEbUF7Zgi12OXSdTQT/RUCSnW9m+8uxJMHT6irPXwDuW4IzF32qy5zOUEQUDXAfXj5C0LS74yZFk9SZqDU44pbYRp+S+SECRX7kWVAEOUu/QvvagmAXbnTExM0BAIpAI1AryFsZRA/AsXlUqFnj7QbDZfeuklhXIuXbpkWRstzHt3FM+bHpLEJ03uUI5zQtzn/afuqETr5Kg3+zuU447E3Gmz5jKXAycUiPgc5P7cvEVhyVeGLP+Gcnzf154+EGWinETAll0cKLNP2yjzMcpfLs+nZ4LetQZ0AgZmbhRtoncxm2l6STGp3W7DLA5Qju/7Z86cwTXigFdffTXxGN3Tp0/j3h3TM8PDHZ80mQflWMDT4nq09ccRlqzlC62HlYvI7E+ThVovaR0o47Ed7SnFsncuZ1PgXis2HYrZPCParLlQDqxYE9v8wBs78s1awknSkWFgzWKQSw0Aygl6l4FRVqC/Cj2YJvY5cJ0bpgIhSrqUZiCVxE0/XADijo2N4VbQdrv9k5/85MiRI7Byr1Qq3b59+4c//CEcyIYHfXL87//+bxAEMzMze/fuPXjw4KVLlz755BPF/6YHQHuLF5ZJxhJuepLdK0ZEGtzMldgxm/1DySNNUTJi0ObU8lebkJIpGR+AOzExobAOXG8K5Vg8b6okWwGKnXbLMcSFcpRvKHOxrQzuH0f7+8nm8+/llMtlrcQQKMeFP0wCiVESlWTQwCMC5cCkDlAO9FFgkqZQKMC6I6igMK6IISYvCSGazabneYcPHxbsbEdeV7Slo0BmavFNFlKFLs+bi4yjJf0oyZCQck3FIgfKcUmI50tKCWO8yoo1kNyhHHcodtotj5wpFGG4SgAAIABJREFUJ4oieEi39W7QIducZS5HWls6lxpgopxtAa3ZWsrBM+VgvkeSg02bzSYcLJ24HUcIUalUYHLIxbe8RCI2KCR1bCGTHkXHFC1qFZkM0No5CPCEpJly+LWihPvfUlg0ehiGgk1Nw9/jx4/DYrZ+spkWNEfbCEoWeKa02bScPoAh8FII75eDcfkAQfMlSbEONNH8KUd7S8FwKMflHLa0UGaJaKBCOb7vY36DIFAWRiMuXLiQ+FED1MzXxlhiaauO7K1e9hI0JWFJ167WkooddgvtEbOJWUIsjuIhUtfe2ctLCTTVDaScbC5NBW1GhoC8EkrMnZJHGZO9R85Y02Yflg8EQZCnu4cFk7cHmujzfTlar0H4zMyMqQgt5WqpAcOhnAHpN/Vy2u02rHKGRXSUciTbLybjg7fPnDkDXGJnHSEEHs7WbDZx744lirbqyF5WsJegqSgt6drV2lOxINFCS8RsYpYQk05tFMmaqihNM4q9YX5rh3JS6bHnTpspIYTnecoZd4raIAi26UnSkWFQd9C5SDh9QJopRyY1WJYaANuAXryBNRPlWLwBg2zQMRdCWIgHD2fzPO/cuXPuB1FLHc1oTcKCsxelJTv2iqH8dQdX5R4xmxhPTusf07VdSWJ54QCs53l4hJdS4sMcWNNmZAjIKyFtFmhelHyB/4UQ6P9ut6t9PDGKaSv9VgbPyxDwG8rpdrsnTpzQGgSUQ0MiVn5acy01ALY9DoJy6Gq0R48etdtt+JTvIAbZKGA1XblcpoukHY9Nw1p+8uRJz/OuX7+uFQCXdrvd1dXViYmJI0eOXLly5fHjxy6pRKSx0xZNxEjCLu8IRY+pkjhWIbcqnQLcTm4Y/ytZzee22fNrx9ra2he/+MXr16/fvn17fHx8fHx8eXn5K1/5Cp58A/jSl75kOpjAxZJU4P53rACbAot59kKB67W1tYmJiStXriwvL4+NjXmed+XKldnZ2UqlAmepUYc8fvz4+vXrpnPw+vf8ILQparWaqUPsES1iWjz/RBufywGlLpRjzw8H9HJ83x8oDQD8AX8pB6FQTmA+f8GCIAju378vDT0edGy32wUfevFH8OxqlZphElAScilKe6J9IkdVafUr4fSvEh7pnjeTzSb/K+FHjhyh56/DWbHKMQTT09N0zMeSR0dvWGD30jaCJXeSFMGhQ4eUI/DB/8p6aNm7fIAmYUkuR//nojaD5swRIzqXU6/Xtaq3O+UMtC+lBNKtoBkoB50G7GXiEiqG5zi4d6rsRcNlXOTd041II6jctdelxJB+wM2w/FXCLebxrDn688yZM8rJsIVCQfQeSOFIObmAlqBjFrYjMF+zs7MK5RSLRaF7CwyCoFar0VtKWWvdmNn/OUL2PpKSPfWp7HG3MPkkaSEEzOVErJ5xi7kRWsCrwXAoxwX905L29AGHSq4C/Cbigz75sgLFvTAVhIezKXosSbiY4S7vgog10MpdCxQNke55VuQTQ0x11RRdm4XERKXhydQ6AXH9+nXlZNiXXnpJqQlIOZZ85QXFWpPZLwyuXr2q9DJffvlly7khEXtetHWAXtu9rUg6RnSHkoQlF9p0eaC7hc97OUIIrYQQ4rXXXpO6euaYK46tRjn9AxdJ50I5Ml4sAMsILaejQ6AQolarefF34aR5Za22HO0yLvIuiNijaLrQ1iVtiCmKST6xrlpkEqFNNFGn4iIIefDggdLLqVQqij9nZ2d3KCdH0Ezdu3dPoZxDhw6l0qOUL7+2e1sRc4zoCFPGI+cHgQu4W/j8jDXTvhyxQzkM2q05nU7HtC/HHdxvYRhOTk7SbT2Ke+E6DEM4nA2+u7P1KYfXVH6XivUZblEeOT9pdthzl5g09dL6+jqeTQ7g36zaoZzBYW1tDXqZWASK/9EDMLitzOXIAVOOi5JE/RyR84PABRyzFiHlLC8v7927V6taxJSjNVGbqkyqlAsLC4NbJD3oxWlawLT/+Ph4sVjsp5ejxbe//e0zZ87Aqhg8sIB7+NmzZ/fu3ZuZmSmXy0eOHLl+/fonn3zCtdmLZnCwp5tYxRNltLH4tVYVN8PyNzHcYqolaYpnz56dOnWqWCzi3PUHH3ygyMzMzGzW6QNKmVoysn1x6tSp0dHR0dFR6O5873vf086VNpvN8fFx044I+7XWsRa3u5RCYvFZ0lJ0akP6R/K+HGGgHK0wzz+PKAe8Lyd3tRsbGy6J8kXS2rz3AyEELCswHQmKYrAM/ejRo4JsUlMuhgx7uok1VbIGzqV+czGanEWJYpUpljbcrlabEAdsygHK8TyPnx0JczmptoM4Ok0bkec0sUy3NYQQME4O4xb4qWnZm2t6IhG/iyHcb47FJInPuU6aonshmmAp8RzhRDmvv/663T5qpTZQwfaiHMdEc5nLsQMOCfU87969e4nCQRDs378fLOFnHwwf9nQTa2oqGYtO9+RkErWYtFn0a4W1gONfgXKq1SqeWIxAyjG50bFQtJKO0V9gwMeLoYtTr9czbHiwgNcofkv7165tCEis4Yl4vnzA030VVMaUo7hGq4vm3+6F7T6Xw0FPH8BPtOVb0ngthIDFMziCbPJ2p9MBk+g6zp3WJDOUSk7DLc9hhoSwfGE6AV5fwhggc/z48XK53Fd++oPSCocEGILhioA7qIY+kapQYC0oUA4eMcVlQExYzw2h8pnvDhSpCDVK897GA21bQaOYco4ePcpTdUnPhO1LOZYulDKwljvl0CJEHwKXKLWB/sK+AeVwNgpTRafh+b7ibTvwFYPKX8sDZn8QUAlPDpoz2O2rLSNcPpAWkYE4c4edKjg/hWSxpRKRd/JyB/UGGCOEAP8L3Sd6AUBLLg97ZvtTRcxWpqlI3V7bE5+I55TTfy/H/UnTUg6U8fYFpZxqtTqIXo5SLnhukD1uGIa+71erVc/zFhcXlbp17do1/njL3lrI32ftTQDERT38lnSu5YqY0kgpZitvxzSK+xNFLUdo8+vygNkfBEWblLLZbNbr9bm5uUajAaffwgETiEaM/fv34y0ImZubowIAHpEG8luNRmN6erpWq9XTA77uQ/9iIN6qMZgCUUO9Xt/Y2BhOJwAOfQc/NJtNOC8R/8IvYGFhodFowPtcrVajt1CSetX3fbyFUKJAWSgyEAjJaaHIa/VTSV7iihn8bmLlN9V8Hvh8YK3b7WrjCCG++MUvah8P5df9SWs2m2NjY6l6Oco6tB//+MeJUR49etTpdG7durW8vGySAT25LHILgqBSqSDl+L7/7NmzvJ4E6moKbBxPnTp16dIlS3ckDMPV1dXjx48fPHjwypUrDx486Ha73W73r/7qrw4cOACn7CDm5+f37t27d+/eagxoCCYmJuBvheHQoUNVgkqlAhoqlUo1KyqVyvj4+O7duxXlioxFw8TEBByEunv37mq1+vnPf34ihiXWoUOHQACFDxw48NJLL509e5aXS16UAxgbGysWixMTE2fOnDnBMDs7eyYGv7tnz55Dhw7NzMzMzMycOHECfmcJzhgwQzA2NrZ3794TJ05wgTNnzqASahICQg4ePFgsFg8dOvTqq69yIzEhfgvx5S9/Ga/37t07NjbW6XSG0NUOw7BarRaLxT/4gz94+eWX9+3bd/DgwQMHDhzU4c///M954J/92Z/t3bsXBhX279+/b9++V155RRvdhP379x88eBByDSH79u0DS9Ji//79pVLpj/7ojxQlWssRR44cOXLkCFwfPnwYKmSr1VJ8pa3kCRSkUE61WtVKiHhgLZVe+5PWbDZLpdIQBtaCIIBGRBh6US6r0RIBmpVeTqpjPSMDo5gczqPA/oDEhMIwbDQapVIJJ3heeeUVWBOFvaVutwvn6MD3KGkvIUyDK1euwGfheXdBG6LYKePx9FKp9ODBA9NLrmKeEi7jD23B8AhN3eIlahL83r9/f2RkxPSBSFooiQ+C5dEIwxC2dtlXJFJVVNuxY8cEG2V1iYjCQgjP89555x2X1LUIwxA2+dk3h1miKyHQjeh0OplNojCVDl7A3GfmTlW324WhNqwq2fTcuHHDdIK4O6A0b968KZMGFbCl0vofZxMRFjcm4jnlWLaCbmvKCYLAktB2pBwaSKNDdQHuEebR5zAeZysUCp7n7dq1C/a7AT3IXspxtJ8qx+vr16+jzszwfb9QKDx48CBDXPQ/UE7mR1dK+fjx4+FQDrwNOFKOElehnFSICOUsLCxkUwKApzsb5XAMh3IA8HZSKpUSX0osgOxr3/94PVHu4sW9e/eAclzMiNg7KDYI5XLZZXWrBdVqFdpqnhFTo2SHE+Uo+3Jc9EZJlMMXSYfDncvhyfVvALTj/Zw+oIW2dmKgchdqvH2OB3Jar9eVU1Wq1Sp0O2gvJ7PZ0MsJyTI5U62wVJ4gCDjlWKqcVkm1WjVRjmPVXV9fB/+4RNfqMZUXBVBOoVB4/PhxoqkYiAJIOXarLNYKITzPe/vtt02edAkJgqBUKgm3RVyJAMpRBn4zw15G2CFGy00lZQG8JFHKsSgx1Yp79+65vCSZyjGKKcfzvDt37qTNAgX4fyCU02w2tRJiWJQzBAz0YAIYxBsC5Vi8HUURdmJMlAMyQkc5hUKh0WiE8Y6EDL0cCujlUMpJzCPmBeW1lMOj2GsgbUcUd3EHak3NQDlaMUsSklCOtpejTYKqOnHihBBCmzsXyF7KsSvR2g/wfd++yisVhkk5Mn47wf6xuzNRA4wrKpQTkaKPSMGZbmkpR5G0WBKRXs6dO3fs5WWHhXJcjOFwOklaWSSdmJhMamKgUm61Xk6f6HQ6lHJyXLGGXqV/uc8pcJBNu9pExJ+1HmEolUqPHz/OPLBGQcej7fVBW3/gAl6ZM1AOldRSjnt0OXTKefLkiUt+5Q7lpERiRjaFchQ9ERlYU4x3tCQyU4697DgGRTlSyjfeeEMrIdwoR+tQLbrdbqvVgmzQbgded2LwNl0J2djYgMCODo8ePdJqUBJSNMM6NypD9cDXPzGQit2/f5+uWMt3kbSL/zk+/PDDo0ePnjx5Eifqnz17FobhtWvXzpw5c+TIkX379v3O7/zO6OgoHOQFrPOXf/mXU1NTxWKxyja3pwKlHJdMcUgpgyAoFov9U87Y2BilnEQoablQDv/LJe1O6Ha7Y2NjqXo5FP1TzsbGhpZytJk1wff9HNeY5U45svcJone73S5QDpXnJWsv7lwo5wc/+EG5XFYcaIqi1SB1lJNYdhzgf6U1s7glESmWDyjpueTcBCgV7ay+ZexL6RUFBEgGpo+nYTiNYhrZw7tUWIkOySnhmffl0IpiFzMVdmISvu/XarW1tTUaGIZhp9NpNpu1Wg0mTmGoDTZd50s5diNNVUgZWNPmXXECdwhMgVJLlFiJtXd9fR0comTErseeX61P4MwkpByX/KIkUk42yLiRWlhY0CakDeFZ62fFGgc0edrJrQxIdCPv5diLICLlCL8mynEvhSiKVldXoV8eGSqbiz0Zejn8Lvi/0ftF2lQ5UvCcchqNhlZCSzk8VRqSmDHoevMdSY1GAzbBNXp3q+HOOBPsd0171rT73ZS9afV6HQ6z4rvVKGApNjTZw6QcemFSK+NVap7nwbQcbQvo+kgYiJucnITTDLcy5WijmBKyU44paWrbkydPYFEfH+vQPgKWQuEZoTBRjiW/KKlQjt23Wm0w4WyhHNlb37R5zJFywjCEMd7B9XKULCiUw4V5cStqB0o5LtpQMkfK4a1ZqkxRZJzLcYEpV7jZwvO88fHxUgzYaD02NublBDh4Bq/x1yQMF+Pj4y7KQYyqBb7Zar0celcIcffuXWk95AYAbfSWpRxTLJ5lAKUcRV7rTJ7K06dPsZdjMsBkjym/Wp94nkdXrHEjTXmMzJRjci+3NpFyXLK2xSnHXtbaXo7daXJYlOOoCi3JMLDG71oG1rLhOeWEhlPQwzCcmpqi1igZixweWgVQKs1ms91uw7cvXeD7vrtwLuAjeBa0220YWPM8L1/K0dYni7ft2oBRarWacsI0FYDFbO4zMVpkm8vBv3ARBEGhUFhdXdVmR+sE7hOgHNH7HQfFpaZ6C4Ewl2M6RtP+RDhmX8Ytvn2RtBKFhpw4cSIIAlPF4E8ol0TK0frE4iUKpByXjCcCKCfbxiwOU8bxQrt8gFcSHhd9AtmnS28SPc8di5RDlaRSBbHK5TJsBaWWSF3jwEMA4H9OOY7+4UieyzFRjmOetVC2ggZkUsQ+lxMY5mCCIOARAzb3w+d7XKaOKAPhtTKXI+JF0rCTv1qtKqOfdpjqgcnhPNAir9zCTgzs04SDjpQUG43GZ4dy7PUWAl0ox1GhSQNcOFIOrQYo0A/lgMwO5Zgox+I3xSd5UQ5Utqj3iUirZ3CUkxnPKWf//v1aiUFQDvZyYN0X5wCFCWAVmSAr0/hqNA5FBuMiZ9BrpI379++L3hUHuEqNhtNA1DMxMYEDa6m2cJvqgcnhPNAizxV2u93Hjx+vrq52u91/+7d/W11dpcTw7NkzOBSnUqn0Tzn021YWKNbiRRAExWIxA+VQMYVytHFN7oIQO+VwhTxHjvA8b3R0tB/K4ZbY80vFcqGcIAjGxsa2HeWAgDvlcJ3wt91u50I54+Pjw+zlmAD+58sHMmQNkDyXE4bh5OQkzYZityl5XtL4F1esLS8vN5tN2p9otVoweobnm0JnCNp0PO50ZWUFVhnwHg+F7/t4OCuG0NUKy8vLoAGPUIWlCtibwcULuEIBxvfq5JhbsLDT6cAOylx6OdTJilepwy0CkaFWKeHLy8sw9Iz1u9vtQi+nz7mc27dv0wNvTPZQw3jNEUKUSqXV1dXEWLx+ImA82kQ5stdjvOpKKWEuh1OOvZg47K6wD6wpJnFrkXK4pCPyohzP84KcVqzlMpcTsQfHlJH+KQeyn5lyAJYVa3arqIBlLifSVXWt0xIpJ9EeBdkpJxGKiTQEeznz8/PwRoDtPnxIPAgCWAYGk9jQmYBlvp7nNRqNVqsFLbvl/LT79+9Xq1Vcz1ar1VZWVprNJvRCgC2mpqaAWhqNRrlcBhbBqQ6gnIMHDyJFQeq+71cqFVwsB1/ebLfbeHBZXpSTC7RpUYAHpJTgt88a5SRWXbn1KIemguFaykmFF5hyLKCSfMWaKTq/C38HTTmJkKRWQC8nYo+GNiPcaXJwvRxpXiQ9IMrxPK/ZbC4vL+NJz0KIarU6OTmJPR5crLyyskID6/X6xYsXkai0CIJgfn4eOzfQQ1paWoJUIDwIgkuXLuGSBCAw0AncAzKnT5/GbhaEB0EwNTWFaQGl4ekD245yEMDo9+/fh4G1HcqRO5TTa7bWRQq2I+XghXaRtCmWIgB/dyjHjueUUygUhG4fWRiGhw8fVpKRrN6b8qwF9nLu3r0LvRnoOpTL5enpaZyoBw6o1+uLi4t09r5arU5NTSUeRD03Nxf07tZcXFwEOoHRvCAITp06hQN32LOBHhUQYRAE586dw+G4IAhA5uTJk6ABJOFWjpSj3OUe5rdMNUCblhaQhTNnzgDlpJ38VwK1lKOVNOmUjHJcPMBNopSjdRF3lxIClOORfelaD5h87p5xWPRon7owpaWdy4lY1bLk3b4V1DEX0Oaa1kOmRb5zOQhTubv3crSQ8RFNea1YM3nbUVW1Ws1MOQBoCrRbQdNmDfD8q6CFQoEvd4kMlKNYbMqwAixIhXIajQaMZUF3AbsO2OhDP4P2Vw4fPkxn+IVuGRvO9OBxavPz80A5MIYGnSokM6AckAT+gyTgI2AwpIZzPK+99hru+4HpnAyU4+I0u1iqwo5Y68MhhFhbW4NvfuRFOZZt//acyvgBhgPYXXJHVeE1zLFR8kvrInhALJTDNfNb9rgAC+Uk5nd2dlZLOe4AyoEv0SV6yYRBUE5eixEQphxBRz/V2UiKEqixdAuXkkSihiiKHjx4YN937KJExpTjqEHrKN7LibKSDeB5L+fp06daCRhYk72Uo/iRm67NgIlygiCYnp4+evRop9M5c+ZMp9Npt9uVSuXo0aNzc3MXL178whe+gATTarUmJia++tWvXrx4UVnYppzY9tWvfpWGtNvtb3zjG0A58/Pzt27dunDhwtTUFF1v1m6379+/v7GxsbCwMDExEQRBu92enZ3tdDrz8/OtVuvy5cutVisIgrNnz969e3dxcfHo0aOvv/46DrtloxxpaLVNFUV7y1IPqH5TKohPP/00l0XSt2/fHh8fF/19wSUIgmKxaP/mR2KOarVasVjs55srw6SckZGRbC/1f/3Xf91n0wwDa2+++WZmDd1uF5ZstVqt/ikHvqNRLBb/4z/+o09VHLwdk1JOTEzgcXzZ0G63x8bGKpUKfHXX3RhaQ374wx+OjY25rPY0tQyASqWyvLzsbjzH3NxcsVicm5uzp+uO55RTq9W0Ev1Qjukx45SDXQ0YWIMpHOy4XLhwAYbCcK4euhQwHAfR+aFnt27dgnkXGP6q1Wp3794F5dhfgUEzHB+DBXIwhwQ9Ht/3X3vtNaoEdJ48eRJH5GB6iVIOfC/dvVxNNSaxdKmMRVIyyjGlJcmKNc/zoI9i/3CnEh0l79y5g2P6dDmcu1uklEKIQqFw+/ZtnqKSNNeMIVAujs0x1x+GIZyx1s/AmiOgowyUk7bhO378eJ+fzAjDsFQqvfHGG6miICT5Kijs5KC3AFCXTKq4ZtiVbJnMc4F766R8WgmNt9dbWr3hezlQVeDZUbKm3QmnaFtdXeWzj/bcafWUy2V6SKsLlPKq1Wr044SYotS9YFlaKoTTVlBOOS6Q5nYNut6wYq1cLuPAFA55waIyJIZKpQKNOFSIer1+69YtGNfCWRmlxwMhuPwM5m+EELBiDbQJIZaWloBpMFG6XA26RJA63gWeAzFIC3S2Wi1o2tB492J2dKnWydkKxV5AMLCGlKOVwSaGNjeSVNkbN2545PvWktXmRMCIaKFQuHHjBm+8LPYrzUQi5SQahpRjEeOFkhZhGALl0NlyF6eBwLFjx2A4S4ni7nPo5Zw5c4aH01JG94Y6IOVo71LbTLfoX5hLyJ1yTIXV5ymiQDmO86AWAZjLwSUYXNISl7oRKEcb3cX5YUz59d6PnJrc6NIEPZ/LGSblYKXEqRFhOFdGCceOBQ2Hronv+7C3BvfuIPcgf2AIT0U5TUdhL5M9dA4J9+W8AJQDBQQj8tQheI2jkRbMz8/Di0WipAlQpqVS6dy5c4nC/PAkCIG+KYxHWxLiZynRkOXl5f5HGu0VQBLKmZiYUE6MVf4q58xCldu9ezd9N6JRaET+l6JUKu3evbtqOMeWSk5MTPDoeN4gDC9rBdBC0y38RW19Lh/gjwB/ggBQVarxJgrINZzti07QngsMzgGfwKGRIDAxMaE9UJhGR+UoUI33h2hLAQSmp6e5QlrikJf9+/db9CQCDpiH1szkwyhbL8f3fa1EjpRD53IKhQI2RiYaCHRHztC/OMKGjsbHCUa6OEPQdlObLm1MuYDJVMG2gtZ1Hz93eSRSgWpwUSXTUE4hRrFYhMNMSwYUCoVdu3Zpw+FQagq7KkclaWHRMDY2lhgdPmMzOMpB1Ot1enosWk4D6Xm11JPaI3GVA23Hx8eV6NpzbO0H4CoaFIO1GiyxaCDIKCaVy+X+P15AnxfTQ4T+h1xoaxE84Ka7xWKRxqVuUQrRBBCjddIllqIhQywLYC6DNyPchy5NlutWUF5m/DcRWK7QosHQFmWXxJadBybCQhIZtCG0zFQjczkulGNykcWl0swuyqOlFePKtYbB6za+Y5ZKJXwzLevgeR7QkvYWfXuF5X8WVQguQF+EQY/pLn+bhr809QwY3Gf3qOdxIUzQO3mpvC3hX8/zqtVq0Ns1x9cgbfg2Atify9feKEzPThiG/GGHfYQ+QRD3jHGMHa7x8BR3CLeGqN1uu+vM6/hjtA3ftOxtu+kuxW8op9vtfulLX3ry5AmX6Ha7n//856X1NcEOJa6MjyE6fPjwl7/85RMxZmZmZmZmvvSlL83MzJwgOHbs2NTU1LFjx+CaAgUUebiYnJw80YupqSlFEvFqjMnJyVdffRUCjx8/fvz4cbiriH3hC194lWHPnj19Uk4/cNEp3ShHxiP13W53Y2PjH//xH0ul0vLyMgzvwlIcOuC7sbFx9OjRhYUF/BuSRQfdPmDS8+mnn1IZFFMiZkguDEOqnN5K16r1jTAMDx8+XCwWl5aWPv30U5PMkSNHzp492827Uc4d4EYXyWfPnlGHDyJr2mfHgj/+4z/u6hbR3L171/O8PXv2PH78mN6NrKMIWntSyQNy94xp6kg6LFCy3KV4PrA2MjKiHVuTUk5MTMje1+dUoBZjxmAQE7+Xg504GBxQOrY4YsD7qtruJw3hF2nh+AkfHA2AF+rhUI5SIRJ18qqTWAXDMJyenobPMPNHDsVmZ2dTTV8NB4kZ3ESFdlVhGML4MxwnampcongSSAl0KVyZptpo9WtroGSvmFsHyoNgyohiPMzDc21hGMJ8CZ9gdzTDJXVeRlqFyoVjcu4W2uEeq2f5QKj7ZE4Yhkg52ayJdAQOD8mpU6eU0Q+6PAzHTOgoijLWYQlUVppxMUUeR2wUnRBCldAhGu2QUTXrVtAMjk2lShLKMVVQpZjCMHzllVdgRsGyBhcpp//eAM9dorB0y1FkfTLTJm3R378wNGcjIyPwXXDLpiIhRBhvU3ex37FSaasZveWazy0JxV20FvFcmyhHCOF5Hn6YEQYAw95tpNqkHYtA9rra4nZTqVkyZVfobqrJeyY4zeVwyrFr15alNpPz8/N8rQWHdm2MsjaD/lVkuCS/i2s/YLEQj6ssDqFrirQLUVzG/dOWltbVqSoHLT7p1kQKIXbt2gXPlYVHc6QczJGjmOKKRGF35WmRSq1dOAxDz/NGYty4ccMUt0rWqije4J7hf02VSlvNTGq3HfhDEZlbZxPlwF4C6IkAvaHFAAAan0lEQVQWCgV4IeOUE6V5TukocUhWk3d7h7IxnF67Z58Kh/HmIbuXtB5LDOR4TjlCd8BalF8vh8bFvxsbG8psIf10jXLRP2A2NYzPv9GCmwSA0hXk+BwLQoftY9k8aXesizz/tQO2hULDVzYv2XrjjTcGRzlKZpVwflcrz52QzZj+xVyEoTlDypmdndWKQWtYi3fqKd7QVhJuhqmeaH1r0rMVkGiV4g28sOdaSzndbrdardIyglLQUk6iS7Wgj1JiY5LLc4eUpk1OW1VM3jOh54w1YTjWs1qtyjSUw01UQvp3zabDZeJuyJRjUSh7673yawJUvmq1ig8VvspxIOX0iVRZcHSOTKp4ka714XHtSiTzZyphBdTtIyMjhw4dMknWajWt55UiTnSXoyflgJ/ifjSb4lInSF3l19YoqqFSqSjC6+vrMIuDZQRzE1TM4sNtDdOcrktder584HOf+9zKygqXyIVyaPgLWQZ2RLomLOpjPE3raos22dtuaiW1lrdarWKxODIyMjo6Cs+V6VOhuVCOxSRTCJfn+TW5i//lHtP6UGuDRa02pxaBjz/+GNyO+N3f/d2VlRWtWmUlWGJBZwB3LHdFXhiEWm0xJfqHaqCUA/iXf/kXWkCjo6Ojo6Pf+c53cjd+QODDdGnjpo0FXh2h/tX6vR/KURJLlEzU3H+KirwlhN5ysdbua21Euw2pXJ0oSXWasqkYHMab4UdHR+mYtXaayoVyLL7SWqW9K81V0cUV9rzbQ7SOSnSjyRUWgTt37uA+XOxfKhM2cA2rDOgt/ts/eHZ4ZvPCINT2k3H45QNrx44dw6KBxTWFQuGNN96I4mcn91zki+FTDiCZcmTvIum0BYawCNhTj6xNiSLAxSR7vE0WmkyV5AFTLlxUSfYU8ey7O8TkAff8KhlRrhFhGAZBgNuq6e7rWq3GxwzfeOMN+zpRk4tc8ssz4i5md4gpaaWwlGtT6iYB7gGeEMWlS5fQ29io0Yk0GhHWTDq6qE842r/VELGar2QqMb+ccnbv3k1fCOAB2bdvHzbHW591EI77e3LJ0XPKqdVq2rkcmQflZIg7HGidwmWUi1SqJGttlSj9ZyGtsDYKNx5OVMSdSXDgEjxdvPJlppwc85iLP6kqmYZyaFyTYaY6oODYsWOlUgkW3wPZlMvlEvlsDI0IqytzzLs9ay72bzUkZsp+S0oJ48lY7eFtDMgeltXAORHj4+PINzuUo8Xz5QOOW0H7rKBbDVqncBnlIpUquT0pB0bVarVaEJ/uA0v14NhsfsziDuXQuCbDTHVAAXyoMAxDWLfWaDTW1tbq9To9XRH1wCLJHPNuz5qL/VsNiZmy3wrDELgEiaTRaJw7dw6eCFgxCNfz8/PwWrBDOSYkf4haSpl2LsdSQbcCZO9Dy2GRjwzkYdFm0Z+Lc9KWiCmKYiQMrGmHCIQQ6+vrivz2opzEgrAIJCbBBbgHlFsK8NtceAAu/A3ij35anDw02C3ZUnDJiDYc6z8MrOGDALsp4DqIPz0sScHJnYE1A54PrEG11vodVmtEfVCONLR0yi2tABfLJhCxB97kFFNetFESBXiK9vzaBbTyWjMiXXkparX55cavr6/bvyschuGbb75pohz3/Nqz6S6WCO407iiTgCmJRIGot7yktcIAgHLsH16DAyVNFjo6xA6tY5W8bBGY7LfnzpQ1hXJoIG2m+5mK3woY5gF9zylHe6ZnlBPluEcZAmRvg8thj5sonFZnP0irXzo33BSrq6twnofJY2EYXrx40UI5/WfTUSybJI9oEUhMwiJAfSIzUQ6PAkdpQKvBDcjL/1yP1kWbDpP99tyZsqBQDm2a4ezRjY2NI0eOzM/Py+E23PliEyhHWo/1zDywxqujvR5kU06TMN2yW6XAFD1RTJobkcz5UpJOzILJePrXbg9VBRePHz9uNBq4rVqbwYWFhXq9bt8gRtXmkn17Zu0CWsPsIfZUXMIV30bW2iLZwFqkq43wQUKTf9K62h1ayzcd1DZ3J5i08V4OH2TGuZxt2sWRW5Bycj/wxiKWQTlNIpVaxReJVklrJc7sHBe4uE5rgNS1m452pqpJlrkcRaFTht1yx8XsEd1T58klGuBS/ag9kjxTWo9JKYMg4BuhFFV252RzuCWP2uxsHWjtdMmUFtqBNQXwqWJpPaxsB4jnlAPthbY8eC9HK+lYqDSQi6VSy5PQajOpVXyhFTDp0Rpvz5Eld/aMW+xXUjcZoGTBRSEV7na7uDzXhFSUk7n+mEw1BSoR3dPVVqds5WsqJvw1eUy6UQ6fyzGl3j+0BbqloLXTJVNaYMdFe8aasrhm+/Zyhonkk6TlTi9nC/RytJCGtswkE5FmzlE/4MGDB/a5HLnTy9k8yoHDy03mZXO4JY/a7GwdaO1MzJEJlHIURsEODXyCU+70ctyQjnJSVUd7AUd5PwxR7zNs0S/ZQ2uyXNEjex82rbySQXt+3U21J8RN1ebUJKaVp7Hu37/PKUcxA+ZydHXM1ssxed5iniUKv6UNsXhAicg9HJmrgZKpfoB6LJSDCcHHNXCmbaDgFm4d8CIwZYFnxwSkGX7Gmoy/Go5bcXd6OS54PrD20ksvtdttbQkNiHLsYonJZTZDGh6YzCkqSaM2/jetqYkJ0RBtElqBRP8o+OlPf3rjxg37E5WKcvrxgCWKizbH4tYWJd5yj5sZEaMcJY8oubq6evv27QyezACL9+wZ6ccJ7sKOWXBXi0NnBw4ckIxUYMnA6dOn5+fnd7o4jnhOOZ7nhbqvgkoyl+NSHd1LPXdIt9E/2fv0IvKyAbVxd2uFMyfE/yZm3FEs6vUS/RC9CRbK0Tqch9i9odw1OdNdm8UD3FR7Lkyp9w+FcrQZpGul7JnqHwPKpgmpUnQxPm0WkHKUA2+kYV9OKuWfTTgNrGGn0r0uRikbQVonsoEmnTmiRYN7piJD5ab6Lak4JmHPjqNyrTA3/vHjx3AEn6UmLSws4IxCP0iV08jcgii30vrQ5D33tBLFXGCnHAiBj9JmyGYqhyjKHV3RJ1JpsxRc9P/bu37XyI0vruKaJUXAheAKFwE1wamyLgImlUxISIwT1rjImQuEU+HCdmN0SbUOhGCluwsBw17gDEfATQRXHduZdRGItxLc/gvaJo2aXDPzLT7s2/GMNBr9stf71adYtDNv3vu8N6N5+jm6OfhLAIfdYl6hlBPPvtzYphwT1JZyxL40HcgZg6N023LNK3LO1Vw9LCWM6qtMyIjMr6+vcx8fqJhyUlmpoSsUzFQTuSUmYrm+FG2SBTXlSEFgjGH1T9F07VCVa3yvxfES2ky8KE1PTTkEenyjTTkmmF9Yw9tMqf1kmHJSh6ba5bljohwMGdbY0FAzoQkTWUb1VeZdCYxGI9d1kXJ4xk77ww8/4CZ29R0vy8SCIMvBrEv5VQIivgrKM1KO53lNPz5A5lKHh4h6+66QNhMvStMTl4imQox2rPNtSKwo/3JsFxnzlGPbtn71AYLRIM3uck1JFeWkwVwJM7v3k2rCpIkUa6mE1+EvGZKMavhk2dVQTZJEf4rD6riwpkZMrNLU1gi9ldvhIGIwGNi2LT6xJnYfm93LaXolack0u8UeKQq9F+U4x7PPVDIl5TDhQ+BZxxapwTTkvJhBroJ5yjk8PByPx6kOqymHFb84Tm2lEVAFqgbViqZVOQKpvuSaZspwL01AT8aQhkaVSBVVSZJcXV3pH8g5OztzHOeLL77Y3t7+LgP7+/v7+/vY3lVAYur2o0ePpCZqSa/Xkxo+evRItSJie3t7d3f3m2++2Zphd3cXv7n49ttvHz9+/PjxY6l8SwD9lcolW1Lh7u7u119/vbOzs7W1tb6+vrq6enp6KkVb7K/r62vxOzpNQBqx7H6mnHKEcSqjfn/9v//+E2UYY0mSiIVZlAoRXtg4l4bRvZy61lgr0TBXbQlDrE05BilHLMSroPoFCPCxA7wWVxGRAPw1kcdHfcQmKJF0SiWSOWqYWqUHEagR4sL46uAB8F5OQ7uYOAzU8aMZD3eFXC+Kgq6eRTefEaAjMPFVXBNKepL1kl9AzFOO7/tR9vdyUm/zFIqXGDixUCxR5RuFZCWViSpPsTPRn+oslbPiyS9Vkt2cDjRqmVnKkRSapJx6oSGWJXwLrJqG5spM1gZjzPM8ejfecBQVBRnVj5lFQ3W29PTz+vq69CQ0pRws62lOo0oXLAHmF9a63a7mXk65lENmpBJVpoTyQjRyiWmYsOKJoZy8iUKmzRmGJXpi4vhASRzHQRDc2gM5Gj4aeROxOtjdGaQ+pXKcXIoytSNVuZ4qqyPgFTUUHUgq6JEBpByxqvRZjkmoayG/mJif5biuq085rPiAJjNSCW2nlvC6J2tVmxiCVG4SQ1WPCUNVfxaxLG0qH4mSRlhTojenBqfiICuELGK58mq5iVhRblWaV0RqQKTthpCqX0+V1RGu6v1Vsd9zUw6e3YhmK0mbMNFEWN+qnAuLhnnKwefWU2PRUMrJKikHlj19p5aYM9FoNqRUF4ihnmduiZ6YOD6oJJx9lLoKSjteCPr+KkpG1aZ3LTV6hqHQqJJoiL805TUX4VTl+o6m3yqoqMGQrQZiyqEgUyFdZ8vVbxLehlxYNFiSP6nh+Oqrr8TpRiOsCaXeSiGkalM39Hw0TJiy2xuaUJ1NFcjVoPciS17qoCwCPDuAqZ3FGPv777+r38vhZvtMajxL6JS6oxyZXD23gFyjvV5vY2ND/CpoagxNhlPuMCvUO0sAyiv0XppYxRhLkuTo6Ojo6IgZxEcT2ywsX8DnKafX62VdWKuecnIlC4GlzZiGDU2aiAKivEnDJvzNtcjTEgYveJajaqC/b9++DYIgyns1Rw9eKuXoW2lquTZVGJLJ1XMLyDUq3suhJmq3VhhlbcqZpxzp8QFUae52SwrNY5ir6p6iZMrhZofhUpO6wKqlHLVEKldl1PJUu4ZB1xATZUyipwrr21Ktnm0hdwyRazHrryET85iUhqhfXGKrumYV5dRqhkoVpGqu2+NFBKWcjY2NrEMuPHPPilxc0aMuPYuJecrBYWyqn5ubm8zg5EaqZTdnt9SBS000AnpDEjENPQ0BlYbqiLShV6WH6q9YniqfKqZqyDIk+WJOlTAYDDzPww0/xlgYhp7n4a14PM92cHCAWXIwGPR6Pc/zRqNRHMe+73ue5/s+ak9OTnzfD8OQc45aLPzOGAuCAJKMsSiK0BDH7zBHSkCGjjpBbDQaSTzfvn2L7XD2BS1Vied519fXqALtOI6xjCk1jKKI3jBnjIEYvhcQhiEeWAqCIEkSbNOK2icnJyJP3/cPDw9RBWdhDhETX2Lf29ujdVRRi4bEE+Z830fDsPlXQU0G6lKCHpKmF6TUlW+Ydno0t6XvguWA0aug5VJOcyhtSG0lxiJLP1NSjkYVNxgcGo9EmVxiWY7oDZkwVEHTIma3P//803VdmiIx94kpx3Xd4XBIUyTVHh4eYirnnMdx3Ov1njx5AhNBEGC+xvo6UIKshpkdEzRM7O3tiYmk1+sNh0POuZhyoB+n75A8ODgQlaD2+vqazRIJPJJSDhrSqjPIFpRyYG4wGCRJgm1KTnBWTDlPnz6leFLKISUwEUURpUby6OTkhJSQCcpbOFjMGhvVwdqUk5Fy0H3ibc6sAOph0gXLgTblzJGln7UpxwBFv08l0pAOG1WGTX/8ShPDVAKGzynl6skVIxOpDVUCqWOjOlibcmZPrNFTauKroOKynlkB1CM3/ksDo3s5n3/+eZIkJUdr88jyLUuYK7tQLkpzqAtZ5koQuAW21WHu1O3Ef5HBbx5JmIxSzejVNLyncU4EiIUs7wgAXyZEgvnkk08uLy+pRNS2s7Ozs7NDhqi54RRxV1PKXeHGgje43KF6vrm5mXUz0zxASxzEFrVjufe6XLSfNI4FNKo/Vwbb6+vrdJWVsg4TTs3FQoI+hWQlm+Ue+UYX1tQ3b1u0aBrLvePp0aacJhAXB7WlezmpKUcqBHKzSJtyMp3f2tpaspSj79eiXX6Phsjiz2W8+GVPDZZs3N5fiJOyNKFLJwqSjCYNSGJMSSoSAQ03TRUWdxDv5UiGUr8KapJF9Mkmd1quHWqPNIF5ysGKJqnubW1tYVH6KG8ZeRWDwUBd0H4wg7gtQpWsiCAIgiDIFciFP4Na1e/3/VpBjz+p5QcHByIHcw2eFnoBUUmuKhMreCpsb2/PsGHvJsRC6KFtUSCrrbRRC/BWYHUlX375ZSrtWjRjg0okpBaiYWq5pomI7gxq1cbGhiRJ8rRBMia2NNY1UMVQ4jhOt9u1bVv9igT+QkZMcoZJQi+jTzmN5p5GYfT4wPb2tuM4tm0juLeA5gw1ofkWwpJqAjtGaqFUlbWbpWpeW1uTmq+trYk7pCHntbW1LM6SklRWWTxTvRBp3w5oEmzOhDjzps7UkqReHrWgrZEpDTEmdSmUSrLSZK6eXq8nxio1H5OAWtjr9Z48eaKeOQEQo7/muUEvZphyyiWeOzz7n6ec3377bTKZpPqTJMl0Op1MJvjFxn0BHiMRt/EXv//++y/9FTcWCuiqcg1rMf3u3TtzYZGtWpLcfGooSZJ3796lDs1UtYUg0i6t5P8TJWYxsW2V5g3BfAwUHTNxHP/zzz/0t1AyqCvlLGDAs5B/L6dFixYt7i+ankO73a5t23HGWvsklsUni/MCeloL5ikHVypL+NmiRYsWC4um51Dbti3LSk05oph5Fc9IORr52/HUHBpW+fdyWrRo0eL+ounplVKOxnQusdQqE19uzc1C0NC+kXK63a5hL7Zo0aLFvUDT06s/W2BQYzeXnmF5077UBQ3tecoZDAbthbUWLVosGe58njWhV7R8waGhnf9V0BYtWrS4v2h6eu33+/v7+yz7BoY5Q5Pypt2pC1m+zFOO53ntvZwWLVosGZqeW3Evh2XcVinKMLXq9p2qjizO7eMDLVq0WGY0PbfSq6CqxSw+GoZZ/G/ZqVqQ6kuBlIPlZ7L+il8UjeM4CILpdErb+PYUTAZBQEtWj0ajIAjoHlIURVdXV6ISqE2SBErIyosXLySdb968QRWtbcM5p5VsUPXmzRtRCWqhJAxDSOJ9WFpLJo7jq6srUSc1FLfxl5TAwdFohGVLYCKKItFZSMJfUclkMgmCwHEc3/fh3eHhIfGE2PPnz6nXsH4M53w8HotRiuN4d3cXTBhjYDIajaCk2+16nheG4XQ6xfvYxO3p06dY3oPPvqIGYqTEcZzJZOL7vm3btm2j9q+//vJ933EcKAmCgEYUupL0DGbfcIOJn376iUZIFEWu63766afkrG3bjuOMx2MwsW0bt2qHw6Ft267rUjDpL2PMdV3P887OzjjnrutizQLf96fTKZQQT8/zRGfx9/z8nM2+g9Lr9RhjMEfORlGkKjk+PoYSx3Fs2/Z9HxFDQ3TE999/j2hDieu6q6urohLbtj3PS5LEcRyS5Jx/9NFHpGQwGNi2fXR0hCrXdbEyCGMM3sE65/zZs2eIGI3V1dVV6k28UPLy5UtEzHEcz/PiOL64uIASxDOOY9u2iSf1+9XVFeIARFF0dnaGbfQ7JKmPUPXLL7+kOktKOOfb29uowj6FKix3RuaCIHj9+jW28dxTHMerq6ukBKH47LPPMK46nQ6ELy8vaRt9dHx83Ol0/NnnaEEGK6qRs8PhkCJm2zZj7OXLl+QsMz7FSa3Sz9S5qhYWqZxv3MvhnHe7XUQffdbpdDqdzsXFBWPMsizLsjqdThRFP//8M/5iWAwGA8uyHMfBEOl0OpZl7e/vY3+ghkmSoIqeKXz48KFlWRgxQRBYlrWysgI+juNAEmnAmgFjS1TieZ5lWR988AEpASaTCc55LcvCPgBznU6Hcx5FkehCr9fDX0w3pCQMQ3IWuy6cffDgAXh2u13UDodDchaS/X4ff7EPwHeYwz5gWdavv/4ahiGZi6Lo/Pyc/jLGYI6UYPvhw4eSs4PB4NmzZxQxdAQ5SxHDtEix7Xa7w+FQdJZz/t5775ESePfxxx+LEbMs6/Xr1xQxzCkbGxuiEkSecgyqQIYihlB8+OGHpIQiL0bMsqyLiwuKGJSQs+gFijxjDOPBmo1AUtLtdqfTKTGBCYQCA546ot/vU8Qsy4rjmMxhukHkO50ORiCsb25uikqQA2gEqs6SJCImDp7xeEzWwRNDVxyrKysr2LFJcjqdkrMYgYeHhxQxijx2N+rNfr8vKgmCgAY8JBljUIudiAbP+fm5OHTDMDw+PiYltGNKvbm1tSXubq7rins3PhCwsrJCLpBkHMeiOc/zaOhi5qFhpg5dqrIs6/LykrbRRxi66Fnk1wcPHiDlkPWzszNx/DPGaO+m1W6kTKBPEprkkdVQo21hoXKWVx/wfb/T6WAfCIIAKWc8HjPGkI0cx2GMnZ+f40gBozCKovfff58OpjzP63Q6+DAwDthxmElK6MD/xx9/xOEnGtKhDZRgQaQoipIkwYKSNDHt7e3hwIfPjpp///13NHRdF8I4N8I2Bv0ff/zhCV/tRRWcDcMQf8fjMeIAxHE8nU5pm3Mex7Hv+/1+H+YGgwFqRSXQORwO8ZfNznJICSLj+z6d5ZCS8XgsKiGebHY25gtfNkIV9rGrqyvRWfCUlKBTiCcdjZISzvmrV68kJXRSRTwZY5ISchYOwlk6oYSzlIHIWWoo8RSVoCslJRQlKAFPf/YFaI2zohL6Kzrr+z7OdEVncVZHShA0UgKer169EnXSGYnYfc+fP5eUnJ6ekhKsnCsqIQdPT09JCRyUxoCokwKIIUE64SCfAQ+p4moE3gQnZxE08fIDzo+hBLVoCAdBZjKZYJFc4kkXLfjsi1wogbPEbTBbNRiSl5eX4rWQMAwpSmiFyGPHFK+vvHjxQnQQbMEEKUSDXAE2W0DaRDJ1tjWp0gjktlpAcAXtgjctWrRYctz5bKufiHOb8yXKOm3KadGixZLjzqdazRTMlQcKUsX0zRcZEts25bRo0WLJcbdTrWb+5dkJJsuFBfGuEES2bcpp0aLFkuNu59msyZdnJxK1RCN8Vw6aQ6TappwWLVosP+5wnk2deaVa88IsVbfmVwmIPP8HH/EhXZnl31kAAAAASUVORK5CYII=" alt="" />

内存区中第一页的链表元素,用于将内存区维持在链表中

伙伴之间(指单页一组、两页一组、4页一组中的每个内存块)不必是彼此连接的,如果一个内存区在分配期间分解成两半,内核会自动将"未用"的一半加入到对应的链表中(加入大小对应的,对应阶的链表中)。如果在未来的某个时刻,由于内存释放等缘故,两个内存区都处于空闲状态,可通过其地址判断其是否为伙伴,管理成本十分低廉,是伙伴系统的一个主要优点
基于伙伴系统的内存管理专注于某个结点的某个内存域,例如DMA或高端内存域,但所有内存域和结点的伙伴系统都通过"备用分配列表"连接起来

aaarticlea/png;base64,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" alt="" />

在首选的内存域(或结点)无法满足内存分配请求时,首先尝试同一结点的另一个内存域(从廉价到昂贵),接下来再尝试另一个结点,直至满足请求
有关伙伴系统当前状态信息可以在/proc/buddyinfo中获得

Node , zone      DMA
Node , zone DMA32
//给出了各个内存域中每个分配阶中空闲项的数目,从左至右,阶依次升高

0x2: 避免碎片

1. 根据可移动性组织页

伙伴系统的性能非常高效,但在Linux内存管理方面,有一个长期存在的问题,在系统启动并长期运行后,物理内存会产生很多碎片

aaarticlea/png;base64,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" alt="" />

. 左侧的地址空间中散布着空闲页,尽管大约25%的物理内存仍然未分配,但最大的连续空闲页只有一页,这对用户空间程序没有问题,因为用户空间的内存是通过页表映射的,无论空闲页在物理内存中的分布如何,应用程序看到的内存都是"连续"的
. 右图给出的情形中,空闲页和使用页的数目与左图相同,但所有空闲页都位于一个连续内存中

但是对于内核来说,碎片是一个大问题,对于内核映射来说,由于(大多数)物理内存需要一致映射到地址空间的内核部分,那么在左图的场景中,无法映射比一页更大的内存区,尽管许多时候都分配的是比较小的内存,但也有时候需要分配多于一页的内存

需要明白的是,文件系统也有碎片,该领域的碎片问题主要通过碎片合并工具解决,它们分析文件系统,重新排序已分配存储块,从而建立较大的连续存储区。理论上,该方法对物理内存也是可能的,但由于许多物理内存页不能移动到任意位置,阻碍了该方法的实施
因此,内核的策略方法是"反碎片(anti-愤然哥们他提on)",即试图从最初开始尽可能防止碎片。在学习反碎片策略的工作原理,我们需要明白内核将已分配页划分为下面3种不同类型

. 不可移动页
在内存中有固定位置,不能移动到其他地方,核心内核分配的大多数内存属于该类别 . 可回收页
不能直接移动,但可以删除,其内容可以从某些源重新生成,例如映射自文件的数据属于该类别
kswapd守护进程会根据可回收页访问的频繁程度,周期性释放此类内存,这是一个复杂的过程,属于页面回收的范畴,简单来说内核会在可回收页占据了太多内存时进行回收
另外,在内存短缺(即分配失败)时也可以发起页面回收 . 可移动页
可以随意移动,属于用户空间应用程序的页属于该类别,它们是通过页表映射的,如果它们复制到新位置,页表项可以相应地更新,应用程序不会注意到任何区别

页的可移动性,依赖该页属于3种类别的哪一种,内核使用反碎片技术,即基于将具有相同可移动性的页分组的思想,根据页的可移动性,将其分配到不同的列表中,这样,不可移动页不能位于可移动内存区的中间,避免了碎片的发生(这是一种聚类的思想)
需要注意的是,从最初开始,内存并未划分为可移动性不同的区,这些是在运行时形成的

数据结构

尽管内核使用的反碎片技术很有效果,但它对伙伴系统的代码和数据结构几乎没有影响,内核定义了一些宏来表示不同的迁移类型
\linux-2.6.32.63\include\linux\mmzone.h

#define MIGRATE_UNMOVABLE     0        //
#define MIGRATE_RECLAIMABLE 1 //
#define MIGRATE_MOVABLE 2
#define MIGRATE_PCPTYPES 3 /* the number of types on the pcp lists */
#define MIGRATE_RESERVE 3 // 如果向具有特定可移动特性的列表请求分配内存失败,这种紧急情可以从MIGRATE_RESERVE分配内存
#define MIGRATE_ISOLATE 4 /* can't allocate from here MIGRATE_ISOLATE是一个特殊的虚拟区域,用于跨越NUMA结点移动物理内存页 */
#define MIGRATE_TYPES 5 // MIGRATE_TYPES用于表示迁移类型的数目,不代表具体的区域

对伙伴系统数据结构的主要调整,是将空闲列表分解为MIGRATE_TYPES个列表

struct free_area
{
//用于连接空闲页的链表,页链表包含大小相同的连续内存区,其中又定义了多个(MIGRATE_TYPES 个)页链表
struct list_head free_list[MIGRATE_TYPES]; /*
指定了当前内存区中空闲页块的数目
1. 对0阶内存区逐页计算
2. 对1阶内存区计算页对的数目
3. 对2阶内存区计算4页集合的数目
..依次类推
*/
unsigned long nr_free;
};

如果内核无法满足针对某一给定迁移类型的分配请求,内核在这种情况下会提供一个备用列表,规定了在指定列表中无法满足分配请求时,接下来使用哪一种迁移类型
\linux-2.6.32.63\mm\page_alloc.c

/*
* This array describes the order lists are fallen back to when the free lists for the desirable migrate type are depleted
*/
static int fallbacks[MIGRATE_TYPES][MIGRATE_TYPES-] =
{
[MIGRATE_UNMOVABLE] = { MIGRATE_RECLAIMABLE, MIGRATE_MOVABLE, MIGRATE_RESERVE },
[MIGRATE_RECLAIMABLE] = { MIGRATE_UNMOVABLE, MIGRATE_MOVABLE, MIGRATE_RESERVE },
[MIGRATE_MOVABLE] = { MIGRATE_RECLAIMABLE, MIGRATE_UNMOVABLE, MIGRATE_RESERVE },
[MIGRATE_RESERVE] = { MIGRATE_RESERVE, MIGRATE_RESERVE, MIGRATE_RESERVE }, /* Never used */
};

全局变量和辅助函数

尽管页可移动性分组特性总是编译到内核中,但只有在系统中有足够内存可以分配到多个迁移类型对应的链表时,才是有意义的。由于每个迁移链表都应该有适当数量的内存,内核需要定义"适当"的概念,这是通过两个全局变量提供的

. pageblock_order: 表示内核认为是"大"的一个分配阶
. page_nr_pages: 表示该分配阶对应的页数

如果体系结构提供了巨型页机制,则pageblock_order通常定义为巨型页对应的分配阶

. 在IA-32体系结构上,巨型页长度是4MB,因此每个巨型页由1024个普通页组成,而HUGETLB_PAGE_ORDER则定义为10
. IA-64体系结构允许设置可变的普通和巨型页长度,因此HUGETLB_PAGE_ORDER的值取决于内核配置
. 如果体系结构不支持巨型页,则将其定义为第二高的分配阶

\linux-2.6.32.63\include\linux\pageblock-flags.h

#ifdef CONFIG_HUGETLB_PAGE
#ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE
/* Huge page sizes are variable */
extern int pageblock_order;
#else /* CONFIG_HUGETLB_PAGE_SIZE_VARIABLE */
/* Huge pages are a constant size */
#define pageblock_order HUGETLB_PAGE_ORDER
#endif /* CONFIG_HUGETLB_PAGE_SIZE_VARIABLE */
#else /* CONFIG_HUGETLB_PAGE */
/* If huge pages are not used, group by MAX_ORDER_NR_PAGES */
#define pageblock_order (MAX_ORDER-1)
#endif /* CONFIG_HUGETLB_PAGE */

内核提供了两个标志(分配掩码),用于表明给定的分配内存属于何种迁移类型

. __GFP_MOVALE: 分配的内存是可移动的
. __GFP_RECLAIMABLE: 分配的内存是可回收的
//如果这些标志都没有设置,则分配的内存假定为不可移动的

在初始化期间,内核自动确保对内存域(struct zone)中的每个不同的迁移类型分组,在各个迁移链表之间,当前的页面分配状态可以从/proc/pagetypeinfo中获得

Page block order:
Pages per block: Free pages count per migrate type at order
Node , zone DMA, type Unmovable
Node , zone DMA, type Reclaimable
Node , zone DMA, type Movable
Node , zone DMA, type Reserve
Node , zone DMA, type Isolate
Node , zone DMA32, type Unmovable
Node , zone DMA32, type Reclaimable
Node , zone DMA32, type Movable
Node , zone DMA32, type Reserve
Node , zone DMA32, type Isolate Number of blocks type Unmovable Reclaimable Movable Reserve Isolate
Node , zone DMA
Node , zone DMA32

初始化基于可移动性的分组

在内核子系统初始化期间,memmap_init_zone负责处理内存域的page实例,该函数将所有的页最初都标记为可移动的。总而言之,这种做法避免了启动期间内核分配的内存(经常在系统的整个运行时间都不释放)散布到物理内存的各处,从而使其他类型的内存分配免受碎片的干扰,这也是页可移动性分组框架的最重要的目标之一

2. 虚拟可移动内存域

根据可移动性组织页是防止物理内存碎片的一种可能方法,内核还提供了另一种组织该问题的手段,即虚拟内存域ZONE_MOVABLE,与可移动性分组相反,ZONE_MOVABLE特性必须由管理员显式激活。基本思想很简单,可用的物理内存划分为两个内存域: 一个用于可移动分配、另一个用于不可移动分配。这会自动防止不可移动页向可移动内存域引入碎片(并且这个碎片还是无法清除的)
管理员必须指定用于不可移动分配的内存数量、以及可移动分配的内存数量

0x3: 初始化内存域和结点数据结构

截至目前,我们已经在特定于体系结构的代码中看到了内核如何检测系统中的可用内存。与高层数据结构(如内存域和结点)的关联,则需要根据该信息构建,我们知道,体系结构相关代码需要在启动期间建立以下信息

. 系统中各个内存域的页帧边界,保存在max_zone_pfn数组
. 各结点页帧的分配情况,保存在全局变量early_node_map中

1. 管理数据结构的创建

从内核版本2.6.10开始提供了一个通用框架,用于将上述信息转换为伙伴系统预期的结点和内存域数据结构,setup_arch->zone_sizes_init->free_area_init_nodes完成主要的工作

aaarticlea/png;base64,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" alt="" />

在建立结点和内存域内存管理数据结构时,特定于体系结构的代码和通用内核代码之间的相关作用

aaarticlea/png;base64,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" alt="" />

\linux-3.15.5\mm\page_alloc.c

/**
* free_area_init_nodes - Initialise all pg_data_t and zone data
* @max_zone_pfn: an array of max PFNs for each zone
*
* This will call free_area_init_node() for each active node in the system.
* Using the page ranges provided by add_active_range(), the size of each
* zone in each node and their holes is calculated. If the maximum PFN
* between two adjacent zones match, it is assumed that the zone is empty.
* For example, if arch_max_dma_pfn == arch_max_dma32_pfn, it is assumed
* that arch_max_dma32_pfn has no pages. It is also assumed that a zone
* starts where the previous one ended. For example, ZONE_DMA32 starts
* at arch_max_dma_pfn.
*/
void __init free_area_init_nodes(unsigned long *max_zone_pfn)
{
unsigned long nid;
int i; /*
Sort early_node_map as initialisation assumes it is sorted
根据结点的第一个页帧start_pfn,对early_node_map中的各项进行排序
*/
sort_node_map(); /*
Record where the zone boundaries are
计算各个内存域可使用的最低和最高的页帧编号
*/
memset(arch_zone_lowest_possible_pfn, , sizeof(arch_zone_lowest_possible_pfn));
memset(arch_zone_highest_possible_pfn, , sizeof(arch_zone_highest_possible_pfn));
//辅助函数find_min_pfn_with_active_regions用于找到注册的最低内存域中可用的编号最小的页帧,该内存域不一定是ZONE_DMA
arch_zone_lowest_possible_pfn[] = find_min_pfn_with_active_regions();
arch_zone_highest_possible_pfn[] = max_zone_pfn[];
//接下来构建其他内存域的页帧区间,方法很直接,第n个内存域的最小页帧 = 第n-1个内存域的最大页帧
for (i = ; i < MAX_NR_ZONES; i++)
{
if (i == ZONE_MOVABLE)
continue;
arch_zone_lowest_possible_pfn[i] = arch_zone_highest_possible_pfn[i-];
arch_zone_highest_possible_pfn[i] = max(max_zone_pfn[i], arch_zone_lowest_possible_pfn[i]);
}
//因为ZONE_MOVABLE是一个虚拟内存域,不与真正的硬件内存域相关联,该内存域的边界总是设置为0
arch_zone_lowest_possible_pfn[ZONE_MOVABLE] = ;
arch_zone_highest_possible_pfn[ZONE_MOVABLE] = ; /* Find the PFNs that ZONE_MOVABLE begins at in each node */
memset(zone_movable_pfn, , sizeof(zone_movable_pfn));
find_zone_movable_pfns_for_nodes(zone_movable_pfn); /* Print out the zone ranges */
printk("Zone PFN ranges:\n");
for (i = ; i < MAX_NR_ZONES; i++)
{
if (i == ZONE_MOVABLE)
continue;
printk(" %-8s %0#10lx -> %0#10lx\n", zone_names[i], arch_zone_lowest_possible_pfn[i], arch_zone_highest_possible_pfn[i]);
} /* Print out the PFNs ZONE_MOVABLE begins at in each node */
printk("Movable zone start PFN for each node\n");
for (i = ; i < MAX_NUMNODES; i++)
{
if (zone_movable_pfn[i])
printk(" Node %d: %lu\n", i, zone_movable_pfn[i]);
} /* Print out the early_node_map[] */
printk("early_node_map[%d] active PFN ranges\n", nr_nodemap_entries);
for (i = ; i < nr_nodemap_entries; i++)
printk(" %3d: %0#10lx -> %0#10lx\n", early_node_map[i].nid, early_node_map[i].start_pfn, early_node_map[i].end_pfn); /* Initialise every node */
mminit_verify_pageflags_layout();
setup_nr_node_ids();
for_each_online_node(nid)
{
pg_data_t *pgdat = NODE_DATA(nid);
free_area_init_node(nid, NULL, find_min_pfn_for_node(nid), NULL); /* Any memory on that node */
if (pgdat->node_present_pages)
node_set_state(nid, N_HIGH_MEMORY);
check_for_regular_memory(pgdat);
}
}

2. 对各个结点创建数据结构

\linux-3.15.5\mm\page_alloc.c

在内存域边界已经确定后,free_area_init_nodes分别对各个内存域调用free_area_init_node创建数据结构

void __paginginit free_area_init_node(int nid, unsigned long *zones_size, unsigned long node_start_pfn, unsigned long *zholes_size)
{
pg_data_t *pgdat = NODE_DATA(nid); pgdat->node_id = nid;
pgdat->node_start_pfn = node_start_pfn;
/*
累积各个内存域的页数,计算结点中页的生总数,对连续内存模型而言,这可以通过zones_size_init完成,但calculate_node_totalpages还考虑了内存域中的空洞
在系统启动初始化期间,内核会输出一段简短的消息
dmesg
On node 0 totalpages: 524142
*/
calculate_node_totalpages(pgdat, zones_size, zholes_size); /*
alloc_node_mem_map负责初始化一个简单但非常重要的数据结构,即系统中的各个物理内存页,都对应着一个strcut page实例,该结构的初始化由alloc_node_mem_map执行
*/
alloc_node_mem_map(pgdat);
#ifdef CONFIG_FLAT_NODE_MEM_MAP
printk(KERN_DEBUG "free_area_init_node: node %d, pgdat %08lx, node_mem_map %08lx\n",
nid, (unsigned long)pgdat,
(unsigned long)pgdat->node_mem_map);
#endif //初始化内存域数据结构涉及的繁重工作由free_area_init_core执行,它会依次遍历结点的所有内存域
free_area_init_core(pgdat, zones_size, zholes_size);
}

0x4: 分配器API

就伙伴系统的接口而言,NUMA或UMA体系结构是没有差别的,二者的调用语法都是相同的,所有函数的共同点是: 只能分配2的整数幂个页,因此,接口中不像C标准库的malloc函数或bootmem分配器那样任意指定了所需内存大小作为参数,相反,必须指定的是分配阶,伙伴系统将在内存中分配2(order)次方页。内核中细粒度的分配只能借助SLAB分配器(或者SLUB、SLOB分配器),它们都基于伙伴系统

. alloc_pages(mask, order)
分配2(order)次方页并返回一个struct page的实例,表示分配的内存块的起始页 . get_zeroed_page(mask)
分配一页并返回一个struct page实例,页对应的内存填充0(所有其他函数分配之后页的内容是未定义的) . __get_free_pages(mask, order)
返回分配内存块的虚拟地址 . get_dma_pages(gfp_mask, order)
用来获得适用于DMA的页
/*
在空闲内存无法满足请求以至于分配失败的情况下,所有上述函数都返回空指针(alloc_page)、或者0(get_zeroed_page、__get_free_pages、get_dma_pages)
因此内核在每次分配之后都必须检查返回的结果,这种惯例与设计良好的用户层应用程序类似,但在内核中忽略检查会导致严重得多的故障
*/

内核除了伙伴系统函数之外,还提供了其他内存管理函数,它们以伙伴系统为基础,但并不属于伙伴分配器自身,这些函数包括

. vmalloc
. vmalloc_32
//使用页表将不连续的内存映射到内核地址空间中,使之看上去是连续的 . kmalloc类型的函数
//用于分配小于一整页的内存区

有4个函数用于释放不再使用的页

. free_page(struct page *)
. free_pages(struct page *, order);
//用于将一个2(order)次方页返回(释放)给内存管理子系统,内存区的起始地址由指向该内存区的第一个page实例的的指针表示 . __free_page(addr)
. __free_pages(addr, order);
//语义类似于1、2函数,但在表示需要释放的内存区时,使用了虚拟内存地址而不是page实例

1. 分配掩码

伙伴系统提供的内存分配接口函数中强制使用的mask参数

内存域修饰符

Linux将内存划分为内存域,内核提供了所谓的"内存域修饰符(zone modifier)",在掩码的最低4个比特位定义来指定从哪个内存域中分配所需的页
\linux-2.6.32.63\include\linux\gfp.h

/*
* GFP bitmasks..
*
* Zone modifiers (see linux/mmzone.h - low three bits)
*
* Do not put any conditional on these. If necessary modify the definitions without the underscores and use the consistently. The definitions here may be used in bit comparisons.
*/
#define __GFP_DMA ((__force gfp_t)0x01u)
#define __GFP_HIGHMEM ((__force gfp_t)0x02u)
#define __GFP_DMA32 ((__force gfp_t)0x04u)
#define GFP_ZONEMASK (__GFP_DMA|__GFP_HIGHMEM|__GFP_DMA32|__GFP_MOVABLE)

缩写GFP代表获得空闲页(get free page),__GFP_MOVABLE不代表物理内存页,但通知内核应该在特殊的虚拟内存域ZONE_MOVABLE进行相应的分配。值得注意的是,没有__GFP_NORMAL常数,但内存分配的主要负担却落到ZONE_NORMAL内存域,内核考虑到这一点,提供了gfp_zone()函数来计算与给定分配标志"兼容"的最高(最廉价)内存域,那么内存分配可以从该内存域或更低(从最廉价逐渐到最昂贵)的内存域进行
\linux-2.6.32.63\include\linux\gfp.h

/*
1. 如果__GFP_DMA、__GFP_HIGHMEM都没有设置,则首先扫描ZONE_NORMAL,然后是ZONE_DMA
2. 如果设置了__GFP_HIGHMEM,没有设置__GFP_DMA,则结果是从__GFP_HIGHMEM开始扫描所有3个内存域
3. 如果设置了__GFP_DMA,那么不管__GFP_HIGHMEM设置与否都从__GFP_DMA开始扫描 总之遵循的一个基本原则是: 尽量遵循掩码参数的指示,同时尽量从最廉价的内存域开始分配
*/
static inline enum zone_type gfp_zone(gfp_t flags)
{
enum zone_type z;
int bit = flags & GFP_ZONEMASK; z = (GFP_ZONE_TABLE >> (bit * ZONES_SHIFT)) & (( << ZONES_SHIFT) - ); if (__builtin_constant_p(bit))
MAYBE_BUILD_BUG_ON((GFP_ZONE_BAD >> bit) & );
else {
#ifdef CONFIG_DEBUG_VM
BUG_ON((GFP_ZONE_BAD >> bit) & );
#endif
}
return z;
}

操作修饰符

/*
* Action modifiers - doesn't change the zoning
*/
/*
Can wait and reschedule 可以等待和重调度
__GFP_WAIT表示分配内存的请求可以中断,即调度器在该请求期间可以随意选择另一个进程执行,或者该请求可以被另一个更重要的事件中断
分配器还可以在返回内存之前,在队列上等待一个事件,相关进程会进入睡眠状态
*/
#define __GFP_WAIT ((__force gfp_t)0x10u) /*
Should access emergency pools 应该访问紧急分配池
如果请求非常重要,则设置__GFP_HIGH,即内核急切地需要内存时,在分配内存失败可能给内核带来严重后果时(例如威胁到系统稳定性或系统崩溃),总是会使用该标志
*/
#define __GFP_HIGH ((__force gfp_t)0x20u) /*
Can start physical IO 可以启动物理IO
__GFP_IO说明在查找空闲内存期间内核可以进行I/O操作,实际上,这意味着如果内核在内存分配期间换出页,那么仅当设置该标志时,才能将选择的页写入硬盘
*/
#define __GFP_IO ((__force gfp_t)0x40u) /*
Can call down to low-level FS 可以调用底层文件系统
__GFP_FS允许内核执行VFS操作,在与VFS层有联系的内核子系统中必须禁用,因为这可能引起循环递归调用
*/
#define __GFP_FS ((__force gfp_t)0x80u) #define __GFP_COLD ((__force gfp_t)0x100u) /* Cache-cold page required 需要分缓存的冷页(即不在CPU高速缓存中的"冷页") */
#define __GFP_NOWARN ((__force gfp_t)0x200u) /* Suppress page allocation failure warning 禁止分配失败告警*/
#define __GFP_REPEAT ((__force gfp_t)0x400u) /* Try hard to allocate the memory, but the allocation attempt _might_ fail. This depends upon the particular VM implementation 重试分配,但在重试若干次后会停止,可能失败 */
#define __GFP_NOFAIL ((__force gfp_t)0x800u) /* The VM implementation _must_ retry infinitely: the caller cannot handle allocation failures 一直重试,不会失败*/
#define __GFP_NORETRY ((__force gfp_t)0x1000u) /* The VM implementation must not retry indefinitely 不重试,可能失败 */
#define __GFP_COMP ((__force gfp_t)0x4000u) /* Add compound page metadata 增加复合页元数据 */
#define __GFP_ZERO ((__force gfp_t)0x8000u) /* Return zeroed page on success 成功则返回填充字节0的页 */
#define __GFP_NOMEMALLOC ((__force gfp_t)0x10000u) /* Don't use emergency reserves 不使用紧急分配链表 */ /*
Enforce hardwall cpuset memory allocs 只允许在进程允许运行的CPU所关联的结点分配内存
__GFP_HARDWALL只在NUMA系统上有意义,它限制只在分配到当前进程的各个CPU所关联的结点分配内存,如果进程允许在所有CPU上运行(默认情况),该标志是无意义的,只有进程可以运行的CPU受限时,该标志才有效果
*/
#define __GFP_HARDWALL ((__force gfp_t)0x20000u) /*
No fallback, no policies 没有备用结点,没有策略
__GFP_THISNODE只有在NUMA系统上才有意义,如果设置该比特位,则内存分配失败的情况下不允许使用其他结点作为备用,需要保证在当前结点或者明确指定的结点上成功分配内存
*/
#define __GFP_THISNODE ((__force gfp_t)0x40000u)
#define __GFP_RECLAIMABLE ((__force gfp_t)0x80000u) /* Page is reclaimable 页是可回收的*/
#define __GFP_MOVABLE ((__force gfp_t)0x08u) /* Flag that this page will be movable by the page migration mechanism or reclaimed 页是可移动的 */ #ifdef CONFIG_KMEMCHECK
#define __GFP_NOTRACK ((__force gfp_t)0x200000u) /* Don't track with kmemcheck */
#else
#define __GFP_NOTRACK ((__force gfp_t)0)
#endif

由于这些标志几乎总是组合使用,内核对此作了一些分组,包含了用于各种标准情形的适当的标志

/* This equals 0, but use constants in case they ever change */
#define GFP_NOWAIT (GFP_ATOMIC & ~__GFP_HIGH)
/*
GFP_ATOMIC means both !wait (__GFP_WAIT not set) and use emergency pool
GFP_ATOMIC用于原子分配,在任何情况下都不能中断,可能使用紧急分配链表中的内存
*/
#define GFP_ATOMIC (__GFP_HIGH) //GFP_NOIO明确禁止I/O操作,但可能被中断
#define GFP_NOIO (__GFP_WAIT)
//GFP_NOIO明确禁止I/O操作、以及访问VFS层,但可能被中断
#define GFP_NOFS (__GFP_WAIT | __GFP_IO) //GFP_KERNEL是内核的默认配置,它的失败不会立即威胁系统稳定性,这是内核源代码中最常使用的标志
#define GFP_KERNEL (__GFP_WAIT | __GFP_IO | __GFP_FS)
#define GFP_TEMPORARY (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_RECLAIMABLE)
#define GFP_USER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL) /*
GFP_HIGHUSER是GFP_USER的一个扩展,也用于用户空间,它允许分配无法直接映射的高端内存
使用高端内存是没有坏处的,因为用户进程的地址空间总是通过非线性页表组织的
*/
#define GFP_HIGHUSER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL | __GFP_HIGHMEM)
#define GFP_HIGHUSER_MOVABLE (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL | __GFP_HIGHMEM | __GFP_MOVABLE) #ifdef CONFIG_NUMA
#define GFP_THISNODE (__GFP_THISNODE | __GFP_NOWARN | __GFP_NORETRY)
#else
#define GFP_THISNODE ((__force gfp_t)0)
#endif /* This mask makes up all the page movable related flags */
#define GFP_MOVABLE_MASK (__GFP_RECLAIMABLE|__GFP_MOVABLE) /* Control page allocator reclaim behavior */
#define GFP_RECLAIM_MASK (__GFP_WAIT|__GFP_HIGH|__GFP_IO|__GFP_FS| __GFP_NOWARN|__GFP_REPEAT|__GFP_NOFAIL| __GFP_NORETRY|__GFP_NOMEMALLOC) /* Control slab gfp mask during early boot */
#define GFP_BOOT_MASK __GFP_BITS_MASK & ~(__GFP_WAIT|__GFP_IO|__GFP_FS) /* Control allocation constraints */
#define GFP_CONSTRAINT_MASK (__GFP_HARDWALL|__GFP_THISNODE) /* Do not use these with a slab allocator */
#define GFP_SLAB_BUG_MASK (__GFP_DMA32|__GFP_HIGHMEM|~__GFP_BITS_MASK) /* Flag - indicates that the buffer will be suitable for DMA. Ignored on some
platforms, used as appropriate on others */ #define GFP_DMA __GFP_DMA /* 4GB DMA on some platforms */
#define GFP_DMA32 __GFP_DMA32

2. 内存分配宏

通过使用分配掩码和各个分配函数,内核提供了一个非常灵活的内存分配体系,尽管如此,所有接口函数都可以追溯到一个简单的基本函数: alloc_pages_node

. alloc_page
#define alloc_page(gfp_mask) alloc_pages(gfp_mask, 0)
//分配0阶的内存页,即1页 . alloc_pages
#define alloc_pages(gfp_mask, order) alloc_pages_node(numa_node_id(), gfp_mask, order) . __get_free_page
#define __get_free_page(gfp_mask) __get_free_pages((gfp_mask),0)
//分配0阶的内存页,即1页 . __get_free_pages
//
unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order)
{
struct page *page; /*
* __get_free_pages() returns a 32-bit address, which cannot represent a highmem page
*/
VM_BUG_ON((gfp_mask & __GFP_HIGHMEM) != ); page = alloc_pages(gfp_mask, order);
if (!page)
return ;
return (unsigned long) page_address(page);
}
EXPORT_SYMBOL(__get_free_pages); . __get_dma_pages
#define __get_dma_pages(gfp_mask, order) __get_free_pages((gfp_mask) | GFP_DMA,(order)) . get_zeroed_page
unsigned long get_zeroed_page(gfp_t gfp_mask)
{
return __get_free_pages(gfp_mask | __GFP_ZERO, );
}
EXPORT_SYMBOL(get_zeroed_page);

这样,就完成了所有API函数到公共基础函数alloc_pages的统一

aaarticlea/png;base64,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" alt="" />

类似的,内存释放函数也可以规约到一个主要的函数: __free_pages,只是用不同的参数调用

. __free_pages
void __free_pages(struct page *page, unsigned int order)
{
if (put_page_testzero(page))
{
trace_mm_page_free_direct(page, order);
if (order == )
free_hot_page(page);
else
__free_pages_ok(page, order);
}
} . __free_page
#define __free_page(page) __free_pages((page), 0) . free_page
#define free_page(addr) free_pages((addr),0) . free_pages
void free_pages(unsigned long addr, unsigned int order)
{
if (addr != ) {
VM_BUG_ON(!virt_addr_valid((void *)addr));
//virt_to_page将虚拟内存底子好转换为指向page实例的指针
__free_pages(virt_to_page((void *)addr), order);
}
}
EXPORT_SYMBOL(free_pages);
//free_pages和__free_pages之间的关系通过函数而不是宏建立,因为首先必须将虚拟地址转换为指向struct page的指针

aaarticlea/png;base64,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" alt="" />

0x5: 分配页

我们知道,所有API函数都追溯到alloc_pages_node,该函数是伙伴系统主要实现的"发射台"
\linux-2.6.32.63\include\linux\gfp.h

static inline struct page *alloc_pages_node(int nid, gfp_t gfp_mask, unsigned int order)
{
/*
Unknown node is current node
如果指定负的结点ID(不存在),内核自动地使用当前执行CPU对应的结点ID
*/
if (nid < )
nid = numa_node_id(); //node_zonelist用于选择分配内存的内存域
return __alloc_pages(gfp_mask, order, node_zonelist(nid, gfp_mask));
}

在内核源代码中,__alloc_pages被称之为"伙伴系统的心脏",它处理的是实质性的内存分配

1. 选择页

辅助函数

首先我们需要定义一些函数使用的标志,用于控制到达各个水印指定的临界状态时的行为
\linux-2.6.32.63\mm\page_alloc.c

/* The ALLOC_WMARK bits are used as an index to zone->watermark */
#define ALLOC_WMARK_MIN WMARK_MIN /* 使用pages_min水印 */
#define ALLOC_WMARK_LOW WMARK_LOW /* 使用pages_low水印 */
#define ALLOC_WMARK_HIGH WMARK_HIGH /* 使用pages_high水印 */
#define ALLOC_NO_WATERMARKS 0x04 /* don't check watermarks at all 完全不检查水印 */ /* Mask to get the watermark bits */
#define ALLOC_WMARK_MASK (ALLOC_NO_WATERMARKS-1) #define ALLOC_HARDER 0x10 /* try to alloc harder 试图更努力地分配,即放宽限制 */
#define ALLOC_HIGH 0x20 /* __GFP_HIGH set 设置了__GFP_HIGH */
#define ALLOC_CPUSET 0x40 /* check for correct cpuset 检查内存结点是否对应着指定的CPU集合 */

设置的标志在zone_watermark_ok函数中检查,该函数根据设置的标志判断是否能从给定的内存域中分配内存
\linux-2.6.32.63\mm\page_alloc.c

/*
* Return 1 if free pages are above 'mark'. This takes into account the order of the allocation.
*/
int zone_watermark_ok(struct zone *z, int order, unsigned long mark, int classzone_idx, int alloc_flags)
{
/* free_pages my go negative - that's OK */
long min = mark;
long free_pages = zone_nr_free_pages(z) - ( << order) + ;
int o; //在解释了ALLOC_HIGH、ALLOC_HARDER标志之后(将最小值标记降低到当前值的一半或四分之一,使得分配过程更加努力,即放宽限制)
if (alloc_flags & ALLOC_HIGH)
min -= min / ;
if (alloc_flags & ALLOC_HARDER)
min -= min / ; //检查空闲页的数目是否小于最小值 + lowmem_reserve中指定的紧急分配值之和
if (free_pages <= min + z->lowmem_reserve[classzone_idx])
return ;
//如果不小于,则遍历所有小于当前阶的分配阶,从free_pages减去当前分配阶的所有空闲页(左移o位是必要的,因为nr_free记载的是当前分配阶的空闲页块数目)
for (o = ; o < order; o++)
{
/*
At the next order, this order's pages become unavailable
在下一阶,当前阶的页是不可用的
*/
free_pages -= z->free_area[o].nr_free << o; /*
Require fewer higher order pages to be free 所需高阶空闲页的数目相对较少
每升高一阶,所需空闲页的最小值折半
*/
min >>= ; //如果内核遍历所有的低端内存域之后,发现内存不足,则不进行内存分配
if (free_pages <= min)
return ;
}
return ;
}

get_page_from_freelist是伙伴系统使用的另一个重要的辅助函数,它通过标志集和分配阶来判断是否能进行分配,如果可以,则发起实际的分配操作

/*
* get_page_from_freelist goes through the zonelist trying to allocate a page.
*/
static struct page *get_page_from_freelist(gfp_t gfp_mask, nodemask_t *nodemask, unsigned int order, struct zonelist *zonelist, int high_zoneidx, int alloc_flags, struct zone *preferred_zone, int migratetype)
{
struct zoneref *z;
struct page *page = NULL;
int classzone_idx;
struct zone *zone;
nodemask_t *allowednodes = NULL;/* zonelist_cache approximation */
int zlc_active = ; /* set if using zonelist_cache */
int did_zlc_setup = ; /* just call zlc_setup() one time */ classzone_idx = zone_idx(preferred_zone);
zonelist_scan:
/*
* Scan zonelist, looking for a zone with enough free.
* See also cpuset_zone_allowed() comment in kernel/cpuset.c.
*/
for_each_zone_zonelist_nodemask(zone, z, zonelist, high_zoneidx, nodemask)
{
if (NUMA_BUILD && zlc_active && !zlc_zone_worth_trying(zonelist, z, allowednodes))
continue;
//cpuset_zone_allowed_softwall用于检查给定内存域是否属于该进程允许运行的CPU
if ((alloc_flags & ALLOC_CPUSET) && !cpuset_zone_allowed_softwall(zone, gfp_mask))
goto try_next_zone; BUILD_BUG_ON(ALLOC_NO_WATERMARKS < NR_WMARK);
if (!(alloc_flags & ALLOC_NO_WATERMARKS))
{
unsigned long mark;
int ret; mark = zone->watermark[alloc_flags & ALLOC_WMARK_MASK];
//zone_watermark_ok接下来检查所遍历到内存域是否有足够的空闲页,并试图分配一个连续的内存块(足够空闲页、连续内存两者必须同时满足才可继续,否则循环进行到备用列表中的写一个内存域)
if (zone_watermark_ok(zone, order, mark, classzone_idx, alloc_flags))
goto try_this_zone; if (zone_reclaim_mode == )
goto this_zone_full; ret = zone_reclaim(zone, gfp_mask, order);
switch (ret)
{
case ZONE_RECLAIM_NOSCAN:
/* did not scan */
goto try_next_zone;
case ZONE_RECLAIM_FULL:
/* scanned but unreclaimable */
goto this_zone_full;
default:
/* did we reclaim enough */
if (!zone_watermark_ok(zone, order, mark, classzone_idx, alloc_flags))
goto this_zone_full;
}
} try_this_zone:
//如果内存域适用于当前的分配请求,则调用buffered_rmqueue试图从中分配所需数目的页
page = buffered_rmqueue(preferred_zone, zone, order, gfp_mask, migratetype);
if (page)
break;
this_zone_full:
if (NUMA_BUILD)
zlc_mark_zone_full(zonelist, z);
try_next_zone:
if (NUMA_BUILD && !did_zlc_setup && nr_online_nodes > ) {
/*
* we do zlc_setup after the first zone is tried but only
* if there are multiple nodes make it worthwhile
*/
allowednodes = zlc_setup(zonelist, alloc_flags);
zlc_active = ;
did_zlc_setup = ;
}
} if (unlikely(NUMA_BUILD && page == NULL && zlc_active)) {
/* Disable zlc cache for second zonelist scan */
zlc_active = ;
goto zonelist_scan;
}
return page;
}

分配控制

我们知道,alloc_pages_node是内核伙伴系统内存分配最后规约的底层函数,而__alloc_pages又是其中伙伴系统的主函数,该函数的实现比较复杂,尤其是在可用内存太少或逐渐用完时。如果可用内存足够,则必要的工作会很快完成
\linux-2.6.32.63\include\linux\gfp.h

static inline struct page *__alloc_pages(gfp_t gfp_mask, unsigned int order, struct zonelist *zonelist)
{
return __alloc_pages_nodemask(gfp_mask, order, zonelist, NULL);
}

\linux-2.6.32.63\mm\page_alloc.c

/*
* This is the 'heart' of the zoned buddy allocator.
*/
struct page *__alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, struct zonelist *zonelist, nodemask_t *nodemask)
{
enum zone_type high_zoneidx = gfp_zone(gfp_mask);
struct zone *preferred_zone;
struct page *page;
int migratetype = allocflags_to_migratetype(gfp_mask); gfp_mask &= gfp_allowed_mask; lockdep_trace_alloc(gfp_mask); might_sleep_if(gfp_mask & __GFP_WAIT); if (should_fail_alloc_page(gfp_mask, order))
return NULL; /*
Check the zones suitable for the gfp_mask contain at least one valid zone.
It's possible to have an empty zonelist as a result of GFP_THISNODE and a memoryless node
适合于gfp_mask的内存域列表
*/
if (unlikely(!zonelist->_zonerefs->zone))
//如果没有在内存的结点上使用GFP_THISNODE,导致zonelist为空,就会发生这种情况
return NULL; /* The preferred zone is used for statistics later */
first_zones_zonelist(zonelist, high_zoneidx, nodemask, &preferred_zone);
if (!preferred_zone)
return NULL; /*
First allocation attempt
在最简单的情形中,分配空闲内存区只涉及调用一次get_page_from_freelist,然后返回所需数目的页
*/
page = get_page_from_freelist(gfp_mask|__GFP_HARDWALL, nodemask, order, zonelist, high_zoneidx, ALLOC_WMARK_LOW|ALLOC_CPUSET, preferred_zone, migratetype);
if (unlikely(!page))
//第一次内存分配尝试不会特别积极,如果在某个内存域中无法找到空闲内存,则意味着内存相对较紧张,内核需要更多的工作量才能找到更多内存
page = __alloc_pages_slowpath(gfp_mask, order, zonelist, high_zoneidx, nodemask, preferred_zone, migratetype); trace_mm_page_alloc(page, order, gfp_mask, migratetype);
return page;
}
EXPORT_SYMBOL(__alloc_pages_nodemask);

\linux-2.6.32.63\mm\page_alloc.c

static inline struct page *__alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order, struct zonelist *zonelist, enum zone_type high_zoneidx, nodemask_t *nodemask, struct zone *preferred_zone, int migratetype)
{
const gfp_t wait = gfp_mask & __GFP_WAIT;
struct page *page = NULL;
int alloc_flags;
unsigned long pages_reclaimed = ;
unsigned long did_some_progress;
struct task_struct *p = current; /*
* In the slowpath, we sanity check order to avoid ever trying to
* reclaim >= MAX_ORDER areas which will never succeed. Callers may
* be using allocators in order of preference for an area that is
* too large.
*/
if (order >= MAX_ORDER)
{
WARN_ON_ONCE(!(gfp_mask & __GFP_NOWARN));
return NULL;
} /*
* GFP_THISNODE (meaning __GFP_THISNODE, __GFP_NORETRY and
* __GFP_NOWARN set) should not cause reclaim since the subsystem
* (f.e. slab) using GFP_THISNODE may choose to trigger reclaim
* using a larger set of nodes after it has established that the
* allowed per node queues are empty and that nodes are
* over allocated.
*/
if (NUMA_BUILD && (gfp_mask & GFP_THISNODE) == GFP_THISNODE)
goto nopage; restart:
//唤醒负责换出页的kswapd守护进程,空闲内存可以通过缩减内核缓存和非热点页面回收来获得,即写回或换出很少使用的页,这两种措施都是由该守护进程发起的
wake_all_kswapd(order, zonelist, high_zoneidx); /*
OK, we're below the kswapd watermark and have kicked background reclaim. Now things get more complex, so set up alloc_flags according to how we want to proceed.
在交互守护进程唤醒后,内核开始新的尝试,这一次进行的搜索更为积极,对分配标志进行了调整,修改为一些在当前特定情况下更有可能分配成功的标志
同时,将水印降低到最小值,对实时进程和指定了__GFP_WAIT标志因为不能睡眠的调用,会设置ALLOC_HARDER
*/
alloc_flags = gfp_to_alloc_flags(gfp_mask); rebalance:
/*
This is the last chance, in general, before the goto nopage.
使用修改后的标志集,再一次调用get_page_from_freelist,试图获得所需的页
如果再次失败,内核会借助更强有力的措施
*/
page = get_page_from_freelist(gfp_mask, nodemask, order, zonelist, high_zoneidx, alloc_flags & ~ALLOC_NO_WATERMARKS, preferred_zone, migratetype);
if (page)
goto got_pg; /* Allocate without watermarks if the context allows */
if (alloc_flags & ALLOC_NO_WATERMARKS)
{
page = __alloc_pages_high_priority(gfp_mask, order, zonelist, high_zoneidx, nodemask, preferred_zone, migratetype);
if (page)
goto got_pg;
} /* Atomic allocations - we can't balance anything */
if (!wait)
goto nopage; /* Avoid recursion of direct reclaim */
if (p->flags & PF_MEMALLOC)
goto nopage; /* Avoid allocations with no watermarks from looping endlessly */
if (test_thread_flag(TIF_MEMDIE) && !(gfp_mask & __GFP_NOFAIL))
goto nopage; /*
Try direct reclaim and then allocating
尝试回收页面,并继续分配
*/
page = __alloc_pages_direct_reclaim(gfp_mask, order, zonelist, high_zoneidx, nodemask, alloc_flags, preferred_zone, migratetype, &did_some_progress);
if (page)
goto got_pg; /*
* If we failed to make any progress reclaiming, then we are running out of options and have to consider going OOM
*/
if (!did_some_progress)
{
if ((gfp_mask & __GFP_FS) && !(gfp_mask & __GFP_NORETRY))
{
if (oom_killer_disabled)
goto nopage;
page = __alloc_pages_may_oom(gfp_mask, order, zonelist, high_zoneidx, nodemask, preferred_zone, migratetype);
if (page)
goto got_pg; /*
The OOM killer does not trigger for high-order ~__GFP_NOFAIL allocations so if no progress is being made,
there are no other options and retrying is unlikely to help.
*/
if (order > PAGE_ALLOC_COSTLY_ORDER &&
!(gfp_mask & __GFP_NOFAIL))
goto nopage; goto restart;
}
} /* Check if we should retry the allocation */
pages_reclaimed += did_some_progress;
if (should_alloc_retry(gfp_mask, order, pages_reclaimed))
{
/*
Wait for some write requests to complete then retry
等待块设备层队列释放,这样内核就有机会换出页
*/
congestion_wait(BLK_RW_ASYNC, HZ/);
goto rebalance;
} nopage:
//无论如何都无法分配内存了,只能打印OOM事件信息了
if (!(gfp_mask & __GFP_NOWARN) && printk_ratelimit())
{
printk(KERN_WARNING "%s: page allocation failure. order:%d, mode:0x%x\n", p->comm, order, gfp_mask);
dump_stack();
show_mem();
}
return page;
got_pg:
if (kmemcheck_enabled)
kmemcheck_pagealloc_alloc(page, order, gfp_mask);
return page;
}

2. 移除选择的页

如果内核找到适当的内存域,且有足够的空闲页可供分配,那么还有两件事需要完成

. 必须检查这些页是否是"连续"的,因为到目前为止,只知道有许多空闲页
. 必须按伙伴系统的方式从free_lists移除这些页,这可能需要分解并重排内存区

内核将该工作委托给"get_page_from_freelist->buffered_rmqueue"完成

/*
Really, prep_compound_page() should be called from __rmqueue_bulk().
But we cheat by calling it from here, in the order > 0 path. Saves a branch or two.
*/
static inline struct page *buffered_rmqueue(struct zone *preferred_zone, struct zone *zone, int order, gfp_t gfp_flags, int migratetype)
{
unsigned long flags;
struct page *page;
//如果分配标志设定了__GFP_COLD,那么必须从per-CPU缓存取得冷页
int cold = !!(gfp_flags & __GFP_COLD);
int cpu; again:
cpu = get_cpu();
//如果只分配一页,内核会进行优化,即分配阶为0 = 2(1)次方的情况,该页不是从伙伴系统直接取得,而是取自per-CPU的页缓存
if (likely(order == ))
{
struct per_cpu_pages *pcp;
struct list_head *list; //在只请求一页时,内核试图借助于per-CPU缓存加速请求的处理,如果缓存为空,内核可借机检查缓存的填充水平
pcp = &zone_pcp(zone, cpu)->pcp;
list = &pcp->lists[migratetype];
local_irq_save(flags);
if (list_empty(list))
{
//在针对当前处理器选择了适当的per-CPU列表(热页或冷页列表)之后,调用rmqueue_bulk重新填充缓存
pcp->count += rmqueue_bulk(zone, , pcp->batch, list, migratetype, cold);
if (unlikely(list_empty(list)))
goto failed;
} if (cold)
page = list_entry(list->prev, struct page, lru);
else
page = list_entry(list->next, struct page, lru); list_del(&page->lru);
pcp->count--;
}
else
{
//需要分配多页
if (unlikely(gfp_flags & __GFP_NOFAIL))
{
/*
* __GFP_NOFAIL is not to be used in new code.
*
* All __GFP_NOFAIL callers should be fixed so that they
* properly detect and handle allocation failures.
*
* We most definitely don't want callers attempting to
* allocate greater than order-1 page units with
* __GFP_NOFAIL.
*/
WARN_ON_ONCE(order > );
}
spin_lock_irqsave(&zone->lock, flags);
//__rmqueue会从内存域的伙伴列表中选择适当的内存块,如果有必要,该函数会自动分解大块内存,将未用的部分放回列表中
page = __rmqueue(zone, order, migratetype);
spin_unlock(&zone->lock);
//如果内存域中有足够的空闲页满足分配请求,但页不是连续的,这种情况,__rmqueue调用失败并返回NULL指针
if (!page)
goto failed;
__mod_zone_page_state(zone, NR_FREE_PAGES, -( << order));
} __count_zone_vm_events(PGALLOC, zone, << order);
zone_statistics(preferred_zone, zone);
local_irq_restore(flags);
put_cpu(); VM_BUG_ON(bad_range(zone, page));
/*
由于所有失败情形都跳转到标号failed处理,这可以确保内核到达当前点之后,page指向一系列有效的页
在返回指针前,prep_new_page需要做一些准备工作,以便内核能够处理这些页,如果所选择的页出了问题,该函数返回正值,在这种情况下,分配将从头开始
*/
if (prep_new_page(page, order, gfp_flags))
goto again;
return page; failed:
local_irq_restore(flags);
put_cpu();
return NULL;
}

__rmqueue辅助函数

内核使用了__rmqueue函数,该函数充当进入伙伴系统核心的"看门人"
\linux-2.6.32.63\mm\page_alloc.c

/*
Do the hard work of removing an element from the buddy allocator. Call me with the zone->lock already held.
*/
static struct page *__rmqueue(struct zone *zone, unsigned int order, int migratetype)
{
struct page *page; retry_reserve:
//根据传递进来的分配阶、用于获取页的内存域、迁移类型,__rmqueue_smallest扫描页的列表,直至找到适当的连续内存块
page = __rmqueue_smallest(zone, order, migratetype); if (unlikely(!page) && migratetype != MIGRATE_RESERVE)
{
//如果指定的迁移列表不能满足分配请求,则调用__rmqueue_fallback尝试其他的迁移列表,作为应急措施
page = __rmqueue_fallback(zone, order, migratetype); /*
* Use MIGRATE_RESERVE rather than fail an allocation. goto
* is used because __rmqueue_smallest is an inline function
* and we want just one call site
*/
if (!page)
{
migratetype = MIGRATE_RESERVE;
goto retry_reserve;
}
} trace_mm_page_alloc_zone_locked(page, order, migratetype);
return page;
}

__rmqueue_smallest的实现不是很长,本质上,它由一个循环组成,按递增顺序遍历内存域的各个特定迁移类型的空闲页列表,直至找到合适的一项

/*
Go through the free lists for the given migratetype and remove the smallest available page from the freelists
*/
static inline struct page *__rmqueue_smallest(struct zone *zone, unsigned int order, int migratetype)
{
unsigned int current_order;
struct free_area * area;
struct page *page; /*
Find a page of the appropriate size in the preferred list 在首选的列表中找到适当大小的页
搜索从指定分配阶对应的项开始,因为要求页必须是连续的,所以最好的情况也是当前对应分配阶中正好能找到一块内存区
1. 如果检查的列表中有一个元素(非空),那么它就是可用的,因为其中包含了所需数目的连续页
2. 否则,内核将选择下一个更高分配阶,进行类似的搜索
*/
for (current_order = order; current_order < MAX_ORDER; ++current_order)
{
area = &(zone->free_area[current_order]);
if (list_empty(&area->free_list[migratetype]))
continue; page = list_entry(area->free_list[migratetype].next, struct page, lru);
list_del(&page->lru);
rmv_page_order(page);
area->nr_free--;
//如果需要分配的内存块长度小于所选择的连续页范围,即如果因为没有更小的适当的内存块可用,而从较高的分配阶分配了一块内存,那么该内存块必须按照伙伴系统的原理分裂成更小的块,即调用expand
expand(zone, page, order, current_order, area, migratetype);
return page;
} return NULL;
}

aaarticlea/png;base64,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" alt="" />

0x6: 释放页

__free_pages是一个基础函数,用于实现内核API中所有涉及内存释放的函数

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAABoCAIAAABOogHoAAAgAElEQVR4nO19T2hjWXa+GQqCkoBhFoJZOGQhsqneqUIIStEhr6gQ5KJgpFSaQdhThZ9MT7Ad0xMpJp1YTtPEUlG9UFEMkycPZigV1Yb4MmmITDMERBES2p7F8KA2ochiNo9Ar7yp1dNv8Y3O7+j+e/c9ybaqx99CPN137rnn/vveeffPuwuja1zjGteYRPzuY+Gqy/Aa17jG3OGqeWkGuKa2a1zjGjIun4kcU3e3duFKspEKZCFlg9tsyps951ynGihdx4YCvcY13kW4tOfMvTUzEg2wG6/KL/zP//xPsVisVqu1Wq1Wq62trfm+v7m5WavV6vV6rVbb3NxcW1vDL2TqY+CawhGrVqtBG/1y5UBVQc2MjY0NKcT3/e9///u1Wq1SqeAvfnHBr3EBC3GNiBxra2tSEjASxt+9e/f4+NixMtI2oFTtzEXbu4J4/PAY6UrAkl9TlDkE5cLUZlK1EK2S2PCQTgVuLdcTRZF6cX5+fn5+zqPTXxKjcMib0pXuSrlGdK2R9gInLPziF78oFApBEIRhKIQIx8A1fofDYTgJhHB5CgG4BkmMh/BbFCJBq0orZgmXkuDauOWSkiAIisVio9GwNAtLWc8K9hp9FxH/plJbZsu1GuKU1KaqMgXGBmoDtMpN4Y6Q8gvWS1tEnCtlapPYRMtH/C6nCRWIKHEiT4JkTIxmAecjrkdiWy1vSiap1IbfIAgKhUKj0bA8fGKlqanXpqY5Surko8nH6TcGlvyOFGp7d0tAqlwpI5YcxWbGmQZanaaEQFV2OpsGpF8yQy0E99LmmKA2rRulUht4RPWSVDIiarMwlInaEmVM1MZDTORr8tokAXhtnudtbGy0221TBactd1NTNt1yT+VdgSW/o+moba4KavqKy8YaJmh1mhKSqM3+apmB+6ahNsl4bXH9mtqE+Q1RC05tKtlxBhQGr01iFk6UKpFZ2MeR2uwsrIpxasvn8/l8vlgsCiG0laStDKnctfIj5cHuXovvNCz5HX3TqU3bjS0yM4RWJw/kDHUJ1CbFMhWCVJ5a+1UZDbVJXV2FlmtUhnKkNkmzltokMpLkTdSmalbtDHXjhnQX1JbL5X7nd34Hvq1L4VpauUk+vqa2ybvxN5faMmiYFbQ6eaBEbcQ+01Obmqm01JZKeWzx2nhX53Tw5s2bMAy/+uorTg3D4fBf//Vfnz9/3u12OQ199dVXQwaVgyQSFEK8efNGFYAezlxcLWco+qULMenfcXmuSgpBlH6/f/PmzVwu97u/+7tLS0vCwWuTAmPdaIskP3KmNovYfCKbqaZSHSU9IeYNjhUniY2UpmLp1dPDkgTozD7Q7KjfXkSJ8u5JUGBqalOdrzAMgyCo1WqNRsP3/SAI7C6SymscJhnJa7NM2gqr1yZpU2Wkv4VCIZfL3bhxI5/PZ6A2Uz2NlA7sgvg3ntreLWQ227EVzQQzV2jS754X95xaVDlRmwnEEY1GY2dnh3MHCE6aDw3DsN/vc+4jYQSqNCQlROj3+5KSwWAgRdHSohqiznWQBsyQ4oU0kdrUQFO9ximpzV1y3pDNbCm/qTrJXMHSSOzCqlhie8sMuwEz1O9eVtOoJQGZ2iQesXMcbjUaDc/zMJPYaDSEEO12u1KpeJ7XarU8z/M8r91ugykQXqlUECKEIBkSU6dfh8Nho9GoVCr4xUpdugud1WqV+FEIAcl2u+37fqVSwa0gCMrlMhIi/fV63fM8LOglq1Rqy+VyJmpLrIDY+r6p/VVry1SRJs2XCa0ZjmZb8qu9NSOTLwPalqAWi0sHtqgyRbS0RlOZXxDSllVmbVxMXvwRJr3ZSdQG+L6/tbVFzhfYrVAolMvlIAja7TYoo1KptFqtIAg43ZTL5Xa7DdbDLKTqYfX7/Xa7XSwWC4UCCKtarfq+D4FGo9FoNDY3NyuVCrFtsVhst9ue5+XzeUgGQQC2BRdTIAxAlEajwUuAqO3GjRugtrQzQS6V6ljrplujOejwWjMczVZlEiO+K1BbgqVh2NuPRZUpYtrWaFc4JdIWVzYlXPj/U5tKYURt9oEtkMvTp0/F+D1UjOcW9/b2SAZk12g0wIDFYhEDc/fu3QO1gbx831c3NuD1E4SIwF6vVywWoQpUVa1WiRnBa8PhEAnBKt/3cU1EBs6tVqtgXvyG48E+KJe8tmtqczfD0WxVJjHiuwK1JVgahr39WFSZIqZqjXZtM0c2G9xLOyZq6/f7fG4RdMZDVHAGbDQa//AP/0Avj8PhcDAYeJ6H8S8o2d/fLxQKP/jBD7a2tra2tur1erfb7fV6t2/fRsj6+vrKysr+/v7R0ZEYD4FxmqtUKsvLy0EQ9Pv9Tz/9tFQqgeC2trY6nU6z2SyVSiDBUqnUbDaPjo46nc7S0hJyV6lU3nvvvXWGIAh6vV69Xl9ZWVlfXy+Xy61Wiw+9BUFw8+bNGzdu/NZv/VY+n+/3+2lni+yVMdK1dTWio6p5A5mtzaM2XNUwmqQzeznMWympLcFU3fYmpG1UiRG1qlxMvUw4mpHBbP00AveY1NdDLkZvf6VSCa+KYRji7RIvj/SSSG4XQANz1WoVo294IaXRLhWk0/f9UqlEL7l4uyyVSoVCwfM8MR7UK5VKnudR7hCIffKIBY+vVCphoI1M4tRWLBYXFhZyuZxlGsG9Jqg+1LqRQriYi845BM+Iyf7EhqvKJMrPD9xzZ29L2tbl2BTViNnMuDioJWa6qy1eEzTUhvc4vLXRr4Td3V28RYIyKJxIhAvzV939/X0MjdGra7/fx6oRJIQXQwB64FuBxTDSj2+T0JsvopNmIqZutwtu4myFT5tAD/SD6fgcAlxF/kJqX/yRqj4SO4CpvlPpnAeQ2Rb77VmLJyneJcX0Zl4gXCrOpS1pW5djU3Rslhm0zQSJZmS2WTONMBgMuHslgd8iHlFH34gjxOQQnnajFQ/BYD9HpVLZ2dlpNBqFQqFYLNL8g+RacgPgoMENpNkGEjN5hdxsdRohn8/bdyO4BEq1ZQkcvfteGyE2M5Q9a7HCjNqCkuTnB9rcSXmx909tQ1JDHKHa4G7GRcBUYnYZLmYp/IVf/OIX6LT8TVP7Hsov+v0+/BqKom7YDNn6fnV2Qk2CgPGyYAzoIUeSe3wqZ5FVQRDAtZQsdwFffYKNVi7U5t7+LPKm/iC1Qkt9a6NcLexmZ1BF16nyO0MzHJHY/ewRMzQtO1xSvDQ4mmGXseRI47WFYRhFEackaYZUohUtbVmQSG3SVgeJm0y0q26QUHdZJSZnobZcLndNbdlgNzuDKrpOld8ZmuGIxO5nj5ihadnhkuLlwN0Mx/JRIXttfGMm9XlptlQIcXJywmcwh8Mh3y6qEiJdf/XVV6QQFycnJ/1+n+8uODk5wQVmNofD4dHREZ+c5QYINpfKDeC3OPdBOY9LyXEZEgC15XK5xcXFIAim3E8n1YepCrUyI2dqcxGeCVyaqdYeyTb6aykHNUQrf6H5TQtLxU3fijKAkjaZesmWOKZusdZS+BPUZvJi7NB6QyEb/zJ5fHivxNYr2i0g2CYqCle3VZmg7uJyF+ZLjimEqM3itaWqztiB2qRalK7tNTq6XGqTLqS7jqnHBmqzpKiVd0/xcmCxZ5qGlBmJpl6VGeotF8vtOfo1tdFKWqwawwXmEHkIAZOPHLQ51E4uJJMKvV6PrjkNcU7kFMkFJNqSLrQyHERtqWZILTVqqj9Lm5Ou7TU6unRqs7fX6fWokib97ileDuzd8vKRaOqVmJHt1ijJ/fw1tWHyETuZUoGiLC0tae9CoDjGzZs3TWKkisvwWCSGLaschUKhVCoVDSB5HpFmYOmaBxLIZQO1TfMlZbW5W6pNW39xerZKJZwNlpbnmHr8G0NtmRvPTJBo6pXYYDfPEteucCGOY3pPDCbfv0zI5/OLi4u5XA5rWbWgZa75fN6iCmILk8CYPa7tlizoIN3S2qmKScmpJllmSFNVqv3WSEdGJGMSsNS0STgtVANihXMtAhY9qp1SftXoJjG1BFzK7eKgVpxa6Wr4xUGySjX10mzQputSkonhpG3iHNIoijzPW1payhtA1EZ/TZIAuXIWJRRCzAIeIf25XG5xcVEbXct3dAv8y8UkyxEIMRLgyUlqZ/VCmljflgoembuoqek4Kp8yaRcxFw2jpPc4i5g2xMWqC4Kl46kZuQQkmnr5NrjYpi1JbTj9jdUjlmu1Gl4Jl8bAyyZ4SrqgaxN+//d/Xwr5zne+Q9dENIuLi4uLizdu3MDFb//2b/NwQCLNb3/72yQjCdPfb3/72/jL01Ij0t/c2CHNGxAEwUUc7WOqeG070Iabqt+l0ThCTVp7rbWQ39VaKIU7lpJLfuM5oLY5hLaIriRpbbi9MC3h/GJBypt2hZr7nKN99kAo86EctPPpD/7gD9LOM/C9WYRut6tuETNtHaNb6t1Go7G7u4vvHV1mxWtrd3Sl1GYPyWyhFD6TskqVl5nAZNU07eGCcFVGmlJ0L16tvDZQ9touGtKh0NKpOVEUhWF49+5d7UESaqDdh0q1Bu2CDltMi5HiAUlVqA2XKphrMAmnhckYFwst9kh5VwPtZaXqz5yd6aGWPw+fK6hFcSXpqoGSVaZitBQ+YUGbw8uvDxdqs0e3C4xGI0eFWkp1t2RKJHYeba2batdFpyNUPVrN2SyUwmdSVnbbZlUskn5TmcwbrspIbXIWYywWJha+TG1XXhNRFN27d+9qbbg0SFUSGx4qI7duyVVJdWpBPNng7JZwk1QxNUX176zgaF6s5E5r56xgMs9SCLMtlgyYedWkSs5ShnFSuWkj0t8FVeJqy3pW1HblLcYFarFrzbb0JTvscWNDJ9emrjVGa3CiAbMqOvtd1YD4IklNyppqnsngWRVIZsywUjKnrm0bllsWAfqroTY1Ziors+bx11Cp7crrfj7hWNr2fjhSOj/FiuM4iqJnz569evXq7Ozs7Ozs1atXh4eHr1+/5qlr+7A2iVll3AWmZjwyU5vW/rTQGjDnkCy/ktS1NpjKNlEG10ZqM9WcyYJZZTWKogcPHsxK2zce9jYh/eWV6FKzYRjiqzAYAxVC4Kul2nQteuYW7n0mEZdsuWTqlNGv0H5TGZqaqCRsqoVRWmqzGDGrrP5GjbVdDuxNRL1FEUFtfDUMUZs9iRm2h2skYsrSvtr6slBKIilpQ0jymtq+OXBvJS7VGjOvjZY3XlPbRWDKKfgpS/tq68ul0VrCLQ3Pidpc7JhVVmdFbVEU1Wo1fPHc8j10LRCRfzPdBRsbG3TIg4t8wwq+hNgikAh0G3uDiJURMVyQ14YPq8Brw7pltcYdm0E0C0AV1i2q4Ry0jpL/XiYsiyvdjblQs+eN2lRG0pKSPTDWUptJrylVe9GkLbgZUtvKyor2I0gZNjm4gH/oyTGKnd1U2DlxY2NDYs87d+602+1Y4Sy17ng4lWEYhjj3i8rQ9314cFJnS2wGBMsHWgj2j7ikQrlcxvEa0q8kw59kdL6a9GCTDgbB0Wj8wen7Pj0U+S2p+kwPRUmA/k65czkRaXvoRaduZxht09VKzoDaYqtLnLbgZkht//iP/zi9nncaBwcHoDaCqTVIdTQYDI6Pj3u9Xq1Ww3Gxjx49Ojk5OTk5OT4+fvz4sdrfXCr6/Pz8zp07/UkcHx/3+/3BYCCFUGCv18OvCoQPxsBfWM4vcH18fNztdg8PD7tjPH/+/Pnz5/1+H9fSryTGcXx8fHh4SH9J5kc/+tHz5887DK1Wq9Pp7O3tUcje3h7/y0G36Hd5eblSqZyPMYtGIUNbcV9//TUuLtnPTctClkDbC2nMsm3pBo7k5UhwmalN0h9F0SeffJJBzzsBqVJiQ/FyahuZvTO1BtGg8SVOuGn37t2D+wb/guvU2hYbXLk7d+5I+4vpq840osdDLBuT1W8480MtTGdiqOcTEdS/6n5qFRYLLUBhqtGlEPh99pfuaWCqeqLRC0rXbo+ddhwDU08jxAa+i3UegdZoe94uh9oSzbhMjCZZxj2KtuI4Xr58qXptLjUL4O0MLXt5eTlgHzWwtHV7du7du2fqxmqgnThU6pGoLdQdtCYU1lMpUmUulfXsH8c3GWy6MMH3fRwrXi6XaeR0hlBbjjaJy6E2FyIyBaohTl6bpQNI4fE1taWBWiaOhpmqUwJRm7YSY1aV/BcXQgjP8zDiE4bh+vp67NbE7VlQqc3RR1NhITKh0JZg7KaV4VbZPTWKqAbiEEspFTVr3ABVGMCDpFKp0Le26DHj0kLc4dLkLp/aEsO1lMWRwmuLDfSkStrF7NmbIbVtb287Cs8PHA0bTUdtkrwaPYoi3/fhnQVBUKlUbt++HUweHGFq7vYs4IWU9+S0L6RczERDEv2psSwUZqce+svP2DWZagIJR+O10Fqg5On7rKA2l+aRCmpbiq/ohTSROvgtCzsBC/xGPPnc1nYGu0BieonZs1CbuxLoefz4sYukFCttlGyYSUKJRUFjbZZK0UZst9uCTRREUdRqtSqVCs1U+r7vOKot5VQda1MhnczNGUTlCC1LikmPjLOPyqSSEqItYeA4k+MWTrqNkio1d4nlIITwfZ+oDYNuLmWeAVLbuKApCxcbtI3TMZCHOM2QZoZqbmL2MnhteKqcn5/zJOxem6ohVYrASPlQkvviKW3EmePly5c05O8O6Zt6BHqAh8riD7sqLmyitkajgaUYlUrFdDYj6ACDfVKgSZiAlSuNRoMrl8iOAlU+CnUQk7QYhiGU86TteTFRNreZPq9P8wlpK9QFUoe9iCQcbdAyRmKgGiJ/itKiXXt35tkLw/D27duJbjB/qgyHw4ODg1/+8pc8MIqif/7nf3ZJcXd3l69F2Nzc/Pd//3e6++bNG6x4OD4+fv78+cHBwcHBgRDiiy++ePXqVavVGg6HkHz79q0Q4tWrV+DZarX65ZdfmhI9Pj6u1WpCiDiO6/W65AT93//9Hw5+Pj4+xsW//Mu/4OLVq1fdbndjYwPb1IHXr1+fnZ2pT9rnz59noDYt1PUHb9++VQNxfX5+fnp6urGx8fHHH7948eL09BRlgsUf1HWHw2G/3z86Omo2m8ViESster3e0dERP3WbrvHb6/W63S4iEgdR9Ql25DZPqNvt1mo1z/MODw9JM9GKdMj33t4eVpZw942f3k0nc3MelI7rBo6OjqQs8HxxGSkWvkddq9VwCtK3vvWtcrn85s2bmdSmijmnNvVunOTKLZhuWKKp1zNEFEV37tzB0yyyIh77EWEY+r6/tLSE4SGKiBfSRCNrtRpiwR2oVCoqJZ2fn4fjnUae54VhqPXYhRCVSgVDVMVi8dWrV9oMoktgXv/k5KRSqaBBm3xAIQSmRFS6j6KINiesra1JaR0cHODlkVaB0upQvtCX1ouqGx4s64fb40+xU8ju7i5fkOz7Ps6UKBaLlUql3W6HYbi8vCzRSrfbLRaLEIO1vV7P87xCoeD7Pvw4zM+2221+3GKz2RRCtNttWmpbrVYt3hBmG0ulkud5WAoLzwjLej3Pw2t4EAS3b9/G4ZAUKL1FhmF4enpKSdMy4GazCRnf92HkysoKGdBoNIrFIlYIcxuWl5cxDUoGgPXIa8OZahf6Qhqnf8G6OANMxmjZKYHatOos0S4o/6PRKIqimzdvFidPL3VZwk6Hs1ArAR0kGgkyopUNnue9fPlSkjk/Pw+CAJqx92h/fz8cH5VADQ6j7+jDxWLx9evXqvuJW0QK1WoV18ViMZg8DDAMw0ajgfa9t7dHzCvYKBi0hWE4Go3W19ej8bYq3H358mWeHTIrrelPLFLAdPKsGq4eMssPzQFN3L59WygA6bTHR1tQReRyOdROr9cTQoAOaL8HnkngPkRZX18HO0g0RMxSKBR6vR52jNEUZLPZDIIAvIO6W19fb4wPHdeOqQGoGrQKCJfLZVw0xjvh7t27B5PAy77vr62tUWnAgM3NTbCk53m8WC7zhTS+lHeyzMaYLEymNpPGS6a2OI6jKGo2m6YtKRbQEXxEbY7TCHgxJFQqlRcvXvAsx3F8cnKCdg8OCsOw1WrBGSHf6vj4mDsyhUIBXgxGkYiPQEbw0YQQP/zhD9FPJM4iSXQV2sWVnzwOFWQKkq3ValK7Pzw8bDQaqrdLcWNlUyfd0t5NhXa7jRPRyJuO2VgbMc5wOEQR8UG0IAhQvLgeDofgI87OpVIJ1SHtnZJ4kzw4kNdgMBBCgNqQCngTVd9oNIQQH374IS2plUbWSCdeTqGBbN7e3ibCgjHvvfcehcBNQxSUSbvdzufz5DVTWYnJxR98hvQ3hNpUe7QWqnZOUBsFxeyBnyFvFvkLLSn0ImI0cqbcqY3v/fQ8D+NlJBCG4draGpERmvL5+Tl1Boi9efOGOgDeR/AWg+bLqQ0tGA36j/7oj3Chem14q8X7NTEUQtRcBEGwtbUlBR4cHMxqrC0twjD0PK9er4dsziGKInohJTro9/vIPgWi3ODbEtlRFdPmSnhbKEwCeW0qGo0G5igQCzVeKBS63a4Yr7QAta2vr6vUFk5OfZJVIFPIw93DVDKqFV4bvEtyOYm1G41GLpfjfrRkP6gNR/RewjSCyiMXkdaUJtn5d4LapMgkkcEUu5VpFToCjfL4+Jh3oTAM7TOk1DrhWwUMrVYLA2pxHAshfN8fDAZoVWiXNJyHFg+FNBsYRRHGXxAixtuVKF3+paBHjx5Bj53a4JFFUcS/vUFFCh5Rh/ZevHgh7Ua4NCDj6gFmfMku0O/3iQtQEaAMuDbwlInsiLyCIMBYG4oaj6VWq8VfSLmThUbieR59woTcolarhejELOvr6+RhAaY1HFAFQgyCAGOCMAkht27dAkGDvrEZPp/P0ztssVjc39+HAZzKiW0XFhYw1oY2eQnUxkMuIq0MJo0M76SWiLOktquCdudwlLQ9Poqi169fD4fDhw8fDofDtbW1SqUyGAxOT0+Pj49PT09psi+Kop/85Ce+72OS9OnTp91u9+///u8lh4imCzudTqlU6na7nU4niqLd3d1SqfTmzRsoBIvt7+9jpu+73/0udnHfu3dvMBhIk7w3b95Ea3748CGobWlpSfLaMB25vr7+9u1bKY8//elPd3d3Uxfo7ECzqPjLvTY+Ubi1tbW+vr6+vr69vd1qtfr9frPZxN/19XVQmBCi2+22Wi0S/uyzz+D07ezsbG1trays/PVf/zU2w+/t7dE29efPn+/t7SHi9vZ2t9vd29vb3t7e2dnBfOVHH32E5OC+CSH+7d/+bX19vV6vb21tYba01+vRxnjaD4/n4s2bN7e2tur1+ubm5t/93d9hs/3W1latVlsZY39/v9/v7+/v1+v1H/zgB6VSaWNjA2l1Op2HDx/WarVarfbgwQN6OyavDUePXxW1zQ+72QPVWPILaapUE0NmC4l87YiiaGdnJ1EMj2i88eHxi0lDMblg9dmzZ77v81aFd71Ima8UQtDI2srKShRFmOaD5OnpaTCJ+/fv86c0hpxIG1pzGIYrKyto1nhxk3KBZ77a6BNfSC+54Wq9NnWdbWaALvFKKH0dKFCWwklunaqNv4dubGzQ14pwsbm5CZ8LI4Bw04ivg8mdG1S5GCjkM1cUS4oCARprwwspvS5cXB1Jjs5csdvI/Fqq4htObYmNwPd9TCOgG5jazeHhId0FDg4OJLLDAhGM9yEE67kwyELUJjXfBw8eSCEhm3gVQoAcd3Z2YGGg25qOycQML6QZqmyaWg7D0L4bwURtjpRn+vIHaAK3+LZ2Sb+aCklqX0ilp5TQTcsCAfuyAHxDlxwFQeD7PgbasPjj4rw2wrz5bo5E5kptLjn5BlAbHqSDwQCPU3L4CST58uVL7BWnRVsPHjyQHKLXr19jJIhCaMTa9M2GKIqePHnCc6cKYIwGLEkTgmJ89gp+hRCNRkN9K583apOmEbRUIpTtAdoQE91YaELiHfqVvuEhlM1Yalqhbid8ON6NIHReGwWSKq0MF+bUtrCwwNtn5ipwAe9oV05tcVZ208yQOmbmanObiERqC8Ow0WiEYYi5Tqw/4Mu+OClgxxJnPZU1Op2OmHyNbTabWIka6uY0occ014G5BSx3gpHIC2YMPM9z2eV3ES+kU1Kb5XttYuoXUmkLp5hcaqtSm8RoJMC30AvdZnitZq2nNg0Ctq6NL/74TaO2OBO7LaRltMwGqbe01xZVqWSipO3xkm9PM55CCLwycOHXr1+HyuC91MKw40rS6Y8/AG3y2nq9njYcc4XaFxDcjR3c2ItY/DEltfGlElI3prc2aSNUwNZ5zQqchuzen8mR1KpSd4zCcxfmLCO/0l0afcMM6TW1xW7sxoXngtocVaWSd5xGiONYnVjUOkSmTeNknqrn66+/pvlBU1w1lsWGtJg3ajs/P79//36n0+l2u/v7+81ms9PpfPrpp/Sp7lar1e12nzx5QvtJIYlf+ouQJ0+eIBB/cSF9YRx6INBqtaSPj+Ob49ggzD9Tjn2mtFmVvmlOfyHMgVs/+tGPEItSf/LkCacwLL2mu4iLATgKgQwWqYDabty4cWnURr31QpkhGyxcpuJiqW2GyEBtn3zyiUsj4OvRLO1GvRUp3/mwaLDEdZHPBk5tc1K5y8vLtH+LXrVyk8BKLvVaC+xCMeHGjRva6Nj7ZVK1uLgoBS4uLuYVSDvJtFhaWuKS2ij8rrpT7dK8NokEVGaYh/YTOzuSGmqzxFRvzUluOWCSyzSCO+wuG0cGMW1jlQSyOXE/+9nP3JfsXk7zpRd/vqxB5SMLW2l5ynI3kRzTJmeKBfdqYRJqSG68u2AhJS7oU5SAqfvPIbU54ptGbWQhRvGjq0No+HJJPLlDU+szqkSmcqsL2aX6XtulNV9ks1KpaF0ngsmronDu+PAQHgXelirMA7UemZqWpETy7HignWpNuUvEJXyKMpHa5q2/W5CR2njOL9VeM8gquiiXy5julBUMDxIAABlwSURBVL48I4HfJRlVuMIg/VWhjeUIXznyslKpSGdlcmELlpeX55Da4vEEi53aJIbKKdSmUpIqRiEWkjIhp3tFVWVUquLXFJE8R8kAbp6UKFeYz+cr80Ft89Pl7bB91EiVdryb1gh7RItCe6Fjv7p2jl8LPuclhSSCLy6nv6VSia/VnAb6I5rbbcstIDQc9m4pT5dAuxIXMazR499WoueB+gkm7Vet8OW1xK8z0YeYtLcKhYL0LaZisUif1TKhqPuCk/odp0So8hbavTRq4/X4DaG2eDI/qnSGvE1fHBmiW6JMOfPoeNItxP7kT/7k4tpiBvAyoYqWBKZvuI4aUER4JccGW8LXX38djb/KSwIceKWlCWh6l//Vr36VOFDwq1/9ijTYQZ/bUy/UcOB///d/Xyfhl7/8JS6Gw+Hp6elQh//6r/8aDodnZ2c8BN9VvtCDlu1U8G6xm3F7vBbZWCZRbaIGl+g8oWyl7xKLmrV9SUc8/m7HnFCbWgsWapuy4U7f7vnAIo0/RpPDlLF1PloCF0ukBpfKJT2qMdMDjjbPbzQ5p5SY3wzQUpslZP7ZTe+1uWMmOTQZIF3by1QiaLU+7FlQq80ey6WHlEqlOaG22FBT899A5x9TlmE0nkqyCKi0fhFQG/83gdoyx58faouzFv3ICi5JD9UwDDGQxx+2dP4L4c6dO3NCbaYymdsGOifl5oLpy9Cd2qZMKBH2XvDuURuuRpneHOeT2lIZ5kht2NFJO+Q3Nzdpwzw+hdTpdOLJ9ndNbZkxJ+UWO3v9mZHKa5smobRIpLa5bTzAXFBbosJpCjRRXtLJy4GH81GPKIpWV1cxlKaOhhDeLWqb85Z6VbiEnmwf3LiqJvTNobZsyBzdFNGFibKl6KjQTvFRFJ2enm5vb9frdToeqdPpPHv27PT0VJKUqO0imoKjTpe2KNHcBTVclwm+t2/fRlk3YMwcaYvOBEeGuugBNXeoLKYNuWozjZCnEdLioolGvZvNa7NEtHhtEqIowo7lIAjOzs5wTAEaYrvdrtVqkvCsqM3S1mdIbaq8o3AqzAlhueOCqM1EYaZw961+s4Lqo5lwmVa5I6PXlsgXcZqerD4ZTAL2Z0W2J4kkb1IShqE/PmM0juOzszM6kwUCYvI7SBdEbXTtshlrSlxEX3JcFSiZYfoWy8zMulI4ru2wDH1cOeQFLGZTL80fl6ktka0kDtIKq+xgJ3jH54CLbfEUDCIZLKnFxCgct3a73e126ShJXEjaZkttV9KNTb0IrZYf5hKNt75SFKm7alu8qT84QtVgSTFij4TIjUockbZap8y1Je+WXHNcUFvSpk6r/ywWWkxNzJSaHN1N57VlprY4iZjcU0+8m9aR1PqMJqqNxmcd0IdY8RVydatmNCNqQ51JC+hVAW31u2+q52otMokhibcsrqVktqkpm1J0RFrf1uWJm8EMbWFKXZTybqpid5iUZLA8FSgj8WQbs9ijLQEqMcfMxqZ1bRbO0nZ+VSw2U5u9oWhVaa2y6DeZ7Z6olFO6FUVRhR2rjHLE6Jv6GjU9tSG6EIJ22lt27GMLvWknv7TfnrbW12o1x433FeWYKC34rYaCjY0NbTjH7u4uLbKRbml3ztJO2263q+6x1e7Gpb9CiCl7uHu1RuPPOJtg2tQs2Ik2s4ULU1gYREs3lNlI90ySxNRAU3WoZGfSACxIHdjSq+MZUZsLSFK1TZVRzZNgMskUPVYolYvVarW1tbX//u//Pjs7e/Xq1XA4LJfLu7u7qrNz7969KbsN0O12/+qv/gofjMUhmN1u97PPPsNRp/jb6XQ+++wznLxJ4U+fPu31egjEl107DPzW3t7e3t4e/j59+hSBuHj69CnuQgwye3t7FA60Wi263tra2traevr06c7ODsQQhWNnZ2dnZ4cutra2dsaABrpF4DIcjx8/fvz48c7Ozj/90z/hgFGS/Nu//VtcbI/xwx/+EMIIxOGHad/RUjVmwsbGRrFYfPDgAZ1P+uDBg/X19ZWVFZysqv5FCF3wKI8ePVpZWalWq6Tte9/7Hv9br9er1epf/uVfItYKQ5WhVqtVJ4GQ2hgI/OCDDyiwXq/X6/W1tTWSwXW1Wl1bW6tWq/RYXVtbK5fLuCBUKhW64Ndra2tpP5ZTLpcR99atW4PB4Ouvv6bSdqI2E2VkgHvT4W3IUa3l7siQEbW9jiapTRWDP8LfELkfxzEraguC4MMPP6QHOz3Gpee85UskQjn0RHvBNUuuhOpi8JPxTBFx7JPRS1FssyBQzhbgB6+IycNZTKlAJhifbhWGoed5L168sLgDJoysT1kt4Pmq5ydkg+W4BgmBcjgDXXPvlReUsFaK9lYQBDCJFy81kmB8mKHaYtFO+DdyxOQJPhBWT5mgEySCIMjn89Kb04La2xMZgarTwjK81keTLph7u+FmpOUsRzHV1FEStaGseYipV8yQ2lZXVwVjGWo0UqBQDjQJJ7/jpLYYMckOJq4UCo2q0aUDpVwIS+iOSjHJqOymipGMKXXpzc7zPByWHLATYBPh0vJVuFCbyWx7LHvJJJabow1CaWNSS6CzWcFlITvSUNuuAuXwVgInMmq6PBaRIC4KhQKoLZLG2tQasjOFe+1KUWIdWdj1qzKSNru1WjEpumRMbKU2d8yc2sQkj6iNTLqQjhzWcpNKkUJhMVO7116biM/SQ6QQ05l7iTZIMqGOyiVn0/M8+nSa9LH1xIaaqmFEUZTNayOOMOVXahJaDfxC60qrpcTDtYymjSWlNRgMhNK0QFuhzpWjvxQxmDwbWzUS1IYP8OHlFAWehdpU1rBUtqTTpcVIgRZ74qzUppWRjDS1b3dcBLVR1VpexwjSSelSg05s31yAWi3vSKqMUGCiHuHGUBbN6uunWgIqJN70PI++ZMupzd6i1MaZWIkmalNNSgWJSlyEE7lV21rUx6RwoDakJVGbeoK1BME4kahNUkIgaltYWFhcXFxYWECBZ6S2mPV5E0dwPbwFqGJ2Ayz2xJdObdpsqrkGbt++HTq/4wDR5FQ3kJbaeIja+FQ+4u1VbWRSUw6TqC1MIlDtLXvfdhxXkqhNTU7ttERtuVzO/YicOKnZE/i8noXaXHKXWJKSHk4u0iiVpXAsCakCUlPRUpv2rZNC1PbmTm38FTWfz9MhOyh521ibiSO0F6Y61mpwaSWmv1pt2XKhNXtkpTZLK1fD/+zP/mw4HEqzb9rJuGi8nqvb7ZZKpY8//vjLL7/EV1Xj8S4uNB3qvbiWWpt0NvDJyQlF6ff729vb3//+9zc3N7nY0dGRNi5935UCcWgmBfJbsOTo6EjbH0L2PsU7tulsY+iBJEJOTk5M0fnvyckJLCSBzz//fHt7G2dmw/KTkxOJ2nBe1OLiYrvdnmY5Kz9zttvtPnv2DBMUCHnz5g3mCi3uFeUOFceLnWQw17y9vf306VMejmtJeDgc8sNSIUDVRJJffPEFLzQqUh5I5Ualh1hqOwGCIKDzW6nZgOm++OILblUYhv/5n/85HA4Hg0EQBDgc9vPPPxdjahsMBoPBADJQghAYQNMICwsL3/rWt9JRW+zGHaqYKcSiUOKLkZXasiFRm4t5HKa79+/f55/8l9aj4YIvK6MP9ufHR1JWKhWs7ZKmEXAdKeukJD+IP+sajUaxWETb4s9wrcvAZ81MbzHawT6p39KwjjSrJcnwhIRu0kAyxmK5CizHIyP584BeZHAmi+/7WoclHH+eTwJfzKXe9X0/l8v93u/9XqPREELAa/M8z1ICBFPW2u12oVDAEr9er6eWm4U3qU5NBW43SQupuGjwi5IbDAa8tCmcIxy/VJpATYhrkFThWAlUZQpqy4wM1DZK47XNyqpUcU3UpoZvbW1pz8eqGM7WohNM6KymQqGAzQ9EbbxJSUwndG4/4Ps+SLNUKqGnCSFgxu7uLrocNfRarQZGbrfb1IBwNDIX429/CHn+/DnWweDNy/O8VquFu0jC87x6vU7tEnvU1tbWsJ6GWvny8jI2eFBarVaLHglkv3ZugZYKw3iEVCqVIAg4I1BvKRQK/ITQvO6cY/XgGBwWoz0ahgLz49ORc7kcnlLIQiJrWOjJ931Md7TbbXpKUVenLCME+cVZ9BTYbrd3d3eDyfdTFfwRCMDzxWpnyVo1kABqk8gIJnEbOMep8kJHiEKhNqrHqbw2LUNl9tq0jo+WTezKHZFInWSkyRi7VRx8jbV2ubaKRqORz+fRt+EaBLqxNrpQSU0ND4IAvWJjY4M6ABIqFou06F8IgZWT+MBJsVhEG8KmBSlQdXB6vV6xWMzlcjC+0Wh4nof+AErCKVaIDi/S9/1qtYr8wjAs7wQXw9sKggCMXKlUwBGmDrm3t1csFsGtsKHf7xO1gXE6nQ6nY+610bdF3aHulMA1GJY/n2A/LDHZbwIxV6FQyOVyYM+9vT2UJwqqUqmUSiU8IYIgoMckPY14IMxQSYqu6UmGSmm32zg/DEmjXlC2pNP3fa0/CJJFonQUGXEZAm/evEkmkTyeBGRts9mkRwsee9mpTUtDibcuCFr/yD3uSCFQrWZJPgO1SRamRbvd9jwP3Y84MWDr2tBiQt3sp3aijULohZTfqlQqDx48oIaI/g/6Q0dCV+GBaMShYfAblEQKq9UqdUt0v/feew9Jo7cLIbrdLvUW6N/d3YU8PJQgCKrVKicUKYNUAisrK+RpoiSp+4FW4Ozw6ERtNEM6k0ltMV5WgkFSmkbQvpA6gp5PtFcMJeZ5HtgT+8xAYchsu91eWVlBJcJrhtNE7KBNyPf9ZrNJFAOx9957DzrJhk6nA+6jhtHpdEgnf4vEs42eo2tra1AbjF3Lzc1NrLmlRPEkwIMBpuLxhuclMsJ9t4zUFs/Ca1PvapnFklY8C2pTLVdVxVmpTbUwLUL2lSS60FIb9WqCdvCL/oKq+PKoIAgqlUqn0yGxdruN9kdAq83n8zh2k56Z2i4xHA7BX9QVV1dXqUOCXG7duoUWCeVol2i+Qgj4ZRwQWF5eRurkRxB4CYBHKHV0AKSez+dpxI2De22NRmMmvAbXGzniB19J1CZVnFDeELl3jFiNRoPKhN4Z4drwV1QwHQ3gotAosFwu45r7VjxRfGMV1xipxAW5SLBhfX0dLhVcVM/zaM8MqcLMAAgLscR4iBOEBSIrlUr5fB4h5NsG49VqELt16xb4Dm8blUqFXmynpTa6sJBLbKAPdwEpRS0BmVJPzMhIIZ3R7KjNvemnwvn5uRAC1MZnA7/44gsxOY1F/EIXNEPa6/VWVlaWlpY+/vhjDJr0+/3Hjx+XSqWHDx/u7e2hcQ8Gg+XlZd/3u90u9oF2u91+v18ul33fb7VanU4HgYPB4Oc//zkliimwk5MT8Eiz2cQm1mq1KoTwPK9Wq+3v7+/s7PzhH/5hs9kUQjSbzXK5vLq6Wq/Xl5aWdnd3+/1+q9UqFosfffRRq9Xa3Nys1+v9fr/dbn/ve9/b3d3d3d3FVwBoGpTPhwohHj582Gw2j4+Pu91us9ms1Wr9fn95eRndYGVl5d69e0EQcPeWU1s7zeIPwNSu6ExV/he8f3h4qK0vNTucd46Ojvr9PggCZQIi63a75XK5VquhphBYKBRqtdrm5maz2fzwww+bzWa/3y8UCuVyuV6vf/TRR5ubmyjwYHJiARqKxeKnn34qhDg+Psb4QL/f//M//3PiUzDp3/zN33ietzVGvV7nTx0+FAjLFxcX9/f34cQVCoXd3d1arXbr1q1ms9loNHK53NraWhAEa2trt27dQnV/5zvfAQXv7+//8R//8erq6vr6+urq6v3796Hq8qht/qFmZ1a5UBu9GpgNoDZp+KzX62kHhgL2VQzUOo3L8hcZuADt8UE2vC+1Wi08hxGOdJvNJp7PpCFQIMZj9jTYRA9/+nDI/v5+u93mviQaOldbrVbplYq8S5qBoaSlCUGE0AwGjO92u9Ajxj7I5uYmd2xdqC1D7UugUVRpGoHPHlIZBsp7IrFDsVjEuCQGDeGZ0vTF1tYWVTQNgYGGxPhlH04cBWoRjN9eaaCg0WjcvHmTvCokF4wH72gGbG9vT9JDoIFdPtiHHJHXRnNHFA7vDBqktDCQyh3Ja2qTszOrXGj7gzN92aBSG7jGPuWKQL7ugS6kqQbe00wvtlwmGL8ESSliEIfWrKgDf2Ly3Qfm0dAJ9QcpOaGsRUDXpWzynFKmgvGiAUmVNLHrjde1XQK10YQG7/ztdrvb7apPqWDyw030kCDy4mP2xPVUgJChGVIeiBnSMAy136SCJJkk2HiZ9EhDcu3xzAmJ8XkVCscYGcLhnQXj2ST41BSF5MHFeJhRq6NZcumxOu9eW6x79cugwRJRzY4qHOteMSwtnuuR7iYqcYFEbYBp6RMXUzceSetyLUQmOYnqTgPJxQiC4Pj4mOYHtU6BxDVo+mtra1yPhY+kuIECU3JanUCi16Y2HjXQpaKJ2rgBxNHkzvCZTf7wwJAohzRApmZfC+J9MXaxMfpGTwj+TEqrFj4yd7GJzorj1TOVSoUG4HjFkWH8wQnfkN8ywYna1Mpzp494spO7CMQKRySaQbdMGiz287jaRjlKQ23u+XWHKi/GY21qYzJREtFWOImh7uMcUlx1k4OUrsqSAIVoqUR1Ek09RIXKyELxvyzKTfYI6zSCqfHEuvbmAloNI1nS6/VMPVawpWTBpLunLaVEJpKKIrDuKjVpC9leKK1aArImuXISKYe6JbvciUMVgxDF5NOUU1sul0vYaGWqV3f6yIzYjdoSNVgiSvQhhccpqc0xURdtkgEcQkdt0uIPkfQFN6EsGdEyVDi5e9nUrIXOj0ts6GS2KsP/qqNRErVxA6S4KsVLgZI8vZBK2+PV2rTcSqxfMCZevkwlowV148StF8H4DZGHBJOv+SpVBQZn2QXaSpGuh+yrCuR/8UHSYHKNrmCEJbVhdWcLxQrYHtJcLocyd6I2qUa1PVnqltqIjk3BZAZP3QStbe7JxWmozaRKm/EM2ghCCL6sAaBtlVJr03Z42uhHc6aEn//859iUJ8a8A83UVbTbPyUDcIvvfJS6IrVmvs+U6+fKpU2OfNuj1gBKSyvGoRKl+zSCtqLdW8v5+Xmj0SiXy6qR0jZPqQSwa/Lo6Ai7LIUQ2GWpbkeT9mYCR0dHiIW/PK4Y13IQBLQ9k+8h7Y+38aLlSGZjjt5eI1ISIKPDw0MyDxR2fHwcjFeKIPzzzz8PxvtJofDw8JD2mdIEAilZWloCtd24cQMF7robQa1RrcxoFtQWKw6R2pIsZkjXiW0uIfM6a01qVXnH/No1CyFoYW0wHtBVIY0rC+W5LT20KRYX5u2GP+qlJ63WR1BT709uBuKQNNtjUTcOdK8kYvLdROjAlfPA6WdIpVqz1DVeSLW+lWS8WoOqTH9yO7CptC1VIOmUlKvmSUXa121ZDZQ2JpR3ajVHgblVm+yUQGNtNq/N0rETq3ZkprZYedbZezhXriZnMUMbkiotbaJSlERVphCCdnWoVlIIQctltTsccZevquUbHr3x/hgK5OPWpVJJGyIF8plQHsKv6dwZC/D1i0p60Jg3rSOhxaLSXwtUGd4lEqlNbRjaGtcqweIPjNMH49lPjChh94V2KY8026gKWMC3f3FgzlQbhZhClVHZhDY/WMDjUsYtdCbJJ+oPxqNyTtQWmznIVK8jB2qzk4V7Y0o0Q7rWKnfMlMlak/2qvGN+7ZqjKNrf38fMI31cDMMKtAGbBhqoggnqX4y58lhcEmOxFEIK6ZeHcOU8oqqckpbsMdmpDefGA9JfU7hJjLKjjrUltpBY11NMdQ1qo/3z2F6qNdsUTne14NHtypeWlix6CGSk9BClkKWlJcuDFpIkw5+4CIRy6WlKwNcH7IAM9PCmiAKXqS1z9zOF26nHHXbliYFpjR8ZONpFldZIF0m75iiKhBBqqzV1Wi0WFxfdhadEPp9HctzCVNZaNOcc8pKY1gJDzrz4g9ej1IxT1S99+6jdbufHH+HRWqU+JCxQM+IoeVVA7iyY0k6U9iypzSQ8E2qzK9cmZ4riEi7pTDQj0Ui7BkeEYYjHlLaj4lNIvEvzzi/dMnGBKsA9AjW5RN9B60dIktqM0C1QJJekZ74l3dykp6MqV7MZBIGlcqenNgLGhix1cZlPoMyAkZyM6JYakmNsRb78gvk9gL+ULBhYXqJIioVCdqW2zJ1zhtRG0VXl2uRS2Z9W3p6cKuOiLRFhGKq9WkscgOXVQ8sOuFCZRftXZVJTWqqRkjYK5D0BtxYWFrQm5XQkRSapevJJdF9Qjn2h6tPWdWZqw6Zgk525y8JFpKUtfw6td5YbUxIX08rziJIYfmEAyjkFtWXrn9NTW6p0XfLiksqU0S8OZ2dnONqZznhOxJdffkkXuKbfL7/88j/+4z++VCCEoF8tXkziZ2O8ePHi4OCAwn/6059SCN3NgB//+MdSyLNnz37yk5/QNfDjH/+YrqVbdjx58uTg4ODs7MxexTOhtrdv375+/fqTTz75UMH29rblL4U8evQIf1dXV/F3dXX10aNHDx8+/OCDDxDIAfkPPviAR+So1WofOGN1dfW73/2uXeb+GDibmf6+//77d+/evX379vvvv//++++XSiVc/Omf/mmJ4e7du7h19+5dLoZr+nv79m36i9+/+Iu/uHv3Lsr5Yr+ye41rXOMaHFM81tPh/wFbigzijoGBGQAAAABJRU5ErkJggg==" alt="" />

\linux-2.6.32.63\mm\page_alloc.c

void __free_pages(struct page *page, unsigned int order)
{
if (put_page_testzero(page))
{
trace_mm_page_free_direct(page, order);
/*
首先判断所需释放的内存是单页还是较大的内存块
1. 如果释放单页,则不还给伙伴系统(在申请内存的时候,如果是单页,也不从伙伴系统中申请,而是从per-CPU中申请),而是置于per-CPU缓存中,对很可能出现在CPU高速缓存的页,则放置到热页的列表中
free_hot_page简单的进行参数转换,随即调用free_hot_cold_page
如果free_hot_cold_page判断per-CPU缓存中页的数目超出了pcp->count,则将数量为pcp->batch的一批内存还给伙伴系统,该策略称之为"惰性合并(lazy coalescing)"
这种策略的原理在于: 如果单页直接返回给伙伴系统,那么会发生合,为了满足后来的分配请求又需要进行拆分,惰性合并策略阻止了大量可能白费的合并和拆分操作
*/
if (order == )
free_hot_page(page);
else
/*
如果释放多个页,则将工作委托给__free_pages_ok,即将相关的内存区添加到伙伴系统中适当的free_area列表,即合并到为一个连续的内存区,放置到高一阶的free_area列表中
如果还能合并一个进一步的伙伴对,那么继续进行合并,转移到更高阶的列表,该过程会一直重复下去,直至所有可能的伙伴对都已经合并,并将改变尽可能向上传播
该策略的核心思想是: 尽量创造出尽可能多的大块连续内存
*/
__free_pages_ok(page, order);
}
}

这里存在的一个问题是内核如何知道一个伙伴对的两个部分都位于空闲页的列表中,为了将内存块放回伙伴系统,内核必须计算"潜在伙伴"的地址,以及在有可能合并的情况下合并后内存块的索引,为此,内核提供了以下几个辅助函数
\linux-2.6.32.63\mm\page_alloc.c

/*
* Locate the struct page for both the matching buddy in our pair (buddy1) and the combined O(n+1) page they form (page).
*
* 1) Any buddy B1 will have an order O twin B2 which satisfies the following equation:
* B2 = B1 ^ (1 << O)
* For example, if the starting buddy (buddy2) is #8 its order 1 buddy is #10:
* B2 = 8 ^ (1 << 1) = 8 ^ 2 = 10
*
* 2) Any buddy B will have an order O+1 parent P which satisfies the following equation:
* P = B & ~(1 << O)
*
* Assumption: *_mem_map is contiguous at least up to MAX_ORDER
*/
static inline struct page *__page_find_buddy(struct page *page, unsigned long page_idx, unsigned int order)
{
unsigned long buddy_idx = page_idx ^ ( << order); return page + (buddy_idx - page_idx);
} static inline unsigned long __find_combined_index(unsigned long page_idx, unsigned int order)
{
return (page_idx & ~( << order));
} /*
* This function checks whether a page is free && is the buddy, we can do coalesce a page and its buddy if
* (a) the buddy is not in a hole &&
* (b) the buddy is in the buddy system &&
* (c) a page and its buddy have the same order &&
* (d) a page and its buddy are in the same zone.
*
* For recording whether a page is in the buddy system, we use PG_buddy. Setting, clearing, and testing PG_buddy is serialized by zone->lock.
* For recording page's order, we use page_private(page).
*/
static inline int page_is_buddy(struct page *page, struct page *buddy, int order)
{
/*
伙伴的第一页如果在伙伴系统中,则对应的struct page实例会设置PG_buddy标志位,但这不足以作为合并两个伙伴的根据
在释放2(order)次方页的内存块时,内核必须确保第二个伙伴的2(order)次方页也包含在伙伴系统中
*/
if (!pfn_valid_within(page_to_pfn(buddy)))
return ; if (page_zone_id(page) != page_zone_id(buddy))
return ; if (PageBuddy(buddy) && page_order(buddy) == order) {
VM_BUG_ON(page_count(buddy) != );
return ;
}
return ;
}

下面代码用于确定一对伙伴是否能够合并(使用到了辅助函数)

/*
* Freeing function for a buddy system allocator.
*
* The concept of a buddy system is to maintain direct-mapped table(containing bit values) for memory blocks of various "orders".
* The bottom level table contains the map for the smallest allocatable units of memory (here, pages), and each level above it describes pairs of units from the levels below, hence, "buddies".
* At a high level, all that happens here is marking the table entry at the bottom level available, and propagating the changes upward as necessary,
* plus some accounting needed to play nicely with other parts of the VM system.
* At each level, we keep a list of pages, which are heads of continuous free pages of length of (1 << order) and marked with PG_buddy. Page's order is recorded in page_private(page) field.
* So when we are allocating or freeing one, we can derive the state of the other.
* That is, if we allocate a small block, and both were free, the remainder of the region must be split into blocks.
* If a block is freed, and its buddy is also free, then this triggers coalescing into a block of larger size.
*/
static inline void __free_one_page(struct page *page, struct zone *zone, unsigned int order, int migratetype)
{
unsigned long page_idx; if (unlikely(PageCompound(page)))
if (unlikely(destroy_compound_page(page, order)))
return; VM_BUG_ON(migratetype == -); page_idx = page_to_pfn(page) & (( << MAX_ORDER) - ); VM_BUG_ON(page_idx & (( << order) - ));
VM_BUG_ON(bad_range(zone, page)); //例程试图释放分配阶为order的一个内存块,因为有可能不只当前内存块能够与其直接伙伴合并,而且高阶的伙伴也可以合并,因此内核需要找到可能的"最大分配阶"
while (order < MAX_ORDER-)
{
unsigned long combined_idx;
struct page *buddy; buddy = __page_find_buddy(page, page_idx, order);
if (!page_is_buddy(page, buddy, order))
break; /* Our buddy is free, merge with it and move up one order. */
list_del(&buddy->lru);
zone->free_area[order].nr_free--;
rmv_page_order(buddy);
combined_idx = __find_combined_index(page_idx, order);
page = page + (combined_idx - page_idx);
page_idx = combined_idx;
order++;
}
set_page_order(page, order);
list_add(&page->lru, &zone->free_area[order].free_list[migratetype]);
zone->free_area[order].nr_free++;
}

0x7: 内核中不连续页的分配

我们知道,在内存分配中,物理上连续的映射对内核是最好的,但并不总能成功地申请到,在分配一大块内存时,可能竭尽全力也无法找到连续的内存块。在用户空间这不是问题,因为Ring3的应用程序总是使用内核提供的虚拟内存分页机制(当然这会降低速度并占用TLB)
在内核遇到无法获得一整块连续的大块内存的时候用,也使用了同样的技术,内核分配了其虚拟地址空间的一部分,用于建立连续映射,例如下图的IA-32系统

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeIAAACYCAIAAAC3RX3nAAAgAElEQVR4nOy9UWhkyXU/LMy8NPswEEODAy28oZmskcji7QlDaA8b58qyg0aMnZblTVZIeL09ysTWyHLWLQs7jJRJHLWG9RINih2uRMb5W5P1gKcyXjsahhBoZh/MSsExFyshQfglgd6HfdLLPt3+Hn7fPZw+p6pudUuaXc/qPDS36546derUqVPnVp2qGuicwgcD4jhO09SPk6Zpu93ORSPkQMxTOIVTOAoMvNcMnMJjgkqlUiwW/Ya10WgMDAw0Gg39qt1ut9vtJElgndvt9iuvvFKv10+M31M4hVP4/+HUTD/JcHh4SM9xHA8MDPznf/4n/sLgcuQkSQqFwsDAQLlc5hk7nU6apqVSqVgsDgwMVCqVer1eLBY/8pGPxHFcr9cbjYYx5jFU5xRO4YMJp2b6SYa1tbVyBjCy9LdQKMRxTJhpmlYqlYGBAWPMwMDA1taWIFWtVpvN5sDAAGx0uVz+whe+kCRJu90ul8suH/wUTuEUjg6nZvpJhgsXLhweHh4eHi4tLT333HM7Ozv7+/v379//yEc+8sorr7z55ptAe/To0XPPPffcc8/9+Mc/7nQ6b7/99u/+7u9+4xvfIIR2u33u3Lmnn366Wq1euHBhYGDg6aeffv755y9dujQ0NHTmzJnx8fGbN2++Z/U8hVN4ouHUTD/JsL+/n6YpHORisYjlQUCz2Wy3251O5/XXXx8YGBgYGKjVavUMPvaxjw1kgAnop59+emBgoNlsdjqder1eKBRAPIqigYFTLTqFUzhBOO1gTyzEcVwsFovFImac8fzUU08NDAwUCgX8jeO4XC43M2g0GoVCIYoi/K3VasViMYqiNE2LxSIWGJvNJmY5BgcHMXlyaqZP4RROFE472BMOsLCVSgV/x8fHy+Uy/OhOp9Nut//93/+dkNvtdqFQsM4yV6vVThYuEkVRoVDY2dlJkqRerw8MDCRJcvJVOYVT+IDCqZl+woFcYPzF1IfASZLEGNNsNuM4LhQK5XJ5e3u7Uqnw+I1qtWqMwTIjTDMAK5OnZvoUTuHk4NRMP+FQq9VgTMvlcq1We+655wRCmqa1Wi2KoiiKMJsxMDCAv9ytptnqYrGIuWnEftRqtdMYj1M4hROFUzP9hAO2omDSeWBg4MyZM7VaTTvUhFwoFKybVqrVKqw5PO5CoTAyMpIkSRRFxWKRvPVTOIVTOHY4NdNPMrz55ps//OEPr1+/XqlUxsfH//Zv//b73//+F77whWKxWK1W33777U6ns7e39+MMvv/97585c+b555//8Y9//MMf/vCv/uqvvvCFLzx8+PDw8PC3fuu33n777VdeeeXChQsLCwvf+973PvWpT927d6/T6dy4cQNT1e91dU/hFJ5MODXTTzIgioNvYwFgogO7EN98803EdRhjsB08SZL19fVOp9Nut+Emp2k6NTVFx30gnq9ardI+xtO56VM4hZODUzN9CqdwCqfwvoZTM30Kp3AKp/C+hlMzfQqncAqn8L6GUzN9CqdwCqfwvgaLmf6Xf/mXjY2NjY2Nra2tjQy2GODv6164f//+/fv36QHPr7/++o9+9KP7Ch4+fEgPDx8+/Ld/+7dHjx7hGQ9I4fCzn/1sLwD2bdDOAH9/9atf0XPbBm+//fbbb7/dbrcPGYi/GtI09byit2mavvvuuzwRKakNCC0cBGUPDkcQDPBXvAq9ctXJLhPoCbSUwnP1hK9bR6T0R9kDne7bFXrNyLutC/MYuQ2HkxBR6pASl6HOktoOWBd5dRF9QwgFF46HAYuZnp+fbzKI47iZB40wqLuhVqvxo394Yq1Wm5qawkMURTUGUY9gzVKtViuVSqVSEekVBvhL6UTNxQbqQq8086J2WiBCXHNzc0ghYSKFw/Xr13NbCg3qApPB9va26YZWq0XPiQ1c6Tjs1AMY83RKmqaUkqYpofEeqFP4K4FGdASmx6YIxrRp8ICV29xc7zlwKXGGqVFEihaR9VlIQ5M63lp03JaXJ+bm1a9Cmj6EvWMw0+h1vOPpZ2MDgdNqtaz9WefieSkXtxGiaIHg4seKoJG5heKJVoClW19f5ykhA1uj0aAhjY9t2uCKsY1MNh/MaOgiGBsbs44cGGmwJ2VwcFAMNhilkILzmMrlcqlU4miVSgVo5XIZv+VyeWhoiIYxHBtiHdV6BcF/zQZ8INdDOx/h5ubm+LAnhI920cMbGtc6sLm0JQSEerez8Ec9pNFDqiydNoJp95DgwteDhGfYsA5mws7ygVOXQs/avgfy8P6BXOvst+w9EQk104uLi37nSL+CFlqNssbhtlKbcmMzyiKL9SHX3eM9IaRevAgQ5xXhLFFFrEXrjqpTdF0S78AjhMNzCWomG29gW0dHRwWp7e1tIOA8PJi5arUqBidCazabtVqtXC5Xq9UoimDskFEPaevr6zRu4RcpuaCHK+tgpj87yHDT8X5i6MKmefFNFvhlxj+kxKCCVzTmRVGEMQ+33tD4R+OZh7gYtAIHthCgAV6M+vp7TrsU169ftw5yor302GbUwOb6hvMrPO9fYvihxIODA/6WLCAfTlI1qnG0XJN9omC10T5vuifw2ykrsrYyRwSX5x6S13SPATrRqEFCjAqiOtZ68ez6lSAuaIrhzXQPZiR/F5Mw041Go1KpNJtNTgfzG/V6vVwuR1GExImJCZhdwiRS9Xq9Uqk0Go3NzU1YFhCv1WpaIFaVEHIgHErXI66xOQEuKdHfcrm8vr7OU4wxY2Nj1sZyARkaYVPoWdgjeiiXy/V6HdaNDFmlUpmfn7d9pFlAOPj6i03gcEPp+jKzTq9pwy1++XhWVIAPNWxtFaNXFEVjY2N6vLF+cvGbhvjAhm84mpz0f6jxt/rLLHB4i7J5SzEDyUc7/laAGOFEq1lhfX297b4t+njMdGKzU4H4fh/8iJDLhj+vMFKCoNWO8B5uZUOYEs2tRybCrOhc2vQkSYI+jx2JN2/exAMhbG9v1zI/Oo5j5IUJrmUOMtkjzHgge6vVajab1Je4maaiQ8y0Bi5JF6a1vty+G2OKxeLQ0JDowOVyWchfM2kCzDfhkNBMt55AgNevX0dnRo+tVCpLS0ueurskoFNcGV2sWuUvJCDkyf8SZVyGSRaHPrAqlYpe0qDvMPrLH+gvMkJiZLZAGRZTeN+ugY0GMz3U6ZGPxjOX6XSNeWSahRF3fdWJv/zjhg8kzWazfzPdarXeeustoUDiudVqCTS/MhFCq9V68OCBHzMQeOlUBBI9IwGxYX3VyuDBgwe8MwNfzIS89dZbXCBEBxQo8a233jLKTBARAGcbpbQYaJqtbqBcYKnVasFMX79+vdVqraysnD9//vLly6urq9vb20tLSyMjI2tra1QKsm9ubk5OTsL7297eXltbq1ark5OTm5ubYPXnP/850C5fvlwoFLiZ5jwLTaDqU61Jbp4U0UAkSdEEvNWMMeVy+aWXXlrphkqlwqWdJMmDBw+4GXJZuu3tbVgTjkA1xd833nhje3s7SZI4jkul0ujo6NWrV2dmZmZmZl544YXLly8PDg4uLS2J4qgLmGyERgrXEK3eVhFRi9NbkpLQEKoCSYCniLonbBwaGho6f/785ORkrVabnJy8fPny6Ojo4OBgtVrV8uGCosYSxRljHjx4sL29PTQ0NDIyMjk5OcPg3Llz9JFHFLh68+7A+QQOeq5LkUhthHi5wHd3d0FBN4EGzgYeXCZImIhbt269/PLLe3t7R/WmjbK8pruHaFZcdHjzvx9Aa1WiascZFqrsSeH4AN2QXG5ckqI4wW2L+ZKcASsOedNIieMYfmUURefPn4/V/CChNZtNfHIODQ2RDy4kFrNJD8GJNtO6OiHAu2jCVhf8EigWi8vLy4JVHJzNqyCknajWdIFmoMXcUpz4KkqPogjetKuanDiHVqvlWlPxUEts6xxau6zlivQW86bJ543jGH4llARDlF9WHhB+OgDfQMYRfaSlxBvFWtmeZBiexdpqViKCScCtW7fQifo00+FchqAlbrV4DBAoR5FibB3Sn2Kto1EfmNbStf4ZW4+y4nAGqCwAN9NJkmAGo1AoLCwsCJ5FQY1Go1AoPP/88wKBE8ekB+8SxKS/soJJncKzWxVGCIen02wpn5TEdQdCkqYXgPSMrcWJHxq66Fsbv5VKZWVlRTAvPMHE4fEEmmkuB6Pm4hI1dlor6EnBnLvJ7CYqiEmPnsSoAWseonS0GtcBrjm64oJnV1fKBauHoXECietXIgWzkf2b6RAIr3yiFPpYaAbm9aTrNta5xAPHNG7lFnT6M9N+U5IoJeZlGbaESC5JvV5H1MHk5CT3pjkDSMF89PDwMGyNwASg64opCOM101rOfhG5mk+3Dv2lcJQaC+eoVCp8NplLW1dftylP5B80oiEgcEzccygUCmSmKYv/i5inWCXgkgmvnasuVvBj4iOML51hVTmKIo83nUscfgN50zS5jIZLkoSIW6tmVQYtrkABBkLg/IGHE0p/v5hpLc3jFdkRKfMs2r8jHFctTHdfTbp1kePrTx7XuM0zWr/mNHHRE/SkB8V1UJc4f/58o9Ew3UthlAt2rdlsTk5OYpWD3tLECHmO3LxqgXhk62k1UV/9VkiAV6FYLGLOnYOI9NAc8leeNjXKTCfdAwyGLr4eRUuIgrKeB9MCsX4pa0H5/3K2rWIUD1YQAw9GccQ+6nkJLUkrgCUKyUcgIw1sNOkhiOTKzdhMuV9ufeD0SsE6D9OPmebCtUL4MBIIokXDc9GDVflyi0u6m5YT1Mzwv+KtsbktwpICPDOh9Ov/LOX1FX3AKhNjTBzHuGPFZLF3+G5NkmRlZQWOtiiFbDQ86M3NTbhRwqc2xiDeg9Z5tAR4LTxS0nUUD7pNBb7IVS6Xr1y5Ipbv+be5npTnTGrJm2wwExmtdYGQYbmSLN4miiJ407wiuZMeotYAxAgLNLHOYRxjiRCXqIUfUC8K4YBU8aViJeL/xuIP1rlpmqfSZloIzZXi3ydhFbhH8ta2ODrcvHkTM4e9edNcEBr44mkg+KvXYmB9K1KwFC4WcIWWexZnue7SqjqVHuJNcy0ktRP6x19RRl1T/gw0sTpsHLZMdAa+pk+5aAKxVCpdv379pZdeorgOyri8vFytVkdHR5eXl4H/ne98p1qtTk9P4+/29vYbb7yxvr4+PT1dqVRmZ2e3t7fv3r27vb09OTlZKpWeeuopivSgWhNLVEdjDCI9eDNh3T9hHUZHPoCUkCERp+w8imZ7exvbeSjQAr/nz5/n8my5QUiYyHLR8VeU0mq1MC5WKpVPf/rTCBweGxurVqulUmllZUVISWsCr5ero/F0WKKWirbyqKWuadJtBLn+GGPu3r1LUh0ZGZmfn3/llVeWlpbm5+fn5+er1Wq1Wr19+7aQjJAef6s5rFQqoLy0tESROZi28jQWF5SISUP6wcGB6F8aR4OIttKS54m8EbmcPVkE3Lx5s1Qq9TPp4arA8YKHdQ9OSzmqIkUohACuPaKr8xRKFAxYlS/plphRfkTiNrghErAWKurLeeBlkdUYHx+39h+sAtF3OnYhWknRsj6CQKIoajQaIm46sWmqUSZDN5wWl2gCF3GrbMvl8tramvB8XZEegpT+1eAy00k2N60jPUTcNJeYaG6rGmhMV0Yiq/XNqoHhgNavZYcT0M4U/6SHsemtYAkT3PV6nW+K4buuKKOQhlGdyyUf4+gv2ggEguaKEw/Jgof+Iz16Yrdv0KVYyxUVcxlujmwVBzfBPCWx6ZAojqe7tFCzJHK5zDTPy4sTpCgxpLMJM10oFLgfrWuB+ZByuTwzM6NJET4sNc79gBF0mWldQW2mhUitKUaNeaa7UUTr4KFcLk9NTfENDhiBtKBE6dr5sorX9YpKxyc8f4VJDy0iocw6JRDETIiV7aOYaRp+xDYT1/aWQEBGMfmGIjAM6CyJbTDjbz2g+xfPmJud0zFKeXoF8/4x0x5Sevy3InNBGPfsoShOe9NW/04UIbxpgY907d5avUIAnx1zaRsvLsRMa8XV/iY9w0yXy2XXbCyg2Wxi1+/m5qYmzv/WarWzZ8/S2iMF5AkJCIYTtzct5G+UDogaGeU6GWbKkY6xBN4fLU9pIVhZsiqSAFdDIJF2OdPGaJxRhSVEK6lcMN0qIVKMUlctE906fhBoaGtXQJ5fuzzQarV4pAeVZRxm2qpaiePLTEvG5TvzlNyvfGObvdEQQic5SqSHrsZJgNUv1ilaYziTiWoh3a4CKF0bbo8eWIkLTMquW9GfV0iAp3smPTyUuTeNRfPZ2VkXD1hew/esPqFJYGIfNtwfMtOCH5e0dX1Nt5T0mGTF1CAQyuXy4uKiWELU3nSuCXaVKBAEGpZV+QZiTA7ouGldzf7A2Iyyn/M+AGNPFEV0ggdNegSaaavA4+x0MEyk4FQZWH99DoFR/g1PN0eTKieuAS6XUerNHwKL5jwfyZsmsfZXYQ16zsGDkyiR6ZbmuXg76WZzMaCRxUOi2sx0TwIktnZyqY7fKAgivDiBbK2vYECY6VqtRpPOAmiiGc5RtVqF/RX0MW8Ao7y+vo7+iTkQ15epEKbrM0jXJbe++kF70ysrK6K+YheGv8n8OLw4UQp5ncI3FAF5Vu3SmmDFyQUuPS0rF7hMLU1okJnm0eg0Nw398dBPHF4XhAOjrI9M4nURMuEUPEuCIq+QicdZFI2V2FpH0/GwoZ2w5CgBeVRe32b65z//OXHmGvoE9/TAK8Nf8fbgQAcFtLpBSASJnAGekROkUKrE4cy2WFgFooWoUEEwYY2tz0+gYwc480l3k/MoDms1BQWOY7IF+kaj8fWvf71arc7Ozm5ubuKQitu3b09OTlarVZzdAfz19fVLly6Nj4/jhDnEdayvr4+Pj4+MjCwuLoL+zs7OzMwMZr1rtRqPmeGy5W2qhYPq7+zscIZ5Xbhg6a9fB6jKn/zkJ6enp6enpyczePbZZ0Vo1xtvvGEdO3nz0aEu/BUCS8AVtAVnU5gstObSpUsrKytrGSCi5hvf+AavKaqDOWWqIC+OdwrTrcmi+3D2dM8SUtIy9HQuDqVSaWpqioS8ubkZx/HY2NjQ0BAiPawz1JwmyU3gVCqVubk5WHkElhhjsJZIOAmziRSMQWLMPcOHvzIOAw3gQUp8xr+l7BK3A9RPTbcp56Xw3k3MLy0t9RbpQedNk1BETYwaKHSKRhAKxGsiiGgckZKrSRw0e35MrQ2iOE2BF2GUHTfdZjqEW2tLC0xqYA81osO3t1CYM8KosW/F6gFhpyJcwvX1dbEmtrOzg9Ixo+1ZQuSSz204UV9Pxlx5lsvla9eu8fVDTICGfJtrBqxN4OIBAq9UKhSxACgWixjkXOrNuwBnQCBYU0x3VxWvONsh0nMBRXrw+RwkegQr+ohmAE1D00R0vHiuN22taeIAgelCS7y2XuPkNpwHgNmzN33t2jVBJdBM64q5UozqfgnrCdoo62bWD54+Y2XAD0m3MgnpW7MIoywq5crowtFy9hStaQp8MtN4pqA67IuzbhbHX7LU1WpVxC3wMYAvIVrrwpUkpAqiOp6/xINOxNFLfNoBtkDw5tqrIlKs1REpnJ9isYjd+XwegCY9OFhlYu1iOl1wonuTqGkfyi+YpM2HWJwI3IXoKoV6pTEGM9EC+M4pzo9VGvqbY3d31ypAqyRzX1mL86cEFtenmeb10WbaaritaCRTjqlTdE1cTevB1BlJawmEX+wpiD/4vWlXXl26cVhzFycutkP452+5mQYg2LlQKFy9etXKvMnsGiw1doUYdlIwZ8kfkOdpNV410ZTiWX9hWAXCmSczTTwbY6yz8zpFC1mXoltQDF16bydOyBOSEQIx7mlGkUW/tRoOLRxXrUOA4jEIaK9gyGZx60Mri5smidEp1XRCnnCwuDSMrS2QgvkKncUvxlwcF/Rnpo0xS0tLfZppY1OadrttFYeLRVdT6VycZkhjJ93N43/mcvSQtRZklDctjBRAT3EkSj/8heq3RCTQCRUl0oMw00mSkJleXFwU3rRgDCfkXbx4kdC0BHLNND2IiriEoBtav3LJhBBw9FKt+xqtoaEh061pnqbkBF2ytbJEa7Z0unycnZBHS4hWdSUt1f3LCpyUyBgoJb8eaiirE/JM5ggHetPC5QfbOiAPgMkizqr4Fb1bd5xASfaE44JwMy0k36eZ5iS0U6z9RA8QncT2VWK69Uxk8bS0Cy2x9SIhRyEjQUpPcWhXzmM3OU6iVMpaoulWPqNEoX2iXCfUKKvRaDSQgulpOC8ijhgUxEF69Xp9ZGSEYj+MOqepbDtvWleEP9Bbrku6ClaVcDW9mHWBmRZXZsBMeyCxzTBqZ8IoTeN/4U1bT8jDDiOtEhywyMmBi8IFVhz/kOOSgFUmJFXYU36hCfm84SCkRwMbvyqMnzftYoweEscHvV9EIYLtAwRZTyl41XNA3rVr18S6pO5IAvQ6JtD4Uiw1NiBh5kYwTcc+EAhVI5b0K55CaKL3urJYl1b0JEniVXEuLn4MhWDMmpGe9fUWAIrEEDiuMQM4+H7EmR63b98eHR2tVqtLS0tIX1paiqIIsR8mM9B3795dW1sbHx+fnJzEdUe3bt0aGRkZGRnhB+1joX9mZoaWELUME2X1THe3N91DDm8Ll9AEjkhBE2xvb2PSg2aH4zje3t6mL2i/tHk7cn0zSq9EfekUFHiduM/FZJe/VCqVv/iLvxAqys8wEZ2OOgv9uvw13rO4oora+fuOFTgajOnFixdnuuHcuXP8TA/eFpoB13U5Q0NDly5dAsE//dM/nZ2dnZ2d5bGeQpcMU5ikO9LDMFW0WirjNWiJ7TYoq8xzcXIBDLz22mv9e9MJsy88MXyM4kqcdJtsF7haQjS2IM7xrRmTbkshsnje5mYnlgSCpxsIIp5aWNOFJHOLI28auwbEW/JZyFleXl6mSRKiT2uP+DJttVrICCfRNenBVcIoO66VJFcCVtDIqDImPTiEnF4vOrMui/cLjZNk3nQURdevXyfHEOfH8s3iWuFFimDD02uIJb/AewUhhFidVcL3CtJHGM8l1NLFCSL38cXGP+/ELkQtEEFWCMQjKz9OiAn20A8H0583feXKFcpvHJ+luWZavLI2kiuj7iTa2rbUfIJQhURpAyeuX/Fnz6gQDgnTbE9e66twW2aYAPXwRs8UjEFTzNQT0LXoMi0Kh0CH0SXyKD3YaM/RS676iuYWlc2Vlb8tQBZV5jvlKHigv6Uzf4k6ETMeCIfgERFkpl29SWtvbi8jBN0vrN83fdeOz7njMwtAZtrVRpx/aymccpNdwi0C8rhAPMObEB0XkV+GgTj9gfVIVRTXc6QHN9Oa9ZDKu+rJW0tIloP+MBFFmzAzbU00mbNjVUQiLnRID0sa/PLRTPpBkzIOLXcVkWRdFB0JC4awESYz0wkbk8hSVyoVvlmcE0cuxMli7xk8bu5N++vLrYZWjEDJiGrq3yQz0zwgDyCORXaV7ucnhFt4ndyWQcLiWgDjcIF1jYzSK61mVtXlMsllG8h6MZAWDMsKMAuvvWkXcQ2tbAlRz+ZTQJ7WHGtBumWFiLTArerkEbK/FTT4b0dDuf2baU1LV8YvfSuakIWeQtJm2upNuzjxy93lTSfd3UbQCZnFy+UhPK+ub6L0w1OWeMvNtPiiFGgU/rG6uiqIE0u0sl8sFskxd0168Kbk7Inq8CyeB07BWgsxi1osFrGL0rA4Qr3S5TJtLsjlEGCdHBCTHqa7TV0CSWzeDIWa+VVXs6r9a1cuK2D9EN40XUyjJz1cpKz60MoC8jxX1lqJCJkIY2K6RylrFp6RJCAEHkLBA4iOc701R/SmNS3d6iLFzwo9W4WedAuII3jMtEsVPIku5g1TGiuFQHDZQQ9Nv2QMEy+9EjJJHHNTxBJ8k8uXLwv2qGvRJEa5XJ6dnSV3W3MOatjbSmOA9XwcXXftE+m5S52SKP+ORwdaZWLYGXV8xmN4eFgz1mtzi1y6dvQJD1tGpkcH5Ll6iqAfOFWa62FYaxo4fYy2LqtztI0xdMdKiDyt0+W0fIKWpebmkx6cw8Q26WGYPEVdRL8QovPP61KK3+C6INdMmz686T/7sz/jsiZ2aR1ZLBYDlpeXv/71r1P6+vo6hSUsLi5OTEwA+e7du1NTU8vLyzjDgTcbrgJZX1/HQjBuhQARfuzG8vLy9PT0G2+8sbm5OTk5ubq66orWxIEV2xmglB/+8Ie8aJxWgXsijNf6r6ys0FkW29vbdHpDKzvPgX53dnZQ4t27dzc3N9fX1zlZqgsCD1BfiJoqguy89Nu3byMSg1axeVvQA/013Z4s+gAO5aA7WQBgcnZ2tlKpTE5O4qyPz372s1euXEGJCetOkHmlUpmenv7ud7+L2I/5+XlhpnX/oZ4g/OtWNyTM1lCi6Q4Y4IloVkrhF8Eg0uOLX/wiTtVYXl7GL78inXPL2eMarrVCFCcYpr+lUun8+fPT09MzMzN0ogjmpnmfSlhQASgcHBwghReXawsE55Sd32gDauJIjYQda2OtLwGdCj08PDwyMvKpT31qPIPBwcEoinikB4GI6+CkOMTZ9noI6k/+5E9wGMvw8DCsh8lsJTc+pDAAfqkT8OloDiFw3uhJdogKaWbiHRdDmsOFrPOiLn1Gehg1EAm62HqPrf0InBwZGcEz3QMCKQDNGEPfRxg2sfANW4AvbpqEitmxtrwhQQpoKEX4hqCDgnB0JEZjOi7g0qVLPAtspYhzID2gKUWcaEHFxXG8uroK9sBVo9HAKQS0mYLOroTLaWxeNuS2ubkJwRLCwsKCiPNfWFgQn366vVtq/Kdn9AGKSMOcMrktUXYvLTX65uYmZEI7YnAYCITAdzPiQA+6V5QgYcadq5PQosS2L7TV/TXDn3lKSzllPAUqhNtb+FRP4KSHhwHiX2RMWLcXXidR4M2dC6K4XOREfQP2X1MAACAASURBVIhwmSTMUgv6RoHL9aGvhDiOMe3ObyzMnYmiFI1JC9d4JuL8IFPOtlHNJGRllMoR6J7CpaRxwsGVy7jbEZwf6UwP0a4cIOhmdlU7vubIrpnMAlITwn5dunSJzDqmonDCFh1P02g0FhcXMUmKL6Bmswk3lg7bhEktZzc8QVFwyA7MNCx4o9EYHx+nmARowPT0dKxCHUTQD62WwNbDuGMpg+K6pqamsCpNpBCfi5qSXaBSiIeJiQkyHJADNJJKpzN2y9llFnEcz87O8v0julFMd4eklKTbTKOH8NU/hKZyy5skCRqORq84jnFlLY/SI+L1er2no5eE7gozrZ8Tmx1x1ZfjF4tF0jc6JMh6e4vglh74zI+LASvE3becEGBu2tqTjwhaJrw6Sbd1C5SA8R7QyqfLXHesWGm6gG8WJyZ1pAdVOfwjw5Nowsx0u93WdwTTKz8PfNLD2Mx00sfc9PLysrUwUQAEB4cRfvHU1BT+Vth11LS8AHs6OzsLHw02mrc9LUfgsxposPKXL1823fZrbGwMdhN1Q8g92RqE96I4mH7a4DQ5OUk4dLgtbayCtz49Pc11NI7j+fl5Mr7c/nIlxuhCoWxxHM/NzZFuYeNfo9EYHR3FeANZFYvF6elpruKVSmV+fp7wkbi0tCRcM90WLrNluk/IM1m/wjAwNDQkbDT90u6yZrM5OjoKCkSftNZkm8WtblqizAQHne7C5F+yVgTTbYCgVENDQ+Ion+HhYd5q1p7DhzdXFfhfXeU4uy6HGKBdiOhfPK/43LaC1dwYW+cXvLlGQUrhifqDUuSidQi+UZBG9JBID6sM4eLQwMbHAJhpXS+rTLTvkitYzyuCdrudpunBwQFZ5Ha7jWePjSackFJ6NtM4yJRXQ/cQ+gsDzT8q9VwETCGcx6mpKbQoDHcURfgsRRBCkiTNZhMuMBXUaDRwNR+3qti7THQQQ6bN9MzMDOwvXaXxwgsvCJzr16/TdxwAowLX2vHxcWSHqw4LS5Y6zhbx+dGOsIDcm4bZHR8fj7PjNDHwkKdMeoktzsRzo9EYGRnB5whJxupNJw5DRmaavjdhqQuFAiorWpbQIKVyuTw4OMituem2C/Cm9Ueoax6Gp3AmjTJbvDherrGBNtN09BKB69RWFx3NgP7rEjg1H2kO5qatEuCSsRpuYRFcfqIQkZ6Z8dddV0RkKWZQKpUwFGHWq1aruaZKAgvVoX4IyCMzbbrFxRXeBbk4/uxJZm0JrG892V0+OGfAZJMeURT1b6YNs8tJt0WAmebmCb4Dlz7Zl3q9/vLLL2Mek75D8cmP6K4kSZrN5vnz57GvH9lhW2GU4zhGEXNzc/A34W5HUTQ6OkpTLmTjKMSHnFx403G2oc4Yg895fugXXb8dZxM72BVCf/k+EYKxsTHTPcWGFMNC4prN5uTkJHEOyczPz/Ov4yiKrly50swuSYG3Ao8bLozWLaG1hlnbpHvSg7iFR18oFCYnJ7V3yft2rVYrFAoXLlwQ9eWl40PYOk4IJl1qKhgQWUT/tPZSYzPT/IpeEq+1iKS7/5tegPLyzxe+uEKiq1Qq/Dx347bCueAyQC6WCHqa9BAgfF7qcZ656cAi4mzCEJ/UNLaJuWn+EGKCPTimW9lcAEOcpmmvZhqvuA+ui6Pq37hxA/091EzjTA/PAqXJbtww2aTH6urq8vIyfuEMQkCvvfbaxMREuVyuVqtzc3PLy8svvfTS0NDQ4uIilt1nZ2cxoQxPc319fWpq6sUXX9zc3AQa7PKXvvSl1dVVBCFMTU0NDw9/85vfrFarU1NTV65cKZVKq6urIyMj+Fba3Nycm5tDYMP09PTExMTi4mK5XJ6YmGg0Gl/60pcgF3i7xphvfetbFy9enJiYuHjxImJLSC22t7fX1taq1eoXv/hFCuRABSmAhASNUQTmFax++tOfprfr6+tnz56dmpr6xCc+AX4WFxejKBobG7t27drExMS1a9dArVKpfPazn7127VqpVJqbm5uampqdnf3qV786NTVFgQ1ogqRb163OrMlW/3CmB+I65ufnoyhaWlra2dn53Oc+NzExgfhi6sCo2vr6+ujoKBbfP/7xj9O5HwA6eiWO41KpRCvGtIYutAgKylfejc0m8rzEUotFelAd9bU7/AFcRVE0NTU1NTU1kYHwIYg+L1GULkC/siIj0uPFF19EpMfly5cnJyfL2V2IvKyQ4yP+67/+S6Tkzsy6+BR1EYl+I474GSwpIa4jztalXfe3mewkKQ8PeID7RT0LnYjPenOh5UoMAH0T+FzgflLwhWFtYXD5vEfCBldg8mYCvm44pFC5eDjqedMaDPuYpc9/Cg6Fh4gGu3fvHqU0s7sz4B6Wu7eccm8aUxwYS40xtVoNYbwYsTGPPD8/jyGXJnC5lmCyLM4WM1EcnsnQkDdNK4GgBucdbgL8fbjANJUBBubm5ngghMl8Z37mHHnThk07XL58uZ6dLoZj6lZXV5vZcZf4VoBqompAm5iYII87UZ4jV+LE5gqRBPDpwOdYMCzRciUBTehDFIh1ERNcRJy8aV00wKNRYnRJHK4uEedKKIrgOBA4P2/asO0tifI6jXKrOTOuemkiVBB9DNFKOEQKMy0q4uprBJ5vZ9f3ODjRjdJHdUS9MB2BaXdoBT6RudeiiSRsYLYKtsJuf6c5fR7ryVstyQKZc0UnZJIop9OKGTgSCKut33oajsvkpMw05AWzQisJje5LcQA8BXeh0rywyVYPaEsbmWnqWvV6fWFhgSYTMJ8L68lDEfgMAyY9arXa2NgYVgVhEPnyIJ1EwY98A6uYrsXECFi6fPkyj2nh2xYoLy6Io0AUcM71G1WmSQZaR+UbuCFG+LAU61Kr1a5cuSKkGmKmxTc4SrfuQ4GlplEHRllM49IQxQ0fbDSfm+YqyO2mUT2EME13D9SGO1GmU0ggUYY7zkLFRU2FmRaQMLtpRdB5dRUANOkRs9Xmiu32FuPua7zD9/o2REp9QJkdN0oAk+q6BVFMcFtXGqlncbLktQh8VDDEkurRPTBjCIhFRY0QMoqAvZs3b/Y26cHnpoUOGaXH8KaFmRYfKRQ3bYyZm5uDAYLVMMbs7OyQCYNlnJ2dpZYzxkRRhJQ4W9SC+eBRZcYYzLRgmqyc3SBFQdkVduUE8MntxRcZn2ujaBBAs9mkhUfw01C3ctD3BGbuoG18y3Uzu4GQvH767MDIQdKO4xg43MNFpAf3pjW4nJQkSWim2xWOxuUZx/HIyIh1qQ1jG31GkOEWLo9ggysln/EwyjzxilgVWiihUd2PyGJkevnll3mfr9frrvOmNRuiuJ4ETprALRdGXHEXohaCAJriFOkkJY8tEBUhtj2VEpLU2Ukt+bUA6PU9XbIlIGaLOhx0QJ7p0UxTGyXHYaaFtHt15wmEVI8U6cGFknT3EFg0hF5wsVLsRzO7IJUvAiwvL/OADXI3wCKM/sLCgjEGMwD0nUhtCTONSXDycGFZTGbEm2zvRpIkNNkCsqhCI7sGULhgcRxzo5wkSbPZ5DdRcTPNRURbQlAicUKUMSpcu3YtziKm4WVgVCOfq9FoILib749YWFjQ3jQvXSg32ouq1sw2odC18abb2JnMUqN1ELXG6RMaLDXmE4hDfUIeZ8CvqTrFb6ZFimE9UDjvIiAPX9PYLO4RnenRm7YCTQ5Q0fQJv7S05K+vNgRkpvnkBnK5wsJ0+3LmE2UmAiHujpum3senOq25QihX2PYWumRLBORx0HriShF5wzNyYQro20BzmlT9paWlI3nT1jLu3bsH3wSjaI1dM0xdvVwuI26aZkXq9frExAQ3lDgcByYJ7DabTegx2h5di69cgSC5xhgVisUipkp45VEixZ/AwyVnlnvTnHKlUiFSpttMU0yVnoeNWWw1MTA/P0+xxshujNne3iaZgD42aiMvfZ1g3gZZGo3GxYsX6917MoViGW/oVZwdvYRJAMpi7SqFQoHO9DC23g7fHMuGxnv0Ev0lENpvup1ijsP5TGy7YKxVoPQ4O3opZhPTGIqsGTkDfq+QZ3fxEGfnTde6oZjdLM4L7dW5g4HIHcyEeKlQnsIx9YMVaPqYR6MX2cWyuaBnXShuWhOHA8dbvCdZWaWkTbAm6xKvdRDtiSUOJIGeL9n62te+Jghpjmn9lAPCPwA42uJf//VfW60WztBYX1+/d+8e7fpHU+HoD8Omq4gOEu/du0dHZ1CLbm5u3r17l1I2NzdXVlYIDYBXb7zxBh52dnaQfvfuXaSsr68vLS3xFJBaWlrio0KSJDs7O9/73vdAHMdfcAQwuba2BgYS5kK+9dZbKysrfHNwq9W6fv362toaZEIs4cCQzc1NBJDdvXsXsQGbm5utVmt9fR3RLzzSg2oq2pt3Bn5+SLlcvnDhwsc//vF79+6JDgM6uK5leHh4ZmbmM5/5DDUNB5i81dXVarX69NNPLy4uYlG+WCxOTU2J0IskOywicZw9QmpDPJB2kbj4Lzfore4JB6oIkTLGlEol3N5CMTkUfpMwK8YZ4CVqkZJK8GoKYXKBI26B9ASjIG5vSZgh0JEervCA3D7Pq4By9d00XFZW5UnUwEz9EfWamJhYXV1dX19fW1tDyBbcNfRK1wy1VWhcOENDQ1NTU3QAC6DiPiGvZbNLIkXjWNH4RUut7oNWkiRBmEei4jpCKHvYoFetVusv//IvS6XS2NhYqJm23t7CUzSYsBkfrQqutx6NsTZ2kufgaARXlsTmuFGKi09j03ghHxc/GqyqnJtXy4RSYraAWe7eGt7K1g8orsMYs7i4CH+fXFHqe/Q9wYNG4Ph7KuuSua6LSNd5KUU3k0Dghxe7Jj00+JsmBMFk3jRtKaCZcRHpYZiSePqXFUF3N2P7xhI867eeBytQjBaf9OAr5yGgixCLMQR8ytQqNI+stECOAq6IGl6iMJWmW4FduZK+Iz08ZbtKaqlPCY+vx+UuiIvul6j+aYJD9K2kiEisdlhpVl3MJ6oPaD49UuqJeMI8dE8ukZeXRWaa4uq4pa5nx/xTCkXpiZ2HwET8SavVwsQRYget21t67STG1g91vVxyEP4sfPwmA8x6CWou+hxoqtTFCVcqw+amI3aGKiaU5ufnRU2NUpX+jIvWAZ5COB4Xxwq8ajQ1QTVCBT2THtoICENBAGqYHcKZOVozRXVccuCVtb4SwL8tKEXghJjp3IJcufq5WVyUFygX/avbw2peA3GE9IUOabSk+9OYUkx3B7NmF7zx4pLu5hd5NataVgIEk9aKCwY0S/6qkZmmZ7K2a2troo8RKW6pt7e3+XQ5sdTIbhLAPLUWnXjQY7morBCUNUW/EqIGAr8WgABz05yI9ePJ2lICXB95SRZaI4KLMOkh7kLUFUm6I700uIyFVWJaK0Tt/DUVn1Ox2gSPuKYKO9PD6lPzUlw+Ftl9Dvwjj1OzgrC2xmumXXR0eh8T0B4mNabpY26aBwwlji5hLclqEz34fqFrBP+DtSyjegLPopVGM2AlblU14fCK4vxVS7qlrbVNk3URMbaOJ8x0kx1JevHiRd4NeO3wMQvTjFnCBrsgkUqkaD9rawqBayXx/BUPQhl49a0Vx3pdzMCwuGktTJd4NVibwLCGi7ONtQKtUqmI/pXYTvDQyuz3r0X4R2LTGTqnTQ9CgcMSoJxtFiejTDFCtGYTTk1QJonRjAoP8BU6ID5MtZSMUiQuK56oHUohXhETKay2UWofDiiuHzPtL9uabhwen8ZJbCruh1zpu+joRGPr5yJRz0uIUqxK5qmXYMNaLn+wKo14sPZkFyfCTJsswLxQKPzO7/wO4YiM/CN3eHgYXYi4IlMeZzvutAJYGyscRF7dUv5WQDgKn3ZARVwUtCStwvQUyhcDMDcttoHwgLyeBBJiuK3C540ihtjEpvAuoOYus/N1TaYA/oC8ENBz0zGLyBaituqJUf6NQAiXeU9NE4jvwkG9jt9MuzjQv34zndgUywp6WkA7Zaa7A2vGBCnNA29skW5NEXqmUzRvie1YHz0PoGvEq+YqRQuWgJtpSsFUqfV2WsIxmbN87tw564enYbG01k6ia+ECQtDepeluR5Npl+Bc8I+56UZ25Cbtl/MLLfEOeB5I2Ec3DW/iJNVCodBH/woBFzXrpIeV+cBqYmKaYnBpBplOyOvPWPPpFA7l7rMNjFudjO2LVpuOJO/ThJfiOVbJ2xo9AIrrZ26a11A8i0QO1mgYLjWgaTpJd89EtB/XHh7qB2SKCDQsAItnARqdT0RF6BOLCAR7JjOgVDShiVxULq8FZREyoXuADLP+gj6FJFJ1XB+qogkSm7XCIUo4egkpKysr1Wr14sWLi4uLn//858fHx12fqzh5anR09JOf/OTFixf53WkUxwbiOiCPyzOxGd8Wi3ziyFqRTLcZFUwKHJIDTsjjIXHGGArII5mTdgmBc60QlbJaulZ3BCROzuLnc21vb1erVYSBcgUIOXopF3hdeArXFs4/r5SWqg7jI0BA3sLCwtLS0vz8/NLSEgL/I3bJllU+kEBLDYFJNtgPDQ1dunRpYWFhYWHhy1/+MogPDw/TORDCaPC+nLD+zmVCxiRxWGejeigHPtFBMZE8CxA0ZWtZVgD/f/M3f4PLRXs20/4KJLau4uLVdPelhHUqF0LS3Z85vukeNo0yLkZ1Nhf/1owtm3vr0lpRIn+wmmmrtRLS0PXVPAg6orKCt2Z2dCpCOPhUsuvoJZPFdSAsb319HQv6tKUFDMTZudWe7S2UqJsYkHvCulFdVEhGpGAelu8DJNCTHi6bwonzYVLXLlG6RJEeiFiAkwg5Y9JD0HcpSU9gulXOymTgX88rq6rQZnEhBB0eY1TnJeQKuyqEcvFdiEJoprvT8WYSAjFKWwSRQIG7jvwWlAWffgByPweZuioTWLyQmjU7pejuZ+2QPLtOSRxKabVc/mdrdTwWUDDmwtFVsCK7iFhNiRCFZpJSaNKDrpflX6bY/ShmRehQLUrBvn86EMqwNUYy36KmIsX14ActmYTpj/U3ybxpfqYHIhN0QJ6QbWILELJKXjcEZSEzXa1WReAa3SweWP1wMG794bXwDzmEo2WC53J2WfvY2BiC56ADUd7tLX4O4+zKWorxoCMlPLsQRQW1mXY9CKH1IefEbaZ7pWb6OHpJXFmbMLFaC0gcEtQV4wgueRnlJ+bW0KqLmj1BU+hf0i19Xf1w6JVn0W0SxzeUoK8NN5ebAPKmaZ+9ydYMiQ4FdZjs6BXazs7pwNbAMYfpaWQHwFqF5hdFYrOJuvpG6aHxBtskmZnW1wJUq1UtpaRbW4S0xQP99bjhtCDGA67j7MpQl3D84soF071mY7rVm4tXVye3ai22hKjNdFmdp6hpClKaAYxnIAjiFJBnbGbB4ztzCVgfBIR40x4cT8PpV/x2OoIjmWk/H1zVjPKCrcjaJuoitA/uwjTdvUiD1bpxAXEczqSgH2IlBRuaycTWMTy14G/9DCRK/pwmj8A7f/68lW3DDhdsZDc68rdUHFnqiYkJOkXWOunhbxoPWM20df6Kp2j587hpsiDCTCdKJXgV/OD5fDFZ4Br9haDITPcqkxApJW7zKqrjr531LfemaeKL70Ks9HJ7i+luKeM4einOLrPmWYytL7sePJ/mIt10K5JrVLCC6UvbuSiO57xpLVwhDhcToia8StaqJjbpWx0uV8PrZ5f4jEN9hUtiguM6XDxYyyIcbSY8H90eCVjpA+Ls6CU6a9CaBZFVxWKRjnLVYjRZj6KjaCkgz1W6aF+XqphuBchtPs2Y9qbpwHECivTwi05wZdW3XG+6xi7YxGDJzbS1vi4RhYBmKVG+s0u8fmmYTCdj2yVbFN1sPc3Dc0GiYEObadMdkCfq6zcLWp5tdsM3Lz3pbmv80hE9JkyB/QiuXFToUc00tRBWh0k6fGxpqQVrWkcWQxCliCrxDgY6pnu1nfLysqiIFouO4HrpYtXjC2vtNOxSMZQlNI94M2wQbmWhL/wVrxHPe3BwQGwjI30ZaR85selWq3uZm9gGAnpXqVSanZ3lq+0tFpywvb2NozwuX748MjKCoA7OP2q9ubk5PT1dLpd/7/d+j0JEsEhN9eL15QJJuo9VsrZLkiQPHjzgC+hEh3gWtaMUHKBDClYsFq9evbq2traysrKysnLr1q2VlZULFy7ohtbtLnTYqi1CSQyLfoHAq9Xq5OTk5OQk7tkaHx8vs0u2tEyofbVk9NFLpF26H+laUAVb7Kgpf6UEDkkb32Sjo6Of//znL2cwODiIo5c0BRE0QvLkffyNN97A2D8yMjI9PT0zM/Piiy9CdJVKBZEePERK92WuJ1wmOvYjcdz0JsSLFB7pIYrj4CJiVC/QpUAsx2amBU9cFXg1rMCpGTby6HSi41IXFw5H0HLUctFZPMCL08i5ZSXKKOgUowSem+LiX+PQFyXtUiGgWFfMeMCFwVnSfM8hgM56hb+DZ74L0dpwon2FVmjOeRcSpAQ1UV9BvFAo8JsZyO8zCkKURINHCfncNGcVR6V76ssZECyJOlq7mzVRC83FdgjQVwIOiUVMOmkFl4B1DsTV9MYYOu2Lf39Yt7cIap7qW22Xdn08tssDuuH6AFTkxo0bvZnpK1eu8FJNgJl2VVX3N55d88pz8cbwmGnOpCjCypIu1A9cAtbiXLkEk5omwe7urhCs9ZhEkddvpsUDRXogip5CNQDc+FIinbJEKZjg5itFZNxpblrUVzccgd7fTCAGRSF5TxNwHaDtEvww9FqtRre3JEotOR0h89zmFik0EUQf73zSI+nuBbxSVJxWAHyzG9VxPHwmzOILKfl10vUqVnsFYVgxNx1ye0vSPQjxdL4iQjpm3SwueNOyEvIRf7WtsPrIVlIczTq+6rKSbmXWZE0f1wLogDxeq8SmVfrZIyxeW2NbeLRat0RppHiwCtrllXCerQVZ1UvXXWtMIAhkjwSsYGzDkh5LqBQy0wjP4JYal86QI8MZwzw1MOluGuo/xAA211nP9BCak+S5eyKFP2hSidI60f8x7cAnpqMo0pdsCbdAt3Juy1oREKdYZhe4lMvlYrEojl5yySQXXJ/YgjFulHU1rX91dZJuReJz7lCPiu1UaCsRlzBp1puOMyRv2rWEaP1rlZKxqaUru4ugHrxzs2hMF06fuxC5QK31FIm6MfzV8IjJKlmroAWTHikI4vytHu78EyOJTc9EWZoxerZ2JBfznkq5PAIrD3F2xRdwKPYujmNM/4nv01YWfVXL7kKbnJyEjebNQcRD7kIUTIoWsQpEE9Fy5vSFnyiuSgFoa6JnZgSCtcX9CGTOrl+/zreqY3uLLk63r250vf1HHwCktUs/eLxpT6gGH5Ux/PCbxT1ryK4PES00DGMY1Yi4vllcaItVVvTK6rtYv7xF3ty5AVfRLk78CEc6b1ozJOqpxc2RxUiumUvcDq9uGIEjSreKQBDXWfx6IxqbI1irZqUmqiBwXGxbhcYLslo33Qr4G3ef6RFn21JghfkkBq+dYde0nzt3ThNPsr5tNdOimqL6orJcXFoBrOZDf+QJmZTLZcRN8+zi0l5r61j9a6tgNQIvnV9ZGwfcLK4fPODyprX8AxnmrzyTPJW8+78FeGYYBCZ95PGJ70p2v6hxN4RLJlqMnAhH6HW2WmT3tJfG1COH6W8JkVhsqYVRSkm6l+Bb3edsAJlOGNCi9My+Ex2ORn95oaQEhK9JiaK5ogiaRAe5OHGBTMESlFfQR4wEBR5wTeXr7Jwmryy/w4xSRC24vhLbQixEB2aagohxysfQ0NDZs2cvX77MpxTxTEv2a2trFy9eHBwcPH/+PC6sIkweRkJmGpIRfPIW1A/81AXdeaiCFGxDui70xLATLVDlUqn0+7//+9PT0xMTE9PT09PT0+Pj4wjI4zLkWiqsAO9ULeUZkARECjSkVCpdvHjxK1/5ytLS0srKCs6+GBoawiVbvH2pN2lZcU3mqmIFLhNSMC4ToY26Ka0g8Gn4+bu/+zuTBc+NjY3RLaOmOwhPExehJq0sjmhoaAiLri0WjjI2NjY2NtZSlr2lDhGyprSUteEdPOk2aIRjFa9hfc1kfdmVhYqmABVreyVHMdO5HPO3og08mFbwqB0nntjGLvFWI3PV9+DoV1YeeLmi03r4d/0V1eGlEEtWHgjHxZKmw+em42y3CyYxEPsh1uXRzeBHA21lZYVvExdNQGaaExHy59LWNbLWkb/SpDyNYrLBY2VlRUT4cmviYUAwqZXEKIEnbGSKs916Y2NjONADS2FibtooDQzRokAQnFs1zQMiF1WtnIG4td0VN23YGbmQvFbUnZ0dSAyTHpw4bXDljAG06dCUhQBNd8taxW66FVUQ50R0w3H1Fg1nLYWy92ymcdCitQ7i2VVPT8WsONZ00R65bAg6Lt601nrMtLXJkwAzjVeEw+PqdUMKT0HX18oPr69xgLAamPSAjaZVIFx/rs/51WdIwmrTXnPCjG3nTXMGRKsJYYoxSdeCpORvXNEWqPLy8rKIEgu5ANs1llhrZ02hBTFxzIWI9NDtqxM96RpNqLfxjiUhoOfBYJFpugPXuNCor4Vm9R44h1xioCwOMg2JoRS65EIzNjVLuq2H6VYkwtG/wkwbx1SkqwW5EI5qpl2K4pKUFQSyrrD+K6ohMLVYhXfp4cTaQtZ2FcrEKeSaac+DYMAo0KX31LUIhNVoNBq4C5EbX340ByWura0RGvFA89TwqckA1ev1QqEQRRGmGvzVERZQVN+aTi1uraNLqTB4iNtb4E17yhVkxceBwNE6wAUu3ECUHkWRPiHP/0EpFMw4NFxIQ2iOVfd0lV015UCbxfm0O7Z3ulYgQz5fDNuFyIEC8sSAFyguq5RcQxeXgFZUncsooXEcSvEzCeT+t7dojv0iyNW2XHYFHWNTL0/p+m3uF1/iNtP8r24PzbYoXTPjKiWXIQAAIABJREFUVwjOlcvj1sxb1YWetZkeGRmxrsjTWaZky8TyeiuL/eBnwMfZ5nLXmR7aLXVxKwRiVGNp11UDz0gf0eXsWnH8Dg4OChnmjhwunrXryv/SlbUIKaNJj/n5eaN0w6Uz4ThCFK5amG7Dbc3rIUXDjxj8xO0tuTQFgKVKdoubYbuuEEmpWUpsH9DWmQouNKNcOmJASFirrm5uo7TCMw3ib9BjMNNWup5SPQguOVrJGkcnsbaHLldLNrF98Vm/Slw4prsr8kI9teav/GZa1Jo3tlEgKIuMnG30riiK+NFLJCLDzl3CLCp2VHM0AjLNy8vLcMPhYrv6klUILilxgfBcmqaWg1FmulgsXrlyxXqzONVFF2G8g6IWnWaASkdQBPbX0IGfHjPdB5juRvfMO+kacYH7cTjQyCculhVm2tVGViAzrSe+rZMeoK97rmeGQYsr6e504pV/8Nb18hTn4Yfe9mymr1y5wtW0xVZdKZ3HMAhk/pcv8vJXAk3g8EsZWtkKPr1NuhdwOTXiJ1EDJkfY2dnZ2dnhyx0iO3/mPHMm8XdnZ4f+8ktAWt0RMpSesOgXoRCEoMsVsuJSajGLJirO88JqnDt37tatW1QXMM/baGxsrFAonD179lvf+pZuHQCuI1lcXCyVSsPDw6urq3Ecnz17NooiHvmAov33knDhcBDBCRCUuMHHsINWCPgKvjGmXC5/+ctfXmewubl54cIFOr1+Z2cn6b4ExNWU4j4dUqpWt4HjyoYbbUwWCwGEarX6yiuv8DZNvL4Lwc9//nN+8EvCTvlotVoHBweGxTC02MDPhUm10zrf6u5ZQgJcyKVSaWRkZGlp6c///M+XMjh//ny1WqXbWzyQqBHFZB28Wq2+/PLLa2traKy1tTVcHkRmmrMq+jVSxDknWgNFXt7pdAplMd0dk8AoMy2OELE2JQc6u+bmzZtDQ0M9mOnZ2VkSH75oXFec8a8e3Qwm+3JJuuf4+gChKNYUYsmanqjB0Bo8xFOSzCkTa1B4xTcBu+hYiw7ZUKtz8V5trYUG3nA4dqNQKOBACWtT0p6XSqVy8eJFgaM3PQ8PD5MTjblpcbaylSvryfEaWbeXBiETQQSTHtwpA/BLHeFNi9DmcHA1imG3twCIB0R6cPyke2SlDsz/8nSOkHQPD9ymaJaEaePpGo3bIIFA68901qiYmw4UozYU4jB0vOKTHloCIlHwTFZSoImGs8pKCM24Z5k5fT2W81JceU0fuxBnZmbwMcuvZKZn/uACfN/VajU625u/orcC6l7A+i9F1M/NzdFac8MG9JFLvwI4mhWgf2LrqucBAfk8MRC4urvAsAGDJ3LgVpJrv2HHcfDZDII4O5qD5qZFlB4vl86bXl1drdVqMNB0eUdsM9NC160M6ETxKnd4i7M9lvSXlhANkx4PyIu7IxM0G4EWh4APZpjDnZub4yeK0O0tBNpGCAgxIh4iWisCKyJKJC2lTfBDQ0NlBnSmR0hxguHt7W06Eh0Who9tYpmEP1vHmEDbyvNahzer5IXxFW9b3R/Kmitt2YHTs5l+8OBBs9mESlGT0IkE9BACpVIJThzPQs/hdM6ePUvPhUKBUsrlMv4KnJOGcrlcKpXKeVCxAU934fhHQXprHQKt4x+cnSiKzp49K0bEqampKIoKhQJ8mUajUavVqtVqsVgUm80AlUoFyPwvjPX169ddIx8NLbS7jH55SswGPDFYinGLU9ADnsm86UuXLgn+yUwTJhkXkWK6xyeOwy2RxjFqqY3kUKlU5ufnE8f3pd/AiW7PZzZybX1gEQSeCOhydrM4B7+Z5pJxsWGlTLPefVQhHKwGN/Crl2cRjWK6xxIyygIHgKOXoigKNdNpmqZpGmenXgm3uiegi+A8VgljssdIcTrC/HHGeLC9tSyiZmXDleiyv37rXMyi9DmQfS92j3aUQsNAqVQSY5sYhGhwomEDKWIQRS5Chj0VdDhOoRs4JjHAX6FcAho76a0e3gST/EELxCVw3TpWXSoUCmfOnBH1OnPmDFcJGuoqamikz74oirBLRYyFdMuUGBGxDAspYTjn4hoZGaEPRM/noP9TD4OZ/0MQFDQaUviQo1P0oEhjZzG7S5MD7Cm2uVoHMw5i2KMHF+VILSHSaBpisgVOr1ae8D2TY7nfNLnQs5mGpTbGcGetouY9tIvHjbJOcQGWCLjBRS6eKBCsIMy0JoWOJBCiKAphW6SE8KMRuH1x1ZfSBY7Y8VV2jFWCNy0TShG5hMmzCtNFKjcX59aKI8YzsrYuMw0olUq8dJ1R2Ppy9ycdpdCHkR5OxDDDB7yibXzlmPTZJwY/12df2TEqE5OCN0rhhervTo3mAWtdit3uBXcIuBgLhcLQ0JDuGq7+xc0I3kI+QhVRlhgIa92H09LfiYkJMUcqRkQ+KDabTaQ0m03MTYkxUjzgY9E6gooBTyS6Rj7+d3Z2ttzTpAe86cPDw3a7vZ9Bq9XaZ/CLX/xib29vf39/b2+PHpAo4NGjR48ePcLD3t7ez372s0cZ0FsODx8+fPTokTGG/iIFzzT4/OQnP3nYDT/5yU+MMXcy4M/37983xiD73bt3t7a2kL61tbW1tfWP//iPGxsbt27dunXr1p07d27duoWUmzdvAuHWrVuvvfbazQzwygMLCwu3bt3C89LSElLwgGVx/CWYnZ3F7/z8PB6++tWvAmdhYWHWAdPT0/QwPz8/OTn50ksv4S/gypUrf/zHfzw1NYW/ExMTk5OTONdiYmJiYmJiampqQsGlS5emp6cvXbpEfwXwRHquVqsaM4qiT3/60/BDKUW7rtVqFf0WA3Y1Az78w/6SPYW5f+aZZyqZB43fZ599lhuFarV64cIFSgGdCxcu0F9x7XclG7aff/55gXPhwgVu70qlEp/1GuoG6ziEdHobMhCiaMLkwznqQpzrT8lSqQRmnn32Wc5huVz+7d/+bWTRbJMwOT4ennnmGVSZ00cKpFHJxmMuWLw9e/YshqtiNigODw+T9Pjz0NAQ7PLg4CB+h4eHK5XK8PDwM888Mzw8TFxZ4ZlnnuF/QYQeiDLI0tuzZ89++MMfphEODP/Gb/wG/2rEA/IS/Y985CM8pVQqffSjH6Vn/sAV5qMf/Si1Dk+sVCpTU1M9mGky1h9kaLfb7XY7F4d+c9E4WQJPcUS83W4fHh6K7L1UJR8EJzylfUwgSIVTxkxur9+qIRB3zzib7q9p4fs0Go1yuTyQQbFYnJqaIlcLsLi4qB0x7nYJp0y7aZQiltCvX78On7HRvZeau5P0vTgwMFDOvsbEtEykljR4Ch4q3qURDjQwWAnCTMNADwwMYEmDZ+GjjkgUn5iucq0DG40QLjQMBkU21cY/eqiJ4dpbKZQdn4/6Q9zDrZZhD9609qw/gBBoB49iLoW1FX/9xNvMcD/ZADNdqVT4hDX0e2pqCkaNLHhuc/TUXm02UOGh2WzynlwsFmGFkyThw4+HTlsNh2maijE4zb5lrdk5Tmob6hqNxsDAQKVSwZoVBEgDXsJOqeaJ/JWxRbl5wiT04AdoNBqVSuXMmTOQVb37PnL+HBLsxIfMJouzcgGahpa1Gyz6a2JiosyWVQZsUCwWaS4FQyOiy2iZXU+5aODLFfXuq5NF9qmpKVA+qpnWf8n1PgkQum5N0Yke6An5/QOuzv84GXgPSwfEcTw4OCh6FPo/zQKXy+VHjx7xXHow63t4I5sYRRHngaJcms2mMYbQ0vdIbu12u5JN8sZxbP060fZdE/H8JcBY0rZ9GJns6h9qplqtxhnILfe4vBA+4FERh4eHcRzzbyMBhULh1q1bmlTKGlcI0CrqPsBqDEPNdG7isYOQkTVFJ3qgJ+RAOIpiWbUfKn5Utk4ePC11QjAzM+Nxf4rFYrPZPOkvjHa7Hccxlst4l6Yv+uXlZZdR4+DS8KMLc39/n3hrNBrt4/jqCqkRcA4ODuJsn5RoHf6t42cppDgPBMqw3W7j24gP+dSgtVrNymSn2zE9Cp9W4i5wzk1rPnRiuM3VRXiI9FqrlLWNJ3s45V6h3W7jOwj+ix9TDMKUjgdouVYR4RS8H6DTyzJGSOP63+7t7WEaUdvocrncbDaPxSTlQrvdrtfr1qGiUChUq9UkSfqjrHuf7pVptzXXKffv3+disTqtJwRJkly5csXaQORKn1DRQj5+NOKWm2n+UK/XiVVtXrSlsraUq9VELp3dCs5ID0HLL6OewE/BX1Yubx4KPREPh3a7PTY2Zox555131tbWFhcXPcgHBweI0Dg8PDw8PHzw4MGlS5e+853v4C1s8aNHj959912k7O7uLi8vj42N/fVf//Xi4uLq6urW1lavxujJmMV+9913Dw4OXn311XPnzp09e3ZgYOBDH/oQ+tX58+dv3rz54MGDd95556TZODw8PDg4GB8ff+qpp8gRKxQKo6Oj9+/f/9WvftUfWa7/IV2GcqXdiv2Vr3yFc7W4uPgYWv/w8PAHP/jB5OTkb/7mb545c4Z7pgMDA4ODg7u7uyfHhhCUR1yHh4e7u7tbW1uf+9znhoaGhoeHn3/+eUymFQqFp5566oUXXuDzZroVAu1bODJvXw+CM27aIw76G8536rWquUVzZJFR/1qJ5BLvG9rtdq1WwzddHMf1et2PfPPmzSiKgI/Vg4cPH+ItLfRzfKDhIUmSKIp68tdOqNa9glV5+gMIARtV4KlhF1yxWLxy5UofzmyvzKAtaHGMZsbh0QeWmNvLXD3I38s+9rGPie+Mx+ZNt9vte/fukTdN01MvvfRS3zRd1fQgWPHb2XQ59OTSpUs0CYNvo2KxGMdxCMH3BHLmpgGBEgknxQnqh+MtRTDft8a4ANY5iqK5ublarUZmwlXirVu3ms0mMGu1WrPZJDONhWwxLwY0rK1jaqWPjgcmc2e9+5ZPHMd++xgu/xAcstS0UAbhIECq0WhQJzwJJw6U4ziGU4/9EQhBEWuYLuCi0JrPcVwpVp1vt9u/8Ru/ISYcHjx48HgsdbvdfvDgQUHB1tbW0Yl3mCum08Ur/owJSUyXF4tFLPZygcBMLyws8OzvN3B60/xZS0SjeYiEowXKyMWGtSE18jEC2hvbmfBLptDFz61bt+Ag12o1CiYjauQ785QoirAvGTYo7XGZBa4EIqKOVl0Jncw65BLXzedBCyk6SZKLFy9ibYoSf/CDH6BDlrPzek7uW7vdbp8/f75cLpvsErUoisbHxxHWJpBFpfwdhOOEd400TeM4FhMOhULh9ddff2xmenR0tJhdV09bCvf39/umae3dnW6j5JIGNQrpg9WZQIg3Z9Iv5/cEevamj70aabDdt/JjfWVtbz9C30De7uHhoTGGWytriTDT2CtB+ynorTDTRP/g4ABqx0eCcDDZ3Ui91y8HOp0OzHStVvOjBVILb6M7d+7QtyoBloZgKcrl8uLi4skZqYWFhSiKiL4xBpsncyde/GrsSvcDhnMRDFMoFF599dUTqj4HqDTibSiIAnHlRyErxGLt6ToFDEAHhoeH0WVcaoCw99S9Tvh+gCBvutM9plmFaCUi8op0/VdQ1g9+bkPa268WHD8QE2Y0TdPDw0M8QyFcFGCmsbNOz0Wgs4kgEG64YanbPUbmmuyY4ED8cOh0OkmS5JppncuV7tKxlOkSXh0eHuIjhuPTJD4Ehc1d1BXTY50Gefjwoai1yW50RZsKTXDp7REBxJMkKXefhAUz/cILLxxXfV0As1gsFi9fvkzyx866vuNeUq+4OI7gBFMctA3q3r17Vsw0zLa8T6Afb1rIyJ+xJ+Kafk9gbVoP/T7ASuHOnTvr6+vf/e53cei+J/vh4eHc3Nz6+jq873v37i0uLiLSY3d3FyeKjI2Nvfbaaw8ePEjTtN1ub25ujo2NbW5ubmxsrKysXLt27dGjR4eHhz/72c9u37798OHDg4MDxI1QfIgGMtMnMQkAMx1FUQjyO++88+DBA9eHcK6epN1NgIpzCocZpGnabrf/4z/+49VXX8UR6uPj41evXv3pT39KCEeUxrvvvqsrsre3d/Xq1UqlgrAB3igetdR6Fa7zgOvXr09OTv7TP/3TvXv3SqVStVq9c+fOxsbG5z//+ROd+dnY2Lhw4UKxWLx69er//d//pdkeopWVlSPuAPD0bo62v7//8OHDV1999YUXXjh//vzk5OSNGzfu37+/v79PFXf1/UAhv+eQv72l0++kR4gsNFkhxHBphrdH7wpznJAbWC1wrHHWaZq++uqrFGYQRVGj0Wi1Wi7ij8FMW71pvuEN0xHVahWhqVZSQjFE4lEakeJwSqWSXkc6dsB3VblcvnPnjgvH1Rf6gJTpDNzqSqViVZtjBHznYV/Pye3J4sogWn93dxcLNvCd6/V6q9XS2Y8o2/cDnGCkhyeXTtdtkNo6qjXRStPaWtZXjwe05bW+coHe9Pztb39bLBadP38eW5apf5KVxBLiSZtpTRxFN7P7cOlL3DNL3vG6BeKVn4IV1tbW6OicRqPh+ioPKctfED7Ah4eHuQlz9JVjACoCZhpTZyc6FN28eRMb5Y8ys+EHq/BpyMcSrmhHoTbpr7mBBoSa6T5Ic1kHUtBZuOh7LV38usp6zEAHGlAv0l4Pd0KRwpFTm5kmY40uSkFpAJhpvb/R5ar3BEmSoLty4ih0YmJCbK0GhCxm8nZ0aYgro4cslhAwchSLxUqlsra2lstJLrcumJ6e1s5mH/ocovAAbqb7ZjsXkiQ5d+7cidrotNs/Q8cxxuBEp3K5jIt4RDWtYjkJgT9OCDLTgD5qm9o6m58OiTU9spl2lZ6rFj2pET17jF1bQdpteXvqUcB3mWkC2u7hMdPHAtxMY24BHalYLNIGEMFn7npjbiN6mimwBXlMCN/o31NbuMqi9N3dXdgUHpHShz4HKnyamWkdX9+TYvsBgW7nzp07RhttbVZetVarhSkODK6NRmN3d1cTsYrlJAT+OOFxb2/pBJh73Wb9lZL2bqa1ogRCkiR0Py8/z7fmANfJh+KCCQ9cvHhRm2ky1vg9e/YsOddQbrpX1wX+A5qtB1rGcQwzvbq6il7kOhySe9N8ZsY6ULlaU6eLtgtsaEC73aZpkCiKcvfpBAJnAEatXC7jLCRXXY4IVJzLTB8XYJ2jUCjcvHnzJOgDeKWgY9RGPG5HC+HYBft+gKAT8o63yFyCoqlCsoiMmoIHpyfVcb1qt9s/+tGPXmewtbWln2/fvr2xsbGxsUEPHF7N4Hvf+96rDvj2t7+N30984hPC9n3oQx+iazJgoz/84Q+fP3/+j/7oj1544YVisXju3Ln5+fmrV69+k8HXvva1qzZYWFjgf2cUIPGFF14YHR0tFAqDg4N/8Ad/gIsqCtn9Ujh2Q8CZM2fK5TKuj8ENMvpemM3NTU8rWJtSq0p4y7bb7YcPH25sbMzMzFSr1RdffPHOnTt7e3u5ASGB2tVut+/cuTM6OjoyMvLP//zPRFPn7Ryt06UnaaZbrdbMzEyxWLxw4UIfZ8v0BL/61a+2trauXr06OjparVZHR0fX19epRThYZfiEwXtgpk8OPO3nwukJPBSOSLkPQKSHnuigs/Nrtdq9e/f43PRJxE2nadput+FN09oOHZ7gcqtpbjpEbgInvLlTd5N5mpL71yGnHnrUTPzFouLQ0JB1qjqEbC6kJ2am9/b28KnEvwlOArDvn3RY+86pVzj+t7+mkLO9hUvnJCCXfhqwAukhotOPokAeCpzVxwMbGxvi8ISzZ89ifkN/uZ+omU6SZGBggE98t7vD78Sei4HgJURXurUhdIun3ibzl0W7Y8QuiT5AMIzLScWunFy9DYT0ZJYQ2+325OTkydloWh4kmY+MjPCtg0cUy6879DA3fRIyyiUbWLQLx5OxD2XyZ7Sy0UcpgpoLXn/9de5EI2LB2oXQAU5oF2LKlhD1q4ODA3KuubHONdPWxtUPfjl3ui21C9Mjanh2URQNDQ359xxbOe+wwZt+2+02gkzEucaBeusB4jncmw5R0Xa2EZzv/D6Kbmv69+7dw/Q9NLnZbB4cHIiy+hDIEwM9HL1EIjtGyKUZWK4LzZOxD33yZwysbHhBOgtPuX37Ni15U+ydlRo30647KfoWSMomPVyck3MN88TNtKeOulld6Z1uRXLh913Ndru9uLhI+4890yBa66x1bLfb9Xod1DyB270CEa9UKuGTHn6ZkI2enJwMzxUIFGBH+1O4bHXt+pDJkwE9BOSdBFjbQyAE0glMD9QwzWTq7eeBrPrL0gQ1Gv3d399H6EVuXVLmYQkz3Qe3Onu73RabxT154TfBL7OWottI8ONpFBdO2m1ArbWwskFA52rBoMDj84x5Vv55ejs7fqtSqVi3zvubxtNevU56eBoLTCIYX0S/haiHBxC4SSdk4QBoTVy0Wh8yeTLgBLe3+AmKJtdvO3lmy4XT6e6N1rrkqlEIjp8TKwN9E+ybt042X1mtVv03yxB+ILcdZnHK5fLU1FQgbxTkEIifKnm6GO7YuneuInl0QyceHh7iBInJycnPfOYzdHyElec0T557e3s3btwYHx9/+PBhTyOoFZAx10yHyPzdd9/d2tq6cOHC4ODgjRs3jjIfjVNNMPu8t7eH+I1KpXLx4sWrV69ubGzgjBrNpK5dHzJ5MqC3uenjkpRQF09xrnJDcDp9ebg8hRNJvT3chaBxRKIu2s+bnx9r6XigWRF/Ln91hFQp3T9p21Etrl+JFH9jaQ41Wi4FXSmXKFwtsru7y5cZQ/zrjq3Fb926halq/m3k4t8P6TFFeiwtLWEi61gO60DgMx1cNzU1pcmGNFx/MnkCIOfK2pOAVFkiD2YIMx40a3rq7plCb1ya5NEwnd5xmwYXP5pOIIce5HBwVSe19aWeaPqbLw1rFz99QcpVllXgOtFFgQOPT3Dd8uUnghNZ9VS1R2ge3o4e6YGN4Ec8UIm2L/3gBz+gQ1QQ4OgfzDy161UgTww8bjOd9jLNFNiEHIfTT5mh8RDX6iIeBBsefBdCR1mBjs08ueruYtXKfE/4LgouIfgbwlV0SC4tIk0khPPU2/T6rxXTKg2PWNIsJgTHW3O/mJskv8SwxFqpVLghc3HuoXMUM93O7tu8cOFC37sxYZ3hQddqtaGhIX7IjCuXtV381bcmPpHgvFm8YxPW0UHQzC3C1ZAaLbBEK2VRil+NAvlxIehSrPxbFTcXPMjhRDy5PFW2Vi0kl5aYp2qeWnC5pcEK7McU5foZSLNzJyhuweWNWuuepilticadityoBQow7ddM03km2MPiOX/VA5iApqgefo9w7sE1HaU/1grmyuGJhPybxY+xME8LhWQ5SqG5zHTcVsavWyEM8IcQaimzNVZuraWnAXakJ7CS8ss5dUgyXEquiudWTYvOWnQIM/4K5rKES6xhcFdWVlyCtRLHASCjo6PtdttfEReH4WZaMI+oTc+Btx75o6zd3V06vo5PcYjxxs+Mlon+m9pkeLwgmHlv4T0OyPODaKdAfJ3ooaz1wIrgAk8RPRWtS+8ovXSV3lNxmkJuKYFFu2pk5UqzLTK6iOSy5BKCq2hXuS5kV6FagHAq8ckvbiGw1pfettvtkZER6xF3fqBy+/Cm4zimj4A+zmvEFEe1WuUHQFvpuIRpFbWQraftjh1Omn5PkG+m30N2/UW7WveIxWnt8eiozigIeoqwInQcff4xQK8l+uVmxfQLX0vAJRmPJHMzWiXsyuuqi1UIVvz9/f2NjQ1cbjsyMnL16tU333zTGn8mcuEQqIWFBRGv5pdhmqZJkgwNDY2NjQVa28PDw9XV1VKpdPny5fA1w8PDw1/+8pd37tyh05HGx8dv3LhhjMGtb4F00jy/WGAKgR8FBAO6iJDsR+QhEJxz01qUjx8eg+BcWcI1rNOLyfBrp8iYOnr+YwO/NLQM+SsrZk/t4moUgRNSCkdIe+nt/rq4aIpyCbDMaPWvBX08G2MwgdBoNEIsNZWClcwQM91ut5vNZqlUouOwNds6Cz4UMIvNTxbtY9FSN5C/LQIbLhCszHjo98rzcUGomX6cPGlOwvHDU/z16kPJUtVprW3PkcWvTk8Duk0uh66HwOxWfKtUrVly2qxbMv528dDMLYjTt6b7iQh56ryeLALo/Ap+O1THoQyIuyiXy1tbW34J0NtwM40968VicWZmxo+Z2i5PoX3zfVykoCWfqnYRzwLHJYT+QDDjou/n+eQg6CDTVPWfo/MXQsHaPK68Vt40ppCytS65SuaRgDWLFcHDjFYUP0v+6ms2rNXxsO2vskDzy9aT11XT3Ap2AtSpD5aOCGl3U3LhiK3SdMtXx1Z9GFNxp6KnjQLNNMhiI/je3p4fE6cj0fm0GGAoOMSTV0OvMqRcgkKvpAIL4sW50PTzSUOQN2199Xj48/NjxRQpIWRFdr+SWdnw0HGV6yqx093DXblczyES09z6s+QS9AjQJX8XP7ksuRJzi8gt99ghV5hJktDGFpoG6dgkMDk5iZBqV905TZeZJjRuo137TcgKkweNIBBxTK6VWxfkCkcjeP4evYGs/KSq91l58DN/vNCDNy3Sj1hwT5XUCuHB5A8uTKv2hKhdCA8hdeGkOg4VSZVauyhYK+KXUm5lPeLSlD2kAmXiYTKXHxcFV5YQfgI57ymvS0p8nx4/BR8Ac4lT+emgak2HivBEenQyXx5zHf59hnD5MYoUi8WJiQlX8EY49NccIssRG0i3iDXRRT/t7mUeOscIj/v2FlezBbIRnje3IJfqdPIUIveVJ4sVR7OqK6sJ6r+pUiBrjTRlT410Ef5auyj3BLl0rLLqg46fAT9CCFpu7ehvu91+9OjRxsbG1atXL1269NJLL92/f1/cKYVzmhBTsbGxoY9qwgMiPVyTHgcHBzMzM+fOnbtx4wY/Merw8PDw8PDg4KDVat25c2dhYaFarY6MjMzMzLhOR+oDrO1iFWmqBCtywCY8AAALcklEQVTwjwVcHFoZ8FM4Rq40PO6APJdQcnNpCj2VFUJcY3qyuxJdWbj+uUoROqp1yKVG4q2gE8JnrqxCXll56ANcvFkRwmvqr6CrUicBruoQbG5u6lu+8It5kmKxuLS0pOuVer1phI7wG8GBQ1fC03T5xMREyB0IxwJaOB13gx57Q7ga5X0FfU56HB36phnOj595epV220R/Xiuyi6aLH/FWa60mElIXF7f+slxVyCWl34q8x9XfQoTmkYyfjqfQntLDETwZuQLQISEIevvBD35ACDgGmkfRiYzcTJMXDBtdKBQ2NjZ4Ln55ipgl5yf0a4EfFxxRbh8EeI+3t1gp+4vTb4WainQPHa1/mqaVoH4l2HNlt3KltVbXJRfCm0mwofuJh/k+eOhDeVyC9bRFID+BHPpbNpf5PqqsKQC4k8tPL2q32zMzM4VCQUdcCDMNgmSj6/U6fGcAZp+HhoboEJLH40ET+GV+CoD35lqA3OI8Jeq3nsb2kKJXWmn6UDJB1qWIOosVP1UWIbcJ/EITmB4JWFP6IN4TV1pQgQVpbjnBvkv3t5SfyXBZhTCG33a7vbm5SZdtYxpkf38flrdWq/FVR+1NcxtNe7txRyWuop+enu77PLyjw7HI6smG9+OZHv5WdDWtFd9FoeM2UlY14nQCNczFjCCrOel02yDOs784j3ACOezYDF+vNHOLCOEkRLwebq3Me+oSUl/RKC72wmWVC6J2fGtJpVLZ3NxMkgSmlnaawChzM91qtXBfMI5Xbbfb6+vruJSSrh/ExMhj9qMJjldoTyTknJB3QqXqtrGWKNrShZmbN1UdtScdsvKfy63g0MOYzpLarI+WnmZPVDaEeReaJ1dgFheTIWjWWqe9tKPmU9N0caglrBvC2jThVXaVaH3Fa3R4eIiYkNHRUURiXLp0CY725OTk/v7+9vb22bNnK5XKwcGBMebZZ589d+5cvV6/cePGSy+9VK1W//AP//DGjRsPHz7c398/lviN4wItkFMAvF/MtAez15b2aIDA6a8IT7macm4RgishH05NS8/z1i9e/sqKZmWvPwjMa62In7ee2kVk9LMn6q5p6ld+nnPrLlj1YwL4LbrFDEZGRprNJvatYAPLmTNnaOvgezL7zMFfKVcbnYJz0uNExZQ6lNKawttMN6FuUY9+WJv/ONTPrmepzRy4snCxWJkMkuzJgLUigRlD8F04qWpZTjakOTQzgfxoTJF4jC0iFCA8F37FMfz4LRQK+MWVhnrXjKjUUSCcjmBe8KAFcgoAn5k+OUmlvSil0Co/bx7N0G+t+EcEXVBuKR2bAfJIIFXSyBWyB9ODYC20V+g7o59meFvojLm8edrFL21/cf5CxStXowsE4hNhG8PDwwUG5XJ5cXEx8HSkx+Blu4Qg3mpRuCT2AYGcMz1OqNS0d9+hJ+KuKlhfhWtYbgqn2enu7R6yVg4Da9pxt1c4HT99/XwUOscIga3WUaLwN4GHYY9IRVuIggKLEGrjL5cTp+e9vT3cn4vrB0PiNzqdzlGWECkcMCR7oFQFvivjBwd8ZvrkSk3fazPtwfdoWE9o+sGTxVWLwGp2vN2+b0iPo5/kVuQoZHMbqG8eNAX+KhffxWcIMyHcWisIaDPQArHC/v5+kkG7G+I4xikiaXY4NTf97XYbAYKeix9F9bUA9V8//gcQHutdiJx+py/pB2a0KkenuwPQc6Aqu9TOqlVpd4fMJeLh38q2J6OLgktuGsHFfLj8NZFjB6sMA8Wr+ex0V8pFWby18uN61i3i57zT6eB0uvX19bW1tXfffZeYPDw8bLVadMuilUJPIRz/7//9v/X19b29vf39/f39/b29vV/84hetVmtnZ+fBgwd0oEe73a5Wq7u7u4j8e+edd1qt1tDQUKvVWl1dHRsb+9///d/AEj1NmZ6MwvxaQ87c9AkJLj1Jb7rTe8OHK3THZss0QqqMVOrtkFaW+qi1LqJXIppmr0Q0G0fkwVWKoO/6myqj4OfWmtFKJxf8aLlvgYAD7Q4PDwW3t2/f1hz2B1tbW3EcG2PoEpbDw8NarRZFEeFg72IURQgvieN4fX09juNisdhsNuF040L0QPDwrJvpAw75S4gnIa+eaBInvWbJzSjUxUXBpVvWZxfZ1G0OBIKr9JBaB8onBHoqWuQSFI6RKw97ujhrFVLV0PrBRUoz0FE6gBkAbOxO0/TevXuNRqPJYHV1FZaOH53RbDbr9TqfOiCWcLiHrgLMtGB7d3e32WyKqDt45TCm1sNINzY28Aqcp2n66NEjHJpKyNhcg22Q2PcIsuVymSZM0mMC3UwfcPDtQvy1lhRvcle60HL+EKhGVsWy0tcMCA79CmolZUUTD+FZXCX2RNMlokBmegLdIrosl7QDiXvouAoyxtRqNbqf+86dO/BAjTFRFNVqtcXFRWwarNVqmPaFDU2SBHlxoFKHmel6va5LfP3114X+wO+GY0sW//DwsF6vIyav0WjU6/VvfvOboiJbW1tAxqFOtVptenoap4WQmYY3XalUYJGjKJqYmIDhxmbIKIpCZlr8bddrM31AIGh7yzFKrVdSqdty9VecVRV60iqRKErRWVwsud5aK+snpfk5CUUPpyl6YCD+0fmxytzadoH0AzMKscPa4u/9+/dhdmFDjTGPHj0i6wz7S9cMJkkCZ5wrCZlpUejt27fpcCVgNhoNui4LxNvt9oMHD2jMABu3bt0SVXv99dfpsD1Y6sHBQXHYKR5gpjH7MT8/j4tr4zjGMJBrpj1tpyUf3lJPPOQvIR6vyHrtJ33k8mcRleK18yiWTsxF7uTZVq24flHrt9a/Ia0W2GH8xXnwe1WeoyuYlrm1pXplw5pXi4WXhd9arQb/dGlpicwcPOWHDx9iMoHs7507dzCTALeX+85pmsJX1bxtbGwIMw00XlySJPfv3xcxGLu7u6KBMDdNMzC1Wg1bFsX0iDDTi4uL2FYDfMxop2EQInZ/Y32gIGcXYqB+h0OvpPpmwJMrVdZE/NUq5UrxF+QpXausIN5xmANPiubWz4N+1vJx5XKRdUkpF/pWDH9LWSUmKuipr6u5XUToVbvdnpube/DgwXe+8x2kYPKBe9OtVgtrg9/85jdhEPf39+fn58lMA4D27rvviiL+4R/+gR9Vmqbpyy+//D//8z943t3dHRsbOzg4+OlPf7q+vs4N6DvvvCNE9Pd///cw05iAvnPnzi9/+cvp6WnEdQDnv//7v40xQ0NDi4uL29vbs7OzN2/evHfvXr1eP3v2LI7D7iPy2iP5nvThyYb3+LzpvkGzJFrdw3bq6G+BxR1RGp7sqbII/JVgOJz5vvm09iVdaE+S9BQXyFJuof6mD+dTV9NTruYtjuNKpULBDzjcrlar4YpuTHFEUZQkycrKSj2DRqMRRdHDhw87nQ7mr6MoiqJobm4uSRIQx8TIyMgIstBcNtxzzEFjQjzNhgek49WdO3eEOsGbBlAigqYp9mNzc5MOvMZkeqPRQEHkemvKIeBv6FPovD/Pmw6E3K7oQchF81M4CvjZ7tjMtFWzNYfHy2141wqRZ0hxgSwJ9nKZ99erJw6teUWrcWQRbkErcny2N03Tw8NDsbWE4pQTBpyaNb3T6ezv73siPfBK80aRHpwl4pmOSE0z2013CNBpIdj3uLW1paWUC0IBRPopdH6tzXTn/2vvjFYABGEo+unih/hbvvnuV8weBCk318QKoXuegnIsb15GChsoatSYfyhKZGIrcDHn26wKM+5RnuL1s+grh5ZtekqyLiWuvn63m+GpJJXIlidJokhCi6NGQZTgIvwPcgihFvLt1KBzrlXf9VwKXRvEEJH3vlXftfNA177LwnnGRKFB2bMtAADgPbgnGrf+ulEppbPP5pxjjN+9xp+ATQMAwNbApgEAYGsO1aBgSpNR2cUAAAAASUVORK5CYII=" alt="" />

vmalloc管理的是一段不连续的内存区域,这一段具有线性地址空间的所有性质,分配到其中的页可能位于物理内存中的任何地方,通过修改负责该区域的内核页表,即可做到这一点
每个vmalloc分配的子区域都是"自包含"的,与其他vmalloc子区域通过一个内存页分隔(类似于直接映射和vmalloc区域之间的边界),不同vmalloc子区域之间的分隔也是为了防止不正确的内存访问操作(这种情况只会因为内核故障而出现)

1. 用vmalloc分配内存

vmalloc是一个接口函数,内核代码使用它来分配在虚拟内存中连续但在物理内存中不一定连续的内存,使用vmalloc的最著名的实例是内核对模块(LKM)的实现,因为模块可能在任何时候加载,如果模块数据比较多,那么无法保证有足够的连续内存可用,特别是系统已经运行了比较长的时间的情况下,如果能够用小块内存拼接出足够的内存,那么使用vmalloc可以规避该问题

关于vmalloc函数的相关编程使用方法请参阅另一篇文章
http://www.cnblogs.com/LittleHann/p/4113830.html

因为用于vmalloc的内存页总是必须映射在内核地址空间中,因此使用ZONE_HIGHMEM内存域的页是最优的选择,这使得内核可以节省更宝贵的较低端内存域,而又不会带来额外的好处,因此,vmalloc是内核出于自身的目的使用高端内存页的少数情形之一

数据结构

内核在管理虚拟内存中的vmalloc区域时,内核必须跟踪哪些子区域被使用、哪些是空闲的。为此定义了一个数据结构(strcut vm_struct),将所有使用的部分保存在一个链表中,注意和用户空间进程的虚拟地址存储结构struct vm_area_struct区分开来
\linux-2.6.32.63\include\linux\vmalloc.h

struct vm_struct
{
//next使得内核可以将vmalloc区域中的所有子区域保存在一个单链表上
struct vm_struct *next; //addr定义了分配的子区域在虚拟地址空间中的起始地址
void *addr;
//size表示该区域的长度,可以根据该信息得到vmalloc区域的完成分配方案
unsigned long size;
/*
flags存储了与该内存区关联的标志联合,它只用于指定内存区类型
1. VM_ALLOC: 指定由vmalloc产生的子区域
2. VM_MAP: 用于表示将现存pages集合映射到连续的虚拟地址空间汇总
3. VM_TOREMAP: 表示将几乎随机的物理内存区域映射到vmalloc区域中,这是一个特定于体系结构的操作
*/
unsigned long flags;
//pages是指向page指针数组的指针,每个数组成员都表示一个映射到虚拟地址空间中的物理内存页的page实例
struct page **pages;
//nr_pages指定pages中数组项的数目,即涉及的内存页数目
unsigned int nr_pages;
//phys_addr仅当用ioremap映射到由物理地址描述的物理内存区域时才需要,该信息保存在phys_addr中
unsigned long phys_addr;
void *caller;
};

aaarticlea/png;base64,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" alt="" />

创建vm_area

在创建一个新的虚拟内存区之前,必须找到一个适当的位置,vm_area实例组成的一个链表,管理着vmalloc区域中已经建立的各个子区域,内核全局变量vmlist是表头
\linux-2.6.32.63\mm\vmalloc.c

/*** Old vmalloc interfaces ***/
DEFINE_RWLOCK(vmlist_lock);
struct vm_struct *vmlist;

内核提供了辅助函数get_vm_area

/**
* get_vm_area - reserve a contiguous kernel virtual area
* @size: size of the area
* @flags: %VM_IOREMAP for I/O mappings or VM_ALLOC
*
* Search an area of @size in the kernel virtual mapping area, and reserved it for out purposes. Returns the area descriptor on success or %NULL on failure.
*/
struct vm_struct *get_vm_area(unsigned long size, unsigned long flags)
{
return __get_vm_area_node(size, , flags, VMALLOC_START, VMALLOC_END, -, GFP_KERNEL, __builtin_return_address());
} static struct vm_struct *__get_vm_area_node(unsigned long size, unsigned long align, unsigned long flags, unsigned long start, unsigned long end, int node, gfp_t gfp_mask, void *caller)
{
static struct vmap_area *va;
struct vm_struct *area; BUG_ON(in_interrupt());
if (flags & VM_IOREMAP)
{
int bit = fls(size); if (bit > IOREMAP_MAX_ORDER)
bit = IOREMAP_MAX_ORDER;
else if (bit < PAGE_SHIFT)
bit = PAGE_SHIFT; align = 1ul << bit;
} size = PAGE_ALIGN(size);
if (unlikely(!size))
return NULL; area = kzalloc_node(sizeof(*area), gfp_mask & GFP_RECLAIM_MASK, node);
if (unlikely(!area))
return NULL; /*
We always allocate a guard page.
总是分配一个警戒页,作为安全隙,内核首先适当提高需要分配的内存长度
*/
size += PAGE_SIZE; va = alloc_vmap_area(size, align, start, end, node, gfp_mask);
if (IS_ERR(va))
{
kfree(area);
return NULL;
} /*
* When this function is called from __vmalloc_node,
* we do not add vm_struct to vmlist here to avoid
* accessing uninitialized members of vm_struct such as
* pages and nr_pages fields. They will be set later.
* To distinguish it from others, we use a VM_UNLIST flag.
*/
if (flags & VM_UNLIST)
setup_vmalloc_vm(area, va, flags, caller);
else
insert_vmalloc_vm(area, va, flags, caller); return area;
}

remove_vm_area函数将一个现存的子区域从vmlloc地址空间中删除
\linux-2.6.32.63\mm\vmalloc.c

/**
* remove_vm_area - find and remove a continuous kernel virtual area
* @addr: base address
*
* Search for the kernel VM area starting at @addr, and remove it. This function returns the found VM area, but using it is NOT safe on SMP machines, except for its size or flags.
*/
struct vm_struct *remove_vm_area(const void *addr)
{
struct vmap_area *va; //依次扫描vmlist的链表元素,直至找到匹配者
va = find_vmap_area((unsigned long)addr);
if (va && va->flags & VM_VM_AREA)
{
struct vm_struct *vm = va->private; if (!(vm->flags & VM_UNLIST))
{
struct vm_struct *tmp, **p;
/*
* remove from list and disallow access to
* this vm_struct before unmap. (address range
* confliction is maintained by vmap.)
*/
write_lock(&vmlist_lock);
for (p = &vmlist; (tmp = *p) != vm; p = &tmp->next)
;
*p = tmp->next;
write_unlock(&vmlist_lock);
} vmap_debug_free_range(va->va_start, va->va_end);
free_unmap_vmap_area(va);
vm->size -= PAGE_SIZE; return vm;
}
return NULL;
}

分配内存区

vmalloc发起对不连续的内存区的分配操作

aaarticlea/png;base64,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" alt="" />

/**
* vmalloc - allocate virtually contiguous memory
* @size: allocation size
* Allocate enough pages to cover @size from the page level
* allocator and map them into contiguous kernel virtual space.
*
* For tight control over page level allocator and protection flags
* use __vmalloc() instead.
*/
void *vmalloc(unsigned long size)
{
return __vmalloc_node(size, , GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL, -, __builtin_return_address());
}
EXPORT_SYMBOL(vmalloc); void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot)
{
return __vmalloc_node(size, , gfp_mask, prot, -, __builtin_return_address());
}
EXPORT_SYMBOL(__vmalloc); /**
* __vmalloc_node - allocate virtually contiguous memory
* @size: allocation size
* @align: desired alignment
* @gfp_mask: flags for the page level allocator
* @prot: protection mask for the allocated pages
* @node: node to use for allocation or -1
* @caller: caller's return address
*
* Allocate enough pages to cover @size from the page level
* allocator with @gfp_mask flags. Map them into contiguous
* kernel virtual space, using a pagetable protection of @prot.
*/
static void *__vmalloc_node(unsigned long size, unsigned long align, gfp_t gfp_mask, pgprot_t prot, int node, void *caller)
{
struct vm_struct *area;
void *addr;
unsigned long real_size = size; size = PAGE_ALIGN(size);
if (!size || (size >> PAGE_SHIFT) > totalram_pages)
return NULL; //在vmlloc地址空间中找到一个适当的区域
area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNLIST, VMALLOC_START, VMALLOC_END, node, gfp_mask, caller); if (!area)
return NULL; //从物理内存中分配各个页
addr = __vmalloc_area_node(area, gfp_mask, prot, node, caller); /*
In this function, newly allocated vm_struct is not added to vmlist at __get_vm_area_node(). so, it is added here.
将这些页连续地映射到vmalloc区域中
*/
insert_vmalloc_vmlist(area); /*
* A ref_count = 3 is needed because the vm_struct and vmap_area
* structures allocated in the __get_vm_area_node() function contain
* references to the virtual address of the vmalloc'ed block.
*/
kmemleak_alloc(addr, real_size, , gfp_mask); return addr;
}

对于vmalloc的使用,我们需要注意的是,要理解它的设计思想和使用场景

使用vmalloc从伙伴系统分配内存时,是逐页分配的,而不是一次分配一大块连续内存,这是vmalloc的一个关键方面。如果可以确信能够分配连续内存页,那么就没有必要使用vmalloc,毕竟该函数的所有目的就在于: 即使因为内存碎片的缘故,内存块中的页帧可能不是连续的,还是依旧能够分配大的内存块。将分配单位拆分得尽可能小(即以页为单位),可以确保在物理内存有严重碎片的情况下,vmalloc仍然可以工作

2. 备选映射方法

除了vmalloc之外,还有其他方法可以创建虚拟连续映射,这都基于__vmalloc函数或使用类似的机制

. vmalloc_32
vmalloc_32的工作方式与vmalloc相同,但会确保所使用的物理内存总是可以用普通32位指针寻址 . vmap
使用一个page数组作为起点,来创建虚拟连续内存区,与vmalloc相比,该函数所用的物理内存位置不是隐式分配的,而需要先行分配好,作为参数传递 . ioremap
ioremap是一个特定于处理器的函数,必须在所有体系结构上实现,它可以取自物理地址空间、由系统总线用于I/O操作的一个内存块,映射到内核的地址空间中
//该函数在设备驱动程序中使用很多,可将用于与外设通信的地址区域暴露给内核的其他部分使用

3. 释放内存

有两个函数用于向内核释放内存,这两个函数都会规约到__vunmap

. vfree用于释放vmalloc和vmalloc_32分配的区域
. vunmap用于释放由vmap或ioremap创建的映射

\linux-2.6.32.63\mm\vmalloc.c

/*
1. addr: 表示要释放的区域的起始地址
2. deallocate_pages: 指定了是否将与该区域相关的物理内存页返回给伙伴系统
1) vfree: 将这个参数设置为1
2) vunmap: 将这个参数设置为0,即只删除映射,而不将相关的物理内存页返回给伙伴系统
*/
static void __vunmap(const void *addr, int deallocate_pages)
{
struct vm_struct *area; if (!addr)
return; if ((PAGE_SIZE-) & (unsigned long)addr)
{
WARN(, KERN_ERR "Trying to vfree() bad address (%p)\n", addr);
return;
} //不必明确给出需要释放的区域长度,长度可以从vmlist中的信息导出,remove_vm_area扫描该链表,以找到相关项
area = remove_vm_area(addr);
if (unlikely(!area))
{
WARN(, KERN_ERR "Trying to vfree() nonexistent vm area (%p)\n",
addr);
return;
} debug_check_no_locks_freed(addr, area->size);
debug_check_no_obj_freed(addr, area->size); if (deallocate_pages)
{
int i; for (i = ; i < area->nr_pages; i++)
{
struct page *page = area->pages[i]; BUG_ON(!page);
__free_page(page);
} //释放用于管理该内存区的内核数据结构
if (area->flags & VM_VPAGES)
vfree(area->pages);
else
kfree(area->pages);
} kfree(area);
return;
}

0x8: 内核映射

尽管vmalloc函数族可以用于从高端内存域向内核映射映射页帧,但这并不是这些函数的实际用途,内核提供了其他函数用于将ZONE_HIGHMEM页帧显式映射到内核空间

1. 持久内核映射

如果需要将高端页帧长期映射(作为持久映射)到内核地址空间中,必须使用kmap函数,需要映射的页用指向page的指针指定,作为该函数的参数。该函数在有必要时创建一个映射(即如果该页确实是高端页),并返回数据的地址
如果没有启用高端支持,该函数的任务就比较简单,在这种情况下,所有页都可以直接访问,因此只需要返回页的地址,无需显式创建一个映射
如果确实存在高端页,情况会比较复杂,类似于vmalloc,内核首先必须建立高端页和所映射到的地址之间的关联,还必须在虚拟地址空间中分配一个区域以映射页帧,最后,内核必须记录该虚拟区域的哪些部分在使用中,哪些部分仍然是空闲的

2. 临时内核映射

kmap函数不能用于中断处理程序,因为它可能进入睡眠状态。如果pkmap数组中没有空闲位置,该函数会进入睡眠状态,直至情形有所改善。因此内核提供了一个备选的映射函数,其执行是原子的,逻辑上称kmap_atomic,该函数的一个主要优点就是它比普通的kmap快速,但它不能用于可能进入睡眠的代码,因此,他对于很快就需要一个临时页的简短代码,是非常理想的

3. 没有高端内存的计算机上的映射函数

在许多体系结构上不支持高端内存,因为不需要该特性,例如64位体系结构,但为了在使用内核映射函数的时候不需要总是区分高端内存和非高端内存体系结构,内核定义了几个在普通内存实现兼容函数的宏
\linux-2.6.32.63\include\linux\highmem.h

#ifdef CONFIG_HIGHMEM
#include <asm/highmem.h> /* declarations for linux/mm/highmem.c */
unsigned int nr_free_highpages(void);
extern unsigned long totalhigh_pages; void kmap_flush_unused(void); #else /* CONFIG_HIGHMEM */ static inline unsigned int nr_free_highpages(void) { return ; } #define totalhigh_pages 0 #ifndef ARCH_HAS_KMAP
static inline void *kmap(struct page *page)
{
might_sleep();
return page_address(page);
} static inline void kunmap(struct page *page)
{
} static inline void *kmap_atomic(struct page *page, enum km_type idx)
{
pagefault_disable();
return page_address(page);
}
#define kmap_atomic_prot(page, idx, prot) kmap_atomic(page, idx) #define kunmap_atomic(addr, idx) do { pagefault_enable(); } while (0)
#define kmap_atomic_pfn(pfn, idx) kmap_atomic(pfn_to_page(pfn), (idx))
#define kmap_atomic_to_page(ptr) virt_to_page(ptr) #define kmap_flush_unused() do {} while(0)
#endif #endif /* CONFIG_HIGHMEM */

4. SLAB分配器

内核需要经常分配内存,但无法借助于标准库函数(例如C库中的malloc),因为标准库中的函数是基于伙伴系统提供的按页分配内存,但这个单位太大了(即 只能是2的n次方阶的内存块分配),如果仅仅需要一个10个字符的字符串分配空间,分配一个4KB或者更多空间的完整页面,这是完全不可接受的。为此必须 引入新的管理机制,这会给内核带来更大的开销,为了最小化这个额外负担对系统性能的影响,该管理层的实现应该尽可能紧凑以便不要对处理器的高速缓存和 TLB带来显著影响,同时,内核还必须保证内存利用的速度和效率,解决这些问题的一个较好的方案就是SLAB分配,它对许多种类的工作负荷都非常高效
需要明白的是,提供小内存块不是SLAB分配器的唯一任务,由于结构上的特点,它也用作一个缓存,主要针对经常分配并释放的对象,通过建立SLAB缓存,内核能够储备一些对象,供后续使用,即使在初始化阶段也是如此,例如

/*
为了管理与进程关联的文件系统数据,内核必须经常生成strcut fs_struct的新实例,此类型实例占据的内存块同样需要经常回收(在进程结束时),换句话说,内核趋向于非常有规律地分配并释放大小为sizeof(fs_struct)的内存块。SLAB分配器将释放的内存块保存在一个内部列表里,并不马上返回给伙伴系统,在请求为该类对象分配一个新实例时,会使用最近释放的内存块,这带来2个优点
*/
. 由于内核不必使用伙伴系统算法,处理时间会变短(伙伴系统的阶次分配和递归的阶次合并相对较消耗时间)
. 由于该内存块仍让是"新"的,因此其仍然驻留在CPU高速缓存的概率较高
. 调用伙伴系统的操作对系统的数据和指令高速缓存有相当的影响,内核越浪费这些资源,这些资源对用户空间进程就越不可用,更轻量级的SLAB分配器在可能的情况下减少了对伙伴系统的调用,有助于防止"缓存污染"
. 如果数据存储在伙伴系统直接提供的页中,那么其地址总是出现在2的幂次的整数倍附近,这对CPU高速缓存的利用有负面影响,由于这种地址分布,使得某些缓存行过度使用,而其他的则几乎为空,多处理器可能会加剧这种不利情况,因为不同的内存地址可能在不同的总线上传输,多处理会导致某些总线拥塞,而其他的总线几乎没有使用

通过"SLAB着色(SLAB coloring)",SLAB分配器能够均匀的分布对象(让对象在分配的内存块区域中均匀分布,不要总是位于2的幂次起始位置),以实现均匀的缓存使用

经常使用的内核对象保存在CPU高速缓存中,这是我们想要的结果。着色这个术语是隐喻性的,它与颜色无关,只是表示SLAB中的对象需要移动的特定偏移量,以便使对象放置到不同的缓存行
值得注意的是,之所以称之为SLAB分配器,是因为各个缓存管理的对象,会合并为较大的组,覆盖一个或多个连续页帧,这种组称作SLAB,每个缓存由这几个这种SLAB组成

0x1: 备选分配器

尽管SLAB分配器对许多可能的工作负荷都工作良好,但也有一些场景它无法提供最优性能,如果某些计算机处于当前硬件尺度的边界上,在此类计算机上使用SLAB分配器会出现一些问题,例如

. 微小的嵌入式系统: SLAB分配器代码量和复杂性都太高
. 配备有大量物理内存的大规模并行系统: SLAB分配器所需的大量元数据可能成为一个问题

为了解决这个问题,LINUX KERNEL增加SLAB分配器的2个替代品

. SLOB分配器(simple linked list of block)进行了特别优化,以便减少代码量,它围绕一个简单的内存块链表展开,在分配内存时,使用了同样简单的最先适配算法
SLOB分配器只有大约600行代码,十分的简单 . SLUB分配器通过将页帧打包为组,并通过struct page中未使用的字段来管理这些组,试图最小化所需的内存开销

由于SLAB分配器是大多数内核配置的默认选项,但有一点需要强调,内核的其余部分无须关注底层选择使用了哪个分配器,所有分配器的前端接口都是相同的,每个分配器都必须实现一组特定的函数,用于内存分配和缓存

. kmalloc、_kmalloc、kmalloc_node: 用于一般的(用于特定结点)内存分配函数
. kmem_cache_alloc、kmem_cache_alloc_node: 提供(特定于结点)特定类型的内核缓存

使用这些标准函数,内核可以提供更方便的函数,而不涉及内存在内部具体如何管理(例如kcalloc为数组分配内存、kzalloc分配一个填充字节0的内存区)

aaarticlea/png;base64,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" alt="" />

普通内核代码只需要包含slab.h,即可使用内存分配的所有标准内核函数,联编系统会保证使用编译时选择的分配器,来满足程序的内存分配请求

0x2: 内核中的内存管理

内核中一般的内存分配和释放函数与C标准库中等价函数的名称类似,用法也几乎相同

. kmalloc(size, flags)
分配长度为size字节的一个内存区,并返回指向该内存区起始处的一个void指针,如果没有足够内存,则结果为NULL指针
. kfree(*ptr)
释放*ptr指向的内存区
. vmalloc
. vfree . percpu_alloc
. percpu_free
//用于为各个系统CPU分配和释放所需内存区

kmalloc在内核源代码中的使用数以千计,但模式都是相同的,用kmalloc分配的内存区,首先通过类型转换为正确的类型,然后赋值到指针指针变量
info = (struct cdrom_info *) kmalloc( sizeof(struct cdrom_info), GFP_KERNEL );
从程序员的角度来说,建立和使用缓存的任务不是特别困难,必须首先使用kmem_cache_create建立一个适当的缓存,接下来即可使用kmeme_cache_alloc、kmem_cache_free分配和释放其中包含的对象。SLAB分配器负责完成与伙伴系统的交互,来分配所需的页,所有活动缓存的列表保存在/proc/slabinfo中

cat /proc/slabinfo
slabinfo - version: 2.1
# name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
ip_conntrack_expect : tunables : slabdata
ip_conntrack : tunables : slabdata
ip_fib_alias : tunables : slabdata
ip_fib_hash : tunables : slabdata
bio_map_info : tunables : slabdata
dm_mpath : tunables : slabdata
jbd_4k : tunables : slabdata
dm_uevent : tunables : slabdata
dm_tio : tunables : slabdata
dm_io : tunables : slabdata
sgpool- : tunables : slabdata
sgpool- : tunables : slabdata
sgpool- : tunables : slabdata
sgpool- : tunables : slabdata
sgpool- : tunables : slabdata
scsi_io_context : tunables : slabdata
ext3_inode_cache : tunables : slabdata
ext3_xattr : tunables : slabdata
journal_handle : tunables : slabdata
journal_head : tunables : slabdata
revoke_table : tunables : slabdata
revoke_record : tunables : slabdata
uhci_urb_priv : tunables : slabdata
UNIX : tunables : slabdata
flow_cache : tunables : slabdata
cfq_ioc_pool : tunables : slabdata
cfq_pool : tunables : slabdata
crq_pool : tunables : slabdata
deadline_drq : tunables : slabdata
as_arq : tunables : slabdata
mqueue_inode_cache : tunables : slabdata
isofs_inode_cache : tunables : slabdata
hugetlbfs_inode_cache : tunables : slabdata
ext2_inode_cache : tunables : slabdata
ext2_xattr : tunables : slabdata
dnotify_cache : tunables : slabdata
dquot : tunables : slabdata
eventpoll_pwq : tunables : slabdata
eventpoll_epi : tunables : slabdata
inotify_event_cache : tunables : slabdata
inotify_watch_cache : tunables : slabdata
kioctx : tunables : slabdata
kiocb : tunables : slabdata
fasync_cache : tunables : slabdata
shmem_inode_cache : tunables : slabdata
posix_timers_cache : tunables : slabdata
uid_cache : tunables : slabdata
ip_mrt_cache : tunables : slabdata
tcp_bind_bucket : tunables : slabdata
inet_peer_cache : tunables : slabdata
secpath_cache : tunables : slabdata
xfrm_dst_cache : tunables : slabdata
ip_dst_cache : tunables : slabdata
arp_cache : tunables : slabdata
RAW : tunables : slabdata
UDP : tunables : slabdata
tw_sock_TCP : tunables : slabdata
request_sock_TCP : tunables : slabdata
TCP : tunables : slabdata
blkdev_ioc : tunables : slabdata
blkdev_queue : tunables : slabdata
blkdev_requests : tunables : slabdata
biovec- : tunables : slabdata
biovec- : tunables : slabdata
biovec- : tunables : slabdata
biovec- : tunables : slabdata
biovec- : tunables : slabdata
biovec- : tunables : slabdata
bio : tunables : slabdata
utrace_engine_cache : tunables : slabdata
utrace_cache : tunables : slabdata
sock_inode_cache : tunables : slabdata
skbuff_fclone_cache : tunables : slabdata
skbuff_head_cache : tunables : slabdata
file_lock_cache : tunables : slabdata
Acpi-Operand : tunables : slabdata
Acpi-ParseExt : tunables : slabdata
Acpi-Parse : tunables : slabdata
Acpi-State : tunables : slabdata
Acpi-Namespace : tunables : slabdata
delayacct_cache : tunables : slabdata
taskstats_cache : tunables : slabdata
proc_inode_cache : tunables : slabdata
sigqueue : tunables : slabdata
radix_tree_node : tunables : slabdata
bdev_cache : tunables : slabdata
sysfs_dir_cache : tunables : slabdata
mnt_cache : tunables : slabdata
inode_cache : tunables : slabdata
dentry_cache : tunables : slabdata
filp : tunables : slabdata
names_cache : tunables : slabdata
avc_node : tunables : slabdata
selinux_inode_security : tunables : slabdata
key_jar : tunables : slabdata
idr_layer_cache : tunables : slabdata
buffer_head : tunables : slabdata
mm_struct : tunables : slabdata
vm_area_struct : tunables : slabdata
fs_cache : tunables : slabdata
files_cache : tunables : slabdata
signal_cache : tunables : slabdata
sighand_cache : tunables : slabdata
task_struct : tunables : slabdata
anon_vma : tunables : slabdata
pid : tunables : slabdata
shared_policy_node : tunables : slabdata
numa_policy : tunables : slabdata
size-(DMA) : tunables : slabdata
size- : tunables : slabdata
size-(DMA) : tunables : slabdata
size- : tunables : slabdata
size-(DMA) : tunables : slabdata
size- : tunables : slabdata
size-(DMA) : tunables : slabdata
size- : tunables : slabdata
size-(DMA) : tunables : slabdata
size- : tunables : slabdata
size-(DMA) : tunables : slabdata
size- : tunables : slabdata
size-(DMA) : tunables : slabdata
size- : tunables : slabdata
size-(DMA) : tunables : slabdata
size- : tunables : slabdata
size-(DMA) : tunables : slabdata
size- : tunables : slabdata
size-(DMA) : tunables : slabdata
size- : tunables : slabdata
size-(DMA) : tunables : slabdata
size-(DMA) : tunables : slabdata
size- : tunables : slabdata
size-(DMA) : tunables : slabdata
size- : tunables : slabdata
size- : tunables : slabdata
kmem_cache : tunables : slabdata

输出的各列信息包括

. 用于标识各个缓存的字符串名称(确保不会创建相同的缓存)
. 缓存中活动对象的数量
. 缓存中对象的总数(已用、未用)
. 所管理对象的长度,按字节计算
. 一个SLAB中对象的数量
. 每个SLAB中页的数量
. 活动SLAB的数量
. 在内核决定向缓存分配更多内存时,所分配对象的数量。每次会分配一个较大的内存块,以减少与伙伴系统的交互,在缩小缓存时,也使用该值作为释放内存块的大小

0x3: SLAB分配的原理

SLAB分配器由一个紧密地交织的数据和内存结构的网络组成

. 保存管理性数据的缓存对象
. 保存被管理对象的各个SLAB

aaarticlea/png;base64,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" alt="" />

每个缓存只负责一种对象类型(例如struct unix_sock实例),或提供一般性的缓冲区。各个缓存中SLAB的数目各有不同,这与已经使用的页的数目、对象长度、被管理对象的数目有关
可以看到,系统中所有的缓存都保存在一个双链表中,这使得内核有机会依次遍历所有的缓存,这是有必要的,例如在即将发生内存不足时,内核可能需要缩减分配给缓存的内存数量

1. 缓存的精细结构

我们更加仔细地研究一下缓存的结构,kmem_cache是Linux内核提供的快速内存缓冲接口,这些内存块要求是大小相同的,因为分配出的内存在接口释放时并不真正释放,而是作为缓存保留,下一次请求分配时就可以直接使用,省去了各种内存块初始化或释放的操作,因此分配速度很快,通常用于大数量的内存块分配的情况,如inode节点、skbuff头、netfilter的连接等,其实kmalloc也是从kmem_cache中分配的,可通  
过/proc/slabinfo文件直接读取cache分配情况

aaarticlea/png;base64,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" alt="" />

struct kmem_cache
{
/*
1) per-cpu data, touched during every alloc/free
指向一个数组,每次分配/释放期间都会访问,其中包含了与系统CPU数目相同的数组项,每个元素都是一个指针,指向一个数组缓存(array cache),其中包含了对应于特定系统CPU的管理数据
struct array_cache
{
unsigned int avail;
unsigned int limit;
unsigned int batchcount;
unsigned int touched;
spinlock_t lock;
void *entry[0];
};
为最好地利用CPU高速缓存(即尽可能地去访问热点数据,CPU高速缓存是一种硬件机制,而内核需要做的是尽可能遵循正确地使用方式操作内存,最大化地利用这个硬件机制)
这些per-CPU指针是很重要的,在分配和释放对象时,采用后进先出原理(LIFO last in first out),内核假定刚释放的对象仍然处于CPU高速缓存中,会尽快再次分配它(响应下一个分配请求)
仅当per-CPU缓存为空时,才会用SLAB中的空闲对象重新填充它们
*/
struct array_cache *array[NR_CPUS];
/*
2) Cache tunables. Protected by cache_chain_mutex
可调整的缓存参数,由cache_chain_mutex保护
*/
//batchcount指定了在per-CPU列表为空的情况下,从缓存的SLAB中获取对象的数目,它还表示在缓存增长时分配的对象数目
unsigned int batchcount;
//limit指定了per-CPU列表中保存的对象的最大数目,如果超出该值,内核会将batchcount个对象返回到SLAB,如果接下来内核缩减缓存,则释放的内存从SLAB返回到伙伴系统
unsigned int limit;
unsigned int shared; //buffer_size指定了缓存中管理的对象的长度
unsigned int buffer_size;
u32 reciprocal_buffer_size;
/* 3) touched by every alloc & free from the backend */ unsigned int flags; /* constant flags 常数标志*/
unsigned int num; /* # of objs per slab 每个SLAB中对象的数量 */ /*
4) cache_grow/shrink
缓存的增长/缩减
*/
/* order of pgs per slab (2^n) 每个SLAB中页数,取以2为底的对数*/
unsigned int gfporder; /* force GFP flags, e.g. GFP_DMA 强制的GFP标志 */
gfp_t gfpflags; //colour指定了颜色的最大数目
size_t colour;
/* cache colouring range 缓存着色范围,即基本偏移量乘以颜色值获得的绝对偏移量*/
unsigned int colour_off; /* colour offset 着色偏移 */
struct kmem_cache *slabp_cache;
unsigned int slab_size;
/* dynamic flags 动态标志集合,描述SLAB的"动态性质" */
unsigned int dflags; /* constructor func 构造函数*/
void (*ctor)(void *obj); /* 5) cache creation/removal 缓存创建/删除 */
//name是一个字符串,包含该缓存的名称
const char *name;
//next是一个标准的链表元素,用于将kmem_cache的所有实例保存在全局链表cache_chain上
struct list_head next; /* 6) statistics 统计量 */
#ifdef CONFIG_DEBUG_SLAB
unsigned long num_active;
unsigned long num_allocations;
unsigned long high_mark;
unsigned long grown;
unsigned long reaped;
unsigned long errors;
unsigned long max_freeable;
unsigned long node_allocs;
unsigned long node_frees;
unsigned long node_overflow;
atomic_t allochit;
atomic_t allocmiss;
atomic_t freehit;
atomic_t freemiss; /*
* If debugging is enabled, then the allocator can add additional
* fields and/or padding to every object. buffer_size contains the total
* object size including these internal fields, the following two
* variables contain the offset to the user object and its size.
*/
int obj_offset;
int obj_size;
#endif /* CONFIG_DEBUG_SLAB */ /*
We put nodelists[] at the end of kmem_cache, because we want to size this array to nr_node_ids slots instead of MAX_NUMNODES
We still use [MAX_NUMNODES] and not [1] or [0] because cache_cache is statically defined, so we reserve the max number of nodes.
每个内存结点都对应3个表头,用于组织SLAB的链表
1. 第一个链表: 包含完全用尽的SLAB
2. 第二个链表: 包含部分空闲的SLAB
3. 第三个链表: 空闲的SLAB
*/
struct kmem_list3 *nodelists[MAX_NUMNODES];
/*
* Do not add fields after nodelists[]
*/
};

这样,对象分配的体系结构就形成了一个三级的层次结构,分配成本和操作对CPU高速缓存和TLB的负面影响逐级升高

. 仍然处于CPU高速缓存中的per-CPU对象
. 现存SLAB中未使用的对象
. 刚使用伙伴系统分配的新SLAB中未使用的对象

2. SLAB的精细结构

对象在SLAB中并非连续排列,而是按照一个相当复杂的方案分布

aaarticlea/png;base64,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" alt="" />

/*
* The slab lists for all objects.
*/
struct kmem_list3
{
/*
管理结构位于每个SLAB的起始处,保存了所有的管理数据(和用于连接缓存链表的链表元素)
/*
struct list_head slabs_partial; /* partial list first, better asm code */
struct list_head slabs_full;
struct list_head slabs_free; //free_objects表示slabs_partial和slabs_free的所有SLAB中空闲对象的总数
unsigned long free_objects; //free_limit指定了所有SLAB上容许未使用对象的最大数目
unsigned int free_limit;
unsigned int colour_next; /* Per-node cache coloring 各结点缓存着色 */
spinlock_t list_lock;
struct array_cache *shared; /* shared per node 结点内共享 */
struct array_cache **alien; /* on other nodes 在其他结点上 */ /*
updated without locking 无需锁定即可更新
next_reap定义了内核在两次尝试收缩缓存之间,必须经过的时间间隔,其思想是防止由于频繁的缓存收缩和增长操作而降低系统性能
这种操作可能在某些系统共负荷下发生,该技术只能在NUMA系统上使用
*/
unsigned long next_reap; /*
updated without locking 无需锁定即可更新
free_touched表示缓存是否是活动的,在从缓存获取一个对象时,内核将该变量的值设置为1,在缓存收缩时,该值重置为0
但内核只有在free_touched预先设置为0时,才会收缩缓存,因为1表示内核的另一部分刚从该缓存获取对象,此时收缩是不合适的
*/
int free_touched;
};

用于每个对象的长度并不反映其确切的大小,相反,长度已经进行了舍入,以满足对齐方式的要求,有两种可用的备选对齐方案

. SLAB创建时使用标志SLAB_HWCACHE_ALIGN,SLAB用户可以要求对象按硬件缓存行对齐,那么会按照cache_line_size的返回值进行对齐,该函数返回特定于处理器的L1缓存大小,如果对象小于缓存行长度的一半,那么将多个对象放入一个缓存行
. 如果不要求按硬件缓存行对齐,那么内核保证对象按BYTES_PER_WORD对齐,该值是表示void指针所需字节的数目
/*
在32位机器上,void指针需要4个字节,因此对有6个字节的对象,则需要8 = 2 * 4个字节,15个字节的对象需要16 = 4 * 4个字节,多余的字节称为填充字节,填充字节可以加速对SLAB中对象的访问,如果使用对齐的地址,那么在几乎所有的体系结构上,内存访问都会更快,这弥补了使用填充字节必然导致需要更多内存的不利情况
*/

大多数情况下,SLAB内存区的长度(减去了头部管理数据)是不能被(可能填补过的)对象长度整除的,因此,内核就有了一些多余的内存,可以用来以偏移量的形式给SLAB进行"着色",即缓存的各个SLAB成员会指定不同的偏移量,以便将数据定位到不同的缓存行,因而SLAB开始和结束处的空闲内存是不同的,在计算偏移量时,内核必须考虑其他的对齐因素,例如L1高速缓存中数据的对齐

aaarticlea/png;base64,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" alt="" />
管理数据可以放置在SLAB自身,也可以放置到使用kmalloc分配的不同内存区中,内核如何选择,取决于SLAB的长度和已用对象的数量,管理数据和SLAB内存之间的关联很容易建立,因为SLAB头包含一个指针,指向SLAB数据区的起始处(无论管理数据是否在SLAB上)
例如下图给出了管理数据不在SLAB自身,而位于另一内存区的情形

aaarticlea/png;base64,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" alt="" />

最后,内核需要一种方法,通过对象自身即可识别SLAB(以及对象驻留的缓存)(即逆向查找),根据对象的物理内存地址,可以找到相关的页,因此可以在全局mem_map数组中找到对应的page实例

. struct page -> lru.next: 指向页驻留的缓存的管理结构
. struct page -> lru.prev: 指向保存该页的SLAB的管理结构

设置或读取SLAB信息、处理缓存信息的任务分别由下列函数完成

//处理缓存信息的设置和读取
. static inline void page_set_cache(struct page *page, struct kmem_cache *cache)
. static inline struct kmem_cache *page_get_cache(struct page *page) //设置或读取SLAB信息
. static inline void page_set_slab(struct page *page, struct slab *slab)
. static inline struct slab *page_get_slab(struct page *page)

此外,内核还对分配给SLAB分配器的每个物理内存页都设置标志PG_SLAB

Relevant Link:

http://cxw06023273.iteye.com/blog/867312
http://guojing.me/linux-kernel-architecture/posts/slab-structure/

0x4: 实现

为了实现SLAB分配器,使用了各种数据结构,SLAB的KERNEL代码在内核中很少被修改,相关的代码并不总是很容易阅读或理解,这是因为许多内存区需要使用指针运算和类型转换进行操作,这不是C语言中以清晰简明著称的领域,由于SLAB系统带有大量调试选项,所以代码中遍布着预处理语句

. 危险区(red zoning)
在每个对象的开始和结束处增加一个额外的内存区,其中填充已知的字节模式,如果模式被修改,程序员在分析内核内存时就可以注意到,可能是因为某些代码访问了不属于它们的内存区 . 对象毒化(object poisoning)
在建立和释放SLAB时,将对象用预定义的的模式填充,如果在对象分配时注意到该模式已经改变,程序员知道已经发生了未授权的访问

1. 数据结构

每个缓存由kmem_cache结构的一个实例表示
linux-2.6.32.63\mm\slab.c

/*
internal cache of cache description objs
该结构在内核中其他地方是不可见的,缓存的用户无须详细了解缓存是如何实现的,将SLAB缓存视为通过一组标准函数来高效地创建和释放特定类型对象的机制,就足够了
*/
static struct kmem_cache cache_cache =
{
.batchcount = ,
.limit = BOOT_CPUCACHE_ENTRIES,
.shared = ,
.buffer_size = sizeof(struct kmem_cache),
.name = "kmem_cache",
};

2. 初始化

为初始化SLAB数据结构,内核需要若干远小于一整页的内存块,这些最适合由kmalloc分配,这里关键问题是: 只有在SLAB系统已经启用后,才能使用kmalloc(kmalloc是基于SLAB实现的),更确切地说,该问题涉及kmalloc和per-CPU缓存的初始化,在这些缓存能够初始化之前,kmalloc必须可以用来分配所需的内存空间,而kmalloc自身也处于初始化的过程中,即kmalloc只能在kmalloc已经初始化之后初始化,这是以为伪命题,因此内核必须借助一些技巧
kmem_cache_init函数用于初始化SLAB分配器,它在内核初始化阶段(start_kernel)、伙伴系统启用之后调用。但在多处理系统上,启动CPU此时正在运行,而其他CPU尚未初始化,kmem_cache_init采用了一个多步骤过程,逐步激活SLAB分配器

. kmem_cache_init创建系统中的第一个SLAB缓存,以便为kmem_cache的实例提供内存,为此,内核使用的主要是在编译时创建的静态数据,实际上,一个静态的数据结构(initarray_cache)用作per-CPU数组,该缓存的名称是cache_cache
. kmem_cache_init接下来初始化一般性的缓存,用作kmalloc内存的来源,为此,针对所需的各个缓存长度,分别调用kmem_cache_create
. 在kmem_cache_init最后一步,把到目前为止一直使用的数据结构的所有静态实例化成员,用kmalloc动态分配的版本替代

3. 创建缓存

创建新的缓存必须调用kmem_cache_create
\linux-2.6.32.63\mm\slab.c

/*
1. name: 缓存名称,随后会出现在/proc/slabinfo中
2. size: 被管理对象以字节记的长度
3. align: 在对齐数据时使用的偏移量
4. flags: 一组标志
5. ctor: 构造函数
*/
struct kmem_cache *kmem_cache_create (const char *name, size_t size, size_t align, unsigned long flags, void (*ctor)(void *))

创建新缓存是一个漫长的过程

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAggAAAFdCAIAAADpNQLtAAAgAElEQVR4nOx9TYhkyXH/Hnxp27C3uo1OBT70wv9QujWLDW9ZbGqWxar22BLlWQRT3czi7mGQXOXxWlS3Z1fq6rYsXMNgWa8aD1JXe7ygfox8qPaABKUWSLh7kUVBC2QKgZHhSbCnuswp3/8QdCg7IzIy30d99Ez/DsWrfJGREZGRGS8/Xr7Xkmtc4xrXuMY1NLw2bwGucY1rXOMai4XrwHCNa1zjGte4hN8Ghu9973tPnz598uSJ8Yv493//96dPnz579gz+Pnv27Hvf+96zZ8+eP38Ov/rF8+fPT05OTk5OjL82/OhHP/rRj370ySefnJ+fn52dnZ2dnV8GTQHEGn7961//+te/ju2YpMSLFy9st5QHdDK41vMKPLFSfErRgblodspT4G8Q07+UUkYhlLREm8xsRlZgwQ7+HFLZkKanNaYAWYYrASpzWvXzm3Fx4G80epGKj0H/28BQq9U6l9FsNjsETQ0NDZjC3gXUajW8QARBAL8CKpVKpVIJgmBlZaVSHJCzkSigWq3WPEB1162EhjJM2ul04jhO0YbSOA11EZu7OF0qg79StkIRtltyRoG/QKmIfaiVfOA0oy1LhrKcMrDyXBVQpdJaIKcZFwo2swiULHFay/w2MGxsbIxGo9FoFEVRFEVwMXJhOBwKlJiOZDJ0AbIhDEP41RFFUbfbDV3odrs0EBpot9vQgxsBUgiHjUajXq/TiGgAotRoNErbhNK2Nz3FSelfRKJ1srYifHyalTaxdBC2XHJBRgrLnOUs6y4I46O7U/hUsImaSoW5IL/WBZlwUWBTSl12S/2a0hs0NlaI3waGO3fu0MDAdtxG1y9EBTYw2Hp/g8ZIMWgw3TPkyMUZOuLFcDi03TK0YFlBTNJpZFHfe++9VIHB8AAfslQMPekxFy2FcpC9nzJUlxWU89I2YCMWsrPy2Epx2sQpktMyNvnlLD7iZdBoNvCxm6eh0nLIXGIeUX3YKlLpinN4qrWRIt9FMIHB6Hkj0gvTEYMTeg/r7B+FDrfYwGC7ZXTonrlYYISLvANDHMfJFFop9QOZkvqfT3YnGXVlzyxUGJrXxlzQiGZPpYIMWqgiDVsntuWlgvmkpELmjNOAUFn+EHgKzAVin+Jk5tkgCK/siwo6jWEE9trgYAYGo0czQkVOUOY6W9v4QCcTAgNS2vpuypze1eUckRED5DLChhHzohyx6t1330UZoMKEVW624p2NzZ/S5ls5SxG835mFTRHShYKciam09hReFwzvClk85WdTCtGiQDukLTc/fLjRu5lLp2UVpY7AQTCaM5dxbdBfCgzYEcPFYDA4Ojrq9/sjy4hhPB7/13/91/ACI20AYVwAGXa1kILdKOD4+HjIAbvs4XAIufBWFEWQC2UDGtrn6lkAx8fHPp01ZtGz6/qygUGnjKIIrSSX9Wd/9mflcrlcLlcqlZ2dnaLaWIYsNucrSpJUnOX2kJaJLgzLrVitKfO0xKzitFOg6YUrMlXLsGVRNWXolMYFy4SmK86GQllGiiCPLRfNknB9N9XCZjTKgWVuyw64FBiMfmpra6tSqTSbzejylAh2gvQxHxP1jtJ46o8uD0QojHT56bvX66GQArFz4kiYPvKHTXLdIMLI5i/+4i+WlpZKpVK5XG42m7b6SwvBFVgCm3N7luXjyp6c2caWWNq8Tqz/ZZUyiA3B0mrtVMHgT4tjGy2rPs1laC1ot5hgd+KxFUErUXYMaiJbFiOXT4lGRlo1bOk+wrDys/ahiTYCVnK2OMBvA0O9Xqc9XaPR6HQ6tr5vNBrp4wmEERgibpJdfnym806Yyyiu3+/D9tDIFULyw8kfCWCbk0zvDAxFbV21+ZZAL7iRJ2db+9Hv+khC5bE1G6fMlImtnaS1mFML2vYU6YlouVR9WR2juMIVoSikCHjHiOUsVLEMpHdmpIp4ligYxCCzFecvtq0g2bCUwMaKSnUpMBgz7P1+HzZiRlEEWyq3trZwzyXsztzc3MSusNlswi3YGwp5IbS02229o2R7zHa7DcTNZhOe33d2dnCDP+aCgoCy0+mAkLVaLQxDSNG7ZkjxGQ3AdlVjk6vRy0MiMkR5dGJIDILAGRgoPve5z5VKpXkFBtY/8hRqcKDtzSkebVdyc9JTbAQsZ0+l8teIISFLYFzbqoNql1O2hQJbj/6gGW2sjOJYMYSMTnqqkcAW78pSKYvrJpzz2AhsuQCO7arY/0JX1e12G41GEASdTgdeTNvc3IQeEEIC9MX1ej0MQ9ib32w2gyC4c+dOEAQRN7sCaDQaq6urEFpgO38URXfu3IHslUoFSjk4OAiCAN8JqFQqg8Gg0WiUy2WQp1QqbW9vQ3+tvz336NEj2+IzxDCkhH4fmHc6HdQCiOv1OrwEhylbW1uQF0YtURR1u12QB19qMwoCq9LRjx4YGo1GId2QzRsE/xAagCcrxTluojVOWhBbROLXNVBWzixULx9lsUYEO8i3DPVtarK52IyCUlcahr42Tdl0ak9PVjYxnAIo7+aj0zslYUWirPwJBHojlxQYhsNho9GA94HxmR2e1kejEfSh6+vrEAyABh6fb9++DQ/+tVotiiIYQ+BDtDHDDk/iQRAMBgPsPbGHhbCEqwjr6+vYzwLnwWAAnTg8tjcajfX1dbiFIw8QCXMZAmBIAzFQC3jVGd9PRuYwZAHKKIra7TYQQI8fRVGv14OeXR/uQLBBbkEQ9Pv96PL02uc+97n8U0l63Rsu65nR5q8yK1tjoMIYDD2z2KDzEeSxtRObPLLish2EW4bMPoWyygpmsZV+tUArV6h3H/sI9GxxQtE0r/KrTVYwm/wqjS85behkaLC99OazsZVoOBzW6/W1tbXt7e1Go9HtdiFUwGpEtVrtdDr379/v9/utVmtlZaXVaj148GB7e/vLX/5yv99vNptAWa/Xe70edIXYHcOmIPjbbrdXVlY+/vhjSAGybrf7xS9+cXt7u9VqVSqVjY2Nfr//l3/5l/rz/mAwACHv3LkDucIw/PKXvwzP7HcusLGxgVNeGPOAQxiGKysrYRj2+/3j4+N+vz8YDPr9fr/fr9frX/rSl/Qn+uXl5dXV1c3NzbW1tdXVVRgYra2tra2t3blzZ2VlpdFo9Pv9jz/+uFKptNttKAUCQKVSuXnz5vr6+r179x48eLC6uvqVr3wl0rYw9ft9IzB4nsjkCR+foP7hz4RtDE7+Pv4t5LLxpMSCSIm9YftIZdNRLo7NxZbLqmmjzyx5gfAsXXZvVk1ap85aNm6xTJxi20rX5WSLoHw8eTpFUsQxfOCkR0mY9xhw58zR0RE+qodhWC6XYSIFHs9h/mR9fb3RaOBfeEaGmKHPxrRaLZx+oQvLMBN17949GC7Ac3ez2YQUmCCCUra2tuBMp9FoBJxh8Rke+aMo6nQ6a2tr0BFDFhC+3W5HBLgeACMbGApEF8sGtVoNZqUQQRB0u124xuI++OADpAc+MAoBIXH5AcYTuu64bo80EBiWlpaK3ZWkVznrH9TDfDyb5S+4u7rcimQyemHL6ymDob7BUGZr05Q1FM1L1XGay19yWVMf2IhTMSkcnrayWUkRszuz2OzsmdEzr0xj6J54+CFrMZsx2eJYO/82MGxubo4uYzAY6FuS9CODoDvrdDq9Xg9poKeu1Wo7Ozu4+Az0sIyMPTWLer0OfTTSwBoDrijgfA5M8kAc2tnZgVgFE0dBENy8eVMXBhYJ9BGDERtgYgcY6j07nNmH5SJPkAfjXLVaxQUP6NBBSMgIk05HR0c4IQaJjUaj1+tFWmiMLnYlYWAwppLYunS6ApvduEs521zHWSjmYv3P1jYU6QgoDcuZMpchFC1QeqpsCM+qw+Z1CkkTnSqzNrep4COtDFpKquwyQ0FNm5WMjDYmtCBBGFtZztJthQp3BXlYMQThbSLJbKXAgNPf+oXxuD3UXk6mfa6RHR+r9S4bowVMuRh9JfuXRhdM0fcLRdppelEUGafdASJtc9HOzg4yhJUGjIJojV6vB0ywxN3dXfgLA44wDGFqSD9CFaetcOMW7KcytDOmkthqs9U9W822FPZWQnqTtMXZHN1JYxD7UGbLyCqYcG3VZkab4noKpdEvPCX0oXTysXGW1bEpImdMmyWVJJ6g9AZDpw39S7SVxbKVC6V3dVY24+iFCsSsSLJZEltgiC4fCGHEA1skQAJ8a0FPoZ017ihlQ05kedfBmO+iBLY3JIyjT+v1uj46oayMFFx9oXZgKWkKK7Ce8id/8icYGIxdSbRGnc3J341oLoPeWbTu0LZcQmPID88iaCOhKQJDm8ETj/ZZuC7+HISKE2ozD0F+oOR5FM9gT0MAJ5knvT90hk77UGFs4imLP9jE4NcYaO+G3SLt4LhhxqUe05bR1mP6BAaE0VNTehsrGr3YjDoBDQy2vIYNqZqs4npgyDZiYGmS9H2Nj585+VPJ/QVIC2Xp3/NkpErZDG7LIlBOFf51J1doZoL8QOEzK26k5zKopSAqcIFsE00d40K53NLGR6A3JPltYPjiF7+Ihw7Br37CDz1rCIAnDulkeuLw4qyk0cVeIOgN8WQko7PWxxZDDfBXPxmJ7cdtwIwGnHxoYDDEplqgsphFP1EKCwWR9MBw8+bNQgKD0/l8nNJIFBxRT5Q5+4jHSuvM609GddF/aXOyWdjQXU+0ZfdXOZutBG7FYkpsjSIymIKlT8XEnzitbEUJQAmo3eQsTvpEDwx0p78T9I3fPLA91Ef2iSOfV5oF5Mzuz80zJgkjBsW1RjYlD3zcK1tBU2pFtJRsWRSJK7Tt2fizZpmNvj6weQjrP/NFQjxQv37FoewuSi2mOO81UmTD/jYw4Ju69GuUdM0WtxvhF80ATe5roLCQEPpB7yhheVZPF+gxBRexI0u4wrVuYRF7ejCK0GOeHBiEhuTjUs5bBmdKxhIYTikUtJgtXHGBwdaQ2BboNMt8IVRrspCBwUfsVxBOg1Bj6rd8yHT8NjC0Wi3ciLnkATi84fXXX4drmZKm3Lhxo3QZkFK+DNgDKgNo8KPNKysrcIoG++1o9kvOts9tspHSiJosaHSksVM/mglS/vAP/3AagcEf/p6nJ/pzLkZKC/88GY1eiTKkBJhua4oL0qMJvYDTwWaMhNjN+HsNm0EMMzo5OClfoxnCMLR1wTdu3CiXy9BzwS/t37Fz18ngghIAMMzgXRslxiE92MD1a6+9Bn+BZnp47bXXoCz4ZYtjI6WQCL+/8zu/s5Tp2G22+tlrmczGUG+0lLPsYf4uO0dQRVhNk/QtcArCpoPsJIuJ5Iq4zSxBTZSIY1wjb9ri+MAAz+DLy8vOp3UIFWmf8SlzfaxQ4WAQ6ALALeimjVJocMILIwLRwQob4YzQqOfS+YCENMjZ4h8VQw8M1C1YL8kPysrwQtk7Zc6L08gFNX2UNerFVkQGKxUOm9lld5ovqIQzN9tiwccCyuMRLbEsXLOUrxkUSqnT09P79+8/fPjwb//2b99777333nvv7t276+vr73H48z//81u3bsH1rVu31tfXb9269YUvfAEubt26dfv27du3b3/hC194991333333Xcu4+2333777bffeuutt99++4//+I/feuutt95665133nnzzTffeuutmzdvwrzQysrKZz/72ZXLgIDxxhtvvPHGG5VKZWlp6caNG2+88cby8jLcWl5efuONN1ZWVpaXl//f//t/y8vLcAtiEv5iiPqDP/gD6Poh5caNG3oKDYGQrkc4KBcvkJUNelkoAEjV6XTStqVUYHPZmii9pdMIAuSXs1jYJGGFtFmDGkfPIhc6DSN4VqWtBhcWhRvqisLHICrN2N2H+WsJwQyr3orYG+PxOI7j0WhULpdrtRqu5eo0tjctKFKtG0fcYjgLdo0B1u0N4OrF6OKzz0KNJNojAP21uY7Bga13m1fozGmKUYrTU2cPw3RGotMmOoG/gjb+NlMn9uZqS7RxYAVwwsY8LZ885QqqCYay8ZkNplS000oJ1wZlPjTdIGYCAxVlkQFnNMZxDIGBHlXNpugfjdJDyLSlzXySNlspno7l6R+JvT9KuNlMg1LIlVnUwqEraDOskJf+9VRNsDZbik0eIYvA3MfHFgEJqSDlihY6Pc3iZGVDWuJUpQg0LAfWUEJG2W62IowUcyrJJsrCAgIDjhhm0LmnQk5j6vXC3s0AgYPA2SaPZ4nZRC0cPoa15UpI80u8VTMyylUgyCZk8S+xcEy7CNbyhmpU62xIy8GQ05/ev3QfztQmAo1gQASzxjBfsEYUgCMGOGc7juNiP2OQE4WY1GYNwUucd1kagbOuDnUvSuykmQvU5SaBF4K1k8u6G5T+CjrrV5dKcU1XqBpbcQZPG2Y2Yi4K1DI2a6iUIwbK0J/eJ6NMk6poW0YbE2V3KkW8jgkMtDC2SmhG9kKoWvkWqy0FDQxyuTMGaz3ZOAlxbuoBOjeahTI0TErlSbybhFNao1AnwxnDpjhLpuwujWRCQTqBXOO2XIlHvbC3aC5BgAWBTUhqeUXqxWYcXXeZwNPaAmdDSKcA/on+ktiyC6ZjzWhuV02IlWklJcRxE0sDoNl9bgn2ojACg8xz7jAqRk8UUvyrX6gyJ1hKdblabaLSotm/iwBWHjbFWSmCap4Z2fpNLK1JKEsQwKbOAsJmdtaAPmY0rMFazzC7Ua4PWMnZ6siWaLMVm1EQwKdovDYXn9l6okIIkCuJMpdhU9sABIZCvnq2CGMOH5Wd2TMwSVXRidYkaEUvLFBTKq3TFPSujdiwiV6obCVFmoYzuyxtkt4HUtEXCGfRNgWpEQx6NrtgdtmwrBhGRlkemZXA3yahk7mPPHqKY43BqYlNB1uRzmq2CWD7CxfsiMHGs1hMe0ljNloUi7RuMzPo4tnktGnhTNQzUiaeJspgXmVp81QYVsKFhSAk1ZS1pFx3PllsuagYlJgS+AhAydiyfDKywhj0NgNKIwajMFYaemGTO49i8i1V6IjhSsNWiamyU2cwKiIDqwWBYSX2rk0Llp7mpQWxzD0ldOZSpGFTerz2qbhs0JkXNeYWBGb1kk0qELBmlEHFcBaRli0rG7WAQSZwpqUIYksjhpRK8ULQW7YinCUaWXQ+bGCgxfkgDEOfs/Dw4Fjb0bAUni/Z+b/cBwLjKksGZfOA+gxbTQsFQ04jnSqYljPNpdvKkzkVLPFoU0YiDmQN2Xyq1YeM1SVVLh+2bEGKeJohhmBG2eY2vWSbUyMYv/6wKUINYlNB4OxTFoJ/j8GW6LSaj00pf5vOshX0XAUGBvwmM76obIN+zKp+Git8NJRCP8Y1CIJqtcoe9aoDT/5wUuqoVqu282KFE2RZHdvtNjWFEBohOoZhGMexzammBJ+ynN6brVChXdjczFNI49pTEZkJFUNuET40eeDkn7h6MUF9tixnRv+CCmdCMyqxk0wlkpFXMA5ziJ4gpdPEaWtCcR4vS8yWVVRgmEwm8CHotBkzYDKZeK5PTCzwGVWcczjjcELw/PnzH/zgB3it45mI999/37Ch7AaZoVIOWWRh6C2ZVWJxMJaDk9JGw9I7DUsNIjB0ljtHCBWBifSuwcHgJsCTbHpMZEXYFFuJLA0aJBG7Wf5IDB8pWc3TmkOXMi0HXZIC1xiCIMgcGKiJppdroWBUypMnT8IwzOYSmZG/oAwcVCbX9WeYjae63KyQD1tx0/UMbxhaG+kGjY2MNWNa02XOWwgTVhdqCmoZW0aWldO8XoGBzW+rklSgKskMlebKuhhwVlL+wBDHsXPEoAtju2XInA05syOTnBwylPX06VOwoU+dLg5SyaksrXFxoLimytZXIZVeCCtDeFVob3OFoCsr6y7Y0EaWWJ749ZQUgYGVNWdVsVKyKWxeFGAGgYEq7gSbReBj2CRboQbDzHnTFqQLrwcGg2CR4SmnutwopitTEbA5A03JVvVFcZDll2leMthsKxPLt1jL2zikHjHQMmy5fKAsrctIkdVW3IiByukDecQgMPQpK7HXd2a2GXTMjMTVgBEYGPS8iw9POQ2DTFmoLNBtTqvPlkIJKD3NwqY4WdnoZ2KeKwZbLdC7towyH5ZDxsBQFHT+rNosvZFFzXYqCSn1HaIJMbGxfxT/UkoK3RrGreltTk1SdiK0mpBsf38fbSjU5qLBU07DJlMWqhg4a9zHPXzo0xZHJaQcZmqpBYOg/lTtIwUGxTV7mp4HSmtdNo9hcxkYj8c3btzY2Njw3+rz4sULtnuVA8NkMjk5Odne3r53795wOJxMJj/4wQ/G47FOE0XR8fFxs9m8c+fO8fHx2trat7/97dXVVUMw2FYEF71er1Kp/PKXv8Rb5+fnOn23233w4EEcxy9evJhMJvfu3dvc3NQJJpPJcDh85513xuMxZI/jeHd3d3d3l5a7urp6dnYGthoOh+++++5wOBRUHgwG6+vr+psTdJu8Xo9XaMSgLDEP71IYGWcvcwbYJLdV+lyQXPYlPf1VhmCBVCZKZUnHiEGQJkNGllWSNTDABX6PoVQqwemqnk/T5+fnsHk/iiI9ixwY7t27FwQBbucPw3BtbS0IAvzgmlLq7OwM3nKAtwRGo9He3l4URXAXN5LqbwNUKhV4eQK/+BYEQafTmUwm+OIbbLva2dmBj08gQ2QbRVEQBHEcP3v2DD5NAQrqJgXKIAhOT09RX3iPwYgf+FJCp9Op1WqVSgVTwGiJpXNUVzMw2O4a8My4aNCFV7kDQ7aMiaXf12UzBGZvvWqYqgVszH23q7I1WpRYqVjpReM1TiXF3t9jmEwmYRjCN5YhGMBXQmu1mtHn6tjd3YVOv1wudzqdKIqGw2Gj0eh0Ohhder0e9OwQQmq12urqKnT6kBf4A30cx81mE0ILCKC/2AyBAb8h2ul0dnZ2QGz8Fik87ENgAKn29vZAHgwMKBvkKpfL7XYb2EIsaTQaz5490zUFyvF4XKvV4CvWYJnhcAivZ1OXwDp6/PgxDa75vWV68BdVcd3r4sOorGRRRwzXMDAvy/iOGJyVl00BddlHnZSJPTDAG8LGC73sW8qQsrGxAT3y0tLS0tJSqVS6efMmdJRsYIBnfOiggyCoVCr6B5yBM3SXo9Go0WiUSiWgiaKoWq1CJ06f9HEoMBqNhsMhPI+PRiPd5hg5Go3G4eFho9GAly3gDernz5+ri5M84B3pmzdvgqhgijAMNzY29GEKjK6AAOQZjUbGuAdwcnISBAGUCGoa82ZsvcN7DGxNFQ4fttTBWMmpRjYaluciQxdbkcCg09hgsPKBQMxyo9JegzUFTfS0mL9hU7zgZqvaPFDebYwtF1NgxFAul51nSyCWl5fL5XKpVFpaWnrttdeWlpY+85nPNBoNmDNhvTmO4/F4DP0vPG43m83t7W18eIfAEEWRfvQFBCF10fmqy8/vOEsTRREMNUqlkr7XE2IeMB+NRjdv3oRhgVIKIpy6WDMH4aF0EAnnsmLtA9cw7TYYDCCq4QDl9u3bEMl0fTc2NkajEYQQiCv37t1jV931etQDQ+E+wzqAD5kiXRUlS7i+zMYzebkCQyJ2+j40NIsPN3p9Vaw6AwiO6iSzMfQhS7fGINScv2SUoU8boy6lF6pPJUEizsbgL0UURZVKpVQqlcvlRqMxGAycU0nHx8fQ7XY6nXK5DA/j2PPCb7vdHo1G0GvDY/7u7i5kCYIAxYay4AAlkGc8HsMAAvgAJXTfkKXT6fR6vVqtBpricgjMDsHAIo7jw8NDdTFJpdsEmSwtLUE0ajabeMZRq9XCEQPEj1qtdu/ePZAc1hVgGcOIH7QLoCMGZ/3ODFTghJsgYv3NoEkWRiknDK0Ti6Y2tzfq0RMCsae012BNQRMLN1fGwFAUPNsY9Wl1uSXDY7XRW8n49NNPe73es2fPzs7OYGXi008/hYVZ9ml3MpkcHx9/+OGHu7u77Xb78ePH3W73/v37vV5vb2+vXq/DWvFkMjk6Otrb2wN5vv71r29vb3//+9/f3d1dXV3tdrs6t/Pz8263W61Wj4+Pj4+P/+M//uPo6Gh5eRm78l/+8pcnJyenp6fdbvfu3bs3b978/ve/f35+Xq/XDw4OIAyoi11M0GuPx+Of/exnw+Hw+Pi4Xq/DzigIFZPJ5PT0tFqt3rhx4+///u+Hw+F4PB4MBrC96h/+4R9wRTqOYzDLnTt3Ti8wHA4Hg8Ff/dVfnZ+f//rXv6bVgbbCwDANn8kDW4vS3clwLZrd02kXClRsQxeabkDnUwgSi/VsRb+aYC1g2DCDlQT7A16ewIATLDofH9dEwP5RYY1BKdXv92HWCDYdRVF0cHBgPJWPx2NgAiMSmAWC+Su6YwqGEfDM3u12YWGZkkVRVCqVarUaLK3DGob+YSJ9VxIoAoMVGLXggjw8+FcqFQgk8BdybW5uUpvU63UcUsC44f79+4Z41NoLGxgoDCF1jajk9O6Ca4cwaiohTY+qo9cvdYxsyCZ5Dr2vPFi76fVis61sc6f3ZtmuWiAMt3OSGdriNRsYsvmuMZVk8Dk9PcV5lTiOYfLdGGFMJhPYjAT7nUaj0fn5OUwZ4VwNsoXNoNCP47bUmLwcB9NHEG9gjgiXIrDThx5fz4uLEPhaHEap8/NzWPPAJfFWq2WYAqKFPvk2Go3W19d1moTrTZ48eQI2lKt1LlD2/tEnr6D7IsMQW09MuN5HEbCJGZBH4FcQrAXym8XpvQsUGDKQKa3L0wMD68qYRYYxYjCywGZNXI+t1Wr4aphOCXchPNRqte3tbdjSAzFAZwjpSlsLMdYYlLbMEIbh/v4+RAhcakZW+OwPf3G7anx5Cy8UcXp6igsqsNKwv79PrQFTZDhi6HQ6d+/eNWh0xeFaDww+9TszoJA00UdIf8oFhC45vaZ6UWcoEFQMVtqra+0CQS1QlFkEJnMODJ5Q9sAAsAUGg0OSPjDoiOO43+/D5lf6ZhxiZ2cH78LT/dbWlipjTrQAACAASURBVLp48K9UKvquUAwM6mJl23jqh+4YU7a2tqCvB26lUgneNUuSBPYj6YMPnEqC1W/kiUXgbxiGJycnxtAnjuNut2us2B8dHaF9jEpRL3Vg0C0zNQGnCF1yo9ZserGtoBB4Snt1rT1V5DeLWqgRA+t5iUfLtKmhxBEDy9DpskJggFcN2GCAxcHmInXR58KzNj6wQ6+tZ4FtryAYPOMbG0Z1+jAMDw4O9LvNZvP8/ByKxo2q/X4fVjj0D6vpfIIggK2xiEaj0W639dcaYKCAv3gBwyB9psgwtXoZAwOtaBtZMYJOAay7JvYumPXwopBK2qmY44qAtYBRfdnYygRXY8QAoL6F1+PxmF18djKhqFarwnbVYiHLQ+86X+r2fOubjW0vXrzwyWsguTwag9/Hjx8vbGBI7PJkkHNxVHPCszYTrd/J4A/+oPyx9ORKGXb2YO3mk4VmTyymTh0Y5lhhgpPBRn4hMNiMQtnSNQZn6UaJPmQyjSGekMUpWGb4aK0sgQFHDOpKNfIMcl451WwVbRAr4lrGXadLZCBjBb4GhbMGnVkU8QeD/ooFBv1a9y1nYDAysqZRFwfMwbfsfZx7GqDazaZQwxqsxdhcihgcAgPLbZGRQc4rpJqzIpDAuPD3Bzaj03lY2a6KYecC1pKpsqjLjVf/BWR5j8FfmqIgmAASjcBAKVl/NZgrLTD4ePbiYI5hjIU+YgBM2UGKQQY5r4qOVEJl6Rp0dVjtineXq2DAhUJORzWqWCdAesf3GIw6s/3NXK+KRCpPrYxbcRzjvn5BGJaJkSgfiXF1IRiTJaZ/5RrRYbzHoBa+zbM6GgTUjMbdqUqYE1RCobqNRE8OLBMnBIGLtcA12Jpi7yapRgxCjcp1LPNM0jiBzb2KCgwwYoC3BAzoZ7JSdDiEBNEFwjDEvUMGRh5gDn5KCdTXswGnAi4+y9VRIDIXoSxDaYHMSJmZjnmAEupun3i0XOUXGKg1PCGIeg0bctqHrQXD7L4jBqf3ZJNVpQwMNtlgu2q2wGCk042eOtgAAJs4baAxBlCv1/UTwmt+qFarthNk4eVqoPHkhllqtVq9XmfllJVi777zzjv4dkW2+p0LBDltjqou97MLC+r2iuvK5SyU3qAR7gq5bNJOyxavKnzqDol9v/ksV2SStWGo9IGBumlycSSGHBgEp8zg0PMCfNrTH7YRw7kHzi7wySef4PXJBX70ox/pv3CBmEwmumEz+MbsQa2t30qI7yVXKh7oShkXc4Qsc7LwFr4q8KkFlS0wJGIlZau/DHWvuA4dFp9TBQbhltN804BT67lLmBbZ6neOUJcNSG9RRRZcNad4c3KN38IpM0tzjbRgzU7/Iv2cRwwZoDIFBtkpUzmxp3/bhKd+78Mhs2D+evkUmqGg5Oq0bdkUCfE9OctiQq8Um/CZHSkDbIKxNNfIDNaSgoVTfPM5Ic2ArdcZgPoQDQys27F3PW85WbHpLDeWDybaVE4sHZMTCVePNiGpnW2sElLpNkVsSi0IdJsINKyhhPpKpbVg1WywVZkgpFF9To+aKgSxX0342ES4i1Z1UgKKnEqaZUUaDsoGBkpPnU++q9K0AYHSKYmNWM+VEPsLxKwisoRG6bYslFKuHYGsQDhFkvM6ORi141RQrk0bfTq5/RjaHIxeLxQEyZ1ay5T+3BYKSvRS5eGNAmd6171d1agqG8dZ2pp6T+EjBkNfGw2l97GD4vw+8bAhlZwKSQWW79pkpkqxrGz0VLypwsfsQl4nB6pLsdp5ek4GhmxFy56wyMhvRk9Wiwbl6vptd4VEIZc1MCys7fR6xWs4RC/tG8s6w8Qv3hpmMbLktJhsc1Z+nxRDPJspbJYRLGbTmvLMY5YCwQpD9RVyCSaiWfx1p8S6AX3VE7nNAJ5nOOaHXDuyTQwalmcGa+t/k9xdAVtKQpqwIYNQqE7go69vYMhvPid8+NOqhWu6XdUHlGex8FREWTxJ2fuaVAIIKfSuU3Iqoc7WdrEgYOXxtLx+TauMZZLBmMZfGweZLVt0Bv9Ji5zvSzqFtNWFkSLbx8ZByCLDyOsUIHMp9Ne/FNZKlD/C8YKbZ6mFIK2eei7bVJLTz5KZNJjMsFnJmSsnK5nSqC+W3rhYELAKGtIKBAIHwcL+stGMgpFlVjSjzTEKxzRKMXjajEzv2oxj2NyZy5OhbufMDG2l2NiyZhGE9LFSxu8x+IiSgWdmMWzbVVN52zVmDFqPRTmG02dYL6LisX+pbILwqQSjEmbj7NRlNtAPXxHgI5tuCuV62k1IxQl2tpWSiH0xLcspUk4IulMtKKVgEBZZAgMrR35kYIUyjEYj/awkm6isb7E0i4ls0trUTMRGIhfH1kJaMVgOyeUuwFZoZqSS3yDz55lNMHqdmTNrwKuL5LJX2JSVVRbso6crzfg+VSDfzQ9ZAEFBWTsZ2b/g5l+GP8NsMihXYEjsXU9CPKnRaOgnCCGEc4TYI4NspyoJR+wZB+15YjgcCqfsZThxT108603piD29Iqj99TpKuKabBzY+PhImdp8vSkJ1uUvKzNkQ+CUAVYrazYcJtZJxS/8r5GVrjWVSCARuNiGd2slYlE97ZjMlai6vMSRiy9f/xnEcBMHR0ZFwcJCBEzuee+DZs2fPnj3DCxueXuA73/nO06dP9y+gX+/v7z9+/Pjx48dwfXh4iCn/8i//gjR7e3t7e3vf+MY3Hnngo48+6vV6vV5vd3d3d3d3e3u71WptufDBBx+0Wq1Wq9W+wIcffgjhsN1uQ+Bsa9jR0Gq1dnZ2oKyPPvpoa2ur1WrdvXsXopS/Yzg9je0CBGLW8QyyzBCcMzM3G9urCN0UytJxs7l0m7AmSuy1n9bahcPHFKzKlNhmFht833xm/xYLT6F1GlQ123sM1GQQGEajkY0+G2zKeuYtVphsSCzt0F88Q3H/jKPRqFKpQKX4+5LgY4b8ib1rYBNZen/ZBJkNefKwparZakSm8URRfJRFKpa/zW4GH8MgNBdrrlSmTkXvz1OXyqdcm6FYW8lwBwanfHmQQWLWDzIHBgNTCgyp4KO+D5OpCmkUZKsgKraPYEbGOI4hMNCyBCs50/Wy2KJturD0noI5IVsjFR+dIWUuF5oWRfFRljarK8UW528QahaWp6+hpzli8CxXNl028a7eVBKrv2dgoCUaoIEhuWx3NpdRnCIOpy47tJ4iMLHJL8tgY5gZNtmyIUPpGBgK0cXQi9WIpUk4T2A5LwjUZYdkdWRvzRe6/HqisliYZizKbgsLfxsmxFE9kX27araMOcHqrPwCA2VFIQcGtgKclWSTR+aZ2HslWQbhL+VpY24YzYePkZElkKrWAkVGDJn5yNIaNNQaiZ8lFxC0+jB9jqACJKQKEktFUAWFuy8rZMPmZL4oIwZPKK55K49D9GgWFsJUEuT1fOnf2NKjXztlYMstBKwBWbOw1mZThEoxuGWDKjQwKO+u32Y9aqL8Ok4bNvF8fGZ6sAkgCDl1Sy0kqO42YxZY6BULDImlbQ+HQ+ObzyyZjhcvXtBEeY1hMpm0Wq2zszN1ESH6/f63vvUtw8t/85vfvPXWW61WCzcmvf/++4PBALYwPXv2DOMEMIHvrGH2tbW14+NjVoA4jre2tvSMRqA6Pj6+e/cupLdaraOjIyAwlBXMohPY7K8uRw5FAgnl5mQrFJdqKoktSBfDSKQys/LbaBJ7gGFl89a7MNhUWFgIos7eegsCRVqcbJb8tvI6XTVnGcWCdZ0oikqlUqfTiePY86F+PB7T3fpyYIjj+NmzZxB+IFcYhnt7ewbZ4eEhbM0EVp1OZ3t7OwzDSqUShiEy73a7+L3ocrkcRRFECOwElVLn5+f6Z6WNX3jBAuUH4RuNRrfbjaKoVqs1m014N6LValFPogoahs1TR3myG6x8AoNNEUEe1iCyJGyKutxWjeKMxMyWyZyX1rJNVBuxD6v8MGxl/F5jxki3K2kRwHoqBIZUZyWdn5/Da2tRFEHfCv1yqjWGMAyfPHmCfyHMtNvtTqcDXXMURc1mczAYdDod6P2ReDwew0Wj0YD+HRAEQRRFYRjqPX4cx41GA+JKEAQgpBHVsER45Q0CA74Ep4ttWM9AsXWUn5X/iEFWwUinWtOMQtXTLEYi+5de+9shcwXJ8nsiFXEGsDVyDRYzsM9LMpWEawxxHOtDARlhGJbL5VKpFARBs9k8Pz93blcF5viCcafT2dvbA1YQlkaj0fHxMTDEl5PDMDSe7pVSR0dH0LnDYz6+81wul+EVMCPOxXFcq9V2d3crlQoEM+PNZIgEcRxDiShDs9mE6S+jyQlNNG2NGBkLdFw1q8Cg53WayKBkS6TcKENPC+SpIKf8CwKbcdR1hJgH0gUGRZpWfgnyMEEfgiMxyuVy5QLwWI1/V1ZWKpexsrISBEG5XF66wBtvvIHzP9RxobddXV0djUZhGMKZFs1mc319HS5gIktdTOngNE6n0+l2u5CiMzw7O4OOG3o9CBJKKRgxsA2m0+ncuHEDhzg6IMhBEQ8fPsSABFNYnoHB0+CJpbNLtI7Sk6FPiTQwGCqwknjqQq1B+Rsmsv218feRUJCZ0lOenpouMgRr+2v6CkK3VYFYiMCQmQ8aBUYM8MjMQj/gCI8/gsDw2muvLS0tlUqlmzdvwoM2Gxig44bJen3M8eTJE9pN49M6dM39fh9kM8hABnjMhxED5KVzWTAOwHOc9LUKuNtsNoMg6HQ6SqkPPvggiiIINlEUBUFwfn4ut7dstSDkMorLDHXxsQ12xGAUkapEIa/M0JaRJiZcJ85KSCvFyCKkOPVVCw+bnIIlZU1lMieHzNlnj/wqs/ANDIpz3EKkyV+L6iIw9Pt96lu2tehf/epX7Xb7vffe++pXv7q/vz8cDv/3f/9XP32BeqdSqt1uw1LE6enpZDIJw/Dg4MDg/OLFi2q12m63Hz161Ov1+v3+P//zP1er1Y2NDYNya2urXC7fu3cPeDYajTiOq9UqCvCrX/2q3+8fHBz0er2VlZV2u/3pp58OBoPl5eX19fXNzc2NjY2zs7PhcHh+fg6jFqXUw4cP+/3+cDgcDAaDwSAIgl/84hesEZKUPbhOxnKjNevJWSgRRgyxdlaSTXIfSVhiwSZOiwkENotRsyiufem55BSnDRcNnlKxteyjrL9xbLbKzGHGmJLA8w8MebihUWBqXp+ByeCgk8kElnaxX06I+7ZaLZi1B5owDJ8+fapXDFzD0zouEe/t7YFs8cVxp0qpTz75BNaKy+UyTEPBAgY7ZMFFaXURBSkNBoavf/3r+lRSuVyO45jqotJ3N4amPhXHluVkricKgYFKIhdHa4qtZb0I9lbaUthcenbZRJ4GNLIYal5pUIv5WCAVvV5EhozFiiFw80zPWe4CBQZ/MfS/kJI5MBhwLj63Wi3YyAR/aWAYjUbdbhdWHWA9PAzD9fV1WJPodDqNRgP493o9uGg2m7VaDQVghyz6UEbvKHXApJlSam9vTz+Cu1KpGFNJOmfDkk77K67L86w7mdJGYAsMNg5CQVR+VMHIy6Y7YeNM0+mtDJYR8tJCFxyeogpWKgQqjUt7MiyEm8yElpLTYnkDw3wtiFmyBYaE+CIEBtrnIm7duqVvFjICg84Hl6NxxIBL00qp0Wh0dHQEWWAIgusWemBANeGtBeRgCww4YsCvO8A2WaNX1S2QyviGVMaFM68/cx1GYGDl1zkIuhjy04rTU2i6wdwznYpnE0C2j6CRIg2TtckiwyYwrThPs2QwZqLVe7bsLMNCuMmC0VKoYVMhV2AoFj7MWR9Kih4xCIFhMBjoxJ1OBwODkQ5RAYR89OiRMQigm02VUgcHB7AebhDDblfUDiapaHb4XtBoNHrw4IH+uR54sU5ZekDWsGzVGLnwWk9JuF7JyV+ucTpiYAXz5GbIz4KqTJVlOdB0W+mzhKCpP4rik6EIqs7sbWgIwAomEE9bnsJ5LkpgSGVommvaU0mJxWXjOKazNP1+3+BwdHSE/biNlVJqMpnAW806JTz1G3uQjFciAPjluFarhRtqwzBsNBobGxu2A6DkGtHJ2L8svQ2pXALZegYGgb9w1ymhcVdmxWYx7k4PToP71NEcYZNQN6CeMkcYsi2CJNRceSScc2BQll7GJ0syw8BQIHSxjQufXAB2TEOPTlKuU/8MGQw7C7lSCW9kTOshsF0VXhRnncGnCFZHVviE+JhM5qmyTQBZd39iKklyuXfwkXZeEOqCWkNlcqTCQSWcoxiG0Ww29MeijBj8mavLjQ1QVGAwdiVRkdjSacXQXIJ2yuLxss3ZchXXBdhSZKmcsIldOCAw6EMuKomuFBXJaQRbdqNENiMVySbGXEDdwEhfBMjyF2WHQvi8Isj1glux8GGuSIMHZAgMlIkSv8fACuPPWeBmS6GF6olsidODTcfEVXHCXU/JjcBgWJjyoVaS+etVw+YyGCYe1phNpfhAdhLqonOETcKi7FAIn1cEVyww0CyA6Y0YrjFt0Ao1atlzxKC4kZCebsuSePTm9JZTI4HbLGEzmn537sgmfFo7FMLnFcEVCwzK0ryLGjFcB4bZg60I/a88YrDxVJdjg7O4RAsPNkq5UCq5WqTOyGafxCM8+NDkgSxzUeoXwucVwaIEhmwegI4FR9FFUZSk8WCDiboIDHjQkM9BrZ6ff3ilQA2bh56+t+HDX6Bhb6WVWSjXxtPHk1lKOa+NoVwEK7CNIL9lZAGo5HqWtLqzGbPxeWWRYvE5cyX5sM3GHDNCYDC+OuDjrIYMk8nk6dOn+xeA68ePH8Pfx48f47UNjzT0ej3j766Gjz76aGtra2trC1M+/PDDHQ74SZ9Op/Phhx/CRfsCH3zwwdbWVqvV2rrARx991O12u93u7mVsX+DRo0fwS2GoY+hu4OsavqnhyWU8FfGM4HsXgL/7+/vLy8s+gYFNNO7afM/mHjbKROt9bOlG9kTsntiiKQf/pkE5+Gg9JTirxlMRf/VpRp/irgGY8/cYlKu1UHpFmlySJOzxQQkXeKg7+rvvbECNkzb7FITyAh1O4Ut24/F45ELEAT9TQYtjazPh2r9OT73Oll0GdWPZS5Wfk7OUnnllkZK5+raz9FQG8VGf5srG6tXEFQsMNDvkhTUGYZtpwrUNncls4FOcYKgZSEvNm5mJja1PhVLFbTyNFLZQ/a5RiqxFWpWFLKx2rAV8zOKE4lqWvzqpFC+Kj00RG7FRutNickGyAGlzXXVcpcAgVH/mwJDTm1mwYhu3/LML3Iws0xA+G9vMeZPLzqBIy9f5G4k2MShzylAWyZ9MFkZ5+LnBTUh08qEZnVpkQCFsdZll3Y2/yeXaLNyMNqleeizEpz09TW+raXXx/bKpBgabSD7eRsl8CtL/KrGH8mGbWc1pM9E1pdkNnuy1LIZREE1x8vGBU1PZQ/TsNut5cnDyyaMFS+9JLPNRYhNj9VKcVzjV9zRgzlxXHVcpMLAZAdkCQ7HwkZOm+DMRMjrZ5tGCpTGunYJlhq1QH2UNGlnUnPCpAiQwLmz65jSaYMC0kk8Vsta2dCqwccuTlY25jwAvMVLvShKqMAOU1lyzZQf4BAYjyzTgLMVHDE+VpwSfEm1iOMXLXL/KOxhkpqdCps1llCswMWhYldPaysaEvV5AyLqwFsNbitPO07BC0VSAVwcZRwzFWiozN6xsGhhsPAv0YzbRqZGRPZWmCddX+kPIaNOC0ttU9ik9rcAZQEvJZiv/4mzMZbtNVSpWQpvTsq41JQhWstHYMrJMnFlY/qmYvyJIHRiU5mRFQfAbn4xJktgCA5VW9trM2r063pOhaXnyzO8GNmGE7kaud0MeKp6/NTJrVxQEzy8EqYrQRaLiJa4JN6raVEz2CmPOIwZVRI+gZjWVRDkYishFUDFYYh9DyUL6a8QqIksi6EhNQVWYBihnZbG2nELTfexg+zs9fbOBtUBOD6FVn4qbbG2skbSqXSM/ihkx5K8YZwuUc+WZSrKlX2NmSOxPiDZ6nVhxfbqTCaWn2WWerLR6cawMLLcZwMewzmqyZUzLU6c3RKISplXtGvmxELuSknyBQXmvMdh81N+hZ4OEdJSeWa4ojNpx6kIrVEhhq15PT+w9C2XFSnslQBXJUE1yjaRileSIBNeYNhYlMCRZZ/YBbGDQvdmgt+H8/Pzu3bvbFuzt7bHnC+3t7e3t7dFDhPDvP/3TP0HKkydPkODRo0f0WCEDBwcHcJqQcNbQd7/7XXrc0HMNJycneGHg7OxMv6Y4vww864Km0LMFfeDfleSH4HXsXZqXMrSxXRBQURXXv1P6bLbNSZ9wNr8GxQzsc8UCg82PPdcYZEdUF6ersh/OtEHv3fSMzmNZfY4PGg6HxtlB/X4/FNHpdLrdLl4jmi40CGq1Wr1ep4mAIAhqHAINOqWRSLNUq1X4SyUxSjdSDBqqVxiGenVTr5MdRvYfp9NeIfi7PUUqDpTYEGPWml8pUIsVjisWGGgWgLArKRUyBAbq2Yr0Qbo8GaSiBeXkMEugMY24SFPoAXypjtujp+8BGo1GEATKIzDoYnu6qw/lIkBWSqXv1j0TBQ6U3pD2qth29piBZV62wJDk6zTzBIY5IqfWQnYn52xFT8NVbIlhGEJgYAVQpH+3ycn+za/LbOBjdqq4XGV5PEEo1KfoVxzUJjYr6VWTqogUbz5n4J4KGZij6whrDKmQLTAk+frl/JieAHk4J2J/ZFDSxPxILgcGVh6lOTbLweafaoEDAys8FVVpAUDgw+ZN8gUGtjpspaTQ/NWAUJVGom7qVEW8DCOG5GK7av4n/WJHDMnlHidJ03ISV59FifPT0CwZctHstlqjiewtW70LhepkmQODp9hOaRcBnoalWag18C8lEOrFp74KEftVgI8f+huZxcsQGJRSnU4HAkOSoyNTfoFhNBrBYmYcx41Gw9hagxPotr94PZlMOp0OjnJwbj2KokajwX6aJooi9it1xjy+Tk91ieMY5LfRsBa2Qa84emsGMMqi5UZRpE8l0ezGr1AKLWtmauaHoKlelUbNGlo7/SEzbHJeIQvPDNQmbEoe0835SAybc6TNjoEhp3c6A8OvfvWr1dXVR48eTSaTOI43Nzd/+MMf6gSnp6f9fh828+zs7ERR9Pz58x/+8IcnJyfHx8crKyv9fh8o//M//3NtbW08Hg+HQ/h+5+bm5uHh4eHhYb1eh777N7/5zfHx8dnZGWxPWllZ+cpXvnJycjIcDo+Pj6Mo6na7n376KTA8Pj6+efMmRo7xeFytVgeDgVLqxYsXkAiLupVK5Re/+IVSajAYBEFAg41R3WxlIaXSeg2BbBpgSzFK1ANDwvWJid2rDTVnqdoswepI/yacEdjEDJAFu4YOahZqpZx2W5TAkDN7p9MplUqp1hiMh2sAdCJCYNjf3+90OripZjQaPXjwwGC7sbFRLpeDIID9MPqzfxAEKOTu7m4cx51Op1arwe/Dhw87nU4YhrVajcrQbDYh3djbg7rUajV4/AcmnU6nUqk0m80wDFutFgoM0247Ozuj0Qh2f8LnM3d2dprNJq0ORTpcXarE0tWyF9MALd1IMaaS2Oy6XkIpU1Vk9jAqNHEFBlujKAqChNfQQc1CrZTTdNnPSiqkwlTK9maUiy7VbDZLpRJ0lDi3g90364XD4bDZbOJHiSHRmHbQXRYuNjY2MBFyPXjwQJ+ZieN4bW0Ndus3m009MMRxjIFhNBptbW1BcTCh1Gg0er0eRIgwDA2xgbLZbOrvKOgzTmEYQrcehuH9+/chBgRBAKzG47G6mAQDW7XbbSgLLXBwcNBoNGgrtfmcbhlbNRmU04DiWoieaOxKYrMb0gpsp6rLDGDTN5l+v29DctlhDDnVVbb2fJHHelkCQ4G1pVIGBpskGaaS4BG7XC7rHbE8YoBHb2NP/ebmZqVSwT46juM7d+7Aa1bwzB5FEcQAeFQHsiiKbt68CVEBJv07nQ7MIEFGI9jAsz908bBPH0YkICrMDkHGIAhOTk5QQShOXwgJw7BUKp2enjabzSiKcJ0D1jYU1yHq1lauPpSto+m1cJazyhcYKCXV+iUDa4HZILE7CU15laGbKxV9BuRdfM5Zban0pJSoOUwl4VuvHQJ80Mb3gbvdLnSjS0tLpVKpXC63Wi0hMERRBD1pFEXwti1wg7gC00FACf07CFOpVMIwvHfvHjzCwxhFKRXH8XA4hJ49iiJ4ll9fX4fr0WiEE1bqYgUFHu0nkwkWqi5GLTApBAOUTqdzfHwMakJio9HY29sDVhAtlpaWNjc3IRyChEqp58+fw5gjIQ9uurVVysBgq7uiwHq/sgQGKgbtmGw9lK2sqw69rucCWrQum3rpDJ4fnmahxky8m+GcdyWlkpXNDuh0OktLS5VKpVKpLC8vVziUL1AqlUql0o0bN0ql0pKGz3zmMzCPzzquPuME/S9cb25uqsv7gm7evAkT/RB1oiii6xBKqV6vB0sCEGyazeb9+/dhYAEpQBaGIciPE2Vw8IPOCi5gcklffqCrETC2KJVK7777LoQfXM8AGWhdKC4Y6z6XwUenCqMg9gU3Q3inbLT/mo7sUwTtcNXlkGDcyoy0TBIPH7vGjPHyBIbl5WXYXeM8uA06yp/+9Kebm5tvvvnm5z73ua9+9auHh4c//elPh8NhtVqVp6QODg5WV1dPT0+hrC996Uv63TiO33///cFgMBgMoihaXl6GwIA8YbofyA4PD09OTsbjMYST9fV12NGEi8A//vGP9/f3B4NBpVIZjUb9fr/f78N4pd/vDwaDR48e/fKXv5xMJpubm0EQdLtdKLper8Pe1n6/v7Oz8+1vfxuk3djY2NraWl5e/u///u+joyOYa+p2u7du3frmN7/ZbrfZ1ii0ds/qm2UjN8qi7zHYOh1BQtkCiw9aZQuI5BWYskuLednh5QkM+EztifPzc5icwZTJZGJbR6ee5QAAIABJREFUfMbq0SfulVJxHNPRwOPHj9XF0zqsMSANPNcDn36/D5Na8KjebDZ3d3dx65HBE7SDdJikMmTTRwkw2aXPRD179kxdLD7DoGE8HsOWJJAhCIJWq4XDINnaSKMWMjAYgJk3xT2TGpSChDZN56VUWhj62jx8QZBHxzwcFhDzUmf+gaEQV8DAkORweggMdCpJx8HBAU7uQz/78OFDnSCOY1hjwA2jURRtbm7idA102VEUra6uwooCTgE9fvy4XC4bW5KSJIGuHBMbjQb24AgQBk5RhVEFLmZgYEAJK5UKjpww+/7+PgY8amebYRNXf2oQ+1RoNmewMWQDg06QePQpOpmRUqC004MheeGYKltWC0M7KkAeW2XOOw3MRZ6ZBgZaYWlr0SDG7MauJFtGJ4xnbXq31+upi8660WhUKhW9z1VKxXH86NEj6HNhw+hoNFpbW8MzonFxezKZQFSAFWkcN8BMESw+g/B6YOh2u5VKxQgMUBCsjcMCNWxUhdFAo9EAIcEOwG0ymaBZcOkbYkla0/lUWSpihxPY+bN3MTCwZMreqbFkQootcZagwrOWcdbpgiBJExjYi2wGzJa3KA6UYYHcPDHrwOBMcXKgjqK4EQNbkNMRnYFB5wP9Kf3azPn5OV5DV4uP5/paMTCE1WbYn4pvG0CEgMNikySJ4xh3ph4fH+tvySH0oAj0mAir2Sg5RBFdbCjxnXfewRRqYQE+9egkYOvXPwubC9L9RwyCwFRNVnFPa0wJtF4Se3NQfi0iLWWxSPwCA71lI/O0Yba8RXGgDAvk5on5TyUlaTTXPUb/ywYGw72c/qdcgUEH0Dg5p1r2EGQT+PjIAGEAKTGu6HkhLGE6Wy+eAtiye9ZvhixG0fpdPTBQGqV5oLL3LDYCJ9ksYTMFaxZKb4ONuewDOWEIqcsg6C6onMqG1FZ5OORBsdz84QgMej0ldr83yJww+Dizs/R6xmazmeesJGQVRZFzV9KCIym6iRYLw2cMBzBo8kORwJCIHaXAR8io/y1chQxwyjDVKi4QCfETf42Sy9UhlyKYji3UkEpZHDsD0nITFMksQ+ITGHzKSGsLg62P8iw9WiRnYED4jxhmA8PCnlmmJ8/VQmIJDE4H8yQQ6OcOWba5VUlWyEop19jCxooyNDLaCkUynS0VIwM8BTDo2Vx5xPANDIYdC5GDMveseForBQYGON/C+IAw/ZKwDv27yrBaANA/MIkpuK6gv8tmQPiqJUV8GYr7iCZdCFkEOOs6Jx+AvvisF8EWamQXCFiyq4J89TZ1sEImHn10Yu8oDWL2ry1FLlRQIQOcErJZfFilgldgSEjDsBk0rV3YGrVRGpWhJ/qclUSFpIgv3kOmfTo9ZkOH/ul5W/wQvnGPn7k3UK1W4SLwRqVSWVlZgVP8/HOxpcsC0/BJIyUiJOj3+2xQdMZFeB/QB+ri4xN4BpThP6x3sSnULVkHW1jYtPNH4tEbFo7E0vCpaqxsrB2Ev7YiBHsKkmeDkT0nt8xIHRiU1sCMiwx2UaS52jiw/oGJRQUGTxTIKhVwGVlpb7TpW54EyL0t7ZrZLjttmMQgYYuU+oUcL4V45oyUTe0MKKzBhGt1Pimsw7M0iwNDwgy+l3j0hoUjsTR8qhp7i7WD8NdWhGxPm+TZYGS3qezPLZsY2QOD0vr0xNWty/w9LcuWDigwMCScq/lklHna+PjYIWfps+EplJVwzdtIYau4EGAENVxa8HYnJVtlAvHcYUiYwYzZcuUEWyirmpMMiYW/1FCe9kyIJ/gwETj76OLkk0eM1GsMimvJtCI9ZTLqXqCxiQHwWWNgBZ4GBLPoknjKk1/m2WjtU7qn4qnso2cxSmTNrt/ycUubN9oInLfmBSr5VcGMrVRUoYWw0plk5sZmlLml25Uki2Uo4KODTG9LoQX5Lz7b2BaI5LLRheJ8ip6qqGwpqcQTuBlMaHXbihYcxmYKwUQ25rQg5eHnMgcb5aJBrqm5wBBM5esK89unKD75WRkmysyE/hV4Zg8MVNwM0qvL7ijQUHo9Y6rAQPkXCyo2W5xQumBMZ7nZtOOrx4MDS6ansCrbFHQKQ+ltiVSMwuE0+zQKLQQ5vWXaMISZoWGKRyHy5zGFyjSnlOLNZ4O1UZG0Xv15+mdRXJtXSjWbzbSnq1KxC4EhmGwZH6l8ssilJ1o/JeeVuXmCVhCbwlau7ZaNkmaRORhqClkMGvYWa6i0uswezirIgJzZWW7JYo+6nFCZemSBG2sif0lSwR0YbKIYUmYTOqftsMRFCAyCxTLwUfaOjybKBekWlsu1ScLe9dFCkM1fKRsr3VD6LZpoE4PlIFDadKHmSqXOjOGsOJnAU/ecmKuFFhfZ7JMhCx8YslVMBqHVSxQYWC1YArno5HJfLDPMJpvtrk0SWWAbfUI80lMez3qXFZHzCro7RXLawV+R2cNf+Pli3nYqAKrQEQPyzGaftFl8p5KUpanrdzMIndN2WOLGxkaGwHBVkFyd9mxAqDJ1OWA4ncTGhC3RxtApkk1sT1EXFip9mJ8vUGx1NQ1eOJSlj6UpRpZsyHi6quKeoTILkRloFPg0Ag0MBpnghdnc9xrTBq1rlbUNOAsqXODE0jQo2bSBwuDfzKoVYiUnZz0leSkiRB75hbxOG2ZDihGDT0lpBVKX/TUt0ARyYGCzGGT635d15HFFYau1lwnZ/D9VS0kudyLz05VHYunUaErhlpke82mUItunqILm/D2GnECj2NYYhCws4JvP7MFBNtTrdePUoI2NDfnEPf00IXqIEHvonoxUp+zZjhWywUnj5JAKPtVEazOx931ObgWCFYxqRB1Sdm/8m+R4ijKKm4buBWZn7aam34OzFsuZPaf8PmYp3DLS4rNPYXOpKr10gBEYEr/2RhFFUa1WE7pa29lBFNjpG4cI2Q4Okk/Z04/VM84CYlP0Q4QqBEEQrKys6H/ZY4iM8/Uw0TNk6sGSHrcnHLWER88KB+3pEXE4HMqhMdXRe2zURNfKc06tzff8/dw/i42JZ0NIq0hOhmkL8tQ3g5V87OZfaAaxbQL42KpAvLSBwUYpg34f+AoBezHovPQHeePoPQpnx8rGRYyO8ll7RoCkUQFCRbvdFkZazlP2UkEPn3oiPZ7PJ/jVXCfRsuq0222fY2gNDAaDPI0lQ6OgoNlzMpRLyaZsNivlZKhEC2cu2mn/wvXNGxjmAmoa24ghLa50YHhpkHCPWkUxxxj54sWLyWVAjGRPq9UJWJyfn5+fn//85z8/v4yf//znn3zyySeffAJ/z87OPuHwIzueX8b777+vco8YVI42Ml+k7SIyQ5Eu3klPhcwsv42zjU9+fQ2kDgzCrdkDzWQsPidZnR6mkrLlZZEQj/HPmFmLaWCWwiSuXsxpHPau7jbUhWiKjaFOxmYx7haL7e3tVJypgski+VVaFG1Oh93S0htyFiK/Ty6BRmXqsR0vuCl7c8pfdjawdl/YwGAg4bo5n1yZNSoE2QSI861Is56Wyj3YW4JGlFLmzBKwDJPi2kjmwMAquDgwBMtppfwoUIycfGh25fLMJLcli3mPYZZg3cgnMLCJBlJNJY1Go2azaaxGGqVEUUTvCpIYtvWXXF9RYO86OXgS+6++Uj42RRLSf9G/hbiNztOWmIEPezenwDakDQwJF5OcNTJtGGIYKcVYKh8WRAwBnkZTBY4YnKIUQpaB3vAkvLa9x5AWtsCgzybD4mocx7VarVKpwHIrK5VSCpZM5eBBwerLYjQawdw3rHAqzQl04e/cuaMueurRaFSr1c7Pz1k1lVLAyjAmMozjGNTHv71ej7U8WAZujcdjlhvspoVrw0qj0UgV7W+sfXSpZH9jPdDGf0rwDAyURnF+RWnmBV0AWZFrzADFjxho1Tr5KK2hOul1T8LrbIGB0guBAfbVrK6u4qaaIAg6nc76+nqtVosvvhGmlNJ3T8IHh6H7G41GnU6HlSSKomazeXZ2Zig4mUzgFvSSVKpms7m7u6uUqtVqtsCglFpbW8Nr+NqdERj0fUeVSgVkxpQwDJHy+Pi4UqlgbIjjeH19HZnoPBuNRhAEEE03Njb0uyAeyA9bcZrN5s7ODu7MAfPGcZzKf4x0md4fKDPrgfn5p5Kk1Wo5+bMEuti2XHMEK6R+fY1ZwrrGYNQQvVVI8crSsJ30+sVkMqnVasvLy6kCww9/+MOHDx8eHh6enZ3htpNutytMJQ0Gg6997WuTyeT4+HhlZWVnZ+fs7Gxzc/Po6Gh/fx8eeCeTyZe+9KWzszPYgnJ+fn5ycnJ2dnZ2draxsXH//n0qZBzHw+GwXC7/27/9m3Hr008/vXfvXqlUiqLIeKCeTCbn5+eTyeRv/uZv4jiuVqt6951c9Ly7u7tbW1sfffTR2tra1tbWcDisVqvtdns4HN69e/fg4ABZ/fjHPz49Pa3X67dv3x5qODo6Ojs7Q+2+9rWvHR0dHR0dVavV8Xg8GAz+9E//tN1u3759u16vo3bD4TAIAsgLYnQ6nTiOz87O9vf3MSxVq9Vut3t6erqxsfHo0aN2u91oNM7OziC7f2DQFfen93HRZMECw9/93d/5qElpDNlYgvkiuQ4MCwNHYLCl07uZ609d7usFMsN79EQYMegvpvns1m82m+VyuVQqwbP/6ekpjBhsAaZWq21tbcFDbhAE8CC/vr4eRVEQBPBEDFMr7Gb/IAj0SZjBYKDLWalUDg8PgQM8p8M0URRF5XIZVUNhYPqoVqudnp7GcQzMqcwwLwSxs9Pp1Go1kAFK1LNMJpNmswlk+LZBq9WCDhoN/tZbb+EACMRYW1uD3fq65eElABgzgfDGi2nqYhyGWe7fvw+34C9ECEU6svwdB3VjGxNKZsjDtoLMbcFHcp8Rg5GFpWc9XEa2XKn4CwJfAzED+2R8j0Go11QwHM5JqeyBoVQqlcvlcrl848aNMsHy8jJNCYKgVCotXeCzn/0szn5Q7UajUalUglgyGo0glkRRBN0ZPt7C4z9OwkDfjdNKyDkMw83NTehPoR8MgmB/fx8WACC9Uqmcn59HUVQqleBvqVSC4AGAXI8fPwZ5jIVupc3VjMdjfCELO2U9lsCzPEQgnCOCTl8PHlEUraysYEcPcz5vvvlmuVzGF9CUUufn5+VyGRWH4Q6EAYygwA0mkQBvvvkmXADbWq0GyiZiMMjgeNmcVnnHgGxtwVOGbIGB6ks93IlsuVLx12Ur0G4vGWZgnwLefKb16g+bZwiUiSUwlMtl9hQK4/VaHbVaDQNDuVy+d+9ep9OBro0CYg/sZ4VeFR7Gb926hRPiQBnHMcQMpRSUy3I7PDyE52I9MIRhCIFnNBrhyvbS0lKj0YDlirfffhsVh5VwiEOVSgU7XBhDwDUIgPEGxknQU+uBIUmSx48fG6MlPdhAerPZvHnzJvTacHc0Gq2trXU6HX248Pz5c7APDCzQAk3uSCtYeomiaHV1FUIFRi+jlnVPyOBprNf5e2lC4lNiiRbTg3plAkOBRnv5YJhrGkgRGBTnVQWKInOj3plcDgxpF59xWxHMrsC8DXR5lBg6r1qthoMDmHIZjUb6iEFdPGiXy2XocyHXeDyGoIUMwzB84403oFzIValUHj16BI/VsOBcKpX29/dhxAAP8nEcr6ysqItnbYx5EBdxIbder2NZ8CDf7XYxDIRhWKlUxuMx9Owo9urqKgQGfXYLVgj0mZ8HDx7AQAS67zAMb968icJAod1uFxRHPrCogCvkOmC5GyJ6FEWwNo4ByXCAhLQKTz+00ais/bstoyCPp6hyoRkWn/0bhQxPVtlK9DfjNWZgmewjhsIrT2BlyEP9L0NgODk5geVQBAYGygfnzfv9PkyGwNadTqdz69Yt40H4/PwcHvaVUjCYwINu9FHFO++8UyqVoDhgeHh4OBqNYPap0+lUKpVnz56FYbi0tIQdJe7z0cXGJRZMxFJwjQHGHOpiuyrMPuGDeafTweCBkznlchl2CjUaDRAgjmMIDMAWYgyERpiFA5rT01N97AXZIULQ7VU4V4Yol8uogux+Ns9RXEeTcF2z8nB1AXLRqGNSUHtRSm1tbTlpWPULgQ+3DCXatLDdpcROI8iJbFmpZJgBZimMIzCoy16uXxcupcDKkIf6XyHvMbx48cI2YgDUarVut3v79u2joyPYgTMej7/xjW/AzDuWfnh4+ODBg263e3h4uLGxQd9jUErt7u6enp5ubW0tLy+PRqPxeFypVL797W9vbGyUy+XBYHB8fLy8vPz48eN+v//666/3+/3JZHJ6evr5z39eKQXxAFj9+Mc/rtfrh4eHvV6v3W7v7e198sknSinYZwXDCD0w4Jk/Kysr8HoB/D09PQ2CYDwe47lAQRD87Gc/08uaTCZf/vKXYcRQq9U2Njba7fb9+/f7/X6j0ajX67ol4W8cx71e71vf+lav12u1WsBcNwUERRgu9Pv9brcLNoG7rBtQ98BEZMsS0Ls6T52Jj5eyZIrrGSFlMpnoy+kZoJT64IMPnDTK0lRngDynz+pgdRFsTskopZxo3GXlmS9mKU/qwDAXGxnyGBequBfc5MAQhuF4PIanY31PDqzr4pxMu91GbnCu9cbGBk77wLMzPFBjZw27oXZ3d2ENA1a2a7UaPp7DJijcqINlhWHYarV0xeEpHlNg/IGjAYgBURT1ej0cfADl2dmZMSEWBAF9D25vbw9EgumyMAwfP36Mk0u6GLDGgNz0tzF0gUejEawPdbtdGKnQqky4Do51D8V5KWVFb8lFGGXRvD4+jIobiT7ZkX5ra8uZxV9Bf+TMnqE4p2qCGVkmTjKh3AXBzCSUXnCz1YF8KxUEbiyx0hw00Ty1wMBgW3wGTCYTeLbFlOFwCEvZ8BdWg/Eu9N0bGxvQ3UNfmVw8P+pk+oM5KoIpuLSrs4XRANX6wYMHo9EISoEJH+iXIQjBzNUbb7yBMgPl2dkZBkUIVPQ9OGAeX7z+DZSrq6sQxvSYChxwfyoMKSCQwGgDZ70gFsKwCbYw4bI2Pl/rcqrLVZ9cbt5K9CjF9QuU2EhUpJ/1cVdPpOWWOTBMD4WMErKZy8aBZciSpSp9jpixkNm3qwp//eGZUbl6B8/AgNxoOlzIIwbFtQGYdWGJ9fT8QUtnpZ82IQsZX3yhwSA+PT3V/yZJAsEGc8HDO9V3MBjozDFMGi9I4wvbNkCIhSEURDgcMTQvPmfU6/USLgYYkiekg1Bc+7dRyjypK9rg9GEbQ58mgFjAwIBI5eQJ160rSzVR1WzpNqvauNkKWjQozrGnB8eRGIY0tlrJjLTa6v6UaPUKgcHphYm9I4AL2+IzgD7U67+ZQccHLE/s4nOWK4cTfVDCUrKhkS2FzY716IPE0lPod3W2No8yaGQZbI5nu5UKrBipOKQNDJgyF9iKZqWyCWzT0UnjY5mE86JrpA4MxVpQWZq3M5dKGRg84RwxXGkYe5lsNGnZCjMJBY6TsiFxPQrMQACfJuCZrvzWGGxNxl/mYtVPRSxnYQnSWuMaTvgGBqEK80ClDAw6fTKFwNDr9Wq1WqvVevDgwfb29qNHj/Yu4xvf+AYmPnr0CK4fu/Cd73zn6dOnT58+ffz48f7+/uPHj59exv7+/lMO3/3ud5/ZYXzb60TE2dkZXhjQvzgWX3yMzEAsAjcyTTygLnZMGTuUXrx4kb8Grzp0V2eR9gU3mZtNhrxqXMBn+UFv0bLArFJpTXENH6QIDNMoPidb9JiiAoMB+WuOaSFMuNOzlYxzlhDw7hhNaV7+kDK+cebz2eTGxZeTaQpFMH3IH1iu1+tsOkL+wDL81Q0loN/v0+oYXZxkZQBr2ah38KWiBk+tVitPS0HItwoRNS3ydAXXKBaOL7hNG+iFMoFwF4BvV+keNmu/tmBxJCkWsbY0MtWoqYdPI4jK3Tp7MooRL22RUo6OECB9AmelUnGm6OHQloL86/V62ibGQiDw99iEG75nA5U5lZrXEJDBnum2q06ptmxsnfqgVy1yYLgGha12qDPot2RvEegXAbgxTA6oo4uTa/UhiI7xeOxoThaDAJwEagFGDOrqRIW5GCqtfTJksQYGllfhFabEEYNTHzSTMZVECeaIDGJQ+8xAgMwWM+ZMXh3IFhPcWBG3d5ZikAmNwtZGbBnZEr1tkIVe4KPbZ6FQiIIzhiF8Kn291hgSVw8+L6AJXtbAwCq7OKqlgn+F0os8xQnprHkFbv7l0uLYQtOC5emTJa2yPpoWksvgIMg8Y+TUZREgP6vJ6jtGDGqGgcFHXGXxb7r4bPBUV6o/TYroGRcTtO4wnV4bXqE4gyScr7J/hSwGGeuZqWBzXfbWVMGKlEGj2YCVcPa2ejlgBIZUu/7S7UpSU64kJ3+VKTDYUqaNhOsO9FtyRmXpLrOJkZ9PUaB1qiya6he6AxjcDM70r4+n2cQTsggETuKZgbV83iokyM9WEH7GVrqGyh8YlNj8MtSNpzx6FqVUrVZzbldNLNVvCCBz8CGTFbHdsuWlf2XB/CWUxc7DxLMImwUMdShNYvGEhHisAEpPJTTYXkUIelGtM9ZoEdBlS9LUo78d5qvgjJHzAKtcgQHTc1aYEhsnlcfIq/IFBvlWKjJZRyq8D5lxK6cKPmALLZA/W5CzOOotRgorIWVbFAR1Fgqy5VkCWy5PSv/sNpEM2QpU/NVBYYFBWbr+hGuN+atNZiKwVVzPBdu9ZVWTq+wrhr4yZea8qdgWBcMN2OKot/gLls89vTCzgjJANmOSxpJy3eXhowoNDBlKf/kw/xGDQZMB6rLL0oIEYnXxkU5nYPBB7H0e6rz2aAqHuS4gEkuUoum2jLT2lcUJafacbkmZsIpQt1w0pDV+TmTmb4iXpKy+YqR/WTCjwKD/pZXBOp9nXSbegYHyh5QCAwMyLJxyLhDEMwJMHkV88uLLXGxKTA6OlVnpf3VPoOk2vzU8jSVIPAIDvVgEGBbQZaaKLA4MadV1SJgfClh8NsCSOfkLKWxZespkMqnX64UEhqOjo3fffXdzc/MewYMHDx48ePDXf/3X9+/fX19fv6/hIcHe3t7Dhw+/+tWvPnz48IMLPHz48OsiOp3O17/+9W9+85t4+t6TJ0/06ydPnsAX0/TEf/3Xf93f39eP4WOP5Pve974nHMAnHMOHp+/B9U9+8hPjAD7jGD7Po/c+/fRTPHov1k7fw2+L2g7gM4Cn8uFfuE4ud4jZoFyBQffDzKUUDta3nQQ6pUdbKR5UtgxqXqMQOAIDrQk5ReUIDOqyZ9j8gFIqvzUGgy17t9PpBEGAB/IMh0P5eLtCIB/4YwCOzNPRbrf10+L0D90gNjY25HOB8DQ649ifarXKngLEHvgD3zENgmBlZaWSD8BtZWXF4ExLZyWBT7+py926zXVtF5SD4UjUnTzdftqgrbJY5GTrLxjVZUoaXcNA6sAAsLmgkGhjmPgFBr1o40KlCQxKdGsIDMZRmvQAVD3FuMue/jYcDvUjOW1kPndHrqNYbXwMMhQJc1G9oovQSNONjMaFrq8srQ48yhS+Chf5hUw8ShZPzatUKs+ePbPVu81LbR7C+puQly1rqmCLU2n637TIz1MWLNH6BGXvCl5x6OPvQr6uqoPZlaTEHQI6gY3SH2oegUFAs9m0BQba4bIdJZtFz2j0njqM+GErjnboFEa6MfRhZTbE0wODDys2Ghl3bWZh5QeDGOIJpeBvrVY7PDyk7sr6HuvJrJvRJkA91kifDWyNRb8uFvnZyhyS68Awb5iBwemCADmLDyudUnk0J71o40IVFxjgC25G9yT3aOx0E9t5Gb2k8cxOu0WfznREIoeNm01IG5+RZcRgY0K77IhEIIN5dDkgYaSkJqKC0SrAcmu12v7+vrGILXspdS02kTI0mPt7foGgheZvCAuFl1i1VJjlVpcUx27r2fSU/D6tCgoMuuGcPsR+u7jZbNZqNVtf7Oz79M40cvXvbJ9r8GRZUTJDPOdMjsFNuEV7ZFZlI6/RU+sZPQ3CimFc2zIGQXD79m2YWWKdivob9RnqP8ZdnY/QEPK3EYEtW7Ts9jkxy76JGnA25S74VsPZQPpQj0GaiI9OPq6ckHaiPJpWQlqyIcZkMqlWqysrK7AjxXlWFJD9z//8z/n5ub7d5dNPP4XAgI+u//Vf/4WdDlxgTz0cDvGWnt7r9XZ3dw8ODiALItKeiOECmOtMIHu3293d3YWU4+NjoNG7P6M7xjBgFBddHs3ovfNwOETOSP/xxx8PBoN+v48lGiFqOBz2+/0nT54gZ33Qo/fRuqYovA5Un+3lhRTd4DQvENdqtVKpdOPGjeXl5fF4bPMu6tgspUCme5TuopTAx8lTgS1CuDtfZJ4Bn4suixYYfA6/e/HiRbHLDI7AILQllsDTodmCBG6KC0u6PLAXRd8O78Tx8XGlUqnVap1OZzQawQKOMWIwHkXZp2+KjY0N2NpEuzb2QRuL6Pf7IADujGI7aPgLy62Uj34hlEhL39raAjNG2kCB5mq1WpVKpdPpYAq7QG1kpz07C1AfasTIYmSntzClVqstLS2VSqVKpUIbuc2Z2RTWA1mwbqlzE9w7A2jRTrKrCFBhxj31ogUGJ6a7+My6lOyOgkfKbqqnsNcCh4RrgXBWEu5moR0fm95oNKAHCYKg0WgMBgMMDGwu+HSwXgrsFjXKPTo6MgJDFEUwswEEQK9/T1jvVcMwxAVwPRFyYUqtVms2m7Ye1gBdMTZK14uGeENjDFz0+32koRx0dfS+m64WnJ6eGor3+/1OpwMH5UI6XY035GFDBQaGcrk8Go1s7qou9nXYnJP6JOv/Bgz/TOXePjCKttG8HGB1WeSOO79s9FVQz3KLPYhh1oFB4M+yYmkwLwoTBMHS0lK5XC6Xyzdu3Ch7Y+kCr7322mc/+1nYsE+7POgxgyCo1+vlchkeaSGKVKtVozOlgWF3d1d/GwDeM6jX68AZ0rHrVI2zAAAgAElEQVTEMAwrlQqWDgSwWx+muaIo6nQ65XIZRjwbGxt6XixC7zSNOZ8oiu7cuQPhsNFo6L28rksYhv1+H15uwKg2GAyCIICNoY1GA4OTbjQ9DgFlr9fTjYnS4jUUB4DAAGXp9GxUYAPD7/3e7xkjBsGN9QvZe5Wlq2Ihe3JmqOvAwHV/NHEu8WOWgaGokwtY5AoMlEB2aIOncgUGKoOyBAboOqHz0vsR2873TqfT7XZhMhqnHQ4ODqCvpx0c9KFhGMIUNvaSnU5nZ2cHXg3DHooGBriLHTd0phAYgIk+RIAghI/MQACS12q17e1tDB4giT4QgZ4aVMPYEJEZ+TAMV1dX8fFcnxcygtzOzg68GYc6DodDiFIQVIIg2Nra0gODHiH0N+aALShbqVTq9Tpkh/pqNBrVahXoIS6ORqN79+7hO2tYudVqFV7fA2KManpgeP3112HEwAYGwUV9CIxWkHCdVwbmnlAegYEV6SqCVaTYTpDl5mNG1uZzGTGwJwvkFMP9ghvQsWZKcru7zkQviC2dUqIkGbarnpycwDM4dNNgTQwM+uN2GIblchlncuACemF8Rxe7/iiKer2eHhiiKLp37x72XPiYzAYG7PSxv8NBABT04MED7MFBcoxe0P/iu9DGfJTeX0Ng0F8Qiy6mtozA0Ov18CVqZFipVPRZrHv37mEW/UEe9/7CmAkXTsCet2/fji6iODAHAWq1GkwBgZAGqyiK1tfXUXdQwVidhsAAI0hjo5qPN9p8L+ECgy1FT5R5poV/9lTNYTGRXO5thZe5jK7QZ87d1ns6zThVs2cODDnLNZDirCSAp/L+vktLSeztRxUXGP7v//4PdyWpC+MagQF3Ja2urq6trR0dHR0cHOzu7vb7/W63u7Ky0u12//Ef/3FlZaVarcJ+nuhi3mkwGAwGA3jqv3v3LsyKRFF0cHAAlDAF1O/3t7e3l5eX9QkWeGQGsiAItre3Yb9QvV6/f/8+kFWr1Xa7DfuLoCw4iwLOdNre3m61WtFl4IRSr9fb2tqCg56q1erW1hbuTQJFsJP9/Oc/v7u7u729vbm5WS6XgQ8ojjw3NzfxWr+Aozgg5eOPP15ZWYmiCBQJguDo6Ag3LNXrddBlOBzCq8uj0ajZbP7RH/1Rq9Wq1+u1Wm11dRUix/3793d2doaXN/Lqy/tBEPz+7//+66+/Xi6XfXYl6V5N77L+lgeeTcPWXjw5UPlZSQrRaErQxcPdg2xg8ElRJBLInSnrJ8ruRWyiXpbn+rCxvyjWTplMizwBI+PpqgYXp/k8+fvTKzEwsBl9oAcG+vzbaDRgBgZSYCZkdXUVLuAZFp5t4QEf55cODg5gdIKJURS1Wi0Yc8DkSa1Wg6EGnAsEj//D4RD3KcEvPERDvwnccJIHHpaDILhz546eqAPUaTabb731FszGwFTSaDTqdruNRqNcLkNeeGZvNBqgeBAEpVKp2WweHByUy2VcKWk0GjC7FWlDE30QA+ba3t7GxRscEkWXl3D6/T4MjyAC6SOGMAxxjPLgwQN97otqFwRB2qkk6ofUtxMSS1jOcqPwd3WW2L9xCWLIMLIvGmYQGJy14FMjPmLbFKSLB7NfL8l77HZO6PyVveUYAoDoiT0wZAYbGPRJGArjRQSDWOeAXaExqxORdRG8wIx6ok4JiyVYFqQ0m00kw/UJA+12G6bRsJPtdrswZaQvKcOyOayvwKICxA+MFs1mU9/gZOgOuWDRHhSHeTMArIIAIM6BSBAXoyiCQ3Nx4T26mHYDAoy7Q/KCW6lU8tmVpF/rZIl3YGB91WA1F1D5bUg4veaCaRft2b0Wa/+0Ek5jXigDrO8xAIS7NDGb+VLlVZaGCh1NfnPYAgNCn8HQA0NEpvJH2oqoHh5oRjYX0hiRxphC0dkanLG3RRhDluhyGDO2tLLaRVwgxPGQDmMrLX1JbUgOwDB2H6G19Z1LcKGn0MAAewpgQwEEBpvTGi6tg941KJ2Omq1FTAM2bzcIBErn3ULgKXYe+PS52WxbiPDTeCMhGxxHYijuCUtZrJDKoDor5QoPRtFYHKoxvcBgdMFs76n3y7SfYrvv0eVN+mxPHZHAYBMgJG+6GdxsD/WRFoqMLa3Gbp/RxdiFBkJ4/0Bfyu52u0Z2Gk7oOwrGi3Kjy2HYsKRhJT0j7krCwKA7DHWq5HIzZr1OcYGBbQjs9YyhLIHN8PbE3qAo5LuFgMo8L/hY2JlrxjIXixRnJVE/oyZwGpQtwj+jmnlgMPoj2yO8LTAYHavRX9su8C99qVjo322xwRADFTFy0XcdRtwIiYK+Pcf23UY6HTHo2Q1pBclHfiMG2c10HzCcLbEHBh9fnSOozAaSVzIw+JTiNGwe5lcC7vcYfLgkmZqBkVfmj1lY2QoJDC9evNjY2KhWq+xZQ/44Pj7Wuz/c8GPjhgQCdAL6+K/zh31KBsHHH3/sTNEl0c81EiQHSY6Pj9kRCWY34hxuRqKhYjgc4p6o4XCIu8L0XyOWIDFgNBpVq9Xf/d3fhV1JI23EoFztlnqmQZmQwGA4ZGKJMXMH6/C29HkBRZ2SYGlN5G9JNkuBkhcyv5SKiSMwIPRESpakDAwsMVsivZVwgQHmtVVul4JJef3bLwZg54ztLoLtRiPLIjOl8WfCwuimnfQZQNfMKUaX33MWaGzp8rKHLaVSqeB7DEJg8HEw6vZpWS0I8jSKmWHa0mYwlL8Zp2dz4/PsqZD5lTf3GoPyNqgPGZvLmVeXOBEDQ07AJnp8ba3kDThgQ7/Wsby8DGzhL/sZSyMFAOdt4LoxXuDpGnCtf6Gz0WjAS8UGcLsRfuxT/4ufBcUvg9qgf1tUpwy1z6gBDQYPPdTRRD3oRpa9Wwh9kcMG3K5qrDEIbmZzMONukrJRLA7yN40ZYNrSTslWc7d5qiVrzwiRcY3B0Dwhbcm/DhK/8EBF1xONqaTMtRLHMU5Vh2F448YN6OvxUDaMBJAihwo2HY5m8rwFHRzeWlpagmdhH+i58DwoJx9Uzamgj8o0RhqJ8BdCJoRPDJy2eAkflNZ3W2H4BJTLZZ/AYPieQaPIIwj1Q5ZMLWTMyNYcZgwUVdi879kJCucpFWirGRvc9uCf+SUJAemO3bbRAC+nxZ1MUhk64QIDK1g2jEaj5eVlozujF7YuTwYlrlQq/sf/2XpkZxbs/SHm6ZJgFNRBRWJp9KL1Ugx6DDZ6ZNIFkyMcZjTo9SCnF0eP3fZ0sAyerDPJnH0ayN8QZgaUU5j9SNUJ0pT44jBdp9GcoubkkAG2Pt1pEzSm/4SSOzAYGQQr+FhcLiiVoRMuMOi3claPHhh8enYEdqZs8GBDgtE1O4vQH7TpLVtvrg8FqGpyWIJ+ViBjxYYsenGC+njX+IU5PbYslqGekY4YbL5qeHg2l87cEKYE2lIWGcnFcEEPDEaX59+12QIDLZS1m+eBGYLZi4J+VJSNwBYYdGMWsPisxMBgXBh30zqurQjB1jQjTLX7q+2DyWTyk5/85Pnz58+ePTs8PDw8PHzG4enTp/+/vfeJbSU57sf34ItOe9NtvyfCCaBFEIB7CCD4xBcDtvywQcgIi4R5igFRwgMiKQq85NKbQJJlAxrJzwcqgh2QSl68pLLe2Bo8LwLJQrIIoxwCSz44k9BBAsIXB5gN8Hzh5eXS8zsUWL9iV3VPzx9KfOv9HIhhT3V1VXV3VXdPT8/7779/enr69OlTuH7vvffg78nJCaQ8ffoU/op48uTJkydPTk5OvvnNb8LFkydP9vf3j46O9vf3T05O9q340z/908cM22M8fvx4ZWWlWq2urKx84QtfeOONN+bm5iqVysrKyvIkyuUy/fvmm28+JPjc5z734MGDSqXy27/92w8m8cYbb2h/EYtj/NZv/dbi4uLrr79eLBYh5Td/8zfhLwWmQCCh0Quvf/3Xf32BoFAo/Nqv/RpcwFfbIPvCwkJp8muv9obK76rJIMHzcj6xpdwxcusMdwg8RY4HBjzZzIWJCxk9mMjRdC6mDsPw+fPnjuKByw4ngWQ40recE4XpeHc0Gj1//lxjm2dgUNIACq+1xOwtOJYAoSWKgcGSPSP40COXt9jTbUpzyYUHBbbHJ8VqjUajD+OgJuen/NqU4o4gCELyyMcFfDsTqGNqP6YW4tL2Ire11nuHYyuaHdAGmbqXOVJqG37sdrMb2V02jVjrKdid7d1Ky44dXOSpcXaB6zMGxcbp3HYZm6/lr6ks/Jt7YEiXa5YBjcPzvLm5uXa7bSezNESOdN+cygWpCxVboOlubF6XJn2PSGeiWYDmzqYaGGKNZrdwItm0wBBLaemMpsDAZyHTmjFEhrZOyZLCPSMXPYoLDGoysGVHUj5i6bFM8pKWAwMDDqVj6R1jw8zCYkxLA7O3PXu6icl9IbMJ7xq0vXF35tgUkwYGF7vZzZu6FkI2e+DDMsfAwNNzCAx2E6i458Mu1rHkdSHAIrQL5RYYosydhGrqSMyzxHIQTZpCWo6kgUHd62zAghQ2MdGLdaTcwoZdKnuTniocrRRLYMmYIpcjW8tYBB2cPXgow0HcnC0kWmyoiWehca8ae4fCSKD9pWYRl5tM+qYb2+UWGNLBka3KHBiiPJqyhQ8vRUuJknTX1MJzu2lIMWNwLNouUlJiuxacDNM1mlgbTq95cAHuElwek8zpNE2RyxG81VEvaXKCnAmnEQODxYAa7GTu9SKKZ4J9xmCZDeQZGDRz8HaWl3WSQrF4oJVr2ZUkqpYOWqH2W9wy2kVsQZbiYiU0ZW+326+++qr7jOHFixeJBLhj2O2TS6Ujq6TVkW8XcIfK0H7uFyAtfqwN06d6EjW3njtxlMH12QsaEaixBfimLMuEHm9xeyIsvdsWGNRkf+BtzpI3qZncTSkaVwsMluxJYedjl1AksxjHxXoWIfFalAHQbrfn5+fdA0MsZm2VacZhqmieYqlxS/PQWoKpwXwKgEsfjM0SWTt1bDVp0JaJ7DTTg/7wWbutaa4cfG4KA1kMx0sRy52RwCCWwrOIeR1taBGS8jfR5x4YcoFoAXorr9r8FLOP0AqNLJbevori3gcttyKDY7TQp2vDiQZhiZ4OcqmEGQNXGDOrXANmOijJ68GHyUQ9OXEi2PmY7rokxrK1sBKFFKtJo8wrMARBgGfnuUA8P9UCSyefzefhIngl2v+aWpeFeTTZSe8RouPOsZp4AxDjhFa0KU6E481Iym3eRu9qTyawULtNYJhvqVNTJDOliHolAs2oaZRPYLDfyheicU2BQRM7kdU0DqYU8Zeb0WRAJfVqUVqL/NFkm1bm9ucYGLjwnE+xWORnuMIJrxaUkgDOyzOBHjqrnUrLS1xaWhLlEVWg377WsLOzw0+cdQmK9Cx0UzgcDoemPp/RBag7WX/IHaKymtMXLyzKuthQa/ZiX+YdOQxDLaNYcbGO3i6tlgLXdAHKVDQXg4+xUJdPeGDQclnaQWRuCpxDlNwUKexjl8eeS2Si3AKDRQzKJ9EZJIm8EjZfvrMCoE0shsOh5mFdvrBk8uPc72tnktPIEQsMP6mjI4UW//gtMTpqf1GYarVqD5C1Wm1jY4MfzC4i6ZTRn/wSONQmVqUWPrHStTYg+k1l3dAp+l87aHfgnpRyjiaHaPgXGzMVUmz5YkcIJ2c//K7o+l3IuDqA3JaSTLdyh5K8HoxeTXXJ6V0glhtLY7pLE905aJScJ89rEhUAgaHf77vobuHjed7S0pKdyX0haUXfAUCk1GN2uinFjo8//vjjjz/Wuv2A4fb29vb29qc//emthGsrPvrooyuCZ8+ewS89OuwHP/gBPU8Mjhp777333ic4PT2FX7jAU8W+853vfOc733kyCZ54LKHZbG5vb+/t7R0eHvK7e3t7e3t7jUaj0WgADaLRaGxubu7s7Lz77ru7u7sHBwetVqvVauEFgA4UYO4INECGFwDgvLu722g04BaUK0KUFi4ODw9FAg1gSe0vtS3Hs2fPfN+ntYnORHj4bPKG/K7olRJBTToy9yy0UOUcGCLJKbvkopQuNNRi2nVsieItFxNp1SS6GAgMweSZoxpM6lB4nuf+yTwTjaYaT1dSXceW5U6cF0yVq1h12GUzNSFe9ZReayQmq74ssA9pleHltaSl2Bu5WI8uTdE0F7FrZGeI82acIfFFSPG76yYa06yuXC6jjvc8Y1Dmpm/PQstVDoFBzKX9FXXnolqU1ViJNW0pMVaYWAkt5QJyDwzpELGq1y4i1upECWPld9ElOyxlWSR3EcxS9bxoTpmnkneFkH05QLvGc4Fil01M/PGWxZhiTXGrmqpeIwsnl5KSWkO75mFGOytJzC5mpLaq1+uoxT0/Y4hlay8IFXafMUSsHbjniogp7Jw5cyq5pUSTqV0MRfNq5SIcA4PlLgACg9jQoyhyGcFZJE9UL9zOLibiRVgEE9nyLJyPdqFRxorq/jeabCFxtreJPZsI41bnk8JSj7ENwMTKXrnp5KSOm4dAjVLLEhsdNavGBAY1abVosn1zhV3sa8llZxubEaAFBgt/ezVoNKYSKU+LCjxRSf02kR00Dtot011MiQ0MmjCcCVzYZwxiYIhYI+HScqVES3J6zl/kE5vFAguxeIsXKurLq1Wzg1iQqbpNt9Tk81iTIvnCNOpPmlclDwzillYNvGrEpsLvinzENmbJ5Y4R+SqDSGC/a8oSspNr4wODmmy1Gg1PoVk4jQVKas0WSpO0psAg8tFgoTEligKLxjGJ7VhorBamW1opSO95nhgY7AXxNmcPDNDI6PaSfr8fhmEQBLB9RbFuGSuG6ZrXCK8X0RQ5gteIkhqPy7UmralGeKHT0EsEP8MuCzctu7ZMhDT0r/sHSBLBZGf7LQtBbK6ZQnxg4M06VluutqVla9mjyV5toVTmzpAlMJiUUlLfjoWooKivS6EimV1CsRSkh0P0er0efLsqtv+MRqPLy8vr62vYYk/5WALDYDBYXFyEYDAYDDY2Nr773e/CfphSqbSzsyMazSJ2IkSskUSsdWVka7/Fi6N60VsWhlwLvBgOh8fHxzhO/MUvfrG1tXVxcSGy6nQ6jx49Go1Gg8Hg9PQ0DMN+vz8YDJAgDMNut3t2doaN4ebm5ujoiK+Jj0ajZrP50UcfhWE4HA4Hg8H29vZwOByNRjc3N4q44w8//DAcr6oD5fX19V/91V+BANo5SGEYnp6eXl9fawNYaJ8vXrwIw9D3fUxRSvX7/eFwqMYxAz/EhjIDN3rWUGxTFzsjv2WqNZHGJeOMYDQa1et1NZbZ9UM9Fm1FykRA4VzKEjPmtZREYeLgwscuM/+rWOc3kSnJv3A+JmkdX3BDjEYj3/dLpVKhUCiXy+12GzpYbGDA7y2HYVir1a6uruC6VCq1zZ8JEmGydhiG8NoB9nmxdnh2x2YQSS3TRAxzI0qsDO1ZK0IkEOudEtTr9Xa7DaO809PTcrmMm/0pcRiGxWIROvz19TU8Fmq326VSqV6vo98PgqBYLHqeB3993y8Wi3xaAG81VqtVfEWjVCp5nletVkulEhYdhuHa2lowfjfe8zx482NnZ6dWq2E8A4vBJplCoYBTzCAIUDsAiIfmvb29nZ+fB6XC8VsLMDHFLNvb28gBJIdAYoHYX5TUl00VJ3IQs88gwjDEfYaRGBiU2a8ps1ey5IoFCmcyX2xG9xmDyJ8DaTT6RNndldWKE62hpSvmRFzUhBlDuVymryzRF5f4217tdrter8/Pz8/Nzc3Pz1erVd/34fUuk/qDwQC6OvAslUpra2twDR8W1Wxlt6RmMfwbBEG5XC4UCuneD3CpRy6JaeUE1FSsBt3F4Jwt2dG9lsvlRqNRKBRqtRq4YBobIAZAyu3tLQQGiA3gWCml7/tgSRoY6JOJcrnseV6z2YSGAV7e9/1Hjx6BU1bjaH18fAw04O6hpZ2dndENC/gFVnj/Dl+CA9mgkaCjB3kg49HRked5NGiNRiPYbQmNtl6vr66uYguHW7e3ty4VEcV5HjFdTLFzmCmAkXGoF4nvMajkLj5FFtFSJvPFZryDwBCb3aSIKbtjIr2lyeZYEBUPRmcpMDc398orr8zNzb366qvFYhHelcXOqRkElozojAGWAoIgoDOGyOxqcawnWpsOdUulkikwaJxFAyZFq9US2fq+jyNuO3OtNvFay24REpdWfN+v1Wqj0QgG1JpgMD/DYNDv90ulEo7BaWBA/6sFBkoAYb5cLlcqFYgKEOnL5fJbb71F+dTr9X6/DyMAaCee5xWLxWazCaN+rNzRaBQEAVCiADjv0WYMkNhut/f29pADnROAX4PhAsxQ4aVumIVYagTNzm1u6U2xPddEnLrtTQ/xgYHqqZIsJZlu2aES+tPI0LfTveBmARXPkU8CtQ0WtvDh9JwYU5TVN4XOwNWJWq02Nzc3NzdXKBTAM1qWkqIogsCAnVZbSqJLFvSohtPTU0jEZYq9vT3UBTxOuVxeXV3FcTG4jFarBYsb2P9vb2/x1CMczJpMBIse9XqdLtOD2221WjCMxXQIcpqvAQcXBAHyRAeH/osOvSGdroCBO6OB1tTM+v0+Trza7XYQBMPhEP2mIuEQBgHFYhEG7wcHB4VCASeI9Xod3pEGyYEVHOhUr9cLhQIovrGxAfUIvrtUKh0cHOApF+COoeLQPjCJoXMF4FmtVulIX5HQhZPLVqsFww4kANtC5ANu2K6wMcOMATWFJgGywTSiXq+7LyXxlNhOakk0sbILczfQHiOlDwwWIHfOx54rShgeKA1myevNZ34rEZ9YTe2JFsldagSzq0knKMrsDogB6BAV8dGmLDc3N6VSCeh93y+Xy51OBxwQ9F41fg6BQ0XP8/b399XYIwPx2toaOlbwIL7vX1xcIJMwDOfn5zc3N8GxYsgBHwRuAiTRZhVojfb4NEDwXDibAQVrtRocQwRi+L6/sLCApw9hJOh0Ojg2h+zr6+vwVAZPK2o2m2ocC4G4Wq2iPLVarVAoVCoVqkUYhnt7e3iWEXX9YArQEZaSqL5BEIxGI3wSAFINh0O4RX0BMKnVauB5ARgY2u12r9ej9KVSqdFo0FXHcrl8dnaGBOC7K5UKVH273QYZwOlDYECGp6endAABloSWhgxxxgCLQjQeQzyj9QWFFovFbreLgQESaSkiTP3a0tFcOriFm0UYqr4yzKqzQwwMIFuCwCDqZrolcrAUBLATiyIBcg8MnI/prnKOIrHqWJi41IgmkihhUvzf//2f1qNgl4g9MFxfX1er1dvb25/97GeDwWB1dfW73/1uv9/v9/uLi4vQmf/+7/9+Y2MD/fVoNPqf//mf0Wh0enq6ubnZaDR2d3d/53d+B4ru9XqLi4swNnzx4sX19TWkA8Nf/OIXSilwcLBD5uHDhycnJ3BWDBwVR6sAzTIajUqlUqVSAeLDw0PwU6PRaG1tbWtr6wc/+EG32221Wri55atf/SoO9mmw6fV6NDBcXV2trq6GYbixsbG5uQkWU0oNh0M49+b09HR5eRmHsf1+v1wu/9d//RedSXS73Xfeeefm5ubm5qbValUqFTjkCsIkbAcajUZ/93d/9+jRo/Pz88vLy3C8GvPP//zP19fX4BzD8X6epaWlTqdDqxIu2u320tIS2BZG32DtMAzpR77AXI1GA84F6nQ6rVZraWnpBz/4ARIMh8Nms+l53sXFBUSOxcXFarXa6/WePn3aarXOz8+BOAzD3/u938NnyDAz+MpXvoITVuB2fX3darUKhUK32/V9f3V19cMPP4QznXzfPz4+BjvAcwXQfXV19a//+q97vR48acDdTU4tfgxTX44M/sqeKPJ0EePOAsNoNEoQGBTrSybFLB4qFiITLo9FAFNg0AxhktmU4iIqL8uioz0xNjvXReRmEokzMRFQ1UTT2QPD2dmZtvxyfX0N1/iM4fb2FrywGrd7OFkTh+dhGK6srMA1PEvA0SIOe+kzBggMkLi+vq4ti4nPIcLxA1V82QKnRJDS6/VgaQKLbjQaYi+FFTAaGGDgD4skIF443iMEzLe3t6lG5XJZE7JWq62trdHzXFE8ajpc7anX61RURVbegVhbAKSLThA/er2eGs+i+BAbzAXPGMDpQ7+7vLxEAphtNBoNGKTDchY8Znj48CG2ClhlgvkBTHRg7rK8vIxH2AbkaCDU1/d9eMZABQOnBvMJWDiC9S4wCLS3pDsUtJ6VojvzTufYtTWbq2kGBlqKHBhcFOB/eRb618LKdMsFmB1LT7dd1ZQo2sGuqV0vsVYsetkVdynFlN0kj4mJKLmK2656eHhI/9J1eXjGAJxhkQFcZ61WOzs7A9eDKQsLC7irElZ12u12q9XC3Zmw2n59fQ0PQjB4wKIQrCGAS+V+gfpK8GIXFxfgvnFRmy5wQ65Go0GDB3KDFTPswM+ePcPAAIPinZ0dCAyYfXl5GenB12tCep5HV2nC8QNb2GsEJq3X6+iX1Thgax4f74L9UWw8ZBcWfMA7KykwhOTgtvX1daD0fR8edfT7fQiK4XgTKtLj8d1BEFSrVYzTkP3q6gozQpb9/X0sl6bTRbDV1VV80o4SQpNAdfb29qDi0BqJjipy6ZimREuv5HdN/TEdeCy3gwaG0LRdlUtPr2P1MbkVS0bRppxnNOnRaHbUCkYlsfJY+Is0jlpnvOVSqMhEJDYZ1sTHLpJIrOICAy4XIPHl5WW9Xof3ITR/CmFAG0uCn7q5ucEFdzX2X/BEQSkFgaFer19dXeEOWhgeXl5ewso+hBn7phTQpVgsLi0tQXHgiZADbVonJyf4wBzTV1dXgQOk+76/vr4OLhi0hhSYFtBHF/jkIAzDWq12cHAAnh1378DDEgiTQHx6egrBEsIqvFmieXBTYABlITiBXw7HW3oKhQJGJgwMmAtG4iDJgwcP8Hp+fh43NEO5UEcbGxswAwC/DErRZ9Qg6rNnz8CG6OWfPHmi1Q7GZtxu0FD5/vwAACAASURBVO124a0LjByDwYBOjLBGMFqECc+wc+m5lkR7d4vt2qmROjAoy3sMKLSSfCjCpI/pbyIriMRiXo2PuJQkUvJbjvJwbqJsJq21ojVhuOli7Wa5JRYhmkLjZmGrZUx0VhKu5NCnhenAzeWIbrfrMdBeFLKjYxQ7jEGN/ZS4N5RnhBTwTfh1Nngk6/s+LJ3RjLCXhnIeDAYQ/DCdfksDH+3Sp9x0QzAPDOF4xalUKsFWMTUODBibYUbCXQwIT3cE0LkUaAdhfjgcQguBeQOsLzWbTc2YV1dXuGsWmB8dHfFC8eEz4ObmBvSCSBwEwe3tLX3fLQzDt956C9+YwRmDckaiTic6AXvfjO3d6TD1GYMy9z0LvWMWfmEp1GQ+jdIeGEzC2OuDktFfexVqLUNUKhZiu7FbWMVVjaOyWhYTAS7oW7KoON0TWUasx9gsSHN+fo7xAPdrmnpRiipLx0e0mNZ0xYZHr4fDIW4ogpCDesGURSsUZlrFYvH999+nlEigPS8BBEEAlQ4nnSgWGChggojvwXmeFwTB5uYm3XOllHr27Bk6dAgkJycnGit81wGmR1Qe3At7enqKcyxQudFo4K4kkCR2uyqFpd85Jrr0WUspGuweXxvfWPTS1t+0dKelJK6G6ZaK66WiyUysTHntduSBITsi0iFpiXaxTaYTTeRiAcUMGEtpys6rwJSRl6jRiw+fHdXJBS4GcTTaVOEiJE/R2pu9shx50r/aipOGkLxihokQeLQs2vwGAZMhekyFGj8doct6t7e3dA9uu92mhziB2LAEBBnp2J/OtC4uLvCxM6WERAgPcJqTIyzeJjbRQuZeigZLYHCfJYwmP5TL8zrNGEwQKak5xLvcZCpJ3+a2oxlD6RlDFnVMAjhmScQ8Ra4UDF1qmd6NmCfSiLWHnLkjqcAWJrnKlQwmy4utmrdwfu1YlXa4nChnypiiiNTFAWB7tMYwJJ+mwV22AEzBuzS7Y4u1G9xSWSaydAUhLKthuBl3JEGjxKgAt54/f07JEiwl8Vui/vSWxXacv52hyEe0mvjwmXNLByq/vZp5RotqFtm0jFlUoPaPNabpLk+ZdmD4FUHqmnXpmFn4i8he3fbuY/EeU5XKJInYcUQJRWkdtXBhlQv4jEFNnoNgDAwRc2FcOHv7i9WfZxGZmypA5GwPDBmRosJ444glE2+5WNUFWhXn0uymGhjEBjCNgl4WxFogkZUcV6sB2vNJHIO7VL24XuEujEamwSKkdk3HyBoTmsiLoykWvyQSKOfAwLlpfy36cvtYShEDA+VQFo/E4LJaytBoqD4WSs2OIpmW7mLc2Q8M7p1Wy8gZumQUL9y14DQafTh+eokvXuFZN/TaY2e1avDH3yWH9Ws4qAcP0vAN3zQ3gfuORFDMaySorTwgtjQTxCycoXvpLvqiM7WbSKOxGzOjtbWKEwUQy0Jd1GQIsXtPsLNlZcxFU4S2z9iUUdxo69KANRW4TTQyp8AQC9FxiHzoLbFxc0rHpo/qaYEhhToiLEq5c0jEJLvkomEzstIQjr/FVp88tbvOUHND2Q30xD26O9MECx+8G0vMIarAdafwPG9nZ0fbLAubU+3AYImA17Mp7BE0HL9rhvtleRDNElntTciFxhFYIn/4bAkDSopnFv9oUQ29EA0M6XpZOmPS7LHMRX01rdVksCyT7SQ5BIZYT8TJxGvOWRkCA16j/qkfPtthiXPuHHjks5SVJRRlD2PpkFfPjy2F+gUtMRFMPtR3QKwrx5e/NOzs7GjRgqbwAAPxMl0ELZfLS0tLNJTSyKddm2KqKV7SD/XAb7Va1QYBGxsb9kiJFqAmarfbYrBEs1toAFiPNHzieScu01AMn7GtMVG6YgP/RLEBb4WGYMZnFZwtL0VLyScwuMMSGJTkyMT5BBcSH8eHn4jAQAlmPzBk3GqSI3IUg5+zht+MnB2YDoMbTX7DEsj4NpWQjCWfP38OF3BOH3dSNwSYODDgdhLX19f02oQrCfBWtu/7Z2dn3//+95+NAacivvfee++PcXp6ir8agBj//sVf/MXp6SkcXwg4ZtiTcHh4yCmBuNPpHI6xt7fXmMSBBIyIBwcHX/3qV3mw/OpXv7ozhsjh4OBgZ2eHFtGQYBEbjnHU9D0+Pi6VSticMm1X5V6b+0GNs6UsPgWJzQKAwFBnL/JMCfZRf6wFsvCPzWgvzl2YaY8VsBSxOLF0PmW0N6Q7GPGYShevORkf/Shny5tMhNcu8cxlaMwfz4pL3ncG00DbNBZWZGlFY6IMVjKZhbcreyMUOYuKKGkq4G4NkSf9JjaHacKErGICA/fUYoN2aeWxphSLi82izIFhSk4hRW/Pi7+dOEtgEF1zdgM6cuCl27mJ4jm2tERKJZ0uOCqi3dWajUkvrRTNCCmqzF076n1mZApF3Rx/iqulaDFDu1BSIOElRgaoJI2KhgEeEtRkJOZiaP5dk5Ze26uJhwrNIIkDA01X5k5o6h4urpOzstv93gODu8ONZWVKdOHAq9L+N5aVuxjp4NhIuAfkWWiKqU2acuUIbnDtlkkRy7VYiRrs/D8BEE3B3Rn/i4k8DJgITIFBGYxvsrOJjDMP2FvopsAQCzGjGAYUO3abwhYYaJuz3xLbLv2r/dJ0S7mKGFekRK3ucilJhMWA2q1YdWIJLFnEvNyYlspKLYNJMMtfl1xas7G3H6rdNPSKzSu2fC6eVgv2a5HYxGqquLOCxHJFTd29Z6LpkYWno/EtZOI8wCKDNjng/p2P+kO2d0vkH0pTFoAQGCI2AKE0vIGquBYT23Yjs/twafpTDQyOHU8zjimviykogUu5sRUhViWv2SwwcUjH2SWXydRJ9Uqtu5iRV7dIwGs5kroVZcIJOCtOmU41E7IwDA3fSnIs11Sn3EuaSneJH9T/OsqjHKbamuSmOY3pr+jBTfRaCKEE4lMWjQavhWO3LbBoawI1H7/mTMS/drJZmDHMDnJ3BzkWGklOM2O70nK55M0FYms0lS72L57dXopGb7FAKoXuGu5ympqKknZt8vDDX9W2hyiXp+uiqfnZRJASWy8mebT3M+jjBy0LnpWElLkFBheYbKQMTZ9nN/F0T+c0sYHBJLkIl5HFvcAyXpgRaFVM02PBs2cBFyyytihOHCtqZFXQXXHONju0GplNpJZN05HC0i/s7j5dh+IGt5MlVVns8mL3FzePqckAEBsYKFwDA9cQ0/lfkdLCxELD/9JEVLJQKNBz3rNAm4tRiPQzskkjEZI20HT8xVIslW4hcIFK0lGVubuaGqSJRpQ5oy4ZwUWNr7MZAzejeMsE07zBRG/v4xmBAmepCG1ipN1F7WhgsChl4oNIPGMwtTztrj27vSmLzMUiUMlcAsNoNKrX64lOR6Cgr33iK6xwwV8EFV+OdTlfiJ+RoEF7ldf+nqcY/5JCbIKxrcVU+3Ft0Aie3V0YuwC8qcSKkVGXjLDIEN8NZglceEdduDe83wFcdvu7BAbaB3MODJoapooRdTbVn5huyWthrqYZGJRS5fEngh1PSgBPne6MBNP5QhyW84VMJyVQslKpBAckUGgHHiQ9L0hEqVSqjb/8ZapTU8OgFSrSuMPerrQSXSSkssVK6Eh2x8jeNXJk5VKQVmhSvURveO/IYr2kgYFn5ymJZwzK0EuVQ5czkcVWsIlzxAKSRpBvYPClTxV+MqA1Hfc5gX3aAafQBEEAR65iYIBSErWBpFmSwsScWomTcUvGcpg15NmMpgwq8CdGr+wCxwYGZdh4iin2DawaEgQGZa4znpIUIgdMNBWNRskxMPR6vex8fjXh+36xWOTpWdqAS5akRSjWqhVrZrEcOJ+kwkwPXBixvkzp9wUUNXKrC4tqM4g7kNYSGJR0ypbTC26arS1VAjkd/7qD5+KsxLKmOmOI0talY0auXYqCeHae6FJE0vrS4Ps+nMPF7ybiPD2I9okcvI/GQfyblNVUYWkb1Aj29nCXsCjiqOyvDkxLQDww8EUCkU/WwKBl5jT0lgvUZOs0FScKEE0GhkTvMZgak2NgiG2LJu3cJVRxvVosLjZFFEyRqlTO3o2XgoEhVqP7hWbbyKyvZhwTweyoZoKpOqzN6q6BokaTTTSddp9U2J8NIA2/TnT6YZoZQzTZYUSyWA4amZ2PSI8XKQIDRzg+kZwGhqRtLpc2mqJQl2riJnVkIjLkPNVkYBC1cCzlbpCLSDOrnYhE7eruYRL4ZdcrX7gEBhHu32RVqQNDbJ25cIjiAoNiLkwrGi2V15vPpofPWJb4tVVOpqWPRiN6pK2W3T2Mi5TcXI41JTKJ5aAMtaAMgcFSv3cPNdkss4vkbsP7Aq+FmYVFeEc1fxVAA0PSzVd5BgagS1dnjgQojUvFR9kCg307V7lcbrfb/C6W1Wq1aOQIw3BnZ0ejUePHsEAZhuHV1VWZfB2JAnaswjV9+cD3fc/ztJcVa7Xa7e2tkirYbudIcmHu2TUFxURlWEqKFex+oSZDxScPYqtTMxkqTMJnUfOTAappunFkPruSIgdfEEndyZQu8tco7bmojbSL4XA4Pz9fr9cdJ1lA8zd/8zdPnjy5uroaDof4MbjYXUn//d///ejRI/gIBkzN/uiP/kiz9S9+8YtardZsNmu1WqPROD4+3tzcPDs7Ozg4ePTo0dnZ2eXlpVLq5uam1Wrt7Ow8fPhwe3t7Y2Pjgw8+6Pf7S0tL/X4/DMN+v48bCQaDQaVSWV5e7na7u7u7lUql1WopaQZjsSSvPlNeEx/N8soaGBK1hxyBpTsSR84Wy1LQfcHSmO8Mjt/7iybb1cuoqQhwFKZP77nApCP9Kp9i3gD3tuIFVkRsddjefFZJnv+kq0VenJ1eSYEhDMP5+flarWb6Wrpp932pVJqbm5ufny+VSp7nDYdD9/cYMBhsbGxoVQiDfXy/rN1uHxwcgNMslUo0ikBiEATlcjkIgqOjI3idDaYRSByGIUgYhuFgMIBX8OD1AlpuCpunBq8OJQUGJM6l0GlAZQhds6wXQmu3PMURkaHSHeEyUI2yBYbUqk0P9OWDLHy4dhpb7fM+eMuUQnOJSBAYlLm2LLcs9eeSqN3lIqlxYJifny8UCvPz86+99lrBCqB87bXX5ufn58Z45ZVXHj58WCqV+FISLejm5sb3/TAM8fyJarUKkaZer0NeOLWiWCzCd8x934e3owuFAkadMAwvLy/b7Ta8LQxvOC8vL+NJFeBk4eFEqVSC/bie562vr9PIgZt0eU2Jf9NVomJenhtHKQXqiLdim0SsDFOC2LYdxUiq3f1CSf7F1NTFW7HZ3eEiSVLt7PLfPcStQanBVaMenz5YNqWIQcJUnPw9Bq0lpYPGLfauZgIXzmggnDHgKRR4ZIV4QEW73W61WjBjwEnD+fm5ZcYQhiH65SAIkFulUsFDLyDvaDSCwIAHH7VaLc/zCoUCjvHDMHz//feRAALDyspKEAQQJ8DJDodDOFgJ3igOw3B/fx9PQOJhjFaclsLJUlcrryyAuJRkbwOmmk0hVeqMoiRJy81o1TsDbypiwxC7gOVWUsSyEsV21CsXCTPiLo9mMs1LtEhAj80IyencIk/jF9x4ZagkPdxOb2FCBbA3gogEhhQvuIEXK5fL4NDBWOKMgeL09BQLAps2Gg1KAIkwP8ADkbTAAGU9ffoUAgnEAN/3Hz9+DMtK9Xrd9/1yuQw1B6IC5ydPnmDV4vNtzWhaCtdCrCPlVr9qVgNDilwRUYcySWGKdKXfPWLbhgVJ6TOCF5dCx/tC9imCiIh1PTEkqMnNqVkDA7dvxiaYV167jWDGkHS76sXFRUA+tQqGAwdtyXV6eoqRA+y7ublJmcCFtpQEcxcIDNG4Ok9OTvBpBMwb9vf3YR4AsQqWkjRu29vbcKGtTaFNIslhcdNlrBpeC1EU0TefabmJmKcTL0vGKHNTz4XDVKFV1ksHF9Xo33uH5oXzihOROTDwIkIrVIrAoJhniayRg9/iCsRWrchNtIiWkm7GwAG7kuyB4fvf/z745VarBbFkc3NToxmNRjc3N8fHx41GY2lp6fLy8tvf/vbS0tLx8fFwOLy9vR0MBkqpp0+f9vv9i4sLoNzb2/uTP/mTIAgWFxdhU+zS0hLsZPB9f3FxcTgchmH485//fDAYDAaD29vbk5OT4XD4v//7vyajKYMvMPUfU5czMdfAnzGYWhEvKx0U6yruubg8Fhta8kYGC88OLFV2l4CvjKXIqOkSSY2KpiiyXQfStZ2a4ttImMg/jpZUYNjiSHcB5QJTbWrKYiLGAO3Tb0j//PlzvKWJmv4FN3tD5Dq4NFzTLU6pVP6BQVlfcIPi3n//fTxcGmqCB4ZerwcPD2Abkud5jUYDHjngOdthGJ6engbkkwnFYrHb7bbb7WKxiDTAEJaVtFLw7tXVFRUyMnQek825mibjW/JCounhM28bFsESgZaSjqeaDAy8xlNIm5d22WGqqZmCSaRosv2Y0rnKJoYh25aj3cLrKS0EZYFYrZZJCT+Im/613AK4BgYlVY9jo8xCSdO5pVCrvD7UY5kxQHGnp6flcpkalAcGAHhJeKhwe3vL3/zqdrvAAShhEypsbw3DEHa74lISLRQBdXl8fEyFNBnKZHON0mR8UxZahMuMARNjW4UL1KQXcMyiWMNWzJvwu2J2kc9MQVQqLyTlJtKbmLiku2iNsAQGjYwSpBjy2wNPFkSTbVVz9JTS9OkemtEUJ1SWQ/RcMprITPWn8Ykm+6FoI3VXgQHw8ccf07cHwjDUHj6r8f4l2CUFKbe3t3zID7taYQ4BTzvoa9XwsAEWnWA+Qb/7hnuiYC+T1lXSqc/rMZI8pqUILTAoqRLtDSwp1GRXcaHnsok02rVFFxPnWYBYxZYGYLp1v4hVitNExDlQ96flFZ1+lsDAPSymZFlGo38pZ2WOdprHD8cPnzWptBTMnnNgoGRxjXaiLHvtitcRqXseGKLkrTw2MESTngJL18jwXQdKw9mGYUiffgdBcHNzQwl83x+NRlAWhBAR/X7fJFs6mCqdW16DKTCY6lqkSQRFGqqdm0nsWOY80ZLuwvYOkKiu3YnvC5HkB2iK3QiWwGAayGuBIdF4P6/AgFpEk10bfnkYiA0MPAyY7qpZDgyijbREVPLOZgxa0ZZbohYasaXB4S1LWUlli80oGl8kE2/FBgat0u007o0ntjiTwPSWibnIJ5Z/GmXyA8rApbLU7EuByOCXRAtoiB0vi+77XmYMmmqYiCKJpdhF4ttVkwUGk3wm0S3t0sJT5G9nyAVAzfMKDEtLS3BWkvuZS/eIfAWwVJy9IhCtVktbMdPat72NuTQDMUWx8GDiLPK3pIsyOFJGBr9s0i5HUCEt9RUx080aorgm4WKHu0fGzUgW+enJSAgxJMBmKr5rlgJ3JXGZ9cDgLmLqWuFtNxErnp5jYMAX3CxjeYQLDYdLe73LNp1OCxGe55kCQ6IKdWwVkWFqywWL5c/JYkukWSw8NTESaZcammwvL3Kxw8sFuxY49o9IWxK7sOmJAkWCs5JMUroooBHjdSyNnVV0h4HBdOy2CItLFS32CQNXf9qBgWdRcWueYrojsUUGnmjiqWnqWEpGUCGd6vL+cDemuHtkfGNDGaoPF3yojrGBgaakDAzcrLH2jRJ2LcpQY+4ogMYk38AA7yHTnT/08CUL6NcUEJZ5nAV2IWNp7gumwED/Kmsjobnc72rpXAB+y55dzMLlFxWcBYjGn01E1kq33EpkipcCieSnNKI34F5iWoHBUcopQSuOypNjYKDHZUOQKE+iWq1SAjvgVTi4AIg0HHhraWlJzKWBCoyAE7wBGxsbdTNM+520rbEiaGgEMextQ0nhIWNzEksxMeTptFHZ6S3iabdMusdqJ9onBdRLEhgoTNJmN8XsI6nk01bNeIieoxxautg6TblE4tja5ZzzCgzIDX8tD3lo1E03LUC4fD0C5iIWiC4bT5M1wRQqag7AOERDFD2xytI2xLq2N4/I7Fi1dF6nYhFqsi3xjCaGdi0silhUS0TjApNSswyTtNlNMeO4G7ET8YwJDI68OJMcdeOctYvhcJhjYJh9ZN+MFJq/J+XOHClx/0Oi7NyLcQKN2J7d7hq0JioWauoLiborL8hdTouO7hANOPuwWDidHSwMZw3pBI6iCLpboiyOlPoheilYKDYlFzVMV08iHy09CIL5+flfncCQHfk+ojBxM3VyvLB35sgcGFxdgpRLZGiX2RGmcu0ya3dTaGcqNIsu9wJLpWTE3eviDlFU+tflDTux9rOYwhYY0pk1Yo7bIr2Y3a4MT3+5AkMis7wULTvpmzumdN43tLsmesfWb2KeFxxFikhfMzUGd4jaTVXH3Hm6FJoddy+2I7icjpJr0SJfO8iBgbJIatMoLjCIDLWiRak4K7ie8cAQWburvcJmv1knhUkjrVcoZ7tpDO1tLHWrdoRJElFfJXUTUUKuLLeVqYiM0KL+HTdFql1G3KXY7rBUa6zkNDBoxNFkq0thhPjAICojqqfJZCITOWepPC0w3PsLyXbMbBtNAdOYJQUrnlFLEZuTYn3Akf+0a4F3dQuBqUdwPsrsAj5J7QohqslhueVomdwXVx29UCJdLGu2luxqsvk5bnY3LiXZNVHmnhYZWjDPwhWLLV3EvcwYUr9M4Kgmt+cMIpfupNW+SV97y0ndhLI0PDtbNdlZxHItYvN+lFHTWYN746E2NJlCTFGsfsVXhabxYpB7YKDXXJcURYuKI6gF+NHciMSBgeuDKVwxd55Z2r0WGFJ8cekukUi1T4YLAGScyZm8p8kvzA5M8tg7CFckmgwVScWYtX5h2RqHsPgZXt2iQ9T+mj52lu8ygztDe5261zK1JJYuyqC9IWsS1XYkhmhfS9/TKsneUXlZpvqORS4zhoxvJCj2lkMWYXIHSjhVwUytCFLC8av8qZmbiuMNNXUpsYUmyhvbmDmByYBZOgjgfpdYsQ0kaoqmyuV24DbMtyUkQqKlJLyAa1NGVJPSU6uKvihki72Ybrd/zFlJXIhYPaPJ+GHKaEpMUZF5BQbu3+ldxaxpihAZxUgksKkJig0labe0ixSSQUcWPo7gDUPzCyLNvUMUTOsXdrF5XtP1fflBR8DAi36DBJCoNcYGBh4haF6RZ479Fxmm/vqC6aVaU/unZBZFeNvIFBjEOhDv0kSeUTSERaxEyB4YQrbi5gjKIXXD4hlF/mIuSxPk2e2BwfKRWFEvCzdx53XGXmdpnOLdvOBSrbwlTEmYLLj3TRn43fkUecUQKAYGS0YLsvRfkZuLtWlxJvmRFb0bknP0IAWLwy5JmYjM7T00QWBwvxUrk8qvJ49Go7wePo9GI+00iI2NDe0cCDh0CE4iAuzs7NgPGjKdOASf9rSf00fPwzAdlTEcDsWglfQUP/4dD8WCpZKcvvhtE1Mfi20w6XA3gUHsdWoygpr8yzT8ssWRoReOFUxjaALl7MjNXdpYRJOTAD4mMIUKMYpQXWIlTDchtpiddi6qlChA6BYYaBMVtdAUj63B9DOGLD3cPaNJJPybb2AoFotw8p14NBAeomc/Cw9OvjOdjqelFK0oEGh/MXFhYQEuUgBlALGpOnAUEj80kFsGgyWNl9rxfPV6HT6NNz0PrlWlxcfZfZ94EZpjA82O1xgas3jDHJHOlacoJfVddzgGBo1YSb7V5aVix2+6xQYGOqjXUkBCsRGKitDAgHm1QrW8lImFEjERGLgElsCgEbvECRdKLgy/S1MwMLh/R8EECAye54kj99gzty3p2l37Xw6cTIjnm/Z6PfsBqBSmCY3neTs7O+jK0a1DIj1Zr1qt0iNda+aTaGmYef3117Xz9TJWlh1vvvlmitC4uLiI13BBg6XpXFsR/FxC08zSMl/EkxCxnQRB0O/37YcthmGozSMx0TlECqDm1RId14hyCQyiv1Lm+YHmzWgW5TYbSPSxT80mYi6T07cHBiq2FhjU5AQxViNTzdJr4RA9u3EVqQlOLCrDmSvJNZiKszNU42cMGQMDbNuigQE7YX8M3/d//OMfYw+Eu5eXl9TFQ7rv+/ALf3/84x/3CYDsxz/+MZAhvUZAvQCyury8pPyBOaXH4kAkfuH7Pqxi0dIRVFkxYl1eXlIdKT1VTbv19ttv12o1NW7BpsrNC5VKpdfrXVxc9MY4Pz+HFJoI6RydTgcuvve9752fn3e73fPz81ar1e122+12t9vtdruHBJ1Op9PpdLtderG3t9chOD4+3pvE4eEhXDSbzWazeTQJSPna1752JAGzbG9vb29vw0Wz2dwe4+23396exPr6+vr6erPZ3NraguuvfOUr6+vrW1tbawRbk/jyl7+8tra2ubkJd2EGubm5ubm5uTpGpVLp9/t846P2l35IMgss7t7iyjQm7mc+chpxl622EdbioMEdU7aOgYFOQ2lsUJMHWcYCQwIVWJs8yTMGTeLs0Bgqc2DgKXY+KqfAoCZnDNQda35fA3hD8a5PZgxiRo0/plhYcYi5qMz0Av9q8YC6dS0U8aIpgck+GvNms1kul5Esti5ojYtNRWwwiGq1SuUx6aupoOkuVoGmoEgQy8qUHjsbAISTR7Vz4cWq4RYIzO1Ky07pOdbX133ft8ww8oVW+xEboSKZlsjdSLrAYIJp9C1SomdXrCVrd3k6DwxJIdZRzIxB5RoPNOZadaYrVGUODKG0bUCcMfD+H0y6Wh4YMEV0HDyjyVWZPAXtoiYheWfmYou+wFQKJmqTGK0sagGaq9lszs3NwXORcrns4ji0dmJqCSIePXqkieeoLwX3v7wuRIJYyozQBOPWFgW4ubnhNH5cYKB2C1hbAvDAkOOTds17aI1BzVJgSAEuNo7cNVFpxHUPDGJHMwVv44zBbu4UUKwyNP4mG0VSa+DEcB2MHz67D1XCMBwOh9QWkLdYLNLVXpdeqgUG3se0TqiRaVloXw0mxfdvXgAAIABJREFUl5LQwYliaAJrKmizCq6gHzfz4EJqwgcGhwh3t7e3X3nllbm5ufn5+WKxyBdJI7ehiUvlKqUqlYovBQYthQopWjV3JA026SBWh6n6AtYyaYppZklT1tfX6cOSHANDxMaUoofhdy1NKGlbmjZEjyfKGRsYIuJmlfWRQ6yrvJ/AIFaMmJ0rz+H7/tzcHLRIbeHMglar5bNhjhYYxLE/7yea09Q6GO5MpY4pCAJ4aCz4XUZJE7X5ARfSl4IHz6W5CV6cVq5JHp8NKkVnBDMGDAyBw2qS2DZ4ixJRrVZN/hFTeGCwrORwI4gIrd/js2ScBkSZTVXMWxdvjRpzJHvrrbdwj1ypVMp3HUl0HZqPslPaHdS9gwvjIqTJr6rJqJC6LhIEBi6xi93tCsRmV26BAZeSTFMn7W8Yhp1OB5wU7KQMgmA4HJZKJXDWvGtpXQXBh1TUH3meVyqVYK6t8SmXy8VikRJrnTYwjNdEMcT+7HIXE3mEE4kPDg7sIonuA2cMr7zySqFQCIIgl0FlKG22UZPPGHzi9H1m7ezgfNw5p5DB8TmEVoqpXnzWLE0tR2QLvysrK/Nj4HQwOzRfpCR3pNFzMhcPM1NwEdLkJC1ZklaKfoiepTJEoUU5TDy5Spa/kVtgePHihe/7r7766uLiYqVS+dKXvlSRsLy8vLy8/OjRo+Xl5YcPHz58+PAP/uAPCoXCZz7zmbm5uVdfffWzn/3sO++8gzMG3HEEXq/T6RweHm5vb3ueB7tZYM9Jq9WCC+xCmNLr9SBvr9f78pe/vLu7u7e312q10I32ej0oLhjvJvrwww8vLi4ODw+73e7FxQXuOKI+zh/vBYLSO50OzEhgUtLv9y8uLr73ve9Bdvjr+/6HH36I8kD6P/zDP+A8BhIvLy9BbFoKqoC/6+vrEEqR8sMPP6QRAsWmW57efvttMPVnPvOZYrF4cXHx/PlznKglgtbcu93uF7/4xa985SsnJye3t7c0MPTZpjKA53kbGxtvv/02pDv6XKhcaBLD4dDkc4fDId2RRW/xCShKyJ0vtkB/ch0Mdnxx8bRE2PNGi6AZfTLRpLX8jW98A8SDZuP7PuiLZgSRsETAW2+9RQPDcDjM98A+k3OgbsHiJS3IUchc4CKhxa/mKIkcGFJA1NCkqjvDyBqf4FYw+YxBBPZknOxfXFwUCgVY3CiVSp7nBUGAMwY6noJRP6yirq2t1ev1drtdq9XgOerGxgZ8cdr3fUjf2dmBHe7oBRYWFmBvO2x+Rw9FV66CIDg8PMSN8KVSqV6vi/3f930gKJfL9XodHpjjBnx4bwCFLJVKvu8fHh7C3AiY1Ot1+pIdCFCtVovj9/tQ94ODA3zfDSRvNBr4ygKVHxKBEt0KuiGYMSDm5+dfe+01/rKeC+BtA3xhsFwu/7//9//oAwzQzp8cC2NggHr0ff/x48dYEfRNAm5zZFIoFGjbwGvLNC6YnLIgK39ywO5Pxn4tcnDBeBGawXlBfMUPQjvNjs9maC6RD02EwIBdKd+lJGUIDNwzpEO+omaBRTaT5Pg7Go2iSZ+JZFgd/EUKy6xdfvNZtDuXT7EAoGli0taip0kYzjwigaFQKCTdrgobKGHAjsEDh/C0e4D3wbfAwOl4ngfZe70eOmJ4XwzeBYNlIsDy8rI/flOJOlMtMGxubiIZeDdtCxBQtttt0Bf+rq2tgTyFQgHG8q1WCyIcBAwQEmIVZC+XyzDVQC0gF+iIW7Pa7XalUkF54NlAs9kE5wt8yuUyMAc+EI2azaY/6ZcxMID7EF8B47C8gk5fqfvsZz+LnKEuxIfPECYxdr711ltgNwwzm5ubVGbNEddqNeCPzcbzvFqt5nkeMIe4C2JvbGxAKUAZBMH5+TnKj1uiNQ8LaLfbMIao1+sHBwdQTdi0Op0O0GCE00Jam5zCgvwpPSaen59TJlC5PgmTEDyQA3YNS2CARpLjw2fuB0z+ITVyETU7TNqJtzTJtbciKENOkyww8OIz2jo7T81e3ILw1x8/Y4jc6hjs0u/3FXsJkDpcHAnSwSlcQD/BsTY4I/AdhUIBnAKOLtvt9vr6OrLF2QkEBtql33jjDXpORqFQ4DtALi4u0Atj10UHB8TgqaHPQ+zp9/vgaPzxbANUQxcAMQCKxgmQ53ngKaAgyL61tQUX4L+KxWKr1YKYhC4JIhzF9vb23BgZl6G11gx2w2dFwLlSqWjR/eLiAgIeenlYbsKg7o/Hy7RGqP0h9FKHC20AeIJVMfHBgwdgH5y7VKtVnMZhaOFxCKoMA+fy8jIYeX5+HmrwS1/6EkZ0iPS7u7t0FAKS0EkntA2cSkIpICfO/MrlchAEKysr5fGpLcgTtMD2709OMjAw5P6MQTksEJnS07ma+4XJ0Smz7gj68rmWBa8zzRhcRLEQOMLCh6ab7EWzq8mHz7GmF9O1GQP1aDgGhL+4sA49k/p66NKe511cXEBnRs+LHgd6I50xYCnomNoEPkO/34fhJE0ET4HcYBKDnR/4oB+Bca6mo+d5a2tr4NZpYDg6OqKOMgiCRqMBLtgfz106nQ6sqoH7KBaLa2tr2qAbHz5nDwxaxdXr9W63qyYfr9ElEUC326VGa7fbKysrWnU0m03NX2vrP3yzAATgfr8P7QESS6VSt9sFGhxqVKtVrFawFV+TCYIAAxX83dnZAYa4vgeKQCjCekTBIBGGAhBa6HgfmiXIU6vVtra2IDuuE66srGDUB0larRZkweng8fExrVzf9998802cMRQKhTDX7ap3hlwEzojIMPzVXKIJtAto2ZMqKLz5rDLXh4lJ7vzhIgiC+fl53/cTaU6BMwZtbQcHjHgqTqVSgdWDUqkEw+SDgwNYmgeHi08I4C701cXFRXzGgD28Xq8XCgXsyeBzcUEGiC8uLrROiI4Ax7kbGxvADZZofN/f3d2lQQvWH8B3Y59vtVrBeNUCssMjdOCDDgV8B1IGQXB4eIjvAIId4Ck6bu6CyBRMAmYM4D7yHVSKgNkAtVur1ULHDYDAgPEbAgNOKWgDwBSYBdIagcAAkRXMC4nn5+fUZfu+j49GIHbWajW+Uarf79PHGJgOgQHSwdrg2aEtYUoQBHxkA9UEz2ZgOogjBqhxEB7qFEMFtpy9vT24gAZcq9XW19epGbXAAJWb78akpJ4hRUYt+ywgu5BZ9DKerholeUpsL96klWNt8bKohEqpfr+fMTCo8bvQ2q4kPIao3+/DCTkwFuv1eq1WCw7Vubi4gAvoJK1W61vf+la/32+1Wq1W6+LiAo/WgV1JwXiFih62A570ww8/PDw8hBNvYGvTN77xjWazicfp7O3twfgUjuJpNpuNRgOKazQapVJpZ2en0Wj8+Z//OexBAsqtra133nkHOHQ6HZD/nXfe2dragnN+wN1sbm42Go29vb3t7e2trS3g8K1vfQvSm80mvPnRaDQqlQpsiFpbW1teXn769Gmn01lZWWk0GhsbG6urq8fHx7hDCcyysbFhmTFY2o+9MZigbVcFU8DxPltbWyDnF7/4Rd/3IRFOEIIVsIDswMHtVcDnwYMHUI+NRgMo19bWKpXK4eHh4uLi4uIinKe0uLi4u7sLVbywsHBwcBAEwebmJmwkOz4+bjQa3W4XdxyhrS4vLx89erS2tgaU0GwgMEAsPz8/f+eddxqNBtR4pVI5Pz/f29uDeZvv+3CcUbfbffr0KRzxBDGpXq8/efLkwYMHCwsLsPdsbW1td3cXDo/CZvCHf/iHUMsw6dzY2IB1qkajsbu722q1dnd3v/3tb9Og5ft+pVKBqDA/P7+wsJDjjMGxJfAmYXcgKVpUUmTflyUq5ZIxF+Mne8GNymchoIpxGs7HVDTlo3GjBL7vZw8MSin6jCEwgG/S4Bd896G2aEChJWp/O52OdhgnhBaNGAaAMHGp1+t8kwxftTDRUM6iBShNrAUwEV5wc58x8NoX75rAHz6jRuICHQyiYZ1QPBIVObRaLfpQFxhCIj6taZOPbeAziV6vh0/UgaHpDcc2efgM/hqqFRIbjQYWDdMU+GoIztigMSwtLeGKH0zslpaW8MEDrm7hJAbEhocNMPeFfWKdTgcXCYEYYhW1qraUFJgfPmv17vguqtYSTP5Eax4WendW6aC9XGbScUQ+vyzSpBMpJCeK8xGYI5P833ymKmWhsQgWTQaGIPNSEhoUdyXZAwMdLmkXplx+XGAI2MIFd9aiQzdxpukWAcSyTOpQMk1UmsJp6FKSy45G3kgSVaU2Y+C6B9L+UYC4G8o317If1xJoobBbGv5WKhVwxPZtUeCvqUMPw5DXlKgmBX1tBaE9yqKxSruFEU57YcL3/TfffBNeXYx9xpBuiSmK80Vq0uWZPIyYKNJkFNgdWgjRgCJpBPZcAPF7SvZ+RCmneySG3foZOUR5zxhwKcnk3wMyYxCdjugWg8k3mLCnUWcNv7D9n6ZwN2EpTkzhZdndh+bIeOkWC+CvNmfyya4kx63u0WQ/jxIGBnHGwO2vJYpW0mh4IqwucjIOLSNWE/W/XCT67ArL4kVo+vJBBm48RYjzFUwPxo+LtOahPRrxx4GBPmNIGhhcqjjWn1BKMUsiVjk+KckIPq+iHp/e0q4pINFkZ65smqUkWoYjLKzcOZiY+PktJYlnJVFwt2jyGlpfEnugLzlrU3fVRMKC+KyCuwytCJMMPnPxXDuupvjirkbWbDYT7UriNS7SiOlqfFaSJjyvFE1O/jYZV1azjFgKbxtivXAaeA1TE9KxAVgkx4yUj72ZicDiNMm/8IUvOAaGFLD4itgsFtdh9zNJIbZn93UzexDiGcVlIi0G0E/3WAIDDx6AlywwaPSQ4k8zMCTtPLwv0Qva7RGmnanuzLUU03ITpY9dpNI8lJZdFMBCkHS7aiT1Z60NKHPYMAUGCm0ax2tKVIfP83xpjmgHskqUwqtJSxEF1vTi4JraKXnrwsCAlZv7w2feHtyJxQZDmWgpKSYKjsd3mwKAPTDwsb9IryVSSh4YIHE0+QHaBEtJytAzebrIx3JX08qRTJTHzykwPH/+fHFxsdFo4Ke1vvGNb3S73VarBecXtQw4PDykf/EUI7jAaw3f/va3eUqv14NNI/BIs8fw9OlTngjAHks/Kuf7fq/X++CDD8QlZo2M//3ggw/EFCTGY5p8axz94z/+40QvuMU2PzvwrCTYgoV7tKhIcMQT0mA6Jfvggw/wL+eAQIPT/UV0aI8p2h4kjSf/PB8FlQETeWCgAtMsl5eXWhXTc5A0jZBSa0siIDC8+uqr05gx0PYQ60DU5KCYezORiZaSQniXdSf0wqalIZ6CvlsLDHDOGJeBSo5flKMBANWk6SPp++SZAoMyh2ItnRNoWpmYUAJOA7f8/J4x0JMYisXiXCq8+uqruHuPpohAmvn5eehamBdTEIVC4bXXXqN/MYUfOuRyEhE5MKlEv29Md6GUGWqT33nGFXD+2Bb3vz98+DBLYEhalaurq+i2tAkZvqvFIyVPSTqTCwzzQtMYPBHnwDAdjA35Irhq2muVGoHFFF/4whfodDAIAsdBt/vYnLsCu3+gZBofRzgKhorYh/wqLt5YOGixQbk9Y+DM4TwlAGeoEgUGzUzuZhWtrPHn1k/EJMo7MFDThGEIL6Bp4Ee/oY+2+24k0IjnJ6FFCzHGaJQYTmhEobLNzc3ByaY8GvF4pt3VirMAXUMsYgODqc24480336Qni4jBcmFhAdLpXRoyC4UCvJWGwZKGSTFq2gNkbfKEqI2NDbyGc5B2dnZoCkV7fNwI3xqrwWcvz4txEUKjmJ1T0ls0DkEiBAZseO6BwX1sztsAdwsapanlmJyJyeE4KiIO4bULC7Q1H86c3uXTCPpEwcSc6stnISpdYODmzgg1OQoAWChNt1SugYGiXq/zwbgdfOQeS6ORiZGD3jJFHaScJweXakzs8wwu5/zkGaiYAgKbYpsGFAlTYncl0crV6toFYRgOBgMYYrfbbRCAT9ogWNrjmRZQHaHxxA9RWJjDCYOOxfGRhJYYWyOx0MIknV/S020hkZ5uW0gSGNxh8gaay+MXJiejsbV7GDv4cFtNHl7kwsExMGAYiA0M2oRADAxUfpUxMChpzB5rX0sRikV7E3NT6dMIDGEYep63uLjIuwdPsY9MXUC9P03X/HJhMgxoxNjzTTT0L/cU4mSIC4A6cpnnJyMZvaZzpnSBIUoSGxBBEEB1LCwsaAFYNIJYF/SuaBCaaGoAYkZeHdpfGr81mUX5TcFgzjBNtNwyEZsmkZCYaCnJHWID0BqJdm1qNkkdl6OE2QOD6S4PAxw8MFABeGBQ0npU1sCgDEZ3tLLF3LwIO2e4O6UZA1jNtKWE7+XQ5td8Ju45QFtGqDPAa650daJarcIFfxigQTsmVvsLzxhwJOgOdIgFwySpWCzSWFUsFsMwtHQ5SyNMWokQGLRgaXKgsWEYXTCGRh5UTIFhXhqqi7EnETTbYjqdomm6UBpNGJNNuHimyARRf6q7kmiivUmId13cVIomJwYG97yxIUQMA3iLnpyqzQBoAKAaaaFFKy7mC252G4kpFuMmYuXCHxKnFBhEvHjxIvazYiIsIwhk8vz581hWJgE0iGMKCigrDMPhcIgpSEmzDIdDyufnP//5YDCA6+FwOBgM/v3f//3m5mYwGNyMMSC4vb29vb396U9/CheQCLqYeh1vh4oNFGINjrY9Ozt79uzZd7/73bOzs7Ozs9PT0/fff//09PQv//IvT8c4mcTR0dHR0dGJhCdPnuzv7x8dHe3v77/77rv4C4mPHz/eJ9je3oaUd999d3V1dWVlZWVlZXt7G9JXV1fX19dXVlbgl+Lx48crKytvvfVWtVpdJlhZWfn93/99/Pv5z38erx8+fIi/nyd4+PDhgwcPPv/5z3/uc5978ODBgwcPPjfGG5N4/fXX8YIDAh5cLyws4BOahYUFvFssFpeWlnKPCohEzsTk1k0+yu67YqF1bTgrydEULoGB9krsqrxo3oWpB6AauQYGzRaRFBhEk7nbN9bcjnWjpd9lYHi5ENva7qA4kwymNqDMK4qcwC6PSMCHUZie1FycPpycyFOIzyctrPgtu3jh5JoA7/Y8MTVguhxK8+mkNuRVyd2FSH9nSKQOr5G8INYmL4jXOyWgGomUiASBgbLWKNMZOpoM7O7VoyV+GhheLkTM1/Mqtt+lTdSlIBFazxG7x68UZkR97nDUfcQDinu1RzLYK9FdFzkwWKzDE7PY2p2Vph5N9McH5Scx4Ke4HzhWsbJ6fzExNdkdYHYkmX24dPy7x31ZI1+4a5Tg056xBC7G1cRy5y+qB38/wTOGKG2LTJ1x2nCsYkpvYZKo0PRCZ0A0Gd5cu0o23IumOcKkS0ab/CqY1D7xdVcnwZvP2t9crMwLjc3CReKBgWeZEcymVHcGU4XiXZGM5zK1EJFM3XdgcEG6XI7cXjqIdXq/uG+T5AN3RRIHBkUGQdqtpFaO5SAqwwmmMWOY3s4KWsQdlKIVl71E4JBiX9avJmLdirvfSdG/clDgruDoKO4R92sfDen6HWoR+zwp5a4kfstCbDKxPYUnmnKJgSFKXpGj0QjOvscTfkzgLxxopxdYYDpwBsF3epiQw/4S9tBVfAyby7NZrdZEAkqpDGMCl4IcE5MiBROxSZvuRlaf7ti57ExmFhZd3BWfNu7bSP8/0nVG1CLnwIDcFXPQKezLbW0hs/DJa8YwGo2KxSI9l0Z8AU189Uw8GEcDPU4n9jU0EfzlMp6IBxUkQrlcpofoiQfnibCETxo44YQfGjUtR78F0onfCPpeRbro6NIYUnc8e0qibpIaJmFmHFwFnn6/uC/LZEdSRRLPGCy3kpqYS2knE++q8a6kIAgy2i4MQ3ihH4XJyDCLJGJiFohzDuqOTWdK8/e3xcBpjxCmMCnGRXt0tEdKLUbGhknTm+E8LrqECrF90rtKcn+pO5GpU2gX99iSE8FkunztkxH3ZZyMiBI+bMsnMIiUscblUlrILHzyCgyj0ajk8NVJNc2YMT3OdwBH4Xm9JyKmb4q5x0WcZ9hX58TQ6HleoVAIyVtCdmlNCoodh6eIjZxTJoKjte8XuWs9JdyXfdLNYlXy6YK6xxkD5eZIZtIwx8BQdPhUwKfIjsjaOu13XSjdObggCAJsGFrb4+Vqd3lznVIfcSl6xpHUMveF+7ZTYqQQPuWx2/xWahO7cBPJUAff91977bVclpLEGQPuw9FSMgJOU8kFL9G+IF6nmG66ptUdJYkZ7sR2BEGwsLBgGTFEzOlrf00qJOstzuDMc7HDVMFFnZJxsuMerZQC6YRPM2MQ01Ob2FSQCxkIk+MzBtNSUhiGsMKulAqCoFaracVFUQTLFO12ezR54G0QBAcHB6J4nudZHmmIJ8/Yj9xJClhdoVpotk0HsQbFWzRRzKjd0phwthYZ7HpZCKCBWZaS7DKblLUImRGxtTCDsJtu1nDf1nJFarFjjsRQhgrjRU4VyjwoU0q12+35+fnpPWOAFHiCOhqN6vU6fUZN6T3PKxaL/X4fHsbiI9ZKpQJBRZFl8cFgUCgU2u02emc4tRR51mq1k5MTXBmH58CVSqVer3Oxy+WyKWBoC+u+78OjVEgvl8v83UBu5FhEVjdt4i/mEvPSRJFGTLELo5QKw9C+ny2KIrqUZKLhWojK3g1Mpo5m2KOheLEqzA7u1WDxyCJw4sCgJB+dC2IZ8kIhBQODSTA12XXV2PPyRB4Y0I/D7pp+v49bWsHDPn78GMlKpVK73b65ufE8Dx5aep4XhmGz2YRAEgQBvuuwtbUFrBCNRgPjh1KqVqtdXV1hllqtViqVer0eD4FBENTrdVNsgHlMvV6fn5/HDaO40bNcLvPZDzcyvcWLoASOdzl/XtH0QmwDLiWa2ALa7TYN8yIHMTDYGxinuUuYBKCJFqPFImN2C1sXLWYK07BDXsgiZ8rAIFonu4nt6SZtPc9L8R4DHZvjLw8MsHDk+z7MAI6OjmCIDSPNYrEI5cJaU61WU0rhjswgCEqlku/71WqV7pABzvv7+7hYFE5+LhzG9eVyuVqtogdvt9sgHoz0uUblctnzPJOyMKuANwPCMDw9PYWgxQPD9CDWI71rukUJIhYwlOTsRCacJ1jVLnNsYOBsRZq7hGYZkSA1Mma3sBWFnJ6VcsE0TJELsgiZ24xBTS0w8NLpXzWeMSQNDI1Go16va29IiTMGWA6CwNBqtajTh8Ul8NS1Wg0G4+vr6+DWYSDfbrc3NzdpAICLWq2mvSa9ubkJd2HVqFwub25u4mtitVoNZhgwd0FW+EgDNuyLkwYIbDB1AOFPTk5gFatUKmUPDJ7nlctlOt0xwVLXGplSqtPp8NmMyA0QhiFEO3vpMAmDGAmrfxDpYQ2QZ3npAoOLACYTuSBjdke2KOcdWCwjpmGNXEAl1AamdjgFBl6YmJLdoOms3263X3vtte3tbfjG1lOCk5MT+ETXe++9BxeYeHh4CJ8//I3f+I3f/d3ffffdd33fX1xc5IYbDAbgWDc2Nv7zP/+z2+1Wq9Xj4+NWq7W+vg6fQru8vHzy5MnBwcGXvvSlf/qnf+r1ep7nvf76651Op9PpPHnypNPp4O6m4XD44MGDv/3bvw3DcDgcDofDvb291dXVH/7wh+H4o0tKqY2NjXfeeafb7fq+v7W1tbm5WSqVfvjDHx4fH/f7fU3IRqNRqVQqlUqr1dJuhWFYrVYbjcby8rLnec1ms1gsfu1rX2u1Wv1+v1Qq9fv9MAxfvHgRhiF8ZA1lgER8+KHIZqqQfBVuMBhUq9WNjQ1QkG+4whSX5oT45je/aZoDaQDbDofD7e3tm5sbO3Gr1SoWi/Atud3dXbz+0Y9+hLuPqFRaYNBaO1VES0zRI6YBURIXq94xTFLducES444NlQ702478lpboGhjo30gK7LnY1EUMrjAMzPF92mq16nLOxOLi4vz8/CuvvPLKK6/Mzc0VCoVGo2F6xgirRuVyeWNjAxboYbWnUCi0Wi1c6oGHuv1+H8b78Mih3W63Wi0cycIUpFAoXF9fo/zariqYfxQKhdPTU3jtFgb7MAvB9SsqHtwCVoPBQDPUaDSiW2uCIDg+PoY9UbDYFYbh2dkZHn0ByiqlMBHMSIvDV5SbzSY8gwHKUqlUqVTUeIQCi/ilUkl7Zs5r0/d9qBqcEj179gymXCAVaD0ajTClXq+jKfB9bLQzPAeCRb9Op4M1S5ePcIFOKTUYDOj7CrQ6xMCgrKNaS3u+Y5jEmwVEJIgq60ORGce9WTAhaGCge9zzCQwmyowGTSSGMg8xXACOEjwguEjTUhK6PFj8AVcFc4hCoQCeCCIH+Mrz83NgBYHB9/2dnR0aFcCvdTodWEqCbU6e5x0cHEBowXh2dXUF4uHiEjgpupN1NBrh0wWQ9vT0VFMBX9+Fi3q9/vTpU4hwwBMKpa4T/iIghLTb7cFgAL4b07e2tpRS1BpHR0fAs16vw1LVcDikoYXXLExr6PJOEARXV1eFQgFCAiTC9AUMAg//y+UytG8IDBhioXT4PH2tVltbW8PJB31ag2whorsHBk0LS+u9d4iype4400as5DOL+7acE0yrSVkDg8q1qpQ0/rKQiTSKdVER2t1Go0FHl2EY3tzc8A0q6KQgKtzc3ODTWggG4JXwGQM4RIg68LAXnjogN1iIh8CAhxGBy+73+5gdHkLA2ByecICTPTg40KYXEDxoBcOzbkzBXUmwOxZi1Xe+8x3tGQNsr6K5lFLdbhdnBrCpCb0nFgErURA4IeXk5AQUKRQKEEd7vR4IoFUEXrfb7ZOTE/wLoRpmDKgXVATMfnB+UCgUcOCjPTIBhw4Gv76+RvFgEgPTOJiZQb2IU8Zo8hkDF15LmUEo1stUciCr6SFillSzalIRUzVOduA6Ep8x8FCRLDBQ/fMypamUdMK4m2k4HOI1DQwkrQi+AAAGdUlEQVSajcCTwvDT8zx4aQDGy+Av8NkveqtOpwNRBN9mePbsmVYB5XL58vIS/sISCpewXq/DSg5OSmCcqy0lNRoNLZitrKzwpXn0blAoPHyGeQA48f39fS0LjuKxdM/zLi8vcTJBKWFhB/6enJxALoiOEFpgdK8MywWe552dnWkCPHv2DBVBp//s2bNisYgrh1pgoKEdtAM5b29vMTBApMRysdJhAoGlY2PjgUFsnGL6VOFYop2MNzwRiYjTIXrJA0M087FBCwxaOk1JGRhytKOplBRkkTR2U5MNzm4yyyF64PhggRv8Mg0MsDoBY/zz83OMHHC6J1+eKpfL9BmDWC68xwAxJgxDXN6he2Rh9VzLeHt7C66TBgzcXAuh7ubmBlWGwEAPEIUnKEqpRqOBBcF6Fywl0cgEIRbmNJCCgQFiSRiGGD7DMNSqA1J836crYCDJ1dUV9dRQ7v7+PpYOUqHY2oyB/qWBgQJmD1q5FBELDPZWOoOIFdsFiYhTQOPvIvlsYnomyg7LjEGLDTGBIZqsKq2YXIwYSd48NgvnQKXVUrjkJqtZAsPu7i5u+BkMBp1Op1wuw/K6Ilt0+v3+kydPzs/Pe71et9u9urp69uzZn/3Znx0cHFDOq6urP/3pT2FVZHV1tVqt0gdBw+Gw1WqVSqV//dd/XV1dbTQal5eX4Dr/8R//8eHDh+Ds4KBs8ZSky8vL09PT6+vr0WjU6/UeP358fHx8cnJyfX0NW4x++ctftlqt7e3txcVF2OP0b//2b8fHx7u7u7u7u2dnZ7e3t0qps7Ozg4OD3d3dk5OT/f39ZrP5H//xH77vHx0dwVpcq9X66KOPLi4ums1ms9kEVl/72td2d3eHw+FgMDg6OtrZ2fn6179+cHCgPfygGI1Gh4eHh4eHnTHCMPzWt75Vq9Vubm5Go1Gr1VpaWmo0Gp1Op9FogABbW1sPHjz40Y9+FIZhp9M5Pj5eXFzc2tr64IMPwjA8PDwslUqHh4ej0ej09HRpaYnvae71ektLS6ZKB8B2NbjW2pLWR/ite4dFr6TIl5s7//s2YTJM1UQZoX33DfcK8u/BJQ4MXPkcDZqCjArGbynS2miiCHtgSAdeIk8RR6mYnlEee3ac/aTjbGFuugXL+vxrP3xlXzRUON7OSxd2tM0VYtGmM6ZwHsZLRwFwrY9LZWmfyjqCuTOgnCqzZ6cMpwFqKE34lw7Ts9LdwDUwWO5mNF80GXscs3AOFpEoc4stMgaGiLkMkSZWDDGLlmKKJbMGLlUw/uZBr9fDJ+G+82dZxVsQGPgt3sAUi1ih+awkrKzYwGCSM7b13gFMlpxB3LFlpoqpGuoOjlKODwyatlTtKL+GjgzdZaB/TYnaRRQXGLT9Np9UcFPQv1qlmDhkl4Fe8Ep0rDh+y102R0p8khGxSOPenhVriveCWIOYiB05uPC3F32/9skLWaw0C0gZGCJDE+cp04ZKGJ9QbG4LDAxTtbhY9MsIF0NRm+eCSPKwlqK1RmIisEN7xB05BAbeJk3C3zFibcvF1hLdKspYhImJqbiXFFmsNAvINGMATMGqMTIoNr5Qk+GBSyWmUBVU3s8YTGXF5sql9FwwU8LcI7TAQGFvqPyvY95ccDfGyQtUZpPw07ZYvrhD4+WPNIFBYyES5GhfR5G4YBZEk2MTuPjlL38J78fCzkvP877+9a97nrezswO/HLsSDsfY29vb29vDC8Dx8TFeHBlwPMaJA9rtNj0bCnA6BqQDzfsMSAZ/n0m4urqCvVV4TXF9ff3RRx9dX19fX1/D3+vr69sx/uVf/uUnP/nJT37yE/gLRxL97Gc/GxD8bAzcM/cxQUhOZDLhxYsXfFtFjuj3+7griTekyDDO5X95Ru1uvv3i5YVFhRxNNG1M20r8hTV3xMqZIDBYWN8j0liUaaGlZOSZCKEEFxrEcDgMHCB+5p4CnwZr8CTAi3t1CZiubT3iB1jZD7OC86yKDJgI74gAJd4V+SBMBZmkqlarcPoTfdcBYGontEWJbdXUjBOlx1KaBOO37rjBc4giRSzcqpnxOe64Mxsmig0uoiabMXziYbLaVEt0qS3tr73KXcjEv2JeLlIuapqESYRw/B0Le+zUYIqdcCSJGDUD8gXWX0FoFZcu76+gAVM37KnCRdRPA8On+BSf4lNMC/fi+mMRK+qngeFTfIpP8Smmhfty/XbESvv/AffNAJOec5fEAAAAAElFTkSuQmCC" alt="" />

struct kmem_cache *kmem_cache_create (const char *name, size_t size, size_t align, unsigned long flags, void (*ctor)(void *))
{
size_t left_over, slab_size, ralign;
struct kmem_cache *cachep = NULL, *pc;
gfp_t gfp; /*
Sanity checks... these are all serious usage bugs.
参数有效性检查
*/
if (!name || in_interrupt() || (size < BYTES_PER_WORD) || size > KMALLOC_MAX_SIZE)
{
printk(KERN_ERR "%s: Early error in slab %s\n", __func__, name);
BUG();
} /*
* We use cache_chain_mutex to ensure a consistent view of
* cpu_online_mask as well. Please see cpuup_callback
*/
if (slab_is_available())
{
get_online_cpus();
mutex_lock(&cache_chain_mutex);
} list_for_each_entry(pc, &cache_chain, next)
{
char tmp;
int res; /*
* This happens when the module gets unloaded and doesn't
* destroy its slab cache and no-one else reuses the vmalloc
* area of the module. Print a warning.
*/
res = probe_kernel_address(pc->name, tmp);
if (res)
{
printk(KERN_ERR "SLAB: cache with size %d has lost its name\n", pc->buffer_size);
continue;
} if (!strcmp(pc->name, name))
{
printk(KERN_ERR "kmem_cache_create: duplicate cache %s\n", name);
dump_stack();
goto oops;
}
} #if DEBUG
WARN_ON(strchr(name, ' ')); /* It confuses parsers */
#if FORCED_DEBUG
/*
* Enable redzoning and last user accounting, except for caches with
* large objects, if the increased size would increase the object size
* above the next power of two: caches with object sizes just above a
* power of two have a significant amount of internal fragmentation.
*/
if (size < || fls(size - ) == fls(size- + REDZONE_ALIGN + * sizeof(unsigned long long)))
flags |= SLAB_RED_ZONE | SLAB_STORE_USER;
if (!(flags & SLAB_DESTROY_BY_RCU))
flags |= SLAB_POISON;
#endif
if (flags & SLAB_DESTROY_BY_RCU)
BUG_ON(flags & SLAB_POISON);
#endif
/*
* Always checks flags, a caller might be expecting debug support which
* isn't available.
*/
BUG_ON(flags & ~CREATE_MASK); /*
Check that size is in terms of words. This is needed to avoid unaligned accesses for some archs when redzoning is used,
and makes sure any on-slab bufctl's are also correctly aligned.
对象对齐
*/
if (size & (BYTES_PER_WORD - ))
{
size += (BYTES_PER_WORD - );
size &= ~(BYTES_PER_WORD - );
} /* calculate the final buffer alignment: */ /*
1) arch recommendation: can be overridden for debug
对象对齐通常也是基于基于处理器的字长,但如果设置了SLAB_HWCACHE_ALIGN标志,则内核按照特定于体系结构的函数cache_line_size给出的值,来对齐数据
内核还尝试将尽可能多的对象填充到一个缓存行中,只要对象长度允许,则会一直尝试将对齐值除以2,因此,会有2、4、6..个对象放入一个缓存行,而不是只有一个对象
*/
if (flags & SLAB_HWCACHE_ALIGN)
{
/*
* Default alignment: as specified by the arch code. Except if
* an object is really small, then squeeze multiple objects into
* one cacheline.
*/
ralign = cache_line_size();
while (size <= ralign / )
ralign /= ;
} else {
ralign = BYTES_PER_WORD;
} /*
* Redzoning and user store require word alignment or possibly larger.
* Note this will be overridden by architecture or caller mandated
* alignment if either is greater than BYTES_PER_WORD.
*/
if (flags & SLAB_STORE_USER)
ralign = BYTES_PER_WORD; if (flags & SLAB_RED_ZONE) {
ralign = REDZONE_ALIGN;
/* If redzoning, ensure that the second redzone is suitably
* aligned, by adjusting the object size accordingly. */
size += REDZONE_ALIGN - ;
size &= ~(REDZONE_ALIGN - );
} /*
2) arch mandated alignment
内核也考虑以下事实,某些体系结构需要一个最小值作为数据对齐的边界,由ARCH_SLAB_MINALIGN定义,用于所要求的对齐也可以接收
*/
//体系结构强制的最小对齐值
if (ralign < ARCH_SLAB_MINALIGN)
{
ralign = ARCH_SLAB_MINALIGN;
}
/*
3) caller mandated alignment
使用者强制的对齐值
*/
if (ralign < align)
{
ralign = align;
}
/* disable debug if necessary */
if (ralign > __alignof__(unsigned long long))
flags &= ~(SLAB_RED_ZONE | SLAB_STORE_USER);
/*
4) Store it.
存储最后计算出的对齐值
*/
align = ralign; if (slab_is_available())
gfp = GFP_KERNEL;
else
gfp = GFP_NOWAIT; /*
Get cache's description obj.
在数据对齐值计算完毕之后,分配struct kmem_cache的一个新实例
*/
cachep = kmem_cache_zalloc(&cache_cache, gfp);
if (!cachep)
goto oops; #if DEBUG
cachep->obj_size = size; /*
* Both debugging options require word-alignment which is calculated
* into align above.
*/
if (flags & SLAB_RED_ZONE) {
/* add space for red zone words */
cachep->obj_offset += sizeof(unsigned long long);
size += * sizeof(unsigned long long);
}
if (flags & SLAB_STORE_USER) {
/* user store requires one word storage behind the end of
* the real object. But if the second red zone needs to be
* aligned to 64 bits, we must allow that much space.
*/
if (flags & SLAB_RED_ZONE)
size += REDZONE_ALIGN;
else
size += BYTES_PER_WORD;
}
#if FORCED_DEBUG && defined(CONFIG_DEBUG_PAGEALLOC)
if (size >= malloc_sizes[INDEX_L3 + ].cs_size
&& cachep->obj_size > cache_line_size() && ALIGN(size, align) < PAGE_SIZE) {
cachep->obj_offset += PAGE_SIZE - ALIGN(size, align);
size = PAGE_SIZE;
}
#endif
#endif /*
Determine if the slab management is 'on' or 'off' slab.
(bootstrapping cannot cope with offslab caches so don't do it too early on.)
确定是否将SLAB头存储在SLAB之上相对比较简单,如果对象长度大于页帧的1/8,则将头部管理数据存储在SLAB之外,否则存储在SLAB之上
*/
if ((size >= (PAGE_SIZE >> )) && !slab_early_init)
/*
* Size is large, assume best to place the slab management obj
* off-slab (should allow better packing of objs).
*/
flags |= CFLGS_OFF_SLAB; //增加对象的长度size,直至对应到之前计算的对齐值
size = ALIGN(size, align); /*
尝试找到适当的页数用作SLAB长度,不太小,也不太大。SLAB中对象太少会增加管理开销,降低方法的效率,而过大的SLAB内存区则对伙伴系统不利
针对特定的页数,来计算对象数目、浪费的空间、着色所需的空间,循环往复,直至内核对结果满意为止
*/
left_over = calculate_slab_order(cachep, size, align, flags); if (!cachep->num)
{
printk(KERN_ERR "kmem_cache_create: couldn't create cache %s.\n", name);
kmem_cache_free(&cache_cache, cachep);
cachep = NULL;
goto oops;
}
slab_size = ALIGN(cachep->num * sizeof(kmem_bufctl_t)
+ sizeof(struct slab), align); /*
* If the slab has been placed off-slab, and we have enough space then
* move it on-slab. This is at the expense of any extra colouring.
*/
if (flags & CFLGS_OFF_SLAB && left_over >= slab_size) {
flags &= ~CFLGS_OFF_SLAB;
left_over -= slab_size;
} if (flags & CFLGS_OFF_SLAB) {
/* really off slab. No need for manual alignment */
slab_size =
cachep->num * sizeof(kmem_bufctl_t) + sizeof(struct slab); #ifdef CONFIG_PAGE_POISONING
/* If we're going to use the generic kernel_map_pages()
* poisoning, then it's going to smash the contents of
* the redzone and userword anyhow, so switch them off.
*/
if (size % PAGE_SIZE == && flags & SLAB_POISON)
flags &= ~(SLAB_RED_ZONE | SLAB_STORE_USER);
#endif
} cachep->colour_off = cache_line_size();
/* Offset must be a multiple of the alignment. */
if (cachep->colour_off < align)
cachep->colour_off = align;
cachep->colour = left_over / cachep->colour_off;
cachep->slab_size = slab_size;
cachep->flags = flags;
cachep->gfpflags = ;
if (CONFIG_ZONE_DMA_FLAG && (flags & SLAB_CACHE_DMA))
cachep->gfpflags |= GFP_DMA;
cachep->buffer_size = size;
cachep->reciprocal_buffer_size = reciprocal_value(size); if (flags & CFLGS_OFF_SLAB) {
cachep->slabp_cache = kmem_find_general_cachep(slab_size, 0u);
/*
* This is a possibility for one of the malloc_sizes caches.
* But since we go off slab only for object size greater than
* PAGE_SIZE/8, and malloc_sizes gets created in ascending order,
* this should not happen at all.
* But leave a BUG_ON for some lucky dude.
*/
BUG_ON(ZERO_OR_NULL_PTR(cachep->slabp_cache));
}
cachep->ctor = ctor;
cachep->name = name; if (setup_cpu_cache(cachep, gfp)) {
__kmem_cache_destroy(cachep);
cachep = NULL;
goto oops;
} /*
cache setup completed, link it into the list
为完成初始化,将初始化过的kmem_cache实例添加到全局链表,表头为cache_chain */
list_add(&cachep->next, &cache_chain);
oops:
if (!cachep && (flags & SLAB_PANIC))
panic("kmem_cache_create(): failed to create slab `%s'\n",
name);
if (slab_is_available()) {
mutex_unlock(&cache_chain_mutex);
put_online_cpus();
}
return cachep;
}
EXPORT_SYMBOL(kmem_cache_create);

4. 分配对象

kmem_cache_alloc用于从特定的缓存获取对象,类似于所有的malloc函数,其结果可能是指向分配内存区的指针,或者分配失败返回NULL

/*
1. cachep: 用于获取对象的缓存
2. flags: 精确描述分配特征的标志变量
*/
void *kmem_cache_alloc(struct kmem_cache *cachep, gfp_t flags)

aaarticlea/png;base64,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" alt="" />

5. 缓存的增长

如果扫描了所有的SLAB仍然没有找到空闲的对象,那么必须使用cache_grow扩大缓存,这是一个代价较高的操作,涉及到对伙伴系统的操作

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAU4AAADxCAIAAAAr2skqAAAgAElEQVR4nO29X4hcSZYergdhKHqNYBYS5qHaDKQNSzXzMNnQeAu5DVcW9laVNZDZZe2QU+XpVVat2luVrmGdubVayKzVTJNZ2hroFOp2c1OgB2WN0I51V3gHaQs8Jq0ftqFqHpaEWmwobLwYrhfmKV/66ebv4SPPnIwTETfuzT9VUut7SG7GPXHiRMT54t+Ne+PS4C3e4i2+Brh03ga8xVu8xSzwlupv8RZfC/ya6lFynKPdb/EWb5EIv6b60dFRyQ2VSoUuOJpmtFotX4cgCIIgoAsFFN7r9egiFmdnZ2EY0t8wDBGiRdKmzaXhs7eDdCtdczlmUxubERcZmdnU9kwD0iRtBmcGaYO8pVxMA7+m+r//9//e87x8Pl8qlfICuEXXhMXFRW8UubRYXFyUgfl8nq6z2ezCwkJ2FAsLC6nT9TwvCAIq9ESVF+ncnf+dXp1x2BPSOpPW/oFgeKxyHn2WWY6F5NJA5MW9rqcHxZJpF8sI1SuVCjpS2c0qIdQndzodRUDbe0tQP2+J0mq1ms2m7/uW8YKCSqVSq9VwoYw4lJBSqZTNZn3fH7OeTH4z7ZrjBphuRWaqSyV0K2kWZpnfWDjWQrpKHx+UurRk2iUzQvVarcbZa0Gn0wFLnz59Km9BA/1qFT59+hTh3W7XkiLX1ul0EIvrRAiUdDqdFy9ePHv2jGSUtqPD0Gq15ufnfd/v9/v2unGpPyk57ZoDLAlpfUtrXmSgujZ308nHxKCtAkulxFbuBMFTtFg7Jai9eizJTaBe3cJbPmRQxGg2blJrms9LeT5SwAVxXhHLZrP5fB4dvkv3bvIM7jeDGVLC7iVas7mdJnmtU8q/PHzMjEwW2sxK47V8S+cA7tGlqdMtC4ZfU/3Ro0fNZlNhjomBLmLauYDLalzAmgNHhsu4HFqqN5vNTCYzN4TnealrWqk5U71OCtISkxi/q1y7R4kc2H4RkNrs2HrXlkkKSFNjbZsgJtaru1Au0FHd0kwEo9P4cSxRenuQP5PJXLp0aW5uLpPJ5HI5+0je0Q9mVnmxaSnmSTulsFQo3dRkybkjSkJ1Jb+Jqjg1LEnPoHxGqC57dWUwbGIj/+ULdRaKKgN4k5gcjSeit5IWD0SvfunSJbA9l8uNU3myCqddc5GZt1qxcZJ4vaCllvwr+WaRNAWmhkn/9BBDdYVy2nm4wmfOKzwDazabCFRWyEzdPlerUJ3H0rY+Ws1yAE9Un5ubA9vT9eqDMRppu2TsLZ6uPRXtr8WeyNCImMIvGpRaSMQ3S0RToEW/PenBbFdzNVTvdrsgAxa3fd+vVqvlcnl3dxekbbVa9Xp9e3u7Wq3+5Cc/8Ycr2wj/8Y9/3Gq18Cyt3W7ncrlarfbjH/+40Whwqt+/f79arbZarUAss3PSttvter1OSTx69Mj3fcSCfp+tqyNd/pePNXgr0+l0ZK/uTnVZPUqgS9HbJWNvKUlbxOza3E2NXgeqa+k0PaTWPxh1AB4+JWiozifPlUqF76vJ5XK+7zebzVwuhw1zS0tLoBMCPc8rFovZbNbzPDwSz2azCM/lcljo9n0/n8/ThplSqSTnAkC5XEZE2iSztbVFsRC4vLwMO2mbTbFYhDGUYqPRgBI+pFeW5dyprvUnqrBBHIe5cKyYKRXFmFj9Wju1t0ypmKJfNGi55FKtjtWd6G5sRK3xUyqZGKpjbxxxb2trC2ypVCrg/+LiIm6VSiU0BGARHmI1m81sNgu+eZ4HVoOW6HJxrUwc0Jr4vl8oFHBRqVTwYIyuM5kM/mKw4HketSNoZcjyUqlUr9ex8Y43JXwAn7RXl9VGVeVeYe5iWv2RmcYuZpjuKr6oFZMpxuZietAaoy2T1JU7TvRYtSY7J15QMXN13hUTaLMqOmciGLjEh8roXYnqEMjn8+j26Rd8lhPvQqFA5ERPjv1zSJpG5ujhKdH19fVms0lNTyaTuX37No0yqFevVCroz18XqkfC7UxKtD5kkrHfkmJa+dhcTA+mEpAyqSt3nOh2tSazSWaCiKE6um7qZjE3zmazpVIJwsvLy8R/8I2vgYGiiEu9OlqKarVK78wQCTnhOdVpdADl1DrQIEJSHYFoBVZWVrgAUT31XJ1X2EBHA5d6cqzOaJTSStLatNxTlzYo+XL3uYm7piO0FkaTo+ik9JjUzqygfk31zz77DM/VFb7xuTq4B66CRfPz89QWYIyN6T16cuwzx2Aek3ZsTfM8b3t7GxvRaVwtk15dXUUH7nleJpMplUogNrU1WCakPh9MpgYCQwaa1RPP+Vx9TKq71KgFSWta6yiRgfbyWv5qlUcG/5baIkPrM0tYkp5IDU4b0topFZRKdeVxGojUaDSwAv/ZZ58FQdBqtarV6u7ubr1ebzabWCH3fb/Vau3t7ZXL5Wq1ipD9/f1yuVwulw8ODqABK+SNRmNzc3N9fX1zc3N/f9/3/Wq1+kd/9Eflcnlvb69er+O31WrdunVre3t7a2trYWEBK/Y7Ozu3b99G9HK5DDvb7fba2lqhUFhbW9vf30dgtVq9ceNGo9FYX1+v1+s8U6D6lStXaADved5XX301kZqTFRlZWae9pYVMZWDmZCS6DkvS0mxT7hR5bX5nCSXduPpxxWS1cbXahAazpDp/s02Cd4kyRN6VAlqdwXARrlQqbW1tKW/Fb29v0wun1GkHo4/ctdtjFP3aJ+3KspznebPp1dPdGhgGpfyWKVYkHFerR0laGzEysF1r6nnBpVJiBRxVjQ+Z1pSKRTOAB5T9qgrNlHB+lz8YD8SYnG5pN9UobQEoStNyiWB0V4+pneJ3e70e0prgspxSc5bqHFi7bqlHuSWVayvVlKg2Ia1mu2EWzTJ1i52ThanwLRURm327ttSw659S+RipnhTaPl8hpLaT13b+RH4TybWaTWqV1ANdrz7BubrJb6h2Bzoaa6MrMlphkx6LATItuwZFlSVd6WGmvGgNk9HdoWTKJTuyHM4Fky0HE1SqmzpG7djYznxOP5ANPSqnH4epV9cyXNEs7eEGyIvpUX3g5vrKX20UKRarfGAmkjZFk2ZL7izaIkOTkdTCdJCZckeKKBOEthYmWzgDheryoZdCMM4ZYpoiIOWDIKDvyUgZJaFA1zlLtQTl2Z5WRgsM4MdfgVf8bJyq0ipUbtkdReqhEOVurJNpxWS+YnOdujQUsy0ypty5I3XEMWFPN12hmTCyLHfr1q16vV6tVqvV6v7+fr1er9frjUaj0Wjggv8CP/rRjxqNRqvVwi8uFFAgBGq1GkVEIL4z2Wq12u22ciEB4Uaj0W632+32559/TtvdwXyE0AyfbvGLzz//HCvwRPUpLctZKi8SLJXXk0pLSY7L8IuBA/OlD8lbUVzLYlKltVley7IymfS6YGBosyx5iS09Bb+m+vPnz+ljjHxz+AyQccb8/Dx9QDKTyeCCdr+7fDeS/+W9up3qib4t6+K4smotFZzCfbUpDgy0lKlYwrX5suTdpNAF9tQjHUPkrdcLlgxaJF0w8h14fC+51+vl83lHtl++fNmd0iAVfvlf4ptJuSLJhRUDpKQSRRsSS/XUtcWLV1ZkpCOYImCqaVOgcstkiT2Wo4yiUCaqSJqKwoTIQHWXFF0ykkh+sohN2uInkch45FCe+iMfSqUSUZ1zHntOeDdLIXOic1biUqBCS7q4cuWKIsCj4AIyPAkeYmhhVBkym8Plg1PutWhyXJMwrz9tLNNfqVa55W6GPUeJlFusNcGecbsSmaILHOUdS2YakBnk4cp1bAlrqB6GIXp1hcAKdbWQnJd3eavB+2cipBKikFbqsVuotEdzhiZpsnN1k0eaJGNjaT07MrQOloixNtO1JVOmbNqzb4dFW6zORNlMCpMlprupU3HMcqRzBpMwh75Xx1MxrIGZPrduAT8BhsAPkKC/2KY+NzeHibQ8UoLeVMfv4uIizclp4k0ydAhE1gya4SvI5/MTqTOqJEttKb4yEOy1iEWjlDNJWgQiHWlN9lvumuzU3rKUgx0ucU0yCSpsNHf2uEq66fTzVLQpTryUxjqzLRZ9M371q1/hfKVarZbJZDqdjkXYrodOZTobgv81HeEUhuHpEMfHx0kPdbJjYHV9Wc2mkIHgp0lASsbWLFco40pJnrq7GVqTJgtT4Wv/ThZjKleKNJpmQU2X6naAb9jK4qc9ZeViwuSRSasn0i3AaK+1cRUBaaFdQ+oskNqk+seHrIiJVaoOSfXbiyh6U6keRRGons1mg+HZaW8GZJHKiuSSFigKB8JLTErs9liUOObOkpzW5ticpoM0Kdb+CSJRctLywQybxbdUd12JjVXCLxSdliRk3StQ9Gt1xlaitMck4FIUWmu1OZK5mAZcSuBCQVoub00c06W6i9pzoTrP8kTyLn3OVIXaiKboFiOVu5Z61BrjEtGSWVO4khGZuszg+EidkfOCLBDl1jTwNaX6xMF9ziIg7yo+KmuIxEwpylgu1iYKd0lUC1NOJwtL8V5McFMVs6dXSlOkuqPaCVJ9SpvYsdQ/Dc1vIaH1mdeFw+4wsf0cqO5YuDy6NgFLRFwoVI+NaALt6sUDtl6vpzxa6w0hn7pFbJc7hVAgF0tkj4tYusxqlYyvZxrghlmMlLcucqbGh6QMhU8JE+jVTTWkrTx5LamezoBer8c32/BXXByxtLSUN4C290jwPUL0qSz8pX1EcpdRrVbDBe1HUjYpxb6E65s/GdCLAzYdmBo+FyStoxRQ/Ef67gxsmDZkdibIbQVjUV0b16JwkITqiUxCp53L5VwcnWCiivZ1d4V+nJOOuwlLZuTz+WKxaGpNeIuTFKbGjk7XMbWJ9rscZJi9KeStHj4lqJQPQlB62lbPsRFM0fYREvl/OpioaL87Pkaork07kbkWDUrIIG4AbzdAURINe/XZ1Na0EZt93q/GdrmWzpl6dX5hahPtjaPlcyBKC2jZWK3dUs0hG0S+ydrU2CljPaUt483ftAcs2mrl1Z2UwO6wUd3kcNpbljR4JnlaCE9NdUXmHKk+GK0nHu5SmDOyckIYpBp2RYZnflKJ9KsUySkrL/KvFuVyear+YycUv54G9FS3WxaZn/3YEQnCR0OqUxEr8u4FB6rPZho5WVgK81zsGQcDMzOVHJkqWnFFUxR5a3zjd3Z2ZuA/0n4X7owPda6etMgoLv+1WC9TUaieGkEQeJ53dnY2ph5HJC2ocRLiRTemqvGVJE1CMZ5nR+Yr1n+07jQp3Lt377y6Csf8joOUc3VHWy136VbqXl0BqJ6iyUia0KSUKyWfTkkKsenBZMBA1w3Iay7viGi0s7E4sP0uMEuqKza4Zzk14gfwpnLRWmmKZdHj3qvbzQiCIJfLTaSqtCtbSZXYrZ2snkmlNT5MtWyxUN5yd99otAWx2KCNq2DGVLebN3HYqK4NkRbz6NLo2DynG8DLKsHDNktVydVp/pebGoZhEARhGGKTHP6adNJGOixim1In/YqMYynFqh1HSSK4bBzs9/taexRXsQu4I3JwVBfs7u7OuFefJWIG8PzabnGUluqVSiWTySTaGIsHP7jmbLRTHU9xKGKv18vn80hXMbVUKuVyOXr+lMvlKpUKNCtrAZVK5fDwEGI4HDZiZIDOMAzPzs7ohfxer1cqlaSdp6enTXboNZ5stdttSMrCVNojR7jUiB2np6f2dtl+lzuGvWV0hJRPla0oOg+qRzPkvCvVeaC0eGCmunJXgqju6LJhGFYqFc/zSqUSj4W5ur1XxzYPyGAUID+JgSYDD2yLxSLOjaZNHdVqlSShodFogJk0POl0OmRGEATNZnNxcZHWEaAQhOHWvnr1CufG8+fM169fh4VUjGdnZ81mM5/P45mw7/tUAqTt+PhYPhJHckEQQHPqXf337t2jMtSiUqm8evUKeQ/YmVy8naXq8H0/HO4+5mOBcXw6Xb6iGVKd2zlOThPhkuVeJBrLQdpplSXb+ArN+vr6H/3RH925c+fOnTsHcbh79+61a9euXLly5cqV3/7t397Z2bl//36r1bJsgcArKycnJ0dHRwjpdru5XK7T6XCx09PTYrF469atarWay+V++MMfFotFHDWxuLh469at//E//gckwzDc2NgoFovtdntpaenly5cvX75st9tBEPzu7/4ufBopdrvdmzdvouff29vDno07d+7kcrlnz55R0r/4xS8ymczW1hbtma3Vav/kn/wTbmG/3/9P/+k/7e/vZ7PZdruN3f6ffPJJt9vtdDqLi4utViuKov/5P//n6enpyRCFQuHTTz/tdrv4++rVq5OTk3QnTIdh+P3vfx9nY6Ox4E0GTuPe2tr66KOPisViuVx+8eIFiu6//Jf/8uzZMy78Z3/2Zzdv3nz8+PGLFy+2t7cXFxd/8Ytf8LRc3CmRp9nR7/eJ6uNrs2Mwc54PJNUjc5MTuVE9MgxOlOh0jV4dvWjs7lHaF0UHNly5cgW7zZvNpqVXR5/m+z51d+iEm81mr9fzfb9UKmEIjQF2LpfjezDRFfNOyff9ubm5fD5///59jPDJzsXFRUgilUqlQsMEdHSZTGZpaYlrQ/eLXo424QZBsLGxAfMgHIYhzpDNZDJIsdlsrq2t4Rb2BSsZD8Mwn88/ePAggSfqlgDQVOXz+b29PQxV8vm8HKv7vu95HszG+AgjKV6Ag8Gg1+sVCgVEoUcnfOIjnYrfiuKGkOkwm15dMmU2MFJda4rF7thY2uhRFFUqlUTLciE7lCKXy7VaLXihZQD/N3/zNyAhuA3QyJzYdXp6Cnm6Rbs18/l8Npvlm648z5ubm2s2m/fv38ecnxqRdrtNVPd9v1KpvP/++6ArmptsNssXe8MwxNSAvyqD62KxCFOxChCGYavVyufzc3NzNKe4ceMGbmnfBcYiwrVr1zBUTuTKXBg8z+fzjx8/BskxjeIzCBSX53mFQiGfz9M+yCAInj17Risp2Ox09epV5BHNQalUWllZQTYjh+c4A0PH6J47idkP4OPoOUmMUF1aY7orjVauo9GKkZIkloLq4AMWpSjQPlendTtKCH+1y4FE9VqtBnckqsOt0c+j579//z4+bs0HHVh4gzGVSuXb3/42zefRy21ubkKAiuLo6AjDEySHi0KhoJQMtTKVSgVtx+rqajSkulx6iKII79KAUc1mE1b1+337SyPNZrNcLlOiaH3CMDw6OqJyRkFtbGwgL9lstlQq+b6/vb2NcstkMmiX6/W653m8+tDY9Xo9tL9hGN65c4cvTFgQjfbqkbkjSYQZUF0xmwKVrCWCYxT9m21JE5NK3CWTUj0yPPeOXZZTqN4bvgkXMUchD8aKF455Rb8Kr+33++iZQblKpXL37l2cGEGvXuBl2Gg46M1ms++++y7NCGDG6uoqlqzIvCdPnnieh0DizM2bN3ljFIbh6ekpHUcD6tp79SiKMIBH+fCi1r7Zwtfzut0uyg3GINarV694Ofu+XywW8ReFFobh2toacorkPM/D2geVie/7BwcH0ei849GjR7w6XFyIX2gr3RSuRblcng3Vo1HDtLyInGmoCJsiqivwljQsFmizZLFsYKB6rN2RufJiqe77PsaQvV7v2bNnll4do8pcLnfr1i3QHp027lISYBoW2IjqpVKJUx3d+PXr1zHIJ75tbW1BLWl78uQJ5vwoEHTsV69eVSx88OCB53l4ZoGWJZbqpVLpyZMnURRh1J10CwM9KcCvQvWQ7T5Ac1apVKrVKoYGqNlcLler1UB1qou1tTVMcFCMQRDs7Oxw2ywupPhGNCGqz6xXj3SGSSrFloCWIybo98APdJSzG6HNid0+QEt1bVnYEUv1bre7sLCwubm5tbX1d3/3d7xXB/r9/rNnz549e/b48eP9/f333nuv2Wy2Wq2FhYVCoYBwLHFHQ8+u1Wrb29tLS0uYoBaLxUKh8E//6T8tFov9fr/b7e7v7x8fH3/3u989Pj6u1+u7u7uHh4ee533yySdra2snJyeU+p//+Z9vbGy02+1Go7GwsICV/+9973uUYr/ff/Xq1Y9//ONOpzM/P09DjI8++ujly5ePHz+29OqgejSJb3IdHR0tLS1JPf1+f2FhAQdg/+AHPwDbFxYWXrx4kc1mlecjrVZrd3f35OTk9PQUTwROT09/9rOfYdgCmYEgs93Xx8xXFEV/+qd/Osvn6pG5qYqjrZ56dqTcQpPIFIt9kbVXT1R2LgN4DIzxl6jO0wqHwINrPM3K5XKIpSxrYU5+eHjIv7uA0T4NAQaDQRiGGOJS35jP52nZnLTV63WKDjvxtQb+OBr7CDC/pTX53d3daHRHkIJSqfT8+fNEhWnB0dERlSEHZjSYgHS7XQxM8BgfBaU8v3jw4IFSnmg++EN7dy9K6i1auPfqqZPTWp6aQYn0pKG6IpPOYoqYjupSj53qg8GAHrYhBHNIhRuY84O3JInFZC6DVDBbPj4+xmCbFuHff//9SqXC1WLhCuNnNByKneHw4xD01A2P/fAXa5AkzKkeRdHx8TEp0ead9+rj4/nz53nd+XZ41oDCWVtbw0wB4/MgCGjjDaoMVJdK0F70ej2TT1ocyQQXGQBrpY7C44Bb7p5TmXHl147EVLenbTJdmkUK5bKcTDS2vFyW5RSAV0ogOiVlUxdmklIzwtHN8ijPnj1TNLdaLUzCtXqiKJKr3/waEblJ2q21JpRKJdo4ND6eP3+OXl2pIBgJwj9+/Jj2FMDy09NTPl0KgmB5eZk+SsM/U4MF+WiMRanUmBnVOSRBpoT4r9DwEoxVF5lbKSV7dI3aVcZska4xtoSkoLosbql/fHALY2Vc9MRqkwgT7pO34/T0VDtNoFEJbEM7xe3kbShGWNqv8dFSf6yzaT1znKydI9VNrJkgnD445aIoGu1mY+9SVk1U1xaKLCP6Oz7VU0ScGdzNu+AZcYSLy2n9bZxEv6ZUj8wE4OFcPjI8ruMRlYt+v1+pVBYWFuiNMVOidjOiKMIm8DAM0+3utuOCnPqgHDgdK8wvFPlxSukci0Jx1Alq7vf7oPqMcycZNCXE9Oo8eWmZVqO0OLI+vVOW5WJVKWVEf9GrB0FgP1NdgjS417E0xh2xEVNrniom2N1pa1MRsPydBuAJq6urSbM5jhvEevtk4Ur1yLn5kXcjB6qHo28USZNMhUV/sSUml8vJL5zjHVIXyC+ux37bXH7qnKOiAx7X86+aI4QvxWG/TafTCRh83UfOu92ustGNjnNQQuDQvVTHPKCQ0elpG8qZQesMsbdiEYZhit1yqVNUPFwJnwZivkLD86PcNWmUd6M4qtOmMZm6ySTtLcWP+R5PehLG30uRtCFGmZbE5akDRFotq+mFGYX59KKettXgzQq1OI6tVWrk2SE2lhSxF9DSFJbY19otLaA88oHawYo464bAG0QTTNXK3UC7EbhQKMyM6oobS6+eOPTvq2tNUS6SwlRAWqoPRpsGlzL6GoL61UT9s8nXtd4vG0FTa6ht/iyg1/LtjaMW2qGWMhwzQXtSDZ39MPtxisKRdORyQQKqR7pHfxbjTJmJnKmutUeqnVipnwded/sVDMzDt8g8ahszUb7I4tj8UXOmtH1jWpICFrJMFupLrLLcTdXDw03a6W6kazIA0wBeK6w1I0X5vsWUMH51cFf8ulVuShK7QU91hXLaQpeB2lhcs3I3Gr69bN9CI5M2GZAajqrGT86lGF9fSEfitxQxJTzWx6RHmfS/pjAwVEUiYQ4b1aVqrX3av9I+rTZJ9UjHdkvRpCjT1HpSJCfLRxasNvz1hSnLUZyDmrSZZN6M4iLYC0e6TVJovkLjHjly892BmeqReNgWOVeho5hjKU9ET+rUZTG+jjDlwuISkbktUHQqqcwsUzODtpQkSDgp9B+ckkWvTUAGKqZLSeUCvTqfq8tEJ1iU01CrTcJUpPbSs9hmUqWETCdbCaB1A9MtbSz364uQ32lAukqs27hA/8GpKK7FdbFGmwflQkv1yOoWU8JkU0xURC4FOBBUn5SpE4TW/nB0c1Ska6oi60wnnbO9vhhY+Wy5ZYfx23KKxsjsYYqAqSYUQ3ERhmGpVJJUHx8XZNf61wpaX1KeVJs8TavNpFPrYG8M7Hy23LLDdQAv/2qNkKZInQo41cfEuezTnPH+UJ4W368qzeCB8gSYaArFJSv9a4gJlmos3WJlODQr8InUxUaJdO0Fz49C9UEqR4FPm7ZJxm6WlBsnY7dSJtqgZgeyQHvLZb5MYmO2MhNvpBQfOEc4lrlFMtJt+E8Eu/IpQVv4eqpHutGRXcCd6lprJkX1ZrOJQyAWFhZybqAdkblcLpvN0pZJHmKPle7tGu3OduVdmgo7+8HlFRraQK5874FvHee30A5O1u3sVE9EkmjYPYaGRo0L0ydrTWTT2iADObH5XS6mnRXOhsapoaE6ZyYXmhTVBw69urvpPARUz+Vyvu+32225Vdv+Ngvt3OZ/+ftnJgpZ7pq2drvs8SYZnA85zpZv035vtGVBkgNwHetFS/Xnz59TQ+neDlpeKIyFUvK1Wk2pFFlxVO/2d2m4R/m+r7x9CHS73WB4nK52bOje5JngThkj1SPzwoCpUhUaDwyIBEvD0WW5yKFX1/oTUV2+mCEH8PbxvKxODtSr6a6ihGoaFR87m0h3S5pkefWVt2s4DWaCfZGF6gcHB57n2RtBfB6XByLE/tKLbAplq6G0dLhYWlqyj9e0t9zHjNSe5tiY0d7eaceD2mY9thGsDI8Jp6pxpbpjHSuSFs4DkurpEIZhq9XyPK/T6Tx9+lTx9UePHuGcFsLTp08VquACwDUYQiGcqFw/V6UQDAekyoQ463g47yt40txCHIHC7yJ3BGpWePSXL19yMzqdzueff57JZFqtFn3JY5zyByyu8tlnn5WGp1MGQdDtdl++fAlT8atkCtcoWy7Q7Xbxfj4P4UVKSpQSoMBWq0V3UQUUzttBDhJD+fNYijyu2+02j95m4DrfnrwAACAASURBVCEk2Wg0EPLFF18ocX3ff/bsmWIPziNotVr7o4CS/f39er2ey+W63S4nspHqSUERlYpPRHWLr5h8i/TQAJ7XunbEpb3QjsS0Izelk9SO3xR53lhorVJMskCbnMkAGYvC2+12JpPJZDLocEql0kSeTZpq8ODggFPdVG52WD4xoOSOWmpTCcii9kehVS5rX6loxVu0CXGTtJ6pQMk1b9osmuVXmPVUj3RD90RUd2waoijKjx5y6gi+ZhOxI5MUXvmiE9aWqVYsYB7DfUhR4uKyypjC0gBJ9Ho9u+so7Qj3DIu3tVotnFp96dIlHC851W0In376aalU4pYoZisw8c1e2pLqCvECc8XJ1pz7EgVyfuJCCTEVu/QlxR4tUjSIwZDqzeG3jMIwHGgPcjIx0x5O0bV6ItHh03U+n8fJh3Zf4Wuk/vAA44hxnnp1heqSXdqyBkNkZbhTXatcCy3VpesrrkaB3NTAzBl7CHp1sH0GVOe9Om9Yp0d1U0RZbqaS5BdKIyKbD4Xkjh3ARGS0sTBey2azmUym2WxOgOoyukUPVfyADbzRq7t/FQBjfqxM+MPDvU1Ur1Qqnufh/DCqFVOFKX1vwNhLDaQCXqkkLD1GNi7KCNM3dA6mYYWWxtwAJVGeHC6mR3VqkXngwcFBpVLRFqCpYLWE4SGWtkwO4JXsaysuGK0sea2UqiJg+Q2spI2dmJiyaQJ6dUzQcD53AqqbyB+Ze3WuLRrtyTkwV9duU5HffsXnEIMg8Dxvbm4uk8kUi8VgeHQ5qK5URj6fX19ft1QnXWi7UKWCtSxShOUMgkdpNpulUokWe7T28HB+F4N5JYPKIFPrxLL1abfbOLwZY3gsl9D6XKKnPgrPgyCoVqv0SAnhn376qYnqCiV830dT7nneixcvKLBSqeTz+XK5rDi6PwqE8DU2beU6PlGTIdJmUxutrQJtLVOgnIfzZzf8wt46JKM6rz9ttzzQdfUyitTG0e/38/n8/Pw8jiVeZVhZWVlZWbl27dq1a9dWhvhn/+yfIeS9996bm5u7fPnyb/7mb167dm1jYwPHGPu+jxV4Wnrd2tpaX18vl8s3btwoFAr1en1tbe1f/st/ubKysrm5WSgUVldXG41Gq9XCrWKxuLq6ioHA9773vRs3bly/fr1cLl+/fh1Nhnb1rtVqbW5u7uzsbG5u/tt/+2+r1Wq73Q6CoNVq7ezs/P7v//7+/j4k9/f3s9ns2tpauVzGanC9Xt/c3Pzxj39cLpfL5XK9Xof97Xa7Wq1ubm5Wq9VWqxUMV+D39vaq1Wqj0ajX69VqFWvC+/v7u7u7e3t7jUbj2bNn8L9qtVoulyEcDFsl3ALVLw3x7rvvfvHFFw9G4fv+Q4YnT548efLkucDPf/7zo6Mj+nt4ePjRRx9duXLl29/+9s2bN+/evRsEwQ9/+MOtrS2Fpd1ul1aSW60WHiWg0BqNRjab/eKLLxTJ1dVVvqgeBAGWrDnfOp3OF198AfkOA+X9xYsXvu+j3GjZnHuOr1tvh8yjR4+gmZNcWdKX7bhiA8XlafHkkOsXL17Q45VqtbqxsbGwsPCTn/yEF6N2sPDo0aMrV66gL9RTXZJT22NbqG6CpRPI5/PyYZs9SjD8DnSpVHrx4kXITj70RZNfKpWuXbuWzWYrlYo/PAJtdXUVE4fK8LxE3/eXlpZQ0M1mE2ehrqysoDPBhCeXy9HJ4bysfd/PZrNYFGw2mwsLC+g0SqUSVkdwujgmq3g/v1gs4tGx7/uwAWc8l0qlTCaTH55hSge8Q7nv+8vLy3iOms1m5+bm8vk81iM9z8MD1Vwut7e3B2sRmM/ncU67Yjan+tzcHD4F674/Jze6uZAeI6M/wZABHUsul8ORlYpHwkhKS5ln5XI5ZTdUEARra2s8I8gvlKDMeSBsC3RjB5Q5N77ZbHY6HQwo8FQin8+DtPABhGBTExTS6AP1iNpHIArTHwVlBE5Yq9WQd5oetlothEAhqqk5PNsXxUXtCG3WkrMVGrLpqT6wDrMVmPg8sI4O3Kluj4JKDUd3LJoetjWbzfn5eVCFQtbX1+FecClU3nvvvecN912AuisrK81mE40C2pdyuUz6aThdqVQymQxVJ2JBMxSSA5ET1+t1Xjee52FoSszH9a1bt+BM2O7i+36hUOCJNptNPET1h/teS6XSzZs30VrRnjDqUal8+Aq8MoB32cVludvr9dbX1+fm5tBcoqDu3LnDH7YFw+6INq7l8/kbN25wTuJUdqXhBtWppfA8D5sawRAUArXI4Dz1q8HosPzq1avecFcPOI8opeGu5Fwu12g0qD3Cus/8/DwyAj8plUqFQgEtBXKRy+Uqlcry8jIlLQmPlhobZtDQIBwf1eZLUfv7+x7bC4QyQUIUuL29zanus9mZkeqOPI+ce3UX3ipUd7dB8l+hOjW9qAx62FOpVBSqo1gXFxf53iN0/qh1MI3mijwV6tWprb127RociO+iR61ABr7IexvP8/b29ojDGAvk83mYxKm+trZGCYHM1Wo1O4qbN2/yzi2Xy8EbuNmtViuTyXCqT2pZrtfrYXykzNUVqisWZrNZzI+oOYZb+2wY7Pv+ysoKr1kMf+D9KCIEErGp0jvi8duNGzf4fthsNosj7mnAkslk6vU6+Qk104hFHlUZHiBPwyva/0cDDdnW0CgGlkPn8vIyZR96Njc3+ZAhm83u7+8jjxSIQpgi1WXI+FRPZIOix/SwLZ/P7+zsgD9om0ul0vXr1+FnVD2+7y8tLVE3CDGQlnOPmKa4IJwVzcTCwgLu0vAMw7DK8Mhx9Or+cGEfIdSnoUBQrxDDsIIaBapg1GK1WkXnRpajL+K7ULmzxvbqSsEmXZYLw/D4+FiJqGyhCYZLR3BTEGZzc5P7Kwbwpl4dxcI9HoWGLpG3EShz5fFKs9m8fv06SowGCMViEbMntPWZTKbRaBDViaJoQTAxyeVyCwsLNH6hloLmFOQkCtXz+TxGdpzqq6urlFl05rxpQ+r1eh0NOu2QJX+TVAf0A/gU4N175Dx0J0ywV6ctNFQ0KHrMXWm6hcqDPHpvDLq2t7f5tLNUKmGIhV4dE7aVlRUqUP6LyqMOgcIRgrffqIeh6TdN8yAGN4XLQiH2aWP2C7fe2NjgHTiGr9AGVmOWoTRtS0tLis2S6jN7rq54M/iZzWavX79OPERItVqleSxq89q1a9RVgt5UgCh2ZLzRaOAaifqjQMgHH3wAN6BYmC7xYUW9Xqfah1WoHcij3+ZAgdPqTJOt88teHSu11Ej5vr+6ukoWwvF414Lmb39/PzdchUGN12o13oj7sb16uioc6BbtEmHiA3hlBZ4vbPrDLdC00MprgpZk0Se8ePHiiy++8Nnqa6vVunPnTmGIpaWlQqFw8+ZNrN6vrKysr6+vra1997vfJZ2dTqfRaNy/fx/pUmVjjo3A/f399957b3l5uVqtYrEdMu12+yc/+QlWp2mdeW9vb2tra2trq1gsLiwsILDVau3t7W1ubu7u7u7u7sLUarW6t7e3vr6+ubl5//59ZQX4iy++mD3V4Y70SMn3/XK5jOcj1WqVLN/c3FxfX799+/bOzk6r1Xrx4kW73abAzc1NWnJvNBrlcvn3fu/3MLFCHlut1traWqFQWFtbazQaqAKs6gOo4t/5nd+BGJ7CbG9vHxwcrK6uLi8vF4vFtbW1GzdufPLJJ6jc9fX1lZWVjY0N6uGr1erKysrS0hKe7GAkhRYHa3JgKVYWO53O559/Tl60tbXled4PfvCDVquFeiwWi81m8/vf//7GxgYeA21sbEDY87y1tbWNjY2lpaV/9I/+0Q9+8IN6vb68vFwoFPDER2lDieoxD9uSQs7Yk2qQy3IplMheXRkr8oLwxXxewn7XH5300jXae76Y5IuJIplEemi+oKTLraWLVquFzl+ZCnLJzugzZF881PXFw7ZZUl0pHLrWVpwpCi/PzuiuAaXG0dkuLS0pDwsWFhZorVtb5qSTL4zRsqjWYXg3HgznBcozC+rDkTul5+chPGuKDHe5YBSo3AxDeqrzKErEpCxNsQJv0oNiDcSWBl5zFKJ06dw/pLCiQXE1RZWsjEBAsY0qVes9ym8giC2tlSnKpDGAJ7Z7njdO+cdCuyynGGYpZ60AXdO7brwqubAvQKsYCq+UJIh7leEnBvgqgEJsbfVBhpZReIq8xgNDiywbO1k+8tE6H8BPi+pJMdkVeDlXl2VKIYGgkPQnKkSt05jCZfVr9zlYdJpUBboWgY+HpVqZXKBbgfc8b9qvu8jn6tzUgH3OQb6xY3HrQNf5KyXg63hlrzKTmKJcVpCMbjJMRjc5qpJZbRlyUDuOAXxTuwc+KS4O1elxNJa7TXXpUscSiRSahhX8QvGDREYq8rLuFdfXhjQajRn36rQtRLopLwrFrX1dc6AIa/mvLXBZ1DxEOxFwqQIerqRrktFaqxhgEbZDWZabDNXHxKSoHkUR79UlM3m5N+OO6Vai80cycnO1CbzWTQOzpKDocoJnMt4ESfVpz9WJ6txs7tMuTPN1dJLTMRlLea4uY/G7lpqVekzg2pTcyeyMQ2wCjYbiqT4+4ZNO3cekOhemRy/ag7ub7DtHTR380a8scihRfDYB80epJWlGUSS04Yq21vDjdhaZGI8zAFSnXbEzoLpcRFQgl6BcoDBK2xoSlBqMRaIuwW4ktSzaubqU50XB2wjZ80MPn/XQAF7/XD2aBNUVuFM93dHWXP/Lly/v3r376aefbmxsYK//pUuXLl++fPny5b/39/7e5cuX4dMUMjeKd9555wrD3NzclStXlMArV678/b//999555133nnnG9/4xjsC3/jGN77xjW9kMhlcfPOb38TFu++++81vfhO/hG9961vf+ta3cPHNb37zH/yDf/CtIUjgH/7Df/hbv/Vbv/Vbv/Xtb38bt/D3O9/5zne+8x1+Tfjggw8++OCDDz/88MMPP/zggw8Qsri4+MEQuPWd73wHRUFU/9WvfpWiChzxox/9qFgs4nFguVze3Nzc3NzEOz/4Wy6X/82/+TcbGxtlgSrDn/zJnyBkf38fIfiLN3/q9Xq9Xt/e3r5z505dB7wjVKvV6vX6j370I4Q0Go1arUYXdF2tVukat6jxpd9Wq3VwcNAygIaBrVYLD9s4EJF/juqLL74g/itPhfkFbyk6o8Ctg4MDePXly5cTDOCnOpOf1Ao8x9nZGV4FkaDXMHgIPX68cuWKVsASl/8FZ6BHkaTXjKSSWAspkPTHyvNwJRZ140Ty2fTqr169ooFVLpfjxpBJl5KAy8OhpRKpkxcFlYAjMmbMjToSfcmLXv6h31jkDOCP6wh4BJgf/cau53mLi4vc8llQPRbpqG63p9/vm6huqby5IdXthOTvBiqq3FO0pKX8VVoNRV4bXcmUSVLBtKnOgRd1eAmYzJbGg9UKZNsqoTRtdmgbEbukScZyCybFNmRKIM+ISZK3YhnTV2gkXkeqYxMr/4SwFrwh5O0ihSjHOVCIpzsWgrfKsrXmLT13a+WvEjg/P6/c4m5tIjCxSAmZE00Jqc3n82NXpiuI6igNaYyJ/9RAaKPIcrA3H5Zys0TkZZsZttqKWhk9o2vatKPIOVat2nJQOhulfGQeM1qqa2kfS/XBKBLV+jQG8KR5fGi/jYMXtujxr7ybYu3UtDxDy3J8D4ZpudEE+ZFw3gLSRvRZ9uraVlLb6rlA27QpfNASW8sxE/201xaKSs5bsqCYbbIkYx0NZQT/M5kMXpSYzLJc6sd1oBP6z4lTPRr9nmw0+pIWfZGOW+IORWdoeIVbZtaizXQakZRUQB9yczA8RvlsEJrbUEtbaVnfRoPo656hyNaQv5GuAK+LK+M+ZehHH/CQO175NY3+PPMxEtrRnwXgLQZ6fJw4Pz+vSFIIBHzfP+fn6vBRbE4OUx26PEGz+/2+sgTNj22m6/4QCA9HD/HCra+++ipih5/KhKIo+uqrr0LDAWCUEE+C8NVXX3FjJEVjDeDpngvVU0A5QlvJGvLLw1EysYcr2sXOzs7+z//5P6a4Z2dnZ2dn/X7/jKHX63W73bOzs7/927+FDAn87d/+LYlJPVrlSvhpHE4Y8Bfh/X7fSPXJMl9qo5AwDNFAnjvV0+GCM+TNgLaWp1H18jBcSzsYjo4Qo4vXbvIiOudePRqb6tPGBamzrwO0/cE5eubrCKW46Brh5091TGYuCNVlox5Zm/bIPE5+C0LqNaCJW/KawjSu4cwdxGHqVLdrDkeX5VKbwTlpmnqR5DhwVKKYpzQHoTgUgUe06JSapYZwdNXQJKOd508J9mo13bW4peLEEzDxAkNmU5t9E8OjaffqjjURjkF1k7Ayd4p0czBphpalknsuhklJbgBnWsjaDq0x2iZAm4QldSkQsWcQLu3I9GDncxTXoX2tqG5itTZQYipUd6+GcEIP2/r9fqvVunbtWrFYLBaLt27dunXrVqFQwPW//tf/ujjExsbGxsbGJ598Ui6X8XEffM1nbW3t448/xsWmGX/wB3+ws7Nze4idnZ2tra2dUfzxH//xXQPu3buHi0ajce/evXv37j148ODg4ODu3bufffbZ3bt3cdbCwcHBwcEBHb2AExdw/eWXX9IZDDhi4Wc/+xn+Hh4e4uKnP/3p4eEh/uLiZz/72fPnz4+Ojo6Ojg4PD4Mg+Mu//EvladZf/dVfHR0dvXz5cqpTEq2DKgL81yRM12881TkkySXVpVg81R0LUWqYPdXDMMQOOfkkNhAfBpbXKV6oApSXzCzvwym38PodPQ3GZ6pMu18sO2FoP4zyfFjuFPQckMvlMplMEATj1IUCrdtJlzXFMgW6eNfrCMdisbBaGzgYp1ePjTJjquOLa754mdEXXyAJdB8z4AR22dwWGF4wVm5JGd7WxCZk+uhCbCzFAMu72fQX7/lns1n+/fbx4UJ16ScporwBsHN1TGiobi9Ebo1FxjFv2rm6e3SStFDd5PoWcvIWQSGkoscf/VaBVpvCQwvVOQNxge+NSgTslGiZZdm0maClehAEk6U6XSSqWS0iQ4f/BkCbxwkifg+8xaBo7O0NRHUeMUUtYgCvUF2yi/4q31S1kFORcSGPRZuUtIekgNJeBA4fLaMoleHhUMo5qu4w+Y/FBSPdqFV7yyT8ZkDJY5RwQBQrpjmJ1d0yizy31aJknBV4RQ/16vZPBfMQ3qdZiMdlEvWTJrUmJbKVUb5j6YsP12n18LN7ISxP89V+1rbZbM7NzdFW6gcPHiSqBemsWhnTtYvjRoZ2IZGdFxbaPMbCUX66z9Vj1YZhmMvlFhcX5dOpKIpovzdfEz47O3v58iUdFUQPjYjqdOQD0O12nz59yv0bMjwE4+SnT5/67HMfOAaYZOiXs4XfpXAYwHlFyRFdEUJGkgz95UnQMeM8C1KYh5BJCKGMkDw3iQyoVCpzww/1XLp0qdlsJq1uF4+Ukjw69xyLmNT5BmCga/sSwRJ3LKoPrO23/RYAqifq1TFWxyuQlUql2+1GbIOtLz5Rxpkgh6+V4SFb+XyeWESBu7u7Sr+nHfdqR8sKA7kBxFhaJFc6cG6nPzweFCFy9h4YBiDcSG2ZyEEBqE5fOPj000+T+oN0u8its4p03bU2igxPZORFgykjlrKyF6Mp7gR6dZmGvDYBA/hsNovnT8pDKfkRPwrxPA+v5uJY8iAI5LKcluRN9ol/hDeHR9jyhBBI565ytZJFpkQl1ZVYzeHhZFqq07XneZhC+1ZQdGVw7vt+rVYzyVB4p9OZFNUj3UDdzlJ3l7Uk9FpjMDpIsfDZAkvEiVHdnqQpLnp1evM2FvxFXHpfP5vNeuJcRIVp/rALxdJAo9HgAmgmFJqVSiWcps75j6fcEEAT02g0EKg0IooB/GE7ZxpGKErTQx82pXRzwxPUlVZAoTou5CKccvyQts3yfV9SffyleO4AA8Hh1H41plUXEAPrWMYdpugTOPLBlF7k0OLSwDvQfc5FLiaRN9OnCK9du4a4vFe3UB2//Oxe3PLYwbpE9c3NTc63bDa7tLSUzWbz7KxfnNaKsQmdVaSwqN1u8w8SZDKZdrvdZGeAkjxYTR8toBNFM5kMklhcXMR2GvoGFkyqVCpIrlQqLS4uUrtGlsPI/PCQY+1SJZbliOq1Wm38PbNax0gUkYdEbyjVteWTmOVWxFDdsUylXpdYWFdLuoUGK3C54fnVeH2fqB4EQbfb1VLdH57IDTIQzzFWV6gOzoDqkMwOz9BusgOxc7kcDfI9zzNRfX9/H3ymLpqm3NDG+2TaQud53vr6Oqd6s9nEydCIhbx88MEHZD++3lWr1TDmRxH5vr+wsEAb7/gQgBspB/CxVHepaK1juEeUyb15PAdSc9gx7mRW4BNVIQGvfCwuLib6hmEYhicnJ7T2js+59Hq9YrFIK/Dku9SD1Wq1hYUFfHh8e3v7H//jf8wXqBGXj3s7nU6pVPr444+JgfPz83QXNrdaLZxiDyW0jkBr8vy73CsrK9euXUNbs7KyQgN4GEaswzm+OAzY87zf+73fg/E0n//888+z2SxiYTttoVAgJbnheeO1Wm1+fp4mCzdu3KAkOqOgInr06JFC9T/90z+lMnevIBcMRF9tktG69WSNuQgYiKmNzLjlrovkxAbwisWOUFbg0wGjA2UQznst9FfolvP5POb8oAENdLPZbLFYRFwaIb///vvUDYKlW1tbuEXRC4UCJuF58wm+1WoVk23qxqldgGE0CcdQnDr/1dVV6tXRRdfrdaROrL5x40ZleF4dhkjUq9OyAmWNlwn/q52r37lzZ0ovvcU6DCe2wvMZE35KCbmQVktgl7jaJCazLJc67sSpLifq1M1iSAzC3Lp1C4tqoCjYTnzgC3gYJBOxaeJAzFleXkYWMIEP2CoXoVqt4ukgZuB4sIdHeliSzOVyGxsbQRCgJcI8PJ/Po+tGS4QQTBNKpRJ9DBStA7UFGMPjl5qe1dVVyiamIXLpTlKdluUmS3XJ20gM1xUZ6crjeF1Sa2egNh177cKK/GR6dUtO7JoxVx/zI+RKry6fbHHiKYtSSqD0fi24fn84u8Zf7Ttk/Klh03DiGqXOAykifyWOh/hsbq9coCEIhnvp0X4pjwB4jsZ/2KaFyVMjs/OQcGSmuiXKxYcjY2WWxxEbdwuNKa6jQt6rj/OaNN9C4492qgotFf/mApLqWvLzRsTXdePKW6jKShjxSrGtI/bAKsNsxSQZEYMU7D6kUQbYrgxztEhBdZdaNnmkS6Alemp7LgIsRLXcisab0l+ScpPKjIsY9erjv8Sq7JbjtLHvn5O8skOJaJFRhhUmqvu69oLop1BUUl2JTk/veTZ51qiBkGZPg+pc2MWnFVfUxrLbM1lPngYsuTbRlQJjNZjunv9nJBcXF5eWliZC9aWlJX90AZyWwbm7Y7WZ30I4lu45o0imI7a7U/NBzJEr25zPRFoenSQDtgeekuAGmKjOk1OUc6uC0YV33/cfPXokCT+NAXxkHorTXW2IvHu+vjoNDEYbtUhsBNRSXZbGLKg+ZnQM4CfVq2N/CO/DTR1vU3fINvWKXCYFFHJaoMhoe3W6NtmjzAVkM+S7LUNMe65upzq/jsX4VrnYPI2E7LkwFZRLacSKza5X1yZBVB9TOVE91q2Vkbzd+01fhnCBVrkL/zm0ywd8FdCuUDuAN+2ufQOoPgM3HhM8CyZrLSVmKY1YsYlR3a7BVE9aqqcziZ6E4VQtelSWz+eVs7gsX2VTgKfopeHX3fjH4Zpx8HVHiPEhg5Tkt3BNxzP6SYYbWLfnsXiIBROkuou/St9whCXFpG4zvucnSssxI1rhMTGxh20DXSOtWC8xkV4dg388Nvc8b2FhQZ447Yi50dOqtSdgz7md0S0P6MR11nDoMh65K0f2LSwsyBOdJfh3IHkbR9dK84dNBErzh3Ce04ODg6R1oXWDiXutgsjcl1womIy33J0gJjyA59oGulHKwKFXTwH+yfTj42PltNrLly9L+s2ZT89VoPCcB6aLq4U0UqtNq1xJKFGjRmplu+ZOdem+st6nh2i0iXF3m0m5vXty3GCZhfHLITIPCia5Wy5FcU+K6hynp6fz8/M4hvrKKObm5nDBz6lWDqzmwlqQBlx/85vfzAwPuEeIqQXhYr/xG78hDSMDSB5iSrhixje+8Q0yW3vmNo7pVaL/xm/8BtfDs4zrd955x/d9xzI3uS8XmBKimTN2HAzESIffmmBpyFsT20Ijk6RAi4ZJrcBz9Pt97WKVfWotv8Euv8duR14HuXNOAoNwehmWj8wXFhZcXuO3g9juDjQ0T548cSlwrcNpw6cBmdakHGmqIFMHYlQyJST+Yqy7QUqWtJgG1S1puRxyxKGcdqQFHX7GAyO2b9weHcDnWeUb+44Ihm/705I7vw7EJiLTYp7S/J2cnLgUrKWKJ+eoMW4WJfHe2UNrlYUv04CxV7eUmt0+Ja5FTzQ1qltSjBwOPNNS3a7Q8lcrn+J0RG6SPS0yWwmZEkxVPB2PVSGTm15O00FrlSkj0yuoyVA9EgWtlZEIwxDvlk6W6tPDuR+xPCkDJnUS62A6T4bGwfiZmixMVmnDp1cs+tNd7KUWW7KxAgRJ9dgob3FxMAWHTNlwcHvOtUg0sORLEdDKTAqauXrkXGTjF+tr16t/TZC0Zk2unAKkMHXcCwhZPtFF6NW1aStGm8S4cKzmaEj1ia/Ac/10oSybaSOOacY5Nlj2crZH1DpcirgmBzDBEkvqjNXzZsAlv+kwearLcEvGiOouwimgLJITEOK4SM61uazJx9oT6abc7pNwmYq7AY5wrAhTjTtCkdfqdNfzBiA2m46loQ3XU10Wt7uVifKm9OoTr7akrq8QOyltpter85KxU3pSbNcmLW+Rb1kELE4ZjXqOyRVjlbzuiM3mwJnqJjhRPZG5iaJMhOpwbn94WliLFgAAIABJREFU4NHW1pbyERgJ05sn2ndOCPy1cxfYH4bbhwbu4IUwqY59YOhjpZjFL+0CUsZigF3DGwB7NieCCW+MHVjrTwGckg/glTy72xAOv0KTdIubZa8b7WbDNd4JWVpait33xne8ueyWs0C7A08LnotisShzZ2r1lBbQvc2lOtI6lincgki0LHZJLubuKhcB0uAUpWS6axKYwAenTNFjdRLVS6USZqqpbQDVW61W7IxXOdeV46uvviIBBeFwlq6ESLFwuDTAL7Q4HUL5C5ycnJycnNCFFq+c8Ytf/OLVq1dHDD//+c+fj+KnP/1pNpvtdDpJK8JS0e4eLJ3YEj0a7WDcTb0IUDjJA1OUkhJi0ZaA6loZbQL8rkUhp7pjMVn05PP5ZsJDghMlMSXNFweoiyAIouSrM+6eakHkQHWyTfl7XkiUurRZIctEytCkKjHVtcbJBBwz/7pQPfoasL3f76emeuTgqVImEv1HrNcqklKDYmG6opi4ElJlyo5FJhEsqlwftpnELHXggl6vN/4WmrdUnwhSU33g0LFbYkWjvZwSxa5HXiRyPxdMVpvUbMlsCij6OZyW5Swy3MooIc+j8XbLUVqzGcBfHKqnq+lYJKK6TDFWvxSL/SvVKsnJC0VsfExWG1dryvg4MCUxGJPqJtWOuQ3DcJxenaeVguraFEP2OqoSLuVDw2aYdCA9PFOR2dWS1nSsczhS3RTdMTkl7iCVo0c6qkSjLmEy3jHQ8W5quOQrBaJRGvJbNqrbk49E+VpUadHv93u93vz8fLFYdCfM2dnZ8fGxfJfTTvWzs7Pd3d0gCLAw/pOf/OTx48d7e3vr6+vdbpeL3b9/PwiCo6Ojhw8f/sf/+B8fPnx4dHQUBMHh4eHdu3ex0o7V7yAIsLh9dHSEhW6EPHz4kJv3+PHj//yf/3MURe12+/DwkK/kc/v/4i/+gj+G6Pf7Dx48+Lu/+zvHYkkKWU1JqR4JaqXzy3QRpSXSnthcJ3JXrYbUkBnnJpnKyrFkeCqEmJdY08Exn1GqAXwQBPl8PpfLlUol+GU0pLrlA0lhGOKQI+xduXXrVhiGQRAghMR6vR6ONMVFu93GIYe9Xq/ZbOZyObCR74S5f/9+Pp+X22NIZ6VSwedc8HwbWfA8jzdMYRh6nodhDoXkcjn6OIS2VAejNHMsQJO8O9WjtBSdOLQ2JMr1OGLjYCI5NeVdG0WlukVprIBMTHsrElTP5/Oxe8uAs7MzbETL5XL4KNL29jbiant1nhA+zIKheKFQIKojEDIIwW6TXC5XLBbxF1vxvOGJsYPBgBQ+fPgQTUw4/IwMpQ5T8/n8xsZGc3hGKvRUq1VKF5I44BkHKlPJnJ6eDgxupxSsVkwKKNXHhe1Ulw5gd4OZQZqhLS4LZJQUSlJg2mWiJKf/4JRFxTgmyqLs9Xr8M8kun0mjDyrTNw/RWCj9pAL6HlMYhr7v3717N4oiEJvH7fV6lUqFtrUuLy9TG+T7vvIGXqVS8TyvWCzSbjPskCMZClxZWQHVPc8jhmOzLUnu7u7yloKoHrFJu1KGpjqWtWmKwqvD8lxd6h9cGMJrcyrNvrCYVCHEYjJUT2E6hLEshw2t2k87Kh94pDMYiOp0iriF6icnJ+hL0WdST45uvDI8zLDf7yv7aqGc/wUTEBcD8rOzs2aziUE7UlEm4aVS6eHDh7iAhmB4PDM2FGD0Xq1WMZpAk+T7fjabffbsGVKPRvtVpdhTVxwXcKG6EmVwAaiuQJrtQoPZQGvqYLwydE/dRvXIrb00WeBiYhiGmUwm0RYa4gwaiOPjY4ycLVTHBtVKpYJ1AXoNptlscgJHQw5TK4PzHkFp3OI0Rvjx8TExpFKpyA9dl0qltbU1sJc2t+P7sOAwdfjN0aPXM5lMo9FAYORMP61ANNpSmArWcQCvpGWv6GlDMUObtQsCi/Hauy65dodxrq4kbzLaYqK8JfWn2C0XBAEW5PhY2k71aLgsh8l2GIbb29sYLWP+zCfY1DkT5aQMieXz+W63m8lkTL065gg3btzAxIFeemu323wk3+v1isViOEQ0HO9QHi1VEFvsSpmb4DhXjwSpTJbMBtIGbvDAYKe9KGIFJgJtKo75TQHXXt1kkKN9JovpuXpSu+XDtqWlpVarZZIPw3Brayufz5+ent6/f//LL79stVr7+/u5XO7FixeKZnT11Wq1Wq2Wy+Vr167xGTiJQeHLly9zudzZ2RlRHa/NRFFUrVZXV1evXr36+PHjfr/veV6hUHj58uXLly+///3vV6tViJ2dnT179mxxcbHdbj948AAP/xSqc1iKXRs4cKP6r371K5cBvP3u7KEtHykzsPrzOWLgVpjjJ3TJpNpeNFoZLhlTP6NU53NRU/Z4cjIbsQ/boijCDJ8WxnAQGg3dFVU0nEavDtYpxMOCwr1790qlEmb7GAgozRDm6lEU8ddsr1+/rli7traGnh/DB4x3wjAcjHqqUlCmotaG88JUcj0YDGLn6srf1whKXixOomQwVjIduHLFTrvx48BGdXt52S2z6yExuBdRPVEmuYzLc3VQHa9kY1ytPJwn0IJcrVbDsJ96dWXJLQzDYrGIuQAm6tDPG4VSqfT8+XNclEolDPXv3r2rpFsoFCBAT/6I6kq5mUpeW8im2pGFqaW6S1qvBey+xMvBJdbAXJLpEhrTbBfEUJ3McrdYGx6JngHgVFciulg/cKZ6FEVBEFDfC37SbhzExe69Xq+HSXgwPCMFzEeXyw88wfy/XC5TCJb37927RwJIAltosOQOtbdv31asvX79eqVSoW4c4w6F6jzXSsFailpbKTwkslJdpiITvfhwcSdLYQ50hRC9vlSXpkRuKzTaInAxXRnAp86kC9WjKMJyeqVSwfNqRERgEASnp6fK+W10DeU0BECrgVvKqD4IAiI/Wo1sNvvq1ato2KtjWW5nZ4esRWYbjYaSo1wu9//+3/+TBTKIo7r2bqSrUx4ldgXeXu8XHHbHMOXLIqZcJIU2oXQ2O8JpD7wMN1msFAEP1KriVJfaLHYrYo5Ul/Nti2TEPhdNERFCu19DcbISxaUM0qN49OcIx8dn7Jmlab8iIMvcpMckMBhlPpntTvVYM84X0rz4KtdlyjFWCgx0re1Uk7Z9RlKbpBKuLWVtuNZ67QBeuZAG8CRIj30F/twxZuUpZctDLNVkSld7C3WB9X9TLEcv1Nb+LBHpfHjgZrmSU6l5IpBWTTwJBelfdzGJWeLK5FP36pGguv25+psBbZk4+geXGeiofnp6ms1mMe5QhF8vKPmVF+nAlY8JUjUphS5Ql+W4KZaiVCQjXZtkqgMOheo8rov1A0Z1lwH8W1hwenoqdwrZ693dZ2YJJV8yJB20ysfRJgPl2SSO800XaHbLmYqMC8gQJVwGahXidReF6nYDFElcgOr0pgotnlvekOuN8SX2iM3e5a1pYBwnM3m/Eg6qh6P78ybCvRnDns2kZUXhifTY40pTgame86vfGGuBVkCWqbboJcIwnAjVo+HDcMun12Pv0nfXx/k2u+k789bvr/96wV85fEI5iML3/Var5QuYzpyQsLwg3O12ea8+eD2pbnKPgRtRpRJ7eGqdAx1l0ul3hL5XNyWsLc3BaDNhiS4hl+WitFTHwrjsgdGH07K5I0xUkTTjL6iAk61WSyEwtuJoX9Gzgx/eQK2JqdFRQmQLpVwowBs4ysDEnV1JOTkl2J3TxaOknonDZO1UEzVS3WSiKdBerNqImJmMQ/WvLZSjJmQI/6CV9pbpvAolIekbifjmHmVSoHQV+wcJqe4oP0G4jN7HGeHHvO6iQAYqcS1i2uS1D9vOq6ynCnvZWjI78XJIpHCQiudad5oZLAYkzW/Cok2P6a3yEGI+TREbX1vKMq5JFVbg6SGZrK23mF45uFe0yT1MniP1zxKW1JMWTppivaiYMNUHCRtFE9XdU4+VeQs7XEo7Ac90bjB7RKMeyMNNGdRmeaySvWAwUj2KI1Js4UYORfyW6lOFUoxjFpeJVNpbligzQGTwRpdSityav9QFqIRMNgkLEvfqlsK1iJmSf0v1KSFRMSZVKJW7h88GlLpihiVrLoETxLT181SAmI9Dj2OuS07GpPrFh8n5pEysHlP0iwCeTZOpSaiaALGGRW5UV+7OzAORysQ3z8iCsj1Xd8nqQNeCKqoseOOpngivb9652Vo2mqk6LqQBSogUNhmvRNdKTqPEpgGZ9wlQfWBtxe3RLVRPmrfUMD3n0O6HNYnxENMz6jcYFh4Opkz1RPqT5mhKZaW9nngqCox74B3tkCWu3LJHl1RPlzGJyTKNtE11l7K7GamFqdlCRibVJFlIlYiKKWAyYKBraJLmyEUsRUElipIaSmnYXndxzKolikkDhStUT40wDJUd43zfuH3TOG2D7Xa7dB27c9bS5yuvwVhs5temRiQpFacxmnBpEUwMlHdNUdLBlLrdM2PB9WjvKhfuOsexKil4QsbXXRztsBttCceFpHq6zIdh6HleNpvNCWSz2YWFBZdTorSABnnOFFcuE8XLM/zasv9c7mPX7oGnkyosb8vgt9VqKW/O4CUZ7WZ++is3/He7XWr1otFGZKBjrLbGLc6tdf2k0KqKhGcm9StLRJlHd53jRB8TMR+cskceszSjKOr1evPz8+NTvdfreZ7HX2LtMDx9+rTT6cCzeQiH7/uPHj1SAhHSEmi323RB141GgwT29/cR8vjxY/xtt9sIxF+gXq/vM+zt7e3t7SFwj4H+lsvlP/zDP9zd3S2Xy5ubm/S7u7u7s7Ozu7uLv3/4h39YLpcRXi6Xd3Z2/uAP/mBnZwcyOzs7m5ubv//7v7++vr6+vo7w27dvb21t7ezsrK+vrw6xtra2vr5+7do1fLJCGXo4uqzknkkgEj1NOqqn8J/UcC8BrYWznA/Gf4XGEllSPWlB93o9fLA5qd0c4fAgJ051dFP47XQ6yktp2q4MYjwuv+Cq+F1qRLTdJtfM0+Xm4QJ6ZOqKQiUv2tyRkUoJKMVi6swVPZVKhY6vSTc7cPeK8amewrxzxCzXbt9YqnPH1dJDcokzRHLexECFRZLYijbLhYyikFbJi8nCWOO5HvnLqe77PlFdduyOUAjJrxWfSUF1E/nfQoFtAB9Z1yQ4w+3yFgRBwKnuUmeyIQTVcUhDYOjDtd2XJKEkuaJKS3UeKK+1dDJx3mSPQn6l2dJqMMlg6ZEGEdqM8FxUKpW5uTksT3ied3R0lKiKCaZq1VY69y7F07Tcnh7J35i2w/gdeAssURKVSxiGQRDgKzTuIxm56G2iejDaj2lZJ6klSa5cBLquT/KKK1R4pTC81+txDfyvHGhoxyMSJpNMbY0lOqhOwKFUsR6iDdTyOZbqFuEZ8DB1Ei4Rz2cAPxGqJ4I71Tm9fd+n88wJnOqSTpIesiuWNAiCoNVqKaok+S3DdZJURt0ylhJdEeNwobpcPpBZU2R8McP32Vx9bm7u0qVLoDpOqnHxEJPbyBA71S1sT+Rv6TBVqs8SMQP4qaLf7wdBMD8/f+vWrZOTk9PTU/zaEQTBxsZGNpv99re/ffPmzS+//LLb7eK7aNoBPBbS/VFQSMDW6p8+fRqMNg3//J//81qtxlXhqRXnG1bpSZXv+9CD61qttrCw0Gg08BcJBUHw9OlT4hJufe973ysWiyRDK/8URemfFYUU2Ol0Pv/88xs3blSrVaIx8ou7zWazWCzu7u4GokFUlMNIovqlS5cuX778s5/9zLF+Facy+dhADNQVYemf2qbB0aqvLcalulIllrtaBEGQyWTm5ubkg2uCcgt/EWtubu7KlSvZbJYOVFS6UzxVpifVlUoFgdvb257nKSeoNhoN+pYjJDc3NxGCuEEQgOoIQXQ+OFc6UkhWKhWMDqRtvL/d39/Hth8Sq1Qqm5ubPEoghhi9Xk+ZQfi+32q18IjeF0DEUqlULpd5WooMb/IqlcolBhw1mdQ3LAKJqG4ZBThadUEw+/51kr26heom/aB6qVSSDgeX5d9LJRLm83mi+rVr1yAAqivO2mw2s9ks9qXgAoFLS0u0m4WEFxcX0Shg/cn3/dXVVZzTjJ0wIC0OUcf+mVwuR59wlVTHgW3ZbJYaCEREEvjSFoRlU+X7vud57777LuR5K6C0GvhqJfJCkjh2Eqbm83kYgE04QL1ep4QQHdt1JP8VqpsG8ClcSMth0y0l1htA9Qlqc5nzj0V107DKJCARjK7AuyAIAhAGJxwfHx/zubrCOvCZeiccC+H7Pj7YCv6jdy2VSqurq4hbqVRyuRyoTq0DiNRoNCgh9O2bm5taBuICbK/X60RptB21Wg0NCsIrlUqhUMDxr6Qnn89fvXoVAwqlw+c98O7uLmwDsT3Pa7fbnuchIdC7UCjAGOzJy2az6+vrxORsNpvP55eWlqg0eI5KpRIN4Ofm5ky9uqMLaftnHmK/jt5SPW1y41Kd4rpUgEwlCIJEe+D7/b4/HPpqV+A5DXAEcqlUoo4XhAH9aMcrdaEY09LwIQiC1dVV0onusVqtYnQA5HK569evc5L74jF+LpcD1f3hKKNSqXQ6HVCOJMvlMloiolmlUqHWR1HO2xSQlutvNBro1WmOgAaL2pFKpXL79m1cIxfYPKv06ngs12w2ieqWAXwiFxqYwQUskpFoDtxTP3fYGTeN1yJTUt1UMSmort1CYzdGviVCVKehPjkrujulJ8xms9VqFXMB6sdAY95M+L5PVEevTlRH/4lOslqtajtb+s3lcvv7+ySDFDudDpRQFIXqSJT6XgtWVlZASJrI1Ot1Za6OXp1QqVRu3ryJtJA1tH1EdW4/X5ab1ADeJOxIda28e+rTgLsB2owouFhU1wZS9VCgXRV6dZ+dNJ7CHt6rYyGdfLrRaKytreXz+WKxSGTe2NjAeHV5efm9997Dune73V5eXl5bW9vY2CgWi7du3ep0OteuXSsWi61Wq1qtLi4uLi4u1mq1QqGwvLy8ubm5vr6+trb2ySef+KPbWh89eoQpNPaoz8/P/+7v/i4W4dfW1ubn5wuFQqPR8Dxvfn5+b2/P9/16vf7RRx+99957m5ubNIuu1WrLy8vVahUb2jE2oQV/oNPpbGxsbGxsVKvVer2+traWy+WgPJvNbmxs1Ov1arX63e9+N2DbZra2ttCItFqtQqFQKBS2trZu3769sLBQq9WwFO/7Pt4UqFQqly9fTtqr2ytR8ROtgEJ1U0KWwAsCWRSx2b8QVLc3sWNSPUrFdmUAH4xC9rfKjJqmwXIpm4txYERAr5Epp6wUi0UaCwD0xI5C8NCLkqb30mhaTk0VzqLjIfxFXVxgXY0kYRItwmFZjue6VCrReIG/b6fMgDBZKJVKLivwJm82IRr1eOkz/MKOFG5zXk2DiTszSDQZ1bVVpQhEo9VsV4hluclSnVPaxHa5AzzQ7TzhGgLzZhjtUUq0viU1K+nKEK4cm+doyr24uEhvxeK5gNyuJ3+JtHjEgCmMtnBkKaWjuqxNWbNaX9IK2GFym5lxyRF27kw73QRUT1TuFMWuMxAr8No6s0Pbq8veSeGw4tbaQOVC4RKxUaGrRQMWuvzR7bRKXN7EaPe9aUEDBG1DplCdL78pLZpSbr6Yqzs+V5cMTOQzWg6b4prcRhvi6FTTgGLwjNNNQ/XIobVWLkwIJtqr846Us0i+AKO4uNbdJQP90UZBy0YtD5U3SQLdzlztXl3ZjmhfU1GaCfniinwfTps1JZv+cLTPqX54eGh3EkvVmxxGe8sRFrdJ6kizxGC2fftg4r06SSoXJkyW6rJX51S3sJ3zShJVy3ZTi+CPLtFJGksLFdCIPRjdA89Jawe+HsMTevHihSKjbX14LIqbaLeciX4UbnIby11Hl0vqNueL2duZ4HUXe23JaouSU11bi7Ho9/tnZ2dYHqcd79g9LnmLjeW0B14Z61rQGf1SDS2ekSqkiHVy7SnoxCj+mCBgu9ntbQctjCvaaOs+byB4lM7wczo8v1KGoKRVLBb5Crx9D7ziJBYZ6UuxrmXyN6lHMeYCYvaGJevVI2vrG4kMxCqXVHeJJRGGIfbP8cPJsaDNr/nx5pbPs9FOeBfwD7n5o5+y5JCBTbb93vf9drtta2mGULYD8dZBaRrsIVKJ6VY+n3fs1QejJJesmwakfkf3S+Fmk8K5JO36FZpBwkZX0RMZmlhtr85TdMFgMAjDkLamz8/Pz6VFJpOh12/wLo28y1+5yWaz8/Pzlu9PAviOpfZTkxS+uLgovzApPzi5tLQkvz9ZGgV9fJJuYSMwb/K0LSBv5iqVSq1Ww27i1FQ3sXGCkMpNPiyttdydIHhCpsKZAZJ9cMrFSqXQ5QVHoJurKxeOoHfXHz58SOSkt6zpmofwrd2XBGSgjKL9xXCXR+fpyoQAPkiOtYSHKxFhgDaPFnABau+opeP6tVSP9WYbWceDdDmtVXabpwdZFDycI93HvNxhnKtrS2GgazItFWDXFk1oWU6RfP78Oe+Z+a8EhWcEyNdNcU2qZKwrV65wtVyGGyDJZk/OJIPkXGx2V0vtheW5utYNXLxlHCj6tSZZPMfdzSYLbSlNFWmoLstXWwHKtTb5iVBdwfPnzxXfxTvtnFTEvTkdyTEydyQDVzLn0C5IAUsU6ldNsZQsKLlT2hdtZhXjpR4l0dhvy1l4OA0oSUzQkaaK2Ztno7rWPuWvpfQjh1ZTUj1yaIzt6Pf7JycnL1++fPXqVRAEr4Y4YvjLv/xLXDx//hy/z58//4u/+IsgCA4PDw8PD4+Ojg4PDx8+fIhfwpdffvn8+fOHDx8+GOLLL798oMPBwcHBwcHdu3cPDg4ajcbdu3dxfffu3Tt37vzoRz+6MwRu1Wq1Owy3b9++ffv2D3/4w48//hjXuPj4448//vjjmzdvfjzETYEbN27IEAXLy8v/4l/8iw8//PDDDz+8fv369evXf+d3fuf6EB9++OHVq1f53w8++ODq1atXr1795S9/aSl8zj3FAUzkTA0lxUn5z2xgsX9KcKW6ez1pY5nyM6kV+JnBPpt6LY5kVIyUf5Vz3ZRbWp1avtHFNGBPSGvShYIpO9NDYqpzSXsdRA5NV6IB/AWvvDcMiZot6QN2J7HAMYqLDRcZg9HWagadRAzV7QUdWweKpEzeneqvRf29SUh9kMtAR/XImfPuku5+eNGgtXzaicbslhuziC01B4G3VH8jMxUlZ7hS7ynkeboXoVQtNphyMVXEb4xVbg10DNQqkdUQMfLjr+m5urRnnOKILfR0aiel6iL45cRhd2XtXwuZ7ZAKZ4Z0rmUqlqnikiwvC8csNaeEK1FMYkEQ4PtqUsBixhuGNylr2rqWjmERMzmMVkZe2K26INDmYtpGanbLaTk20LW70u6BoHqka0HoutPpZMZ+3cUR/X7fZTdSXwcK/+qrrxz1TAOU7nkZEAs7S93FtOEWx5iGw0wViQxWqjudB6pUt9QBF1CqLbaqZBRcBOZvyyWquTAMaV837QCXe8ItULZ/87/83Q/T+yHad1HpAtc9hrOzs94o6ESqMCEitoRGD8mUB2OTahpIZ2ztWPxnqphINieoyp6Eo/FUy/QElNe4ImlaT1UH8JbkHW9ZcjIQDYr7AN5SXlEU4X31UqmED7kpdNW+1KG8+MGRF+DvltCX2GJB77TgK1GJoCjRhiCQvwCj2Ekvwyh/+Zswsr2jQpPv/zWbTcdWQ3qU3TESwaLK5CEXDbJ83N0+mhLVY0s8cqvRiJU7ifm+T1RPmluSDMMwCALP83q93jnWq9LN2nF2dsb78F4clM9OyI9MWN631757KxtBhdi81aPrbDar9SQTx1wcI7XX2aGVPxf30Jo9MDDOrop7l0kgDdXtpsTWhKInMlA9k8loe3V7nqPREuz1eqB6bKyJY8yx8WCUA5OwaJLgfoOhE0JkRfNYJueZEiIDsSXOpYS1hmnrPdY8E41dkJjqLuWuzY8227xX5wIu1UZq0Su6UP1cavqNgTvVownx3EWPNrlZFUl6DAz0np79RqrzhE2FaCl6BQMz1efn52ffq3/11VeOkueOKS22pygBTnUFsr5iKeoCFz1SJlGmkspPCqZ00+XCBYmp7ljQjmJ8AG/PpEk5QlyoHgRBqVSCzIMHD5rN5jjDIS0wvjDdUv5aDOCFIGUQEoyeWmeapHExjhSTnV6vp52ru3jFjMENS5rNaSNpLiaFcQfw0nptfrQh0ZDqeNiWNKukNoqjOh4++b6fy+Ugg2MPQQ8+fVCAxTPtLS2re71ePp9/+fKlsmpdrVZLpVLEOHxycqLMXLTgi3D4zFu320XqWC2jdD3PA6ux5ucPj3zJGA66XVtbw6KgEm4p9teI6oNZMTxRQuebi2RUlxa7hFhUaXt1izZtHmLn6iCA7/ue55EwrTPjvETpwcQfqRCqoE251Ww2Hz58CHJChp6oczFQXfvom/fVODsdhyKDvS9evABFcVQTJCuVClox3/dpHwFW2j3PA9X5Sr7v+4uLi/yxf6VSefjwobb0eIGYVuABpbqj2RJe2jADJEpIlk8UV1ATNPWSKQ2tBYrFLiWuqOLZi6Ko2WzKT1PYoR2p2qn+8OHDSqUCfqLjXVtbo0d0+XzeNMR9//33iepcBtsBlImr8tgMMpVKBX/xPIwk9/f3kfEgCCBDpzIq9pRKJW94DHsYhs+fP0cTg9YK2rzhmcrNZrNUKrXb7Xw+j0RzuRyKF3/94bHwKysr/IFcpVLBeMECUJ2vHUivVRzU7irThj07E0HSVAaCAgMrrSZoqo3qloRjZbThMntJqd7v9+GpzWaTiG3q1SnRly9fZjIZdH0YUa+trVHPzGPxdiQMw+vXr3PbQrYRDVtZQvb9hiAI8vl8EAQ4QRGDZwwcbt26BZshCWJjaN1sNrFfcG1tDf1tJpOBSYPB4NWrVyAtdePPnz9HW0BUp8aCzoq7ffs27mLAO0hLAAAHsElEQVSQL9ujfD6/u7sLtdQSxRY+Gi/Kr9Yd3f1kqohEMzQRTFCbYmc0e6orSSpGaM3VGmeyWMleq9XKZDKbm5uPHj168uTJkydPnlvxH/7Df0CXNT8//+6773744Ye1Wu3w8PDFixf2ufrh4SHo1+12j4+P/+RP/mRvb+/+/fue57148QJk+OlPf1qv19vtdqFQ6HQ6oHqn04mi6P79+8VicW9v76OPPgJbFhcX33333bW1teXl5Z2dHWxL3tvbQ9wgCBYXF+v1+qtXr7rd7ieffHJ6esop99d//dcLCwthGHY6nVwu1+12wdterzc/P4+M9Pt9HKj8/vvvb21t7e7uvv/++5VKpVgs9vv9paUlRPl3/+7fbW1tLS4ubm5uHh8f42jnWq22v79frVa3t7c5jbvd7tWrV9GsvHr16vHjx1tbW57nra6u/u///b/tvkJUl1wyOaUDK6cCiwfOHloDBqNMUYSnYXkM1dOVslQSGXwC41X0kPJD6LT9U35ZnT5sOD8/j+7OvgKPoSwmvblcrlarYbiLk95KpVIQBHfv3sUFZrDUq/d6PfTJvJ/3PA8T18PDQxqYYEWgVquhe8c4IgzDdrudyWQQCHtevXrleR4Z1uv1dnZ2ouEgWRlo0GsCvV7v+fPn6KipV+/3+9jTitRLpdL777/Pt7vSmgJ6fho1hGFYKpVgocvDCN6rD3Sd+cVBZO6xpNmxGZ8GBlZ6y+yMD81LrNq0teHRaIevtYnHNRmhPCsK41AqlfBh01wu9/jxY8y6aXVd4uTkxPM8OD3GzPV6HdtCMZ3GQSuHh4f4sCzGw2EYfvjhh1iox8IVxuQIQcMRhuHJyQmi0DxiaWkJMkR1WhInCw8PD8FYNDdBENy+fTsapTqoizkO2hrP8/b39xWqw2x6M6fX6y0vL9NLOLAkGhKbqI6ZCNpZlOqLFy/svqJQ3e4b54hYeyx5lHft8qmhWOKSozGRnupKSORQKAMH2sei2WyiG8cyFVyW9sBr9d++fRt+Tyvw29vbFIt6WhASfAadbty4AapgLBAEAcgfsV79+PgYs27M1bPZ7LNnz/AAH61Ds9nE7J2b9ODBA2gGgbW9OizEhkLkNwiCdrutUP3OnTtYg6DBCN78wcMFZLnf7+OJQ6/Xg7X09AHKK5VKvV6314uyLKc4g91ZZwlpnklGuspgtlQnYxwzNQ5cqe5YoEpOZPaUC1OgBfJpsGlZjvDs2bNo+IQMPVixWKTVNeIVBgjYE4alL1Cd1tIxgMdInpblXr16hSfkxNtnz54hIXrWVS6XaSUc2N3dhQFYPOv1erJXp9xRXJAflhDVT09PaWmt1+tRohgvoEHp9/uwMAgCPN2kXp0W/GO35WHo9Lr36navG8yW6spfl3ylxoSprggoBWqKLosgUcYsVOd6iOpRFHW7XWI1xdrZ2cEzOUzgwzC8evUq+mesFOTz+ffeew8DAUwiKpVKuVym59ug2b179xBCKwj379/HSITs2draQi+N8F6vVygUMFznVAdFs9ksBvB4JEar6Bgp7O3t4ZEhBvBYaERLpCy/R1GEXp1aN74PJxac6lS8smYvAqRJ0dRImw4DMzUsmRoHto2xsWXH7bbbN9A1DTLDUsAF/X7fZWPss2fPqtUqfVIGK+2FQuH09BQh/+t//S8cDnFycoJOD3/7/T52rR0dHf33//7fcRckPDw8/Ku/+ivy/pcvX96/f7/f7x8fH9dqNc/zqtVqFEVfffUVX4FvNBr/9b/+18PDw7W1tdu3b5+enp6dnX366aenp6fHx8fLy8tnZ2dRFPV6vX/1r/7VvXv3sCfn5OQE/XOr1cIwod1uR1H03/7bfzs+Pj4+Pm6329vb281m84svvtjY2Lh9+3axWNzZ2Xn48CF/IpjNZrvd7v/9v//34cOH77//Pix0gYXq0cVju4JobKqTnolA0eaei9TQU12m7W6N3T6p05JVx8KKHcCbwHu8MctRUUKGafVrl7uV3XJ2e7BFhysM2HdvaB0OJUObEaPh3nvEogfyjrlTBvCRGIKl9pCZwTGn04Zi0myyoN9Co01eWqmNZReju1zMJC8LSJZXNKS6ZQX+LSaC147qJjvPHdKeRJlKh5jdclrLYiWlDL/lkjFT6WjzEPuwbUw4PnYeE+fyZchE+TIN4GWtxdbvtGGyYYJFN1kkylo6pKG61jK76ZGB6qZMmsoiMoxse+zVLkyzTRmmh/Om8NkQm2Oc+pslQHVc2+vO7lQzQGTon86p5IwYOHd+Su5SIMEeeMXEWDElcJDcOewp8pLCAJ5/a9H0TUXThxaVTyniWn5HUUJ+tk35hqz2e2/0QTgFveQQO4ycQJv5aWIf6ytY3tf26i6OMTNwYxTDHBgxO3CD02UwEeJPd7FbqbXDVNwmPZFoFyySUjMu/uZv/uaXv/zlycnJX//1X5+cnJycnPxyiP/PADqPWYbwE5ppB/7R0dHPf/5zyxb9J0McHR2dnJw8efLk0aNHtL0fwJHMuIVrXDwSODg4+Oyzz5SznP/sz/7s3r17uL53797du3fvDYHDm3F9//79XTeUh6gaUK/XcQExSxXYHWMGcPG0CwJu82RzakKyN9ve4i3e4oIgKdX/f/i2MLjSDPfzAAAAAElFTkSuQmCC" alt="" />

6. 释放对象

如果一个分配的对象已经不再需要,那么必须使用kmem_cache_free返回给SLAB分配器

aaarticlea/png;base64,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arVms+m0w7IPax79gC2teVoSGsnpcOWTowmnMh0jDUU8qXLwzgzyOs8ZXak5U8zeaA080Kk0H/HjyTXOGCHuhxAYxA6BlzIwLOHWplIepr4BZkQpJIYOMazznJpHaWzfvdHIB9ty2yOUoP2r8b711lvOVUcR7XHUarWrV68uLCxUKhVkF2sePBYCD7Q1Gg1Y9jUaDeBqNBr1eh1qEizXoihaW1vDogW6aCOtgk7NW1tbi6IItOApp+b1+/1mswnP8OEyDhejUOcePXoUxzEYHMdxs9nc2NjgNe/WrVtF1bxUyrocokT6RBqeiTJhJmRU8vwURRmKMhk/IYJqnuEP0hvt/JjrCrHVSyZ2Eu8bTS895TVDi8+FwPEokcLuEIsRcCgd4XYoctgs2iPK5I54u4DbLPplECRSzTNMmhky9SD/1wiIKA3af/jDH7733nsffPDBBx8RYG+vAAAgAElEQVR88J6Jd99997333rt169Z777137dq13/md3/n85z//pS996atf/er777+/u7sr1rxWq7W0tLS+vt5qtba3tx8+fLi7u3v9+vVSqfT666/fvHlza2ur2+1ubm5GUbS9vd1qtaAQ9vv99fX1arW6ubnZarW+9rWvQaN4V6/b7ZbL5XfffXd7e/v27dtRFCEZXFDFgve1r31td3e30+l0Op033ngDKm6lUrlz506n0+n1erdv375z506/36/VavV6/ebNm6+99tru7m58vh0Ula6trUHNW1paWlpamrzm8RzIKspIJy3ltIyy6bmFhtjZINs3Y732JWTkiGRegnQ8WLYWxxgnmimLO2V35HgVGS5fILS4hdCLMeTsTihS1n2BFuYmsJ3S+l3rL61DRXa75jmRyWE8F8UdCXFZYzE6OjFDJAYnHPj4eaVSWV1dhVker23eunWLVyOoOnhtE1pgpYXXNtvtNmx9hHt+8D4X0FIul+Fe3fLychRFuDKL2VYXrG3dbhdWe+I6L4oivLYJlRKqbMzu8NVqNTCp0Who+zah5nn3bdopKvYFZ+GnQtIgvHM1G2wDREW2tZr9IZQGrD0sjllZ7ZsBtF53WniIC7ehQGSVSS3xmmQYbwRNczzQ1NwmORJC1KUBXazp5cdGzUtItL0Oes02hIdQavYYHZ1kHAWBjuBnCmC7ShzHztbNePx+Hq0f5XIZbozh3btmswmlCO/e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" alt="" />

7. 销毁缓存

如果要销毁只包含未使用对象的一个缓存,则必须调用kmem_cache_destroy函数,该函数主要在删除模块时调用,此时需要将分配的内存都释放

. 依次扫描slabs_free链表上的slab,首先对每个slab的每个对象调用析构器函数,然后将slab的内存空间返回给伙伴系统
. 释放用于per-CPU缓存的内存空间
. 从cache_cache链表移除相关数据

0x5: 通用缓存

如果不涉及对象缓存,而是传统意义上的分配/释放内存,则必须调用kmalloc/kfree函数,这两个函数相当于用户空间C库malloc、free函数的内核等价物。我们知道,kmalloc、kfree实现为SLAB分配器的前端,其语义尽可能地模仿malloc/free

1. kmalloc的实现

kmalloc的基础是一个数组,其中是一些分别用于不同内存长度的SLAB缓存,数组项是cache_sizes的实例
\linux-2.6.32.63\include\linux\slab_def.h

/* Size description struct for general caches. */
struct cache_sizes
{
//cs_size指定了该项负责的内存区的长度,每个长度对应于两个SLAB缓存,其中之一提供适合DMA访问的内存
size_t cs_size;
struct kmem_cache *cs_cachep;
#ifdef CONFIG_ZONE_DMA
struct kmem_cache *cs_dmacachep;
#endif
};

\linux-2.6.32.63\mm\slab.c

/*
* These are the default caches for kmalloc. Custom caches can have other sizes.
*/
struct cache_sizes malloc_sizes[] =
{
#define CACHE(x) { .cs_size = (x) },
#include <linux/kmalloc_sizes.h>
CACHE(ULONG_MAX)
#undef CACHE
};
EXPORT_SYMBOL(malloc_sizes);

2. kfree的实现

\linux-2.6.32.63\mm\slab.c

/**
* kfree - free previously allocated memory
* @objp: pointer returned by kmalloc.
*
* If @objp is NULL, no operation is performed.
*
* Don't free memory not originally allocated by kmalloc()
* or you will run into trouble.
*/
void kfree(const void *objp)
{
struct kmem_cache *c;
unsigned long flags; trace_kfree(_RET_IP_, objp); if (unlikely(ZERO_OR_NULL_PTR(objp)))
return;
local_irq_save(flags);
kfree_debugcheck(objp);
c = virt_to_cache(objp);
debug_check_no_locks_freed(objp, obj_size(c));
debug_check_no_obj_freed(objp, obj_size(c));
__cache_free(c, (void *)objp);
local_irq_restore(flags);
}
EXPORT_SYMBOL(kfree);

5. 处理器高速缓存和TLB控制 

高速缓存对系统总性能十分关键,这也是内核尽可能提供其利用效率的原因,这主要是通过在内存中巧妙地对齐内核数据,谨慎地混合使用普通函数、内联定义、宏,也有助于从处理器汲取更高的性能
内核提供了一些命令,可以直接作用于处理器的高速缓存和TLB,但这些命令并非用于提供系统的效率,而是用于维护缓存内容的一致性,确保不出现不正确和过时的缓存项,例如在从一个进程的地址空间移除一个映射时,内核负责从TLB中删除对应项,如果未能这么做,那么在先前被映射占据的虚拟内存地址添加新数据时,对该地址的读写操作将被重定向到物理内存中不正确的地址
不同体系结构上,高速缓存和TLB的硬件实现千差万别,因此内核必须建立TLB和高速缓存的一个视图,在其中考虑到各种不同的硬件实现方法,还不能忽略各个体系结构的特定性质

. TLB的语义抽象是将虚拟地址转换为物理地址的一种机制
. 内核将高速缓存视为通过虚拟地址快速访问数据的一种机制,该机制无需访问物理内存,数据和指令高速缓存并不总是明确区分,如果高速缓存区分数据和指令,那么特定于体系结构的代码负责对此进行处理

实际上不必要为每种处理器类型都实现内核定义的每个控制函数,如果不需要某个函数,其调用可以替换为空操作(do{}while(0)),而后由编译器优化掉,对于高速缓存相关的操作来说,这种情况非常常见,因为我们知道,内核假定寻址是基于虚拟地址,那么对于物理地址组织的高速缓存来说,问题就不存在,通常也不必要实现缓存控制函数
内核中各个特定于CPU的部分都必须提供下列函数(即使只是空操作),以便控制TLB和高速缓存

. flush_tlb_all、flush_cache_all
刷出整个TLB/高速缓存,这只在操纵内核(而非用户空间进程的)页表时需要,因为此类修改不仅影响所有进程,而且影响系统中的所有处理器 . flush_tlb_mm(struct mm_struct * mm)、flush_cache_mm
刷出所有属于地址空间mm的TLB/高速缓存项 . flush_tlb_range(struct vm_area_struct * vma, unsigned long start, unsigned long end)、flush_cache_range(vma, start, end)
刷出地址范围vma->vm_mm中虚拟地址start、end之间的所有TLB/高速缓存项 . flush_tlb_page(struct vm_area_struct * vma, unsigned long page)、flush_cache_page(vma, page)
刷出虚拟地址在[page, page + PAGE_SIZE]范围内所有的TLB/高速缓存项 . update_mmu_cache(struct vm_area_struct * vma, unsigned long address, pte_t pte)
在处理页失效之后调用,它在处理器的内存管理单元MMU中加入信息,使得虚拟地址address由页表项pte描述。仅当存在外部MMU时,才需要该函数,通常MMU集成在处理器内部,但有例外情况,例如MIPS处理器具有外部MMU

内核对数据和指令高速缓存并不作区分,如果需要区分,特定于处理器的代码可根据vm_area_struct->flags的VM_EXEC标志位是否设置,来确定高速缓存包含的是指令还是数据
flush_cache_、flush_tlb_函数经常成对出现,例如,在使用fork复制进程的地址空间时
\linux-2.6.32.63\kernel\fork.c

//1. 刷出高速缓存
flush_cache_mm(oldmm);
...
//操作页表(操作内存)
...
//3. 刷出TLB
flush_tlb_mm(oldmm);

遵守先刷出高速缓存、操作内存、刷出TLB这个顺序很重要,有以下原因

. 如果顺序反过来,那么在TLB刷出之后,正确信息提供之前,多处理器系统中的另一个CPU可能从进程的页表取得错误的信息
. 在刷出高速缓存时,某些体系结构需要依赖TLB中的"虚拟->物理"转换规则(具有该性质的高速缓存称之为严格的)。flush_tlb_mm必须在flush_cache_mm之后执行,以确保这一点

有些控制函数明确地应用于数据高速缓存(flush_dcache_xxx)、或指令高速缓存(flush_icache_xxx)

. 如果高速缓存包含几个虚拟地址不同的项指向内存中的同一页,可能会发生所谓的alias问题,flush_dcache_page(struct page * page)有助于防止该问题。在内核向页缓存中的一页写入数据,或者从映射在用户空间中的一页读出数据时,总是会调用该函数,这个例程使得存在alias问题的各个体系结构有机会防止问题的发生

. 在内核向内核内存范围(start、end之间)写入数据,而该数据将在此后作为代码执行,则此时需要调用flush_icache_range(unsigned long start, unsigned long end)。该场景的一个标准示例是向内核载入模块时,二进制数据首先复制到物理内存中,然后执行。
flush_icache_range确保在数据和指令高速缓存分别实现的情况下,二者彼此不发生干扰 . flush_icache_user_range(*vma, *page, addr, len)是一个特殊的函数,用于ptrace机制
为了将修改传送到被调试进程的地址空间,需要使用该函数

小结

. 在内核进入正常运作之后,内存管理分为两个层次处理。伙伴系统负责物理页帧的管理,而SLAB分配器则处理小块内存的分配,并提供了用户层malloc函数族的内核等价物
. 伙伴系统围绕着由多页组成的连续内存块的拆分和再合并而展开,在连续内存区变为空闲时,内核会自动注意到这一点,并在相应的分配请求出现时使用它,由于该机制在系统长时间运行后,无法以令人满意的方式防止物理内存碎片发生,因此2.6之后的内核版本引入了反碎片技术,它一方面允许按页的可移动性将其分组,另一方面增加了一个新的虚拟内存域。二者的实质都在于降低在大块内存中间分配内存的几率(这是导致碎片的根本原因),以避免碎片出现
. SLAB分配器在伙伴系统之上实现,它不仅允许分配任意用途的小块内存,还用于对经常使用的数据结构创建特定的缓存

6. 内存管理的概念

内存管理(Memory Management)是操作系统设计中最重要和最复杂的内容之一。虽然计算机硬件一直在飞速发展,内存容量也在不断增长,但是仍然不可能将所有用户进程和系统所需要的全部程序和数据放入主存中,所以操作系统必须将内存空间进行合理地划分和有效地动态分配。
操作系统对内存的划分和动态分配,就是内存管理的概念。有效的内存管理在多道程序设计中非常重要,不仅方便用户使用存储器、提高内存利用率,还可以通过虚拟技术从逻辑上扩充存储器。

内存管理的功能有:

. 内存空间的分配与回收:
由操作系统完成主存储器空间的分配和管理,使程序员摆脱存储分配的麻烦,提高编程效率 . 地址转换:
在多道程序环境下,程序中的逻辑地址与内存中的物理地址不可能一致,因此存储管理必须提供地址变换功能,把逻辑地址转换成相应的物理地址 . 内存空间的扩充:
利用虚拟存储技术或自动覆盖技术,从逻辑上扩充内存 . 存储保护:
保证各道作业在各自的存储空间内运行,互不干扰

Relevant Link:

http://see.xidian.edu.cn/cpp/html/2608.html


7. 内存覆盖与内存交换

0x1: 内存覆盖

早期的计算机系统中,主存容量很小,虽然主存中仅存放一道用户程序,但是存储空间放不下用户进程的现象也经常发生,这一矛盾可以用覆盖技术来解决。

覆盖的基本思想是:由于程序运行时并非任何时候都要访问程序及数据的各个部分(尤其是大程序),因此可以把用户空间分成一个固定区和若干个覆盖区。将经常活跃的部分放在固定区,其余部分按调用关系分段。首先将那些即将要访问的
段放入覆盖区,其他段放在外存中,在需要调用前,系统再将其调入覆盖区,替换覆盖区中原有的段。

覆盖技术的特点是打破了必须将一个进程的全部信息装入主存后才能运行的限制,但当同时运行程序的代码量大于主存时仍不能运行

将内存覆盖技术和cache更新技术进行类比,等效于对cache直接进行"简答替换(简单删除)",即不采用任何的排序和选择策略,粗暴地将cache中的某一段数据清空出去,这种方法不适合在高并发、大流量的场景下

0x2: 内存交换

交换(对换)的基本思想是:
. 把处于等待状态(或在CPU调度原则下被剥夺运行权利)的程序从内存移到辅存,把内存空间腾出来,这一过程又叫换出
. 把准备好竞争CPU运行的程序从辅存移到内存,这一过程又称为换入

有关交换需要注意以下几个问题:

. 交换需要备份存储,通常是快速磁盘。它必须足够大,并且提供对这些内存映像的直接访问。
. 为了有效使用CPU,需要每个进程的执行时间比交换时间长,而影响交换时间的主要是转移时间。转移时间与所交换的内存空间成正比。
. 如果换出进程,必须确保该进程是完全处于空闲状态。
. 交换空间通常作为磁盘的一整块,且独立于文件系统,因此使用就可能很快。
. 交换通常在有许多进程运行且内存空间吃紧时开始启动,而系统负荷降低就暂停。
. 普通的交换使用不多,但交换策略的某些变种在许多系统中(如UNIX系统)仍发挥作用。

需要注意的是,覆盖技术则已成为历史;而交换技术在现代操作系统中仍具有较强的生命力。我们今天在操作系统原理相关书籍上学习的相关调度策略,都是针对"交换技术"的具体实现,而不同策略之间的区别就在于2个问题:交换谁?何时交换?

Relevant Link:

http://see.xidian.edu.cn/cpp/html/2609.html


8. 内存连续分配管理方式

Relevant Link:

http://see.xidian.edu.cn/cpp/html/2610.html


9. 内存非连续分配管理方式

Relevant Link:

http://see.xidian.edu.cn/cpp/html/2611.html


10. 虚拟内存的概念、特征及其实现

Relevant Link:

http://see.xidian.edu.cn/cpp/html/2612.html


11. 请求分页管理方式实现虚拟内存

Relevant Link:

http://see.xidian.edu.cn/cpp/html/2613.html


12. 页面置换算法

本小节学习页面置换算法,本质上就是在学习内存的"交换策略"

进程运行时,若其访问的页面不在内存而需将其调入,但内存已无空闲空间时,就需要从内存中调出一页程序或数据,送入磁盘的对换区。(这和cache的动态更新原理是一样的)
选择调出页面的算法就称为"页面置换算法"。好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会再访问或者以后较长时间内不会再访问的页面先调出

0x1: 最佳置换算法(OPT)

最佳(Optimal, OPT)置换算法所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。但由于人们目前无法预知进程在内存下的若千页面中哪个是未来最长时间内不再被访问的,因而该算法无法实现。这只是一种判断算法的最优标准

最佳置换算法可以用来评价其他算法。假定系统为某进程分配了三个物理块,并考虑有以下页面号引用串:

, , , , , , , , , , , , , , , , , , , 

进程运行时

. 先将7, , 1三个页面依次装入内存
. 进程要访问页面2时,产生缺页中断,根据最佳置换算法,选择第18次访问才需调入的页面7予以淘汰
. 然后,访问页面0时,因为已在内存中所以不必产生缺页中断
. 访问页面3时又会根据最佳置换算法将页面1淘汰
. ……依此类推

可以看到,发生缺页中断的次数为9,页面置换的次数为6

访问页面 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
物理块1 7 7 7 2   2   2     2     2       7    
物理块2   0 0 0   0   4     0     0       0    
物理块3     1 1   3   3     3     1       1    
缺页否  √                      
0x2: 先进先出(FIFO)页面置换算法
优先淘汰最早进入内存的页面,亦即在内存中驻留时间最久的页面。该算法实现简单,只需把调入内存的页面根据先后次序链接成队列,设置一个指针总指向最早的页面。
但该算法与进程实际运行时的规律不适应,因为有的页面虽然是最早被调入内存的,但是一直在被进程访问使用,这是程序的局部性导致的,所以,简单地根据调入内存时间进行"内存交换",可能会带来严重的"换页抖动"

访问页面 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
物理块1 7 7 7 2   2 2 4 4 4 0     0 0     7 7 7
物理块2   0 0 0   3 3 3 2 2 2     1 1     1 0 0
物理块3     1 1   1 0 0 0 3 3     3 2     2 2 1
缺页否          
这里仍用上面的实例,釆用FIFO算法进行页面置换。进程访问页面2时,把最早进入内存的页面7换出。然后访问页面3时,再把2, 0, 1中最先进入内存的页换出。由图FIFO算法的换页次数明显增加了
FIFO算法还会产生当所分配的物理块数增大而页故障数不减反增的异常现象,这是由 Belady于1969年发现,故称为Belady异常。只有FIFO算法可能出现Belady 异常,而LRU和OPT算法永远不会出现Belady异常。

访问页面 1 2 3 4 1 2 5 1 2 3 4 5
物理块1 1 1 1 4 4 4 5     ,5' 5  
物理块2   2 2 2 1 1 1     3 3  
物理块3     3 3 3 2 2     2 4  
缺页否      
    1 1 1     5 5 5 5 4 4
物理块2*   2 2 2     2 1 1 1 1 5
物理块3*     3 3     3 3 2 2 2 2
物理块4*       4     4 4 4 3 3 3
缺页否      
Belady现象的原因是FIFO算法的置换特征与进程访问内存的动态特征是矛盾的,即被置换的页面并不是进程不会访问的,因而FIFO并不是一个好的置换算法

0x3: 最近最久未使用(LRU)置换算法

LRU算法是一个被广泛使用和接收的cache调度算法,它的调度思想具有较好的合理性

LRU算法的思想是:选择最近最长时间未访问过的页面予以淘汰,它认为过去一段时间内未访问过的页面,在最近的将来可能也不会被访问。

回到内存交换的总原则:交换谁?何时交换?对于LRU算法来说,这里的评判标准就是"最近最长时间未使用过",如何计算这个值呢?

. 用一个链表、或者具有链表特征的数据结构来保存数据,取数据时只从头部取,插入数据的时候只从尾部插入,这样,每次数据被使用后就会从头部取出,并插入尾部。这种策略隐含的思想就是越尾部的数据就是越最近被使用的,
头部的都是不经常被使用的 . 为每个页面设置一个访问字段,来记录页面自上次被访问以来所经历的时间,淘汰页面时选择现有页面中值最大的予以淘汰。

这2种算法都能满足LUR的要求,再对上面的实例釆用LRU算法进行页面置换

访问页面 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
物理块1 7 7 7 2   2   4 4 4 0     1   1   1    
物理块2   0 0 0   0   0 0 3 3     3   0   0    
物理块3     1 1   3   3 2 2 2     2   2   7    
缺页否                
进程第一次对页面2访问时,将最近最久未被访问的页面7置换出去。然后访问页面3时,将最近最久未使用的页面1换出。
前5次置换的情况与最佳置换算法相同,但两种算法并无必然联系。实际上,LRU算法根据各页以前的情况,是"向前看"的,而最佳置换算法则根据各页以后的使用情况,是"向后看"的。
LRU性能较好,但需要寄存器和栈的硬件支持。LRU是堆栈类的算法。理论上可以证明,堆栈类算法不可能出现Belady异常。FIFO算法基于队列实现,不是堆栈类算法。
LRU算法编程实践(以int为key的CRUD操作)
#include <iostream>
#include "lru.hpp" using namespace std; struct stHashInfo
{
int hints;
time_t tmodify;
}; int main()
{
// Create a cache
typedef plb::LRUCacheH4<int, struct stHashInfo> lru_cache;
lru_cache cache(); struct stHashInfo a = {, };
struct stHashInfo b = {, };
struct stHashInfo c = {, };
struct stHashInfo d = {, }; /*
cache[1] = a;
cache[2] = b;
cache[3] = c;
cache[4] = d;
*/
cache.insert(, a);
cache.insert(, b);
cache.insert(, c);
cache.insert(, d); cache.find();
cache.find();
cache.find();
cache.find();
cache.find();
cache.find();
cache.find();
cache.find();
cache.find(); cache.itemerase(); for (lru_cache::const_iterator it = cache.lru_begin(); it != cache.end(); it++)
{
cout << it.key() << " -> hints: " << it.value().hints << " tmodify: " << it.value().tmodify << endl;
} return ;
}

我在google code的基础上进行了小幅度的改进,让这个cache类库支持增删改查(CRUD)操作,链接在下面给出

aaarticlea/png;base64,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" alt="" />

LRU算法编程实践(以string为key的CRUD操作)
使用自定义的HASH函数将string的key转化为int型后,再插入cache中,在选取HASH函数的时候,需要注意几点:
. 运算量不能太大,本身cache存在的意义就是为了减少CPU运算负载,如果因为插入key导致更多的计算量,则失去了用cache的意义了
. HASH函数要有足够的敏感性,对微笑的扰动要能作出较大的值变化,即需要有足够的抗碰撞性

code

#include <iostream>
#include <string.h>
#include "lru.hpp" using namespace std; struct stHashInfo
{
int hints;
time_t tmodify;
}; uint32_t Murmur2( const string &str)
{
const uint8_t *key = (const uint8_t*)str.c_str();
uint32_t len = str.length();
uint32_t seed = ;
const uint32_t m = 0x5bd1e995;
const uint8_t r = ;
uint32_t h = len + seed;
const uint8_t * data = (const uint8_t *)key;
for ( ; len >= ; len -= , data += )
{
uint32_t k = *(uint32_t *)data * m;
k ^= k >> r;
k *= m;
h = ( h * m ) ^ k;
} switch ( len )
{
case : h ^= data[] << ;
case : h ^= data[] << ;
case : h ^= data[];
h *= m;
default:;
} h ^= h >> ;
h *= m;
h ^= h >> ; return h;
} int main()
{
// Create a cache
typedef plb::LRUCacheH4<int, struct stHashInfo> lru_cache;
lru_cache cache(); struct stHashInfo a = {, };
struct stHashInfo b = {, };
struct stHashInfo c = {, };
struct stHashInfo d = {, }; /*
cache[1] = a;
cache[2] = b;
cache[3] = c;
cache[4] = d;
*/ cache.insert(Murmur2(string("")), a);
cache.insert(Murmur2(string("")), b);
cache.insert(Murmur2(string("")), c);
cache.insert(Murmur2(string("")), d); cache.find(Murmur2(string("")));
cache.find(Murmur2(string("")));
cache.find(Murmur2(string("")));
cache.find(Murmur2(string(""))); cache.itemerase(); for (lru_cache::const_iterator it = cache.lru_begin(); it != cache.end(); it++)
{
cout << it.key() << " -> hints: " << it.value().hints << " tmodify: " << it.value().tmodify << endl;
} return ;
}

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqUAAAG6CAIAAAC+0qi2AAAgAElEQVR4nOy9d3gb14G3e/jnvc+9z/2+e7dn106zHcfJejfxOol342jXGxWri6LkkmQ3iSPHiZMviWzLUpyIkmWqWJSVWC6x6CSWKIuWKJISewd7AUn03nsliY4ZtO/+cWYGg8HMYABSpiyd3/M+fMDB4EwBMO+cghnw1ltvnThx4uDBg2fOnHn55Zc/e/+Dn/viP3/+ga9A7vnSVxEIBAKBQHzieP755w8fPvzOO+98+OGH7e3t4Pjx4y+++OJzzz33mfu+fO8DD777/oUYlo3j2WQql0z/71UnIYTUGhP/eImVBOckyiTHB5aL8BKGJOlkWQnxkKic5UR2OZG56cRvHunleHppBSzH03zl07YiRJANJQr2P/keke8gxoT2jv9vxC2GgK8n8SVl/2LSv6HhZAYSSmbCicLHFElBRJJZTrAComUS4wLPpjLZHzzzo8xq59xbb69uge/8fPVXsuI8veGxdCYH9+F7f7p0/5e/cs+Xvrp///433njjwoUL4OWXX37uuef+8m8+9Yf3L/jCmNabULhxlSet8qZVvqzan6sAjT+nof4N0KBP9+fU/pyqECWFL4+iMrx55OUgY8WTk3lyUjYkDNxMFoqYd+WZc2UpxM6s2EUwC3FmZ53ZGZJpiCM77chO0ZiE2LMTNorMOIU1M2bNjFkzoxBLZsSShojMKZEpNWyE4EMGfMiADxrwAT0+oMcG9Fi/LtmXJ0GnV5fo1cZ7aHRrKGLd6li3OtZVSKc61qmOdqo4UOZpV0bblREmihLcoCOHhBlcl4evy4QQ4qFNGmqTLvMhWWqTLLVWRBsD6RIs87p0+bosdEMWuiEPtyvCHYpIhzLSqYp0qaLd6li3Jt6jjfdqE726BHy/+nVYvx4b0OMDBnzQkBo0poaM6SFjesiUHjJlhiHmzLA5m8dyUxiiMBMMVoDpk8QQFxxbR+6ZzKCJIj1gJOg3pAYMqQFjqt+A9xvwPj3ep8fgu9yrTfRoEj2aRLcm3qOJw+9dtyrarYp2qaJdqkg3SZcq0q2MdKvC1JRuJUGPKk+vKtKrjvSqI30k/RqCAU10QBsd0EYHtdEhHcEwRB8V5YmNGGIjhtiIMTZWyLgpTjFBMmkuYIokEE3vePIHi1HMFojnCcZtwbi9BAkHB8EIfuqNc5FkmuXZRUE4CwlG8bee+35Ao7Vcb7Vcb7XfaHW0tzraW90drZ6OVk9HS6CjJdDRstjRstzRstzRHO5ojnQ0RwUT6WgOdzQvdzSHOlqWO1qWOlqCHS2BjhZvR4u3o9Xd0ersaHV2tDraW603Wv1SyZPfXrcUz8jcuMyN6/ypQDTT8MGHf/2pu6HywXPPPXf3PQ+82/Bnsy82ZwlL7DG5C1eW73sNRSCnCeTUAeKBJpDTQvzkA9pTmkDhCUEgp6JgPQ8Qgq9C+E8dBJ0ZeApgOTnInwRkGcy7svOu7Lw7OweBZwCuwjOAQv0zzgAopuzZKXtmyp6ZsmUmaUzYMhPkGcC4NTNmTY9a06OW1KglNWJOjZhxkRkfNhEMGbEhIzZowAb02IA+Saefji7Zr0v0aVmJ92kIegqIEahjPepYjypPN40uVayLOGaRKOlEeOhkIUzRAVEIJMRKu3y5FEvtsqUbK6CdQr4Ey+yQL3coQp2KUKcy3KUMdysj3apojzrWq4n1aeJ92kS/NtGvS/brkwN6bMCADRrwQSM+ZMSHTPiwKTVsTonMaZE5LbKkRZbMCMSaGbFmR1ebERIRpFj/5Yp/rRW+WuLn30wu5Q8YUtD6UPn9BrxPj/XqMC7ld0HlKwnrU+LvUka6lWFo/S4lu/Ip6/cVWX9AE4XWH6RZf5jF+rER0vqjxtgow/qk+Cd4rc/ue8HW5/L9SS7fC7Y+w/fn9v13QKW2XLsCsV274mi54mhpcrc2eVqbfK1NgbamQFvTUlvTclvTcltTuEyWaQTbmgJtTf7WJm9rk7u1ydna5Gi5Ym+5Ym25Ym254p2b2/Mf65biGakLp7Avpxv+fAnW8sHOnTs//4UveZYSM4bFynxPN72W7vhgThvM6SCBnB4SJNDR0HIRYD9F4IO2PmW1SahY8REIOTmAJwFcjQq0k4AsEzeBxJ2VeLISd1bCOBWgMUcidhe2BLiys67sDMSZnXFk6ExT2DNTduoMID1hS09Y0+PW9Lg1PWZJj1lSo5bUqBkfNeMjZnzEhFGIjEmRMTnMwJAcojGoTxQzoI8P6OIDung/k1i/Ltav5aSPBw1FlIteOmpIhE6PmnmM4yDMQ7cy3K0MlWK5W7HcVSbdiuVu5TKjqB5lqEcV6lGFe1XhXnWkTxPt10bh7hrQxgZ08UF9fEifGDIkh41JkRETmbAREz5ixkfNqVFLatSSHrWkxyzpMWt6zEqc9o3bMuNUs5B9dRiH2LJjtuyYLTtqy58BiFZo/U+g+Fkr+oPc4if2SbH1ofL1eD+EUH6yR0tTvjreTVM+zfqE8ruUkS7iZDHcpQzD82POin6x9aH4tZHBQuUXWT8GIazPqnxjjKF8hvX5fC/I+uy+P37693y+L1P5wSj++x887VMoDZcbDZcbzZcbLZcbbR812j9qdFxpdF9p9Fy96Lt6MXD1YuDqxaXmi8vNF5ebL4S5CRX+u9x8Ybn54lLzxUWyEO/Vi96rFz1XGp1XGh1XGu1NjdamRktTo7Gp0Ts9XbPu3xi+l7rwQDRz/5e/Ul1dDe6999633vujzLJUme/ppteSmocW1wdz+sWcIUhgXCQwLeYf0zEUoqdgO0VgJ5BHu3L8Oa2/4ASC50yC/XSBap/InyVkC/DmkdOQebIyT1bmzUq9+dMCCYPC04KCcwJ6HwGFk2geIHBkZx3Z/NmAPTNtS0/a0pO21KQtNWlNTVrxSSs+YcUnLNi4BRu3YGNmEhM2ZsJGixgxJdkxJkaMCREdQ0JkiIsMcZGeYJiNIYIYCzpBDEK0kCiDAUFESqAJl0Yd6i+fAYgmxFKgNjKojcCj7bAuNgwPr4b4iDE+YkyMmJKjpuSYCRszY+MWbMKCT1jxSWtq0paatKUnbekpWwa2AE3bs9N2olloho6zchhdTpPkGQDhfrLSz7D+bex7LuWXYX1awz4BaX2o/F5dsodQfrxbDckrv0tFtoepSAjZh7uU4S4V0/p08fcWtfBTyh+gfZW4m/dj9OZ9Rl2ftaJPWT8QTW9/8geBcNLsjRQRNXujZh8fFjZ8oeRrr/9uOYbRJ1p9UasvWv/mn6r37OOh/s0/Wf1Rqz9q9cco/KHk775X45FINR806D5oMHzQYLjQYL7QYLnQYLvY4GhscDQ2eBobPI0N/saGQOP5xcbzS43nlxvPLzeef/PAr6nC3zzwa9Ypy43nFxvPBxrPBxobfI0NnsYGd2ODs7HB2dhgb2ywXmwwX2wwXmwwXmjQX2hwjo9Xf/Mbxb7X+VPv/enSV7/6VXDX5+/3LcendP5yfU9vvYeC1NFMD51tXMyZlnKmxZxpMWdeKo2pmMUCWE8U+M8bSqJnJcgJ4ySj+ESB0ZFBO1HIUqhpqEiUvkLIKfRTBLmPPCcoprDZgOvMoOD8AHYiODNzzozYmRE707OO9KwjNetIzThSM/bUjD01bUtN2/BpGz5lw6asfExakpAJBubkhDk5TmGCJIQzZoozMUKYHYQM4PFl1MDOiL5comxESqMLi1bAiC7MWuyoPjpqiI4ZqEMnrDAlJszJSUtyypqcsmJTNnzahs/YUjP21Kw9NetIzTrSs870LPGOQ7JzTuIEkepXqpg5d0EP1IyTcD8hfrr16XX929r3pcXPub3sDft06/fpMLKiX6D8LlqnGNWxVWj9QvGXU9fvp1r4i6xPKR9C9etzNu8X9ehDoO+9y3Gdc5nARREqRl+Mm8BA4lmKHz3xxlIUM9AmQqr37PvfvKnes6/wJWGDO+xdTpx9YodbLFa9d0793jnNe+c0750znD9nOH/OfP6c5fw5+/lzjvPnXA3nPA1v+hre9De8GWj4PYS+xOo9+36//wBjCjnnm76GNz0Nb7ob3nQ0nHM0nLM1nLM2nDM3nDM2nDOcP6c9f057/pzm/DmHaHjnN/6l2PcyF76czN3zpa+Cuz5/fzSZmtRW5HvK9AGyQk+ZfilnghZfzlmWc5alnHU5Z1vO2ZZz1nKwsGFmIOBMQujpBe0ko4IzCcZJQ1mNECW7IfiGMjB6FiiY4wxYzg8k7qzEncnjyiy40vOu9LwrPedMzzlTBI7UnAMXO/BZeyls2Aw7yRlrcsaanGaSmLYmpi2lmWJgphPnYpKFGJ0JiGkFGGMTxmgpIhOGyIQhMl4+E4YIS4Gm6IQpNmmKTZpjU+bYlDk2bY5PWxLT1sSMNTFrTc7asFk7JrbjYgc+58DnHKk5Z2remZ53pRcIMhIXfN/JviRPlhhr4l0BnpzEk1vw5KD+ofthvR9aH9b1R21FFf3bvZbPo/xB7rr+gCkzUFjLpyr6fVQtX4f16Yi2/R4tU/mdZC2/UxntZI5xCXfBcS0KYdZXF1mfaOhiVvSHaNZnjOMbNTCVz2p9fzS9/YkfOPwRqcnHiozCzIecwK8w+22+8G+Ove5bjinMfgZCfK+w+BnY/eHTOzbYJyfm649L6o9LzxyXnTmufOO46o3jmjeO696oM56tM5+ts56ts599zXX2NffZOvfZY96zx7xnj/3u579kCJ7++Hc//6X37DHP2WPus3Wus3X2s3X2s3WWs3Xms3XGs3X6s3Xas8fVZ4+rzpyQnzkhO3NCeuaEubd721f/sdj3UheeSPH6Xsnre1bZ0+v0lOmtoZwtlLOFcvZQzgEJs2NnECKw8bOcZ+VnElywnmFwni4slXe6wN54QD8t4B3NoGaFs0+hoAmB1qeQUXgzcognI/dkZO601J2WuihSUldKQrLgxPmZd2Ds2LE5FpJzNkGIbUmxLVEZsxBrYtYaZ8EihBg/M6WJTpvLZsYcnbFEGUUVLNoaE1vjYlt8zpaYsyXm7Ml5R3LBgS04sAUnJnHiElcKvoNSd0rmTss8afguyz3Em058DHxZhS9b8YhXamiL3JeTeXNSb178c3B8iTM77chOOvIV/RUp/5Ns/UFW33NZ35ShrM+o5ffpcQJS+bCiT/xSRh3vUsWh8jtpyofW71REOhX5caydCoLy6vqayICG6Nviad7Pd+ob8uP4mMovbN6Hvrd6Q3M6Nwt695zePV/EAisGAotn+ddHT3oWoxKDhwGl2+KWfGp6wUuMHonRY/Euv771MdvYqPj4UfHxo/PHj0qOH5WdPKo4Was4Was5Was7VWs4VWt6vdbyeq399VrH6VrH6VoXyRs/+0XxeUb1nn1v/OwXcAY4v/10reV0reV0reF0reH1Wt3rtZpTtYpTtYpTtfITR6Unji6cODp34qixq2PLPz1Que+7JxRXu8cYNJNcg/SMXesZ65uU6wMZEyl7y3LOukxo3h7OOcI5ZzjnjORc4Zwrwo6TTpiTgrOEUB77KsE4n7AWU86pAzw/sCxztCuU6qrg63TgHsTA1b+gCRT0KdB7FlR0fFmVN6P0ZpTeNEThIZB7UgW4UzJWXCmZC2cDkzoxyUpJFuCAJEqyALGvkDgP87aSxOaslTNvjc3bYvQCF2z0FSA31pmUOpMyJyZzYTIXJnfhcndK7kkpPCmFJ029rSpvRuXLqHxZlY946+ndTIxf3AhHHSAaovLiJ60vdmVnyeZ9qHx6Lf9O8z2f8tmsD5Xfz9awD5XfC5WvJbvztYluTbxLHYMV/U5lrFMZ7aC17XdSFf3KrK8usH4/YX3m6H3aUD5yoAm39cdp1oe+N7uXptWOGVY0jhmNY1bjFIJY6xRrnUbX4sEjJ9zBCPyXTvWefaFQKBQKVe/ZN6d1UnBNn9M653ROk3vx1KZHLSPD00dfmT76yuzRV+aOvrJw7BXpsUOyY4dUxw5pXjuoe+2goe6gqe6gte6gre6gve6Qg8aZn/yMWgRcypmf/Aw+5aw7ZK87ZK87ZKs7ZK47ZKo7pKs7pHvtkOa1Q6pjh2THDkmPHZIcfWX+6Cvio6/MHH1Ff6Pt8X/8QuW+b25tn5Oq5qTKIlTzMtW8THWjd/RGz8iNnpEPr7TMG4N009sYpo/k3ORfd5jAVQohpof01lWBOknxdEco5wi5L+wEW666macFus4toOYDnVD325Zz1rEzVaC+m6vZYClnIcjSMbOySGCiYVzMGhdd7+8Amz5yGRezxsWsIZg1BLOGRRrBrCGY1ZPoeNEGs9pAVhvIav0UGYimGB+B2pdRDdVXgdMtvrTKm1ZBQ3hSdBSelMKTkrtxTlwYhSzP7IsAAABe7KdPxGSuZB4nH1JnUrrQ9m1QfW4hKYX/OggGLlSDLa0DjoS0DOIQCYWdjbnWb4Ndb85xPEuyYI+VxsbD1H4A9vfwzlNUoMQek9hjUnuc2hapIyFzJmTOpMyVlLuSchfWXAsAAOCIGL53Kk9K5U2pvGmVL632pdW+tMbH8nkgPjCB8tAEsnnrkz9dgXV9uvJhLZ/qy7/TWvWFip+tlj9gTPcXjeCjlN8Lla8tUH4nbNinLnGRv+hFpFMZ6YDKJ61fYQs/9TP90kP58sofZWveh8qHvp9VWS/1iCEf9uZ57hdH+IfXPfeLI019cwwmZKYf/eKQ2uK50j/PoHrPPq/X6/V6q/fs45w+MM9gUm565bP/n7zxgysbH7228dGWTY9e3/Rox6ZHuzZ9s3fzNwc2/5to8yPjWx6Z2PrIzNZH5rc+Itn6iKyQ49XV1CLgUo5XV9NnkG59ZH7rI+Ktj8xsfWRi6yOjWx4RbX5kcPO/9W3+Ztfj37yx6dG2TY+2bHr02sZHZ954/V//4v+q3PdDonEMx5NYCTAc7x8amVa7zFQ/PWzAD7sv7gT01E7kPBE60iNVoHYi544UwXZCwFPv7zteBeokHM+6L0LfM04a9ITvi08ROBsAxs9Ugfoe2klAT10VqJMU9iZkKRjiL4bhfvNi1rzo+uMO8PhHrqLzAAJDMYVnAMUUnAQE2BCdqQL1bf5s/nA/XF8FTrf6MhpSCQReqAoCpQfnR9RYDQB4aQBXuHGFG2+uBaBWrHDjCjemcGNyFqCiaEja1oPqtyW8U1xJuSs5dKEabGkbcibkLJjf3gLWXzDLndCFCZkzcfVwwYfzxT7yKUcR863rwa635tmecsSLkQrBPvUCAC/0xqR2iuIpRThijHIKFu2My5wJ+ULregBA7YzclVS4k8qBUwCcuubBVRAvrvamCHwpjS+t8aU1/rTWn9EGMiyfjVLnlEwI6xcoXwbb9t05OJqPaNgn+/JXVMW/jcTPXtGni59SPmn9flpdn678Hm2yR5uEP8qnlN9J1vILrK+MdCgj8GoTdOtTdX2h1tfQr8zDbn1S+bFhfUxkoNXy2cbx+aPpbU/8YEph+aBzhuJCF4GQ7vZLPbMMRiWGH/78oNLk+rBnlkH1nn0Oh8PhcBSfOlDTL/fOMhiXGg/d9f/IPvjT5f/4+pX/+PrVx77e8tjXrz/29fbHvtb97a/1ffvhoW8/NLr+obEND01teEi84aH5DQ9JKDY+VLdzB1U+leo9++p27pBsfAiysPEh8caHZjY+NLXxobGNDw1veGhw/UN96x/uXv+19v/8Wut/fv3af3796n9+/epjX58+feIb//P/KNv3CtL3I2MTWr3jxPtDJ/80eOqDgdcb++sv96nV5qXFoN1ms9tsi4vB966L37suhr6nN+M7KNE2u0mLS49UAbCzUxbNeaKE8mXXasBxSeFJAJv+SYj2/6KTACG+Z07Xd24FNRf0nEMK8mMLinxf2EhQ30OMIcjSyVufDpfy87D4nqH8EvqnWgXKEL/rve3gZRGzDUDrz2j9aY0/TViBsH4qLwxvSkWKpOVIFTgipv5VeXCV7PoGAAAALw1C/dve2Qo2XLIpPbjSgyndmEIYzbVgfaM1P0V6fT2ofluaVLgLcfHSfwpsbRt2JRXw/MCZvHoYgMMz8IRg6MIuAE5eZT9XgAbd9fYC67PxYlhPAoqIDV7YBQ5PyRyxSonLek8CcPKqIy53UEs3v70FnlzPwt0iaqwGW6+PeDCVB1d7ISmNN6XxEWh9aa0/rfWndf6MLgDJm57nPJLz5JJSvj+n8nNU8Z1Eqz6s4q/U97eR9fkosj5Ufj9b2z5Ufjf5u3ziGpeqaCetot+hiHaQbfsdykiHItKhIOr68JpUnYryWvj76NbnGMo3rIvRfkRKUKx8fyRF9/0FkotdMxe7Zqr37FviTfWefY0svjf+8OcHlSY3bCS4TKN6zz4zb6r37Ltc+JLLveJxqfHQ3f9DduFPHz32yJXHHmn+9jdavv2N6+u/0b7+690bvt6/4WtDGx8e2/Tw+KaHpx9/WPz4w/OPPyx5/F8gdTt30hfKeFy3c6fk8Ycljz+88PjD4scfnn384alND49tenh408ODGx7u2/C17g3faF//jevrH2ld/8i1bz9y9bFHZupPfOP//T8r9L3SlxGNjOkM7h+fufHc768//27Lz99v/uWFKzKZYSnop/v+/e4Zft/DZnxPJOeJSo9Wga3X3N5ozhvNeSM5r6FzG6hpNORWonxXONd/vArUSTg6BUr4nrPXoLjjoNj3IfcHO8Hmqy57KGsPZW2hrCDrF7mf1s7P7nuh4g+yU3BQDrAw0VQDtnVM5M8AMrpARhugN/6nCXwpTaHyIa1Hq8ARsdqLqwhs724DBwbFB6rAgUF4BmB7dyvYcMmm8uAqD6Zy51HyA2uo1L/S6xtA9TtSTOlOFuDiZ/YlAF7qTyrJM4DmWgBqZ4mzAUnrerDrbUlC4UoonEWQvmd5ig2u84ACHHGy2UDg+UEBhOD7TgJw8ipZpsIZH76wC9TONNcCUDujdCWV7uQI6Xu1B4O+1/hwmuxTWn+Kkr2+gKw+QHxmuD5XrJ80XZBo2Keq+HKyik8fu8foxV8F399G1i9Z12cq35juyys/RSofg8rvJpQfJ5Uf7aB8ryCsD8XfocjX9amrTBYqn9P6veVZn6jrc1X0Sd9bL3TOXugSX+gSXyRp7BZX79nn5E31nn2XeuYgH5KMSow//F+/Vpq9l3vnIU0k1Xv26XlTvWffR73zBH0E4zLTwc/+hfzDi1c3f+vq1m+1bP1W69Z17dvWdW1f17t9Xf/2dcPb141tXzexfd3UznXind+a3/Utya5HIfQlVu/ZV1dTw5giqX5UUv3oQvW3xNXfmtm1bmrXurEd60Z2rBvasa5/x7ruHes6d6xr376uddu6lm3rrm5bN/vm6W/8xf9due/7BoZ1BvdvLvT+5N3m77755yff+sOTfzgnkxmWggGbzWazWRcXgxdGxy6LhwT5PprzRHNDJ6rAzk55VHq0ChyZzHmi7ku7wNZrbvisJ0pMIbKzU0Y2+5OpH6DcP3mmit4gS/q+/zg1ub4/nHMRvu+sJSdvuep2MX0vraUtoi+cc0LB6zq3gPyroO97yTEBANR8oMvOXa0BOzrmQll7KGsfO1MF6nuWs7bl7NyVGgDqe5az1uWs+EoN2NExu5y1ajs2U8vZ3jG7lLUsZWev1IDt9a/sAACAV0YJ35uXsubRM1UAgGMLpkXXH3fkXzW9mJ36qAZs73j/tSpq4hQhfsmvyWmbPnKRNf78RPDqgiGY1as7NpETNjW59MSU3edVWT2s+ovqq8Dp64FM/kEgo/U739sONn7o0PrS2qF6qsiXB+1/2JZ/Hw4M4movPnppNzgqVnvFLxO+Fx/Iz/J6y+DrALzeAsXvsb67FWy4ZFV5sJYjABy5/u5WYr4NjVaVG1O5Zw8AcGCAPD+QXt8Aqt9tPEWWVv2ONKkkKrJtIrIF+53GauJ5ONGdvFYLQO0sdX5A/OtKKl3Ja7UAbG0VuRJKV0LpmnmJWtPaGYUrUXA2UPysK6HoP0lOImeTtK4nJ62/YFY44wqq5g0A2NI6TE5Zf8FMngRMvwjAi330B3G5Mz50YRfY0jpEzkDk8PTwBep7AsDhaYUzrlhoXQ9ONrsS12qh7xPXaunvy+wBAA4M4hovrvXiYx9Wg203xvwp3fBpAE6fv7yb/Cy1T0Df5y0uOUSVckxiCGbbjwEA6tsXs4ZFV8N2ALZ3TC5mDYu02V6VwI58auxevkmf5vuCJn3YhY98T2OA5ykjs2Gfsn5fXvlERR8qvwv+SC9f0Y920Jr3O5Q06xe28HNZX2BFn6tTnxrEN0xdk4emfOj7GaW9sWehsXuhsXuhsWfhEslPf3WUv//+p/uPXu6TUDT1SZr6JOMy849+8YrK7IX/NvVLmvqlH/VLP+qXHqj9HX+BB2p/d6VfmmdAemVAOim3vHzv3yiuXm7Zs7l17+breze3793ctXdz997N/Xs3Dz31+PDTG8ee3jj59MbZ724Uf3fj/Hc3SkjqnnySKrzuqScl39tY9xRziuR7Gxe+t1H8vY3i722c+s7Gie9sHP3OxuGnNw4+9XjfE5u7n9jc+cSW9ie2XH9iS+sTW8TvnvvXv/qfK/V99evvbzrx5tY3zu5463T1eydg/d5ms8L6/TVF93XNDeh72HkPf3pHNaRvbXaTlfucN5qTX6uh+94bzXmnzlTt7JTDGn9UerQKgOMSmv6lR6rA1mY3rPcPHq+CJwFQ9kTfv6FzKwDguMQVyfUfr4IPaI/hMIKai4acK5JzTZypAuDwBN330tqqfANA3/EqsKNzPpxzTJypAuC3E7Tq/gT0vfuDnQDUSWCd3h6SHK7a/YEOVuglv60CvxnL2pZdf94BAAC/Gctal11/3gE2X3FB2f9mNGtZylqXXH/eAcBrC4TvAXhlFFb0Sd+PnqkCu/+ozpoXs9Mf1UDNU7X86Y9qAKCG9Ul+XQXAsQXDYrb9tZoGddawmDWMnqkCuxvUWYO643EANjW58hV9mtrpj28cqwWVC0IAACAASURBVNrU5CJa+0VnqkA9w/c6yvf++YNV4OWhtJZo509pfKk2sn6v9uJq+Y2N4PVWL672ig+QZwBqr+3dbWDjJZvai6sHXwfEDLia4XsADgxiKg82cqkagFMtHvLxkVmVB1N5MKKbgGijhi851eJJjlyqBlvbRjxJ1eApAAConVW5kypp2wYADgwkycenWtxJlTupcidbaC7ccNGipMn+pf7Cx5LWDWDXOxKOZ10zL5HnCuR5g/mdrWDDRbOSaC3Iq535uO8k6f64wjn9EgAv9dEfkFX2La3DznjzYdLrFH0nATjZTPxrfnsLeKkvrnTFKd+rXImRxl1wt6g90PeYxotpvPjoh9Vg2/UxX0o7dBoAAF6d1/nTOlX7JgAOiaDvofIlhwA4NJIX/6ERQvObPnIZRupJ8VNPZfVByUEADoqIJn3K91KyC7/Y9/Qm/ZX6/jZS/gCv8geNLN35eeUbUozu/G5Nokud6FLHO1VUj36B9TuUUXgfpg6a8hkIqusX3WunuFOfrOjHKOUP6wsq+r5Iavd//2RaZv5oQHG5T365T97UJ2/qV9D5aKCAKxSDiqtsTCrsP/rlbzUWPzWleUjRPKRsHlJeK0VLMcPKaaX9lS/epbp+7cYP97b/cG/nD/d2/3Bv/4/29u/bO7zviZFn9449u3fy2b0zP9kr/skeyU92S366W/bT3QoGz+eRP8/8V/L8bsnzu8U/3SP+6Z6pn+yd+PHesR/vHf7x3qFnn+h/9om+fU90PfNE5zNPdP74O/MX//jo3/zVUjwjWYnvN7/++22/O7Pzndd3Nxx/4sJRWL+n2vNVHpXKoyr2vYPD90MnqsBxCdGeT3N83v2gfiAv+5yHmgILIdv/B49XgeMSqpGfVDu9mg4AAGBnpySSb2Yo6M6nfD9xpgrW6cl2/i2g5gN9rvd4FaiTFDTvj5+pAjVbdtBln7WHsj11VeC1BdiATzzWdmwB9d1jZ6peW7AuS35TtftP2qz4Sg1Vp7csZS2jZ6pAfRdRv++Yofffb68BYPcf1aTg1R2PAwDA7vfJKbB+T9bps5Mf1ZB1rOzkRzXkxu9uUGcnm2rA9o5JWnv+RFNN4T4CB0ey+mBWP3KmCtTfCOYfXyfEn/f9+e1g44dOrT/d9moVAAAcnSe79lNtR6vA0TmNL6X22v6wjXJ8+b4v8Hr1uzLex/l/Gb4/1eJJqjxJldvy7lawodGicjMeJ1tqieq+6GI1AKeuQd/na+rUqYA573vWZ10Jpcv8DtkmAdsJRBd3UY+VroSSVt0nQpibrvYSvlf0waVTgi/w/fCFXdTZwLXDANROwzMY0cVdYGvriDupIn2v9mIaLzZ6Cfoe1w6dBuB0mz+t86d1fsf5bWDTZWe+VX+knrHim5pchsWsgWgiIs8vi2bbeNm1Zr6/vaxfQvzGTHFdH/q+V4/3Fg7ioyufGMFHNu93KKPt0PeKSIci0k7zfbsi3C4Pd8j5rM9e1+ewfmFFP0ZYX1egfF8k9f2fHZyY17ZPGK6JtJAWkbZlRNcyomslaRtlRQ+5Pqq/PpZnVu1+7sWjBvvSjTF9nnGC9lJ0FDGncf/mwXt03Z29v3y275fP9v/q2f5fPTu8f9/I/n1j+5+deHHfzIF94gP7Fg48Izn4jPzQM4pDzyh+/YyawSt5VK8w/1W88ozi189IDj0jOfTM/Mv7xC/vm3l538RL+8ZeeHb4hWeHX3i2f/+P+/f/eOiVF8TNzdvv+yz0PYTX92Z2328/V1/9h5N7/vjakxePfLfpFZnMsEjrv8exJI4lBbfnU834BQyeqCLq9Ny+d0epqnxNoyE3QPM9UZWvk7jC0toqUDvB6MJn9N9z+D5Eb8Ov+UDH8hs/+zjZg0A14MN+elozPnz8pys1gDB9fdfYmartHbNMr8Pm+vrOpewMNX0xS2+6//VIYZ89Yf36dsr3ZIsr4Xs4w7EFeDh+HOxuUBG+n2D4vnAKieRQVYH7rweoij7s0ad8n4EjvNqOVgEANn7o0PjSrUerwJE5tTelHnqdcdIFANQ8rf8+355P9evz+t5tfXcr2bwP2/OlBc3770gxRnv+NaLd3vLOVrCh0QLb8PPzFDTvW97ZSrbt958C4CThfpJ8e37/SQBONsM2fJLhi7sAAC/1k4+3tg4XPgVqZ4gSFuIFtXNnXFFQay/Znk/12QNiSt730y8V7XOwpXXYFYerJHIllES3SFLlwdQewvejXlw7+DoAp9t8sBcf+t6R78sX1QNQfyOYKeqqh633dN/Xty+So/bIH+atQXv+7aj8ARpFz2YGjCSmNDWCj2rYh9anKx+27Xeq452qWIeSUn6kQxmFt5bOW18eaadbX1G29Ykf7JVu3s9X9OGV+KyLqZPvfnjk1Jvzen/fnK1z2tI+ZW6fMncQWDqmLJ0U0wV0TVu6pq0EM9ZuEonR/7OX60zucM+MlcksQS8vfYXIjP4jD3/RMNg//JsXh3/74shv948d3j9xeP/Ukf2zR/aLj74gefUF2av7Fa/tV9Xt1xz/leb4r/THf2Eo5gQnmhO/0Jz4ler4rxTH98uP7Zcc2y859oL41Rdmj74wVfvCWO0LY6++PHnqqPzyxaZ3G45+5ym67yUV+H73+eN7P3j16UuH/+vKoR+0vCSTGYIB0vfBYCwWDS0v031vzV9mp9D3hs5tAMDKPWylz4vf2LmNqMRLj1QBUuTuxuOd0oIpuYHjVWBnpySSc02eqaKa6Kn2fKLzvr4/nHOGcwvNNYcnCMEDsga/0FwD4LB8sh7vCEsPVwFK7b11VWBH5zxp99+OE+Pwf3vVTY7Pd/15JwCU4JeJ1vvfjMGheZLfVAEAwCtjWcuy6087AABkf7ymYzN8THn92IKJ2VxP/v5+9EwVAJuaXMZgdqqp/n1V1hAstDjVykq22NMr6BNNNQA21Ks7NlGd9EHJoWMLcMpGoulecnB7xzg5XH+8qQa8uqCja17VsQmQQ/eHz1QBsPFDp8a/8PKrC7Bm33a0ChydV/tSlO9V3pQqP2qPqN9TI/g2XLKpvMTQfWIc3+DrAMDzAAzWuYlBfPlxeeSova3XRcR0qGpM6ba+sxXA6XAgOtP3Lss7W2FzPTVqr/odCdlnT/bfKyVt6wF4qT+pcM2+BKhxfOa3t55spny/kFA4Z14CAByeUTgTCqf57S0nm52J5sP0KbBv3vz24dZhZ0LhTJC1c+IpqO2rh3e9vUD6e6F1PTHmbvpFAF7sjcsc5re2AHB4WuaIyxzTLwIAtrQOOuJXD5+8CsfrkcPy8w8Kh/JdPQzA4WlYPrkCCQVshIDdHO7ZAwBA38O2ljZiBJ/9vW1g42WH1j9/EICDwxldYOEQAODVBX0gow+4zm+vvxHI6oOu89vBpibXZFMNAPXtlP6PSfTBrC7oem97fdtajde73X1fbP28742ZfkO638Bs2IfK79HhPQVt+/EuNVHL71BSyo9A5XNaX85f1+ceyscYx8ds3o8N0Xwv0sfm7Qmlyb3rO/teee2NKYnG5I3pXZEC3FGIgQ0jHU+el2pPL0VxkyfKgjdq8saEYKZx6pv/5NPpDV03TF03zF3XLd3XLd3Xbd3X7d3XHb3XHb3XPf2tnv42X3+bv7/N398W4GeABf9Am2+gzTPQ5hloc/e3OfpuOHpu2HtuWCADPeKOGxd/f27rl+/X2bz6QIrue0kZvh8UyZWmU61XXr/eVN9+6Y3Oi7/r/mB2Vk75PhgIRMKhxcXF/qGRKbWLfg1dyvf0HJko6JWnVfTdl3aR/9JG5xV0z8Ps7JTS6/RE6g8frwLHJc4IZXcAAIC/0HOE3Rd2gi11Z6jBUkSXPOX7wnF5YEfnXMEP8IhF9CznqHq8ldY9Dwfbz16pgZ3xlqVs12tVANR3LmXNsO4Odr+vyZqWsqalrGmUNsbw2AKsuBc2zrve30F2t4+cqQIAbO+YDNJG4TW5yDp6/aHtZFGvLuiCWV3QdZ6asr1mE9j9niqrC2Z1+dF5u99TZbXBrHaEWg1yCrxeirJjE6hvI9Re3+bPav1ZoukeALCt/uVtYOOHTo0vM/YhObwLnG71ptXelHroNJzvwCD5A30PMUyPbXw+DrvqAQBg6+svkb/Tu3YEXhaGGIe/HlS/LaV+mDf7EvxXen09qH6plhyOB041uzGFGxturAZbrw+7k4qBUwCcaiZ+p2d5eytYf9GioA3Lh/8WjM93Ja/WAgBOXSV+30/kxb6i3+MttLI9S2T9ll20mjcMpfb8aLv1F8w0Q5vf2gI1T/k+Jus9Qb38xcO7wJaWQUdMNt+SX3Qv/EneFFFm4e/6oO9h+fTmAUV+rapfqiV/p0frW9F47X/YBjZ+aNf4oO/TWn9aq2ynRnceFGV1Adf57YBsIqI9VnXQZyvxezzHTfg93m1t/WLlC7F+viOfUD7Wo8O6abV8uvKpIXvtyki7Il/Xb5dHoObbSd9XYv3Ci/GxWT+Wb9vXx4b1sWlT2OgOn/1z2zO/+u22J37Aw3aKJ/PsYGPXk9/n46k81cL4/n1/v+PzBDvv+fud9/5D9b13Vd939+4v3F1z/6drHvjsngc+t/dLn9v75Xue+Md7nvrHe5968L6nHrzvqQe/8PSDX3iK4p+IB08W/vvEg1944sEv7H3wvj3/eF/Nl+/d/aV7qh/43K4HPrfz/s/u+MJntt336a333rX13rt+9NX7f/f9p+yBqModZ8geEhfi+57+4XQ6FQkvRUJLkdBSNBKJRkLR8HIyEceSiVgsGg6Hl5eXlpeXCN8XXkmXcXE9N/WrPLZf2Umv1VAu5/sxnrDL7/Bcia+sS+oKv4qOWdOxGez+oyZ/CR3+n9IV/3ZOT3vAQiCrp/1ifrypBmzrGC+6OoqAa59xQFxh1/WH7WDjhy7N8JkqUN/KuPKuL6v2ZWikVeQF+FTeNO0iPHRKXJAHXoeHDZYL8lytBaB2lnlBHuE4k3JnkvwNG8dP7WkX5GGH5ZI7gi7Cw3NBnoELu8CW1gHH9AsAvNBLXZCH98I7gq/Jw7ggD7GZrgS8Go/CnVS6MaUH47saD+2CPFrW6zXRr8wj7Ho7zMb8m+r720X5QsSftz5UvqF85Sso5dOgK5/D+jw/1oe+7ym6BC9H836+rj9vT9iWcF8kxcBPJ5qmE+AnVkBwBSyWQWYxfnNZimcMRTX7Er5fsBX4/nJze//QSDGDorHh0YnB4VFqyodXWqfUblPhbXI4r6fL+CU9gbS2quaivryL7LKqXejl8fnvspO/OG6O+9o4BWrvfK2Kug4u82I4bD+FL74wGbu8/Uw0/uzY5RqwrWO06Hr4XKiFM3SmalvHu0erwNEFlS/Dg9JHXmPfQ6DwpMnr7FJwX3DXjcvdeOFVdUshaVsPTl3lveBu/rK7xRBX3jWf2wJe6C3vgrv5K+/yXlJXIEWXxZ3aD3a9+cEJAE40CbryrgDYLrsrscdpV95lXnZX7sYUbkzpxvkuu8ty5d0s/cq7H+v1dO9I35e2fqHv+w3pPj1Lw363NtnN1rDfQY7aI9TOav3iur7wTn2a9fmb9ws69Q0sv9njub0e/ZaY5N0yE1Nm4u6axG05SWaKmLUlIWJe2O/sZefAkZxzYBDW24kt0HFiJW9LRofL9Oy+nzYsis3hBVtMRvP9vD0+onSLFC46IzRGFa5RpWtM6ZpQuxWuuLHk/XLKROAddARW2Su77Q11TzzWW+Hx3OeGurEN8/Z3Afa74rLcfcTPhLpF4ejlGrCtc8TPciu8FdJCtN7XXyu6n14eL0HB7fU8aToyT7rwDjo8MH89QoJJnQSrc4sdB4NSN9dZhfvrsN9ih3kfnR6imf1XPQU315m3xuZXdHOdON/NdQrur8N6c52UUtj9deh31im+Xw6s2fPdL+dmy/5OUj60PrNh35Du18Mf5TOUj3Vrk135Qft55RdonrT+DZryb8jDN+QFymet67Nbn6uiz/KbPVqnfpnKp1t/JcqvxPqcysfocN5HtDLlc1uf4XvftJ7F9yofuxLU/pyadJI2kNMGc7pgTs96P9zCe+eUhdB74xZV00vf2VbwrWz5bnJf5r3p4G1qmbe09+VU5dxplMBLIC/GJwDWF5LI6HggWTpSgkwB7ozUnZHk760OSS24UgvO1IIzNe9IzTtwfhhfhjzoLroV3kWX+xa6ltisNS62xsXwFrrEXXSpugUc5sN/F938LXQVFd0Pd3Tl98O9s8XP5XuCou586Ps+Hd6rY7btd5EVfXblQ8crwjcUkRvyyA3K9zIW63cIsT45bp+7eT+Sr+jrY0PUjfUKf6PPcq8dQRX9OKF8S0nlQ1axos88uPEovzLxs1q/hO8VvL7nVH6QkKJxKWeE+iRvCEs18rPcdG4FN62n35C++J6zxqL6N5+/ORTOUgX3M81NVbKVFAxPF+pZxoaUwpOTeHJSGhIKd2kWIB423JzMs+KCZBnMFZAhcKbFDoJZgtSsIzVrxylmbHxMWzE2khwkpi2CmCoGnubTv/8c0A4WMQYT5tiEaTUwRksRGTdUwgTEGGEp0xSbNMUmzbEpc2zKHJ+2xOGxb8aamLUmZ23YrB0T23GxA59z4HOO1JwzNe9Mz5NnchJXRuLKSNwZiTtL4MlSH1qJm9A8rNMTN8hh/OB+rWR/G/m+tPJNmf7CWn4fVcsnrZ9XvgZW9Im2fbryKccXW5+q6LNYn38oH1nL7xXYvK8vGL3PsH75yl/9in45bftlKP8m+F5Ttu8p5eetTzpSHyT0WSD+pbz489D6yFluD89xq3gGAu8Wr+evfxc0m+cbKqm7wispaM3aROXGm5V7s3JvVgZhqQrDo2FW4skuQNzZ+WJYVJqdc2XF8IGTQMzNLAMXSfFTq8SMMzvjyM44MtOOzLQ9M21PT9nTU7YUnUlratKK05mwYKyMm5OcmFhJCGTMFGdipIjxANsMRw3sjBhiI3rhRDmIlCI8oguLKmVEFx7Rh9mKjY7qo6OG6JghfxPScVN8wpSYMCcnLckpS3LKik3Z8GkbPm1LzdhTs/bUrCM160jPOtOzzrTYmYEQH07qE+vMiskK/QzZgD9pJ6r1VJ89bMb/uGV/e/m+pPj7jZl+eqs+rWGfsn6PFqO687s0iU6ybb9I+ZEbcuK3ee2KMFT+DbryZWwt/Cu2fkGPPrfyWSv6rG37k5TvhSo/ebPb9m92w36B7yfovncK9b2Kqt0WVvQhumBORzMubOo3ciicvwqeJ0hQ3ClOLLfY6EU932pGRdxPbyrPK5yyOF3kTH+TlZsFErq/59yErSmK1TtD4chOFzEFsWen7dlpe3aKg0kuHNxPlYWNkwmCDGQcYk2PW9NjlhRk1IxDRkyYQETGJDuGhMiQGGYSHzbEh/WlGdLHYdtgHl1pBuloIVE6A2UQYQce2jThUoQG1KH+MhlQhwY0IZbStOEBbWRQGxnURoa05I3LiCNpfMQYHzEmRk3JURM2ZsLGzNi4GRu34BMWfMKamrSlJm3pSVt6ypaZsmfg57P40ztJaZ6s0xOmp1frP2bZ36bi56nlE8o3ZvqN6b68+IuUr6UrP96hinew9+VD6+er9fTKfdmd+qqCQXzFzftcFX2qeX+Ep6JfZP2iij5N+aWsTzXsr57yBbXtVzyIj259Vt+HyvW9iu7RQE4VoNX4gzlNsFD/wZxukTwJYAxhK0LLBU/veKCgaV3lL+r5pjWq0/unyWZzUuduFpEv0C3uzte8xbQ69AwDhrmL3DwBsWUnbNnxQsYg1tKMcmGhwTObcCzZUUuGwUgBaYjInBaZ08Pm9LApBRkypoaM+KABHzRggwZsQI8N6JN86BL97MT7tazEBNJXjAYSLUmvJtqrhkQY9KgLLiMqgHAx3cpwtzJUAsVyV/l0K5a7lZB8UT3KUI8q1KMK9arCveoweZCN9mujcF8N6GKDuviQPjFkSAwbksNGTGTERCZ8xISPmPFRS2rUkh6zpMes6TFretyaGbeSJ3zUx9haoHlmnd6SHTKvnexvL+WXathnsz6jbZ9mfaj8TnW8QxVrV8Y6lFHq5/hw1N4Npu9pU2QcFX0u66uYF+PjqOhHCeuTPfqrVNGPU8pfxYp+Gd35Zbftl1HRp8btC/Y9RSnrE48DBOpAQWu/hjoJoFoCWEekM/xdDF3nRdX0vOA5xqAV9IgXdGCTOi9sSBe7CtrJ2evixVXtfMU3O27Ljluz49ySHilEBLHkGbYU/Eufzo65CMZBtjLM2SFzhotBc2bQlBk0pQdN6QFjesCY6jem+g04gR7v1+N9OrxPh9Hp1WK92iQLmkQPO/EedbybhVi3ShBdqigTJSRSks48YQbwZuHlECqmXR5qly+XQLZ0YwW0y5ba5Uv0Ajvkyx2K5U5FqFMZgsdfopVVFe1Vx3o18T5tvF+b6Ncl+/XYgB4bMGADBnzQgA8a8SETPmxODZvTInNaZIEQJ38iS0ZkyY7Az6q14ON6q5j+jhQ/1bzfB3+Xry+Asn437MsnKvqxdmWsPd+wz6zZ07kuD1+Xkcovo3mfVtfnGcenKaOiX86v9RIFyucbxJecXX3ll9GdX4HvIaV87ynP93TvFjwVKIBqDGAd8lY8/I1zKSVHwxVU3InBbvQxa3Ak2pwrl1c7WzM7s3WdrXZeUCkvFjmrpIuVbCaOgEOmPMVfZr67Ypuyg0Z2BugIqApwDPelk2HQb8z0G8hhwBB9uk+f6qUOIjpyZBD1w1+y8ZATeIlvFmLEKGIm0Q7yzh/8tCuj7fCKIsXXFeHmBh2iO7PoYCcPX5cJIcRKm3RZAEttkqU2yVJr+bRJltqkSwVFSZeuS5evy5ZvyEI35CE4IAtecaVTGelURbvU0W51rEcT79EmerWJXl2yT5fs0yX7dVi/Hh8w4IOG1KAhNWhMDRnTQ6b0kCkzZKJOBGkfbPOt5/jb0ff8yqdq+X3U95T4tuaV36Mlla/OK79DFWtXRtuV0RuMb0TRt4D6LpRtfRVn8z5Lj74uOlh0Cd6yKvo05SeY3fl8Ff3kx9CdX6Jtv8zu/BK+l3vSCk/aF8sG4zkhBD5+Ypz4KaI5fzTnYyVC4I1kIZ4i3GFOXEU4w1lnqAAHD8tZeylsZbFUDuUWLmxx1jwZFhYz1sW0dTFtoQgSmIOpEgS4wE0rBasMY0n8ZZGsiITRlzCUidGXMPoT9BIKpySNgaSxcGPNAcwcwM0B3BJMQayLKfhuWhfT1qW0jSBjW8rYlzL25UzxZ4b4YIduYQR8Kz8pCP4is31VlzLWJfr3NGXJfxlxc5D47pgFfH2MAczkp8HyuSrAEsAswQKsdBYxWx7ctojblwpwFOFcwp3LBbiWU0xCedwMwgV4mKQpvKtFRCg+DtzhTBm+n7cSvvdGs39qavvuTw9993kEAoFAIBC3Ou9/2Mqq/BK+D8Qy3/npQYCCgoKCgoLysQfDMIfD4fF4FhcXl2kJhULwL5VwOByJRPx+/3efP+SLpHl9n0C+R0FBQUFBuYWCfI+CgoKCgnL75+PwvRT5HgUFBQUFZU1zc30/ayrb9yKRqHgKlVWfLioK6ypxvURIOfyFC09ZJZRc4srXZ1UiZP9/PCvAOl3gzKu7PlwLFQn7nAsph3q2eP+zPsVVVNmbh4KCsna5ib6f0gfL9T3XQe3jecyzShWXU9aySqasEvhnLrcogXOWm8r2yequD4/SWKfcPNWt/PMvcArXtrBO55oHBQXlk5Wb5fvxMn0vooV/npv3WMhalVuO8GUJjPBCVuu4XEE5Jd/KlRde1ktWpcCPYT8Uz1zZ51lIOaKKfL/qOx8FBeVjC5fvo9FoPB6PRqOcvi+6Et+KfA/DfzQp63hX1vz8iyu3/OJCWI+tFUdgOfzHdJ6JPNNLlsN4arW2peT6VLCelc3PvwlcRZW1dUIK51ko/xSureN6YclloaCgfFLC6vtIJBKPx7/85S/TlU/3vTeSLr6rHq/v3YTvRWyh1ob/MMR6COMqROD8QtZESPlc5fCsD2uK9g3fDhFYFOv85W4vzwoI3DT+lRReCP/6MLaXaz1Lrj/rTmBdz9XaFfxrUrxogavEmFK8W4QsXchCUVBQbvEU+x7K/q677vqXf/mXp59+mlI+u+8dZfqef234DyLCj0eAdmASvojiA3fx0a1k+azl8M9fbgSWw7oaXIXwzCxkM1clFWxX8UTWt6n4hfw7h3ViWW93ZeF5eVnvAtfKs+6WCsopubYoKCi3YBi+h7L/zGc+s2nTpoMHD54+fbqurg4qn9P3pPX5fZ/6mH0vcH4hT5XliQrmLyvCC+FftPD9VvGbUu7GCnwJ/9sqKvSZkPeCv8CSq1dy1wnfDzwzC1k6z0TGmgh5i0tOrOAtRkFBWcMwfB+Px2tqag4cOPD++++3tLR0d3cPDw93dXXF4/Fi3zPusnNTfM9/fLnZ8/PPs5LHlaWsEsraFTwzU/8K3y4RmRWuJP9LWF/LeKri96XkHit+aiX7gX8RK5/OmML/L1jBfkNBQbllw1q/Lw5r/Z7pe7zI9zOCfS8qCutTrC/hKWol83M9W7J8gdPLTVklsK5z8fpQ07lmZi2tuJxKtmcF5RTPz/NvyfeFZ37GDPwruZJdwbpQro3lmS6kHK5XVVBOZRuLgoKyJqns93iCfD/J8H0UXV8P5bYN8h8KCsotntXy/TzD92NqL+V7iROXId+j3I5BlV0UFJRPSir2/Vxp3+uCM6bQHPI9CgoKCgrKWmclvoew+D6S9/0y5Xs/8j0KCgoKCsoapULfh/O+nyvtewfyPQoKCgoKylqmct/bMYbyeXyPId+joKCgoKCsYTAME4vFzc3NfyjMe++9B/9SuXLlysLCQoHvC5WPfI+CgoKCgnKLBsOw5uZmp9OZIAN/cL+4uBgILPr9AZ/P73Z7rFabVCq/du0a0/c06xf7PiDc98W/9xXyE2RANEGrJQAAIABJREFUXl+FqyieZXEtt2Q5XPOXm7JeXnJxt84Q8bUdss61aJ6JN3U9hX8++fcbfzki7s8z61Nchdw6nyIUFJRVD4Zh77zzDmX6SCQaCoeXl0MOh8tqtZvMVr3eJJMrx8anFArVW2+/RfN9cs6epCu/0Pcq74QuMG1cnrOU4XvWf3mOQVwHTZ4Xsh4E+UvmmX+Fx8eyXs4/c7lFCZyz3Ah8427q+vC876xTbp7khH8++fdbySlc28I6/eZ9nlFQUG7lQN9TF9ELhcJLS8vB4KLJZNXpjGqNTqFQT8/MjYxMSKVyPt/bGb/HU3kntYEZ4/KcJSp1YCWvtyPw+MWYQfjxlOtVQg5w/MfKFR4fhZewWsfiCsoRvqXl7tvK1mdVCvwY9oPwz2fJz1jJckTI9ygoKLyhfB+LxcLhCJS9zxfQ6Y0qlVYmU87Py6amxCLRuEQio/t+3p4kwSCU778YTaTGKd9bo1IHJnOV9/t7ruMX12ysU8o99glZCqOQVTk+CiyE/5jOM5FneslyGE8JXEnW9eSfn7GICtazsvm5Vol1HuH7gWsRXIXzLJR/CtfWcb2Qa2LJp1BQUD7pqdz3tiRN+Umm78c03kldcMYYIvrvXalANPudnx4UsYWxTsXHPiFzMiYyXsL/mL98UdERH5BN0CWPj0K2V0g5jJUpnp9rPfmfEjJ/ueHfUq75uSYytpdrPUuuP+tOYF3PVd8VrBOLFy1wlRhTineLkKULX1sUFJTbJivyfaHyC+v3Gt+kfnHWHJ4nfe+PZoXU71kPgqxPsU7hL4fnkMpTWvE60I+2Kz9ECiykrF3BM7OQzaw4jD1T7naxllNcbPEL+XcO60Thb3fJTeAKz8vLehe4Vp51t5RVjpCnUFBQbo+sQnu+g4Dw/d33PBBNpiY0/inD4qw5PGeLS5xwvF5p3/MftoQfsit7SrgAVssHZZVQ1q7gmZl/iTyeELKeFewcfjOJCn3GVX7J5ZbcY0I2Qfh+4F+EwKXzTGSsiZC3uIKVQUFBuZ2yGv33hPXjeJbyfXpSF5g2Ls9aIvP2uMSJy9zpQCz7nZ8e4l8b/oNyZYds/mdX8rjkgkqmYnmU3BVC1lngNoJyPMdfDv9LWF/LeKqC94h/o3hWaSX7gX8RK5/OmML/Lyjzw4OCgnJbhu77WCwei8Fb3Uc8Hp/T6bbbnRaLXaFQl/a9nfT9p+/9UiyZnjEszZrDYmt0wZGQulMyT6Yy3wOOg6+oKMVP8Syi+PDHc3Dnmb6So2RZL2ddZ9b1EfF6kbW04nIq2Z4VlFM8P8+/Jd8XnvkZM/Cv5Ep2BetCuTaWZ7qQcrheJbCcFW4pCgrKJyV03ycSyX995JEf/uAHLx84APnd2bNtra0Gg7nY93Ncvv/MfV+OYZlZU1hsic7b4hInJnWn5MJ8j4JyiwQpEAUF5TYLw/f7fvSjD/785+tkBgcHZ2dnuXw/x+r7z37hwTiembNGF+xxiSMpdWFy5HuUT0iE1PtRUFBQPolZeXv+Agnh+8/d/09xPLtgT0gcSakTk7lScnca+v67yPcoKCgoKChrkYrb8xmN+TTff/Gf43hW4sRkLlzmTsHKPfI9CgoKCgrKGqbi9nzO8Xqff+AriVRO5krJ3ETNXu7JKKDvn0e+R0FBQUFBWYOs/vh8wvfulNydoWSPfI+CgoKCgrKGqaw93xdJLziSDAjf3/OlryRSObmb0LzCk1F4Mwov8j0KCgoKCsqaheH7o0eOtLW2DpGZmpqSyWTl+v6riVRO4U1DzVME4sj3KCgoKCgoa5MK2/Mj6QUHxoC4ni70vdyblnvTcm+GAtXvUVBQUFBQ1iqVXU/XF0kvODBJIYW+96TlnjRhfWp8PvI9CgoKCgrKWmQlvl/g9X1K4UkR1vekFZ408j0KCgoKCspaZYW+p1u/0PfulBz5HgUFBQUF5dZIxb6XODE6UieWSBXV7xWelMKTVhC+zyDfo6CgoKCgrEkq970DYyi/0PduolpPq98j36OgoKCgoKxNVuR7COn7OMP3Cneaqtwj36OgoKCgoKxhKN9Ho9FQKBwMLvr9Aa/Xp9HoFQq1RCIXixcmJmeGhkeLfS+lYGnPd6eg8uXI9ygoKCgoKGsd6PtYLAZl7/P5PR6fy+VRKFQSiUw8tzA1NTs6Njk4NFLUf5+UOJOw557L9xDUno+CgoKCgrLGwTCsqanJ6XSGw+GlpeVgMBgIBP3+gMlk1uuNOr1Bq9Wp1VqlUj0zI7506RLle6kzKXUmpU5MRlLge4U7RUAO3EO+R0FBQUFBWatgGDY1NdXU1PTW22/xc+nSpf7+fnr9Hvpeyup7WLlXEL/KQ75HQUFBQUFZy2AY5nA4PB7P4uLiMi2hUAj+pRIOhyORCPS9P1+/T8oImPV7nFHFD0SR71FQUFBQUNYmFfo+mpa6khQyV1LmShb63oMr8j/BR/V7FBQUFBSUtUzF9XsZqXmZKyl3JeUM3yvduMKN062PfI+CgoKCgrJWqdz3TkzmyiN3FbbnKz240o0r3bjSgys9KaUbteejoKCgoKCsWSpuz4eOl7vzFPke4sWVnpSSrN+LirLWe+A2j/D9XPH7wpi/3HK45r8zPx5rtdW3zt5erc8P4P7wo4MPyp2ZynwfiKblLkzuwhQuTOEmyPs+mcqRNfs8VHs+/Zt2h3zr1nYbhezkil3L/8KS5azw5Z/Q8GzUTd3ktVqu8Kzi54frtbfIlqKgfPyp3PewWk9TPkf9niQYS9+Zvl/zbSzX9yIyFZRcbjkl51/zvbfqWastWsM9WdknaiWfHyR7FJTiVOx7qlqvcGNKN6Zk+F7lwVUeXOUl2vNVtPF6rL7n+a6KaKGv+s2ezppy11NUFMaGsz4uLp+1EOHbVXLTGAst6yVCymHdLQKXK2RlKgjrEnn+LWv/F7+weGbWl5RVPtce499YIcutYD2FLF3gnMKXwjU/1wvLWm3Gypf7QhSUWy0V+17pwgiKfZ9M5dTQ93lSwULfcx1HQOHRgT7Px/mYJ2WtJ1exQua/GftByEaV+xKB5fBvC89yhaxMuRG+//nnr2D/828Oz8wCyxdYssDlMnZFBcstK1zLLXd+UWEY8xdPL1m+kJVBQbnFs4L6fVLpThKy92BKD5Zk+F7twVQeTOXBofuDsfR3f8qs39ND/xKWPL6ULITrq871EuG7jGc9hS+XZ1sq2A/FyxWyr1g3qnhx/C8pqxyuncO/XCErU2649puQ9RSyb3nm4d8cnpmFPOZJZcsVsX0OufbbysMoueQiuOb/2PYbCsonKJXX791JpTupcmMqN9Q65fsHvpJM5dQejPQ9QTCW/o4A3/NMFPJdFXiAqOCFwtez3PkZM6z6fhCyaSIywl/COht/OYxnhSxX+PtSVviL5VpP4eWU+/5yPSvkfa/4zRKyXOov40FZKd6fAucs+Squ+Vdxv1UwMwrKrZmKfa8qtHne959/4CvJVE7lwYhzAZJANP30Tw6Cm+D7m/GYJ2WtJyjzGFRu+au1XULWoYIXsq6G8G0XvhrlZrXerwr2P2v5rCtWWfklN7ms5TJeUsFyqTnLWkmef0vOwLOe5a5/ZduLgnJrpjLfB6NpqloPUdN8/8/JVFblSlAoXAmFMxGIpJ5+7mURLfT14JrO89TNns6aCtYTcBzv6BMZD7hmLn4sZLuKX1Jy04TsCtZ14yqHdR7+5Za7GuVGyEK51rNkOYB3/5csp+RyefatkE0uudwK9sNqhXUnCF9/1ulc85e7PhVtEArKrZIKfR9LU5onwQnff+6L/5RIZZXOmNIZU0AcMYUjFojgTz774lpvLwoKCgoKyp2Yin0PNa/xUpC+/+z9DybwjNwWhsgg1pA/jO390f613l4UFBQUFJQ7MZX5fjGW1ngwAlL5hO8/c9+X41haYl5k4Aslan7wv9Z6e1FQUFBQUO7EVOx7rRfL48O0PiyZzt3zpa+Cu+95II6l5/S+OYNv3uCb0/vnDL45vd+7FN/1X8+v9faioKCgoKDciVkd33sxHeX7uz5/fyyZEmtcs1o6bs9idPt3frzW24uCgoKCgnInZkW+92FaH6YjIXz/95+9L5bApxTWKaWNht0dCG958kdrvb0oKCgoKCh3Ylbie50X0/lwnQ/X+3C9Dyd8/6lP3xNNYONS47jUOCEzTchMEzLzhNzi8oce3/P9td5eFBQUFBSUOzGV+X4pnoZ1er0P05O+x6Dv//auz0XjydF53diCbmxBPyYxjEuN41KD07+0sfp7rD/2vY1zh2ym8KC9gYKCgrImqdj3ekL2mMGHGfy4wU/6/m/+/jORWFIkVonEatGcZnROMzqvHV3QOX1L397xNLjzLln1MWzjrbYPedbnTnjHUVBQUG7BVO57P2agEyB9/9ef+nQklhiaUQzPKIZnlCNi1YhYPTKndniDj217AiDff9LKLze32vqgoKCgoIAV+B7W6Y00CN//1d/dFYklhqdlw9Py4RmFaEY5MqsUiZUOb/DfN9cA3muqi7iv5VlskXKnc4V1flFhiucvfsxfPtfjFZYvKgr/dgksquR0IQsVsj78M7PuhHK3CwUFBQUFVOr75Xja6MeNAdwYwE0khO//8m/visQSommZaEYumpGPzCpGZpUjYpXDE1i3qRoIOMTTn+I67pf7WEgEllPuIsralpWUL2RbhBSywv3MvziBG1vBclFQUFBQeFKx7wnNB3FTEDcHcXOQ5vtoLDE6Kx+ZlY/OKkZmFSNi5ahY6fAGHt24C3AfpkVkQJEj6WHMz1WO8F3AWr5AnwlZFs/Kl9wu4eXzTKy4EJ5yBO6fkgsqt3ye/YaCgoKCwpOKfW8mNQ+xBHGcas+PxpPjYuUYZE41Nq8am1M5vUEhvhcyUcgMAmWwQp+VpVKBL6y4/FUvhKccgfun5ILKLV/ItqCgoKCgFKcy34cSaUsQp7AGceti3vd3x+LJyQXNxIJ6YkE9Ma8en1dPLKhd3uCjm1bk+5vhhsrKEdHCXz5XUTej/I9zP/CUz7o+rAta3eUC2n7j31gUFBSUOzAr9L11MQ9Ojc+PJZLTUt2UVDcl1U5JtJMS7aRE6/Itrnt8N5fJeAxX7kt4imINfWZWV3EVJWQRjDUpfsxTSGWbUDyx3EKElMO/f0qWI2Q/88/Gul1lbS8KCgrKHZWV+N5aqHzC93/zD5+NJzCx0ihWGsUK46zCOCs3zsqNnsDSv2/Zs9bbu2q52V5B3kJBQUFBWcVU5vtwIg0db6OBU9fXiydxicayoLEsqC3zasu82jyvNnuDoce2PbnW27vSlFtpvtXKR0FBQUG5M1Ox7ynN2xdx+xJuX8LxTO6eL30V/N3dn09guExvl+ntMp1dprNLdXapzuZbDK/f+fRaby8KCgoKCsqdmJX4njK9Ywl3UL7/1KfvSWIppdGlNLqURqfC6FQYnAqDM7AU2bDre2u9vSgoKCgoKHdiKvR9Mk03PSRF+v7eJJZSm90UKrNbZXYHQ9GNu/9rrbcXBQUFBQXlTkxlvo8k044l3LmEO5dSzmWCVL5+j6c0Fo/G7FFbPGqLR2PxqC2eYCi2afd/r/X2oqCgoKCg3Imp2PfOZZzCtYy7KN//3d2k7wtZDMU2ofo9CgoKCgrKWmQlvnfRcIfyvv98Ek9pLZ48Vo/W6l0MxzZWo/57FBQUFBSUNUhlvo9iaXcIJ0m5QykP5fu//YfPJrGU1uzSmF0ai1tjcUPrL4Zi63d9d623FwUFBQUF5U7Myn3vCeEeuu//+u8/Q/lea3FpLW6txa2zeBZDsW9vf2qttxcFBQUFBeVOTGW+j2EZbziVJ5LyRdJp6Pu/+tTdSQzXmBwak1NjcmrNTq3ZpbW4FkPRx7Y+sdbbi4KCgoKCcidmdXwfTnkjKdL3f3dXEsM1RrvGZNeYHBozVL5zMRT59801a729KCgoKCgod2JW7nsfCeH7v/zbu5IYDmWvNTm0Zgfl+3Wbqtd6e1FQUFBQUO7EVOb7OJbxRVIU/kjKFyn0vdbsKMS5GIo8unHXWm8vCgoKCgrKnZiV+N5fSL49H8NTeouTwRLyPQoKCgoKyhqlYt8Tmo+m/NFUIJoKRFPpLOH7uzE8ZbC6DVYX/Ku3uvRW11I4+ugm5HsUFBQUFJQ1yAp9H4jmIXz/15/6NIanTHYPxGj3GG0eo82zHI6te3z3Wm8vCgoKCgrKnZj/v737/I66Tvj/n3/i2hXpJYCAqwvXvfXy5x6PChZQFNEF1rKWr4qCdCLSUwmBAOm99zbpIQm9JKSQHtIJ6dNn0gv7uzElyVDEyYyfmM/zcV7Hs2Z3Me8k5jl9zO69VDss1Y5MnL73z81dNDQ80tzW3dTW3fRgfEpN3z/f/Vjo8wIAIEZm9n5oUu9l2hGZsfez5i0eGh653yFtadevub2nub1Hpe17ff2nQp8XAAAxmkLv9ZnXr9fQ++fnLxkaHmntkrd2yls75fc7Zbqpe/vf/GCL0OcFAECMzOt9/9CorHfEZPrez15gOzg0Uv+gp6G1p761W7e61m6Fuu+tjbxfDgAAAjD39fNHO1XDneph/V/Vw11qw+vnz16wVKntT75SplvSZd3u1j/oWcv74QIAIATzet+pGi5s6dPtjm73+/uGxvTX77sVGveYfPfoS2ejLp2NueQefelczJXS2gfrPvpc6PMCACBG5vW+STqYXqFOr1SnV6ozK9VZVeqsKo16YFR3/71tl1x9Ouyia1iOa9hF1/Dc0xF5pyPyi2ta13H9HgAAIZjX+0bpYGq5Oq1cnVahTq9Qp1eoMyrVqn5975d0ylTOQRnOwZnOwZnOwdkuodmnQnOKqu+v/ZD77wEAEMBUep9ark6rGE++vvez5i7qkCpP+iSd9E2295c4BKQ6BGQ4BmYUVja/uXGb0OcFAECMptj7icnX9/6vcxZ2dCuOnI85fCHuiGf8Ma/E495Jx32TC8ob3tjwL6HPCwCAGJnZ+55BiaH3xuTre/+X2fPbu2R2bqF2Z8J/cY88dD768PmYwx6xN+/Wvf7eJ0KfFwAAMTL7+r2kbELvyyf2/vl5bZ3Svc4B+1yC9p8KOegWancm4pezEddLa//5ziahzwsAgBiZ3/tytUny9b3/n1nzHnRKd9v77nb03+MUsM8lcN+p4H2uIdeKq15b96HQ5wUAQIzM7n1KuVpSpp54q/6k3u+y99nl4LPb0W+3o/9up4A9zoFX71S+upb3wwUAQABTun4/Ofnjt+c/6JTudvDd5eC3y8Fvl6P/bif/3Y4BV+9U0HsAAAQxxd6n6qo/uffz2zple50C9jgF7HEO1P/VOeDqncpX19F7AAAEMNXr97rkl6klxt7/dfaCti7ZAdfQA6dD97uG7HMN3ecast815FpR1WtvfyT0eQEAEKOp915/q36ZoffPzV3U3q04dC760LnoX9yjfnGPsnOPsjsbdaOk9p/vfiz0eQEAEKOp9H7ijfnjt+fPmre4o0d53DvpiFfiEc/Ew56Jhz3iD3vE37xb//r6T4U+LwAAYjSF3mv0ya9QS8o1471/fv6STqnqpH/aSf/Uk/6pJ/wkx30lx30kt8sb3/xgi9DnBQBAjMx/Pd0KjaRCIylXp1aode3X9372AttOmdopOMsxKMsxKNMhKNMhMNMhMLOgsvmtjbxfDgAAAphK71MrNPr77yvUknKNsfdLO2Vqp+Acp5Bsp5Bsp5Ac3X8urGpZy/vhAgAghCldv594/33FI9fvnYKzHUNynHQLvXin6v66jz4X+rwAAIiRub0fklRoUg2TVEy6/962U6ZyCNTdkp/lGJTlGJztGJJzp6plHdfvAQAQgtm9T63UmiR//PF6HVLlcV/JCd/Uk/7pJwMy7AMzHAKzCqqa137I/fcAAAjAvN43yYbSqnpTK7WplVrDHfmG3s+au6i9W3H4Qtxhz4QjXklHfZKP+6Ye90u7XdH05sZtQp8XAAAxMrf3w2lVfbrkpxmSb3h9vTkL27rk+0+HH3CLPOge/cv52F894o94Jt4qq39jw7+EPi8AAGJkXu+bZcPpVX1p1brk96ZVatMqtar+MdtVa2z+Mnv+g07pLqfA3U5Be06F7ncLP3gm0s49+kbpvdff+0To8wIAIEZm9z6juj+9qi+9ui+tqjetqndC75+f19rR89MJnx32fjsdAnY7Be51CdnrGnq1uPqf72wS+rwAAIiRmb2Xj2RU95skX9/7/5k1r7Wj58ejnj8e9/7ppO/Ok347HQJ+dgq8cqfytXUfCn1eAADEyOzeZ9YMZNYMZFT3p1frk68aMPa+vWf7UY/txzx/PO710wmfn0767rD3v1xY8epa3g8XAAABmN37rNrBzJrBicnX9153e/6Px71/Oub10wnvH0/qeu93uYDeAwAgDDN7rxjJrB3KqtX1Xp98fe//Onv+g07pz/Z+P9v7/+zg/7NjgG5XCiv/P27PBwBACGb3PuveUNY9ffJ11/L1vX9O93w817B9hu11DdvrGna1iMfrAQAgDPN636IYza4bNiZfV31972fNW9zeo/zVI8Gw+EMX4g5diLtRWvf6+k+FPi8AAGI09d5nG5Kv1vVe93459oFZ9oFZ9oEZup0IyOD9cAEAEMpUem+SfPXAQ9tVa2zmLlrerdCeiblxJubamZhrbjHXTkdfOx19rbi27Z3N/xH6vAAAiJHZvc+pG9YlP/vesC75+t7Pt13Ro+rzTiv1Ti31Ti310q+krLF7w9bvhD4vAABiZH7v60dy6keyDdXPMvZ+wbIXZZrB4Lx63YLy6oJy64Jy66ruKz78/EehzwsAgBiZ1/v7yrGL9SM5humSr+/9ouUvybXDUTfaom60RU5Ybbvm4692CX1eAADEyPzeN4xebBidWH314EPbVWtsFq94WdE3El8kNVldV9+n3+4V+rwAAIjRVHvfMHqxYXRS75es/LuyfzT5rtpkDT2DW747IPR5AQAQI2v0frWqf0xS0WuyRunQlu8PCn1eAADEyOze5zaaJl/fe9uVq1X9Y2mV/SZrkg5v/cFO6PMCACBGU+m9bsbkG3q/ao1qYCy9asBkTbKRbfQeAAAhTL33xupP7n31gMmaZCPbttN7AAAEYKne5zaO0XsAAKYpC/ZeQ+8BAJieLNr7/3L/PQAA05EVes/j8wEAmGbM632rcizvSb3n+fcAAEw31uj935X9o8llapPx+noAAAhlKr3Pe2zvF694Wdk3klgsTyiWTVx9Vz+vnw8AgCCm2Hvjxnu/6IWXFL3DMbc6TXavo3fz17uFPi8AAGJk+d4vXPY3uXYo7GrL+K60hF1pqX6g3vTlTqHPCwCAGFm+9wuWrpKpBwIv1gZerA3MqQ3MqQ3IqQ3IqalskW/8bLvQ5wUAQIws1fs8Y+/nLVnRo+r3Si01rMQrtcQrtbSssXvDlv8n9HkBABAjy/d+7uLl3Ype97ibJiup63j3k6+EPi8AAGJk+d7PWbisS65xCc93Cc93Cc8zrqi6dd2mL4Q+LwAAYmT53s9eYNspU9n7p5/QzS9Nt4KKpjc3bhP6vAAAiJHlez9r3uL2HuVhj/hfL8T9eiHu0PlY3W6W1r2+/hOhzwsAgBhZvvfPzV3Y1i0/4Ba+/3TYPtewfadC954K2Xsq9FpR9WvvbBL6vAAAiJHle//XOQsedMp2OwXsdvTf5eD3s73vjpM+O076XC6oeHXtB0KfFwAAMbJ87/8ye/6DTulOe98dJ7x/Ou714zHP7Uc9th/1uHS77JU3Nwh9XgAAxMgKvX9+fmuHdMcJ75+Oe/541OOHIxe+P3zu+8Pn8m/d/ccb64U+LwAAYmSd3ndKd5z02XHCW3fl/ocj5384cp7eAwAgFGvdnr/L0f9nB7+d9r47Tnr/dNzrp+NelwrK/4/b8wEAEIJVHq/X1iXbdypk76mQPS7Bu52DdjkF7nLyv3qn8tW1G4U+LwAAYmSN5+MtautW2LlH27lHHzwbefBMxAG38P1u4deKa3g+HgAAgrDW6+0c8Uo84pl42CPhV4+EXz3if/WIv3mX19sBAEAYlu/98/OXdEgnvJ6u/4TX0/1gi9DnBQBAjKz0+vlqp5Acx5Acx5Bsx5Acx+Acx+CcwqqWtz78t9DnBQBAjKzQ+4VLu+Qal7A83ZzD8pzDcp3Dcu9U31/70WdCnxcAADGyVu9PReSdCs87pX8z3FyXsNyi6tZ1H30u9HkBABAj612/z3UJy3UJzXUOzXUOvegcepHr9wAACMVa9987Buc4Bmc5Bmc5BulXWNXy1kbuvwcAQABWeXx+p1R10i/thF/qCb/U4776FVQ0vvE+j88HAEAAVnv+vWfCYY/4wx7xv16I+/V87K/nY2/erXv9PZ5/DwCAAKzx+noL27vldmcjD56JOOgWvv902H7XsP2nQ68XV7/2Nq+vBwCAAKz1+vl7XYL3OgftcQrc7ej/s4Pfzw5+VworX137gdDnBQBAjKz5/nj2vjtP+uw4oX9/vMsF5a/w/ngAAAjBCr1/fv6DTunP9r47T3rvOO714zHP7UcvbD964dLtsn+8sV7o8wIAIEbW6v0uB79d9r47T+iS7/HjMQ96DwCAUKx0e75sj3PgHqeA3Y7+Pzv47jzps/Okz+WC8v/j9nwAAIRgpcfryQ+cDtt/Omyfa+jeUyF7XIL3uARdLap6de1Goc8LAIAYWeP5eIvauxWHzsccOh/zy7noX9yj7Nwj7dwjb5TWvvYOz8cDAEAAVnm9nQ6p8phP8jHv5GNeSUe9ko56JR71SrxVVv/6el5vBwAAAVjn9XRlasegTAfdAjMcAjLsAzIKKpvf/IDX0wUAQABWeb+c8ffHC8t1CRt/f7y3PuT9cgAAEIC13g/XNeKSa0S+a0T+KcOKalp5P1wAAARhrd6fjrw0eflFta3rPvpc6PMCACBG1rt+n28yrt8DACAUK91/r3aePSmcAAAfgElEQVQJvegSetElNMdZt5CcO1X339rI/fcAAAjASo/PVzkEZDgEpDsEpNv7p5/0Tzvpn1ZQ2fTG+zw+HwAAAVjn+fc9ymPeiUe9Eo56JRzxTDjiGX/EM/5WWf3r7/H8ewAABGCN19db2N6tOOQe/cvZqF/ORtqdibBzi7A7E3GjpPa1t3l9PQAABGCl18+X7XcN2X8qZJ9L8F6XoD3OAXucA67eqXp17QdCnxcAADGyzvvjdcn2OgfucfTf7eD3s73+/fGuFJa/wvvjAQAgBCv0/vn5Dzqlexz9dzv47jrps/OE947jnj8d97xcUP6PN9YLfV4AAMTIOr3vku1xCtjj6L/L3vfnkz47T3jtPOFF7wEAEIpVbs9v65Ltdw3e5xK01zlwj5P/bge/3Q5+Vwsr/o/b8wEAEIJVHq/X3i3/5WyE3dmIg2fCD5wO2+8aus815FpR1atrNwp9XgAAxMgaz8db1N6jOOIRf8Qj/vCFuF/Pxxw6H33ofPSN0trX3uH5eAAACMA6r7cjVZ30k5zwk5zwTTnum3LcJ/m4T/Lt8obX1/N6OwAACMBKr6erdg7JdgrJdgrOdgrOcgrKcgrKulPV/OYHvJ4uAAACsNL75WhcIye8OV54vmt4flFN61sf8n45AAAIwDrvh6vQukVdcYu6PHHFtQ94P1wAAARhld53K7RnYq6ciTbu8pnoyyW1D9Z99LnQ5wUAQIzM7L3q6dfv5Rq3qMtnoi6f0V25j7zsFnmpuLaV6/cAAAjC/N43jeU1PeX++/A8w3J1K6ppfWsj998DACAAy/de9/h8p+Asp6BMp6BMR8PuVDW/8T6PzwcAQABT7X3TI72fNW9xh1R5wjf5uE/ScZ+kY95Jx7wTj3sn3i5veP09nn8PAIAALNB7Q/WNr6+3sL1Hcfh87K/nYn49F33IPUq3m6W1r73N6+sBACAAi/W+afLr59u5hdudDjvoGnrANWTfqeB9p4KvFVW9uvYDoc8LAIAYWb73+vfHOxW8zzlwr1PAHkf/3Q5+uxz8rt6peIX3xwMAQAhW6P3z89u6ZPtcAvc6++9x9Ntl7/vzSe+fT3pfKSj/xxvrhT4vAABiZL3r90H7XAL3OgfscfLb5eC7y8H3amHFK/QeAAAhWOH++9kL2rrldm7hB0+HHXAN2X8qeJ9L0D6XoGtFVf/35vtCnxcAADGyfO+fm7OwvUdx5ELs4Qsxv56PPnQu6pB75CH3yBulta+t+1Do8wIAIEaW7/2seYs7pSp7/zR7v9STfpKTvpITviknfFIKeP49AAACsXzvda+n6xaZ7xaZfzoi/3REnmtE3qkI3evpbhP6vAAAiJHlez930fIeZa9XSqFXcqHn+ArKGjrf2fwfoc8LAIAYWb7385eskGkGgnNrgi5WB+WMr6pFtmHrd0KfFwAAMbJ87xcse1GhHYq+0Rp94370dd1aoq+31LarP/ziR6HPCwCAGFm+94uWv6TsG0kq7kkq6kkq6kk0rL6r7+Ovdgl9XgAAxMjyvV+84mVV/2h6hUa3tApNWoU6rVzdJB389Nu9Qp8XAAAxsnzvl6z8u3rgYVbtYFbtYFbtQFbtQFbNQGbNQLN8ZMt3B4Q+LwAAYmSN3q9WDz7MqR/Wr06/FsXolu8PCn1eAADEyPK9t125WjP4MLdh1GT3FWNbf7AT+rwAAIiRFXq/ao1m8L95jWMma1WObaP3AAAIwWq9f+S/blWObdtO7wEAEAC9BwBg5vsDe6+i9wAACIP77wEAmPn+wMfnK3l8PgAAwrD+8+8N4/n3AAAIxdqvrzc+Xl8PAAChWOn188cyKrUma5YO8fr5AAAIwgrvj/fCS8q+kZRSuckauvs3f71b6PMCACBGlu/9wmV/U/QOxxd0GhdX0BlX0FnXqd305Q6hzwsAgBhZvvcLlq6Sa4cirzZPXlNtm2rjZ9uFPi8AAGJk+d7PX7JCph4IuVitW7BhVfflG7Z+J/R5AQAQI8v3fu7i5VJVn29aicnKm7rf+/Rroc8LAIAYWb73cxYu61H2Xki4OWG3PBJv3a3vePvjL4U+LwAAYmT53s9eYNsl15yOyDMs3y0i3y0yv6T2wdoP/y30eQEAECPL937WvMWdMpVjYPrEOQVl3KlqfvP9LUKfFwAAMbJ875+bs7CjR3nMM+GoR/xRz4RjngnHPBOOeyUWlDe8/t4nQp8XAAAxsnzv/zp7QXu3/NDZiF/ORBw6a5h71K27df98Z5PQ5wUAQIws3/u/PD+/rUu2/1SwYSEHToUcPB16o6T2tXUfCX1eAADEyPK9/5/n57V1yfY6B+q2zzlwn3Pg/lPBN4prXlv3odDnBQBAjKxx/X5eW5ds/6mg/S66Be93CT7oGnKjhN4DACAMK/R+9vy2LrmdW7idW7idW5idW7jdmfBDZyNvlt7759vcfw8AgADM7L3yKY/Xm7Owo0dx1DP+mGf8Mc/4o57xRz3jj3kmFJTX8/h8AAAEYX7vG3/r+fdOgRnGOQdlFlW18Px7AAAEYfnez15g2y3XnI2+YrLSe23rPvpc6PMCACBGU+p946TqG94vZ9FyqarPJ7XYVzdJsY+k2Ce1uLyp+71PeL8cAAAEYF7v7yvHchtHcycn3/B+uLYrZZqB0Lza0Pza0LzxVbcq3t/G++ECACCAqfV+9DG9X7DsRUXvUMytB7G3HsTodvNB7K0H9zo0H33xk9DnBQBAjCzf+0XLX1L2jSSXyEzW0N2/+atdQp8XAAAxMrf3o7kNo7kNoxOrr+/94hUvq/pH0ys1JmuSDn767V6hzwsAgBiZ2XvF6MWGkYsNIxOrr+/9kpV/Vw88zK4dNFmLfGTLdweEPi8AAGJkXu9bFKM59SMX6w3J1/f+oa73q9WDDy/WD5vsvmJ0y/cHhT4vAABiNIXeD+t6f9FwFV/fe9uVqzWDD/MaRk3Wqhzb+oOd0OcFAECMzO39SE7dsPEqvu5avqH3q9ZoBv+b3zhmslbl2DZ6DwCAEMzufXbdUE7dcE79ePXVk3rfNGayVtXYtu30HgAAAZjX+2b5SNa9wex7Q8bqX6yn9wAATFfm97520CT59B4AgGnK7N5n1g6YJF/N/fcAAExP5vZ+OKNmwCT5ah6fDwDA9GRe75tkwxk1/SbJV/P8ewAApieze59e3W+SfPXAQ15fDwCA6cjM3kuH0qr60qv7MqrHk6/v/eIVL6sGxjKqtCZrlg3x+vkAAAjCvN43SodSK3vTqnrTqwzJrxnQ937RCy+p+kYkpXKTNXb3b/56t9DnBQBAjMzt/aCkQptaqZ2YfPXAmO2qNTYLl/1N0TscX9hpsrrO3k1f7hT6vAAAiJF5vW+QDqaUa8aTX92XXt2v0vV+wdJVcu1Q5LVm46KuNUdda65tU238bLvQ5wUAQIzM7H3PYEq5WqJPvv6GfX3v5y9ZIdMMhOTWhOTVhE5Ydav8/a3fCX1eAADEyOzeJ5epJyRfm1bZq+/93MUvSFV9ful3/dPv+mfc9c8oC8goC8goq2zuWf+vb4Q+LwAAYmRe7+t7BpPLVLrkp5RrJBWa1Aqtqn/MdtUamzkLl/Uoe72SC7yTC72TC31SCn1TCn0ld8obu97d/B+hzwsAgBhZvvezF9h2K7TnYq6ej712Ie66Z9wNr/gb3vE3y+vb39n0hdDnBQBAjMzt/UDyXVVymSqlTJ1SrtHdqq/v/fPzl3TJ1G7huWci8twj889HXvKIuuwZfaWstu2dDz8T+rwAAIiRmb3vHkgqVSbdVSbf1V3L10jKNfrez5q7qFOqcg5Mdw3OdAvJPht68Xx4rkdE/t3a1rc3bhP6vAAAiJHZvU8sVSaVKpPujt+qr+oftV21xua5OQs7epT2vinOfhLXgLQzQZnngrMvhObcrb7/9gdbhT4vAABiZPne/3X2go5uxQnPBAefZBdfiZt/mntgxoXgrLtVLW+/v0Xo8wIAIEbm975EMSH5qpQytVLX+7/Mnt/eLT9+Ic7eK9HFJ8XNT+IekH4hKPNuVfPbG+g9AAACMLf3/QklignJVybfVSkN1+/nd3QrTnjEO3gnufhK3PxSDb3n+j0AAMIw+/q9offj1/INvZ+zoKNHYe+d5OQrcfVPPROYcT44yyMkp4z77wEAEMhUej8h+YqkUqW+98/pHp8fkOYalOkWnO0emuMRnusVkV9W2/rOxn8LfV4AAMRoKrfnG6ervrJv1HbVGpvn5+mef5931vDke+/oqz4x18rvtb/70edCnxcAADGySO91ydf3fvaCpd0KrUf8Dc+EW96Jt32TCvySC/2TCysbOtfzeroAAAjB8r2fu3i5VNXnn343IONuYEZZUGZ5SGZ5SFZFdbP0/S3fCn1eAADEyLze13X1JxTLE4rlCSVyY/L1vZ9vu1KuGQjPrwvPr4vIr4+8VB95qT7yckPtA+XGf/8g9HkBABAjs3sfXyyP1yd/cu8XLntR0TsUe+tB3K22uFtt8bf1q+vQbPpih9DnBQBAjCzf+0XLX1L2jaSUyIyTlMglJfLG7v7NX+0S+rwAAIjRFHsfP+FWfX3vF694WdU/ml6pMUybXqnNqNQ2S4c+/Xav0OcFAECMpt57Y/WVfSO2q9bYLFn5d/XAw+zaQZO1yEe2fHdA6PMCACBG1uj9avXgw4v1wya7rxjd8v1Boc8LAIAYWar38cbe265crRl8mNcwarJW5djWH+yEPi8AAGJkwd4r9L1ftUYz+N/8xjGTtSrHttF7AACEYLXeN42ZrFU1tm07vQcAQAD0HgCAmY/eAwAw83H/PQAAM585vf/Brq6rP75IbjIFj88HAGB6MqP3W3+wq+vqj7sjM5mib8R25Wqefw8AwLRjRu+3fH/wXldfbGFPzOQpekeWrFzN6+sBADDtmNP77w7UdvRG3+6MvjVpit7hJSv/brN4xcuqgbGMKq3JmmW8fj4AAMIwo/effru3pl0Tcf2ByeTaocUrXrZZ9MJLqr4RSancZI3d/Zu/3i30eQEAECMzer/5691VraqQS03B+Y0TJ9MMLnrhJZuFy/6m6B2OL+wwWV2ndtOXO4Q+LwAAYmRG7zd9uaOiReaXXT2+rGrfrCqpemDhsr/ZLFi6Sq4dirzWbLLaNtXGz7YLfV4AAMTIjN5v/Gx7WWO3p6TUU1LqmVKin6SkR9W3YOkqm3lLVsg0AyG5NSF5NSF5taGGVbXKN2z9TujzAgAgRmb0/v2t35XWdbjH3TLubNyts3G3uhW9821X2Mxd/IJU1e+XUeafUeafWe6fWR6QVR6QWV7R3PPep18LfV4AAMTIjN6v//Tr4poHp8Mvjy/i8umIy11yzbzFL9jMWbSsR9nrlVzonXLHR1LkIyn2TS32TS0ub+x6Z/N/hD4vAABiZEbv3/34yztVzc5BWc5BWc5B2c5B2c7BOc7BOZ0y9dxFy21mL1jardCej795IeGWR+Jtz6QCr+RCr+TCsvqOdZu+EPq8AACIkTm9/+izO+WNjj6p+vmmOfqlOfqld0pVcxcus3l+vm2XXHMm+op7zNVzcdcvxN/wSLzlkXCztK593YefCX1eAADEyIzev/PBtsK79Q4XEvTzSLL3TLb3knRKVXMWLrWZNW9Jl0ztGp7nFnnpbPSVc7FXL8RdvxB3vbT2wdqN24Q+LwAAYmRO7zdsKSy553AmxuFMtMPZaIdzsfYX4u0vJHb2KOcsWGoza97iTpnaJSTHNSzXLSLfPery+Zir52OulNa2vvXBVqHPCwCAGJnT+/WfFhbXOJyOcHCNcDgd6XAmyt491v58fGePcs4CW5vn5i7qlKqcg7NOhea4heWejcg/H3X5fNSlkpr7b72/RejzAgAgRub0/r1PCouqHU6FOriEOpwKdzgdaX822v5c3OTeB2W6hGSfDs05G5Z7LiL/XEReSfX9tzb8S+jzAgAgRub0/t1PCouqHVxCHFxCHFzCHFwjHc5EOzza+1Mh2adDcs6GXTwfnns+PLekuoXeAwAgiClcvw9zOBXm4Bru4BblcDbWwXh7/qx5iztlKpfgLNeQnDOhOe5hFy+E510Izy2tvr92A7fnAwAgAHPvv691dIt0dIt0dItyPBvreC7e0cPweL3n5y3pkqlPh108E57rHpF3PiLfI/KSR+SluzWt63i8HgAAQjDn+ffvb71TWud0Ls7pXJzTuXinC4lOnklO3imdUtXchUttZi+w7ZZr3KOvnI+56hFzzTP2mlfsde/Y62X32t7m+fcAAAjBnN5/+FlReaOLt8TFW+LiI3HxTXPxS3cJyOySqucuWmYzZ+GyHmWvZ+Jtr6QCn6QC36RCv+RC/+TCivrOdz/+UujzAgAgRua8fv7HXxZX3XcLvugWnOMWfNEtJNctJM8tNF//+vnzFr8gVfUHZJYHZpYHZZYHZ1aEZFWEZFVUNUs3/Osboc8LAIAYmfP+eP/6pvRe+7mY6+eir5+Lvu4efd095rp77I1uRe/8JSts5tuulGsGwy7Vh1+qj7hUH3GpPvJSQ+Sl+ppWxcZ/fy/0eQEAECMzer/x3z+UN3R5pxR7ja/EK6WkR9m3YOkqm4XLXlT0DsXdatMt3rC6Ds2mL3YIfV4AAMTIjN5v+mJHRYvcP7vGP7vaP7vGOKl6YOGyF20WLX9J2TeSXCIzLqVEllIia+ju3/zVLqHPCwCAGJnR+81f76p+oAq91Bx6qTn0snFNMs3gohdeslm84mVV/1h6hXbiMiq0TdKhT7/dK/R5AQAQIzN6/+m3e2vbtVE3200m7x1evOJlmyUr/64eeJhdO2iyFvnIlu8OCH1eAADEyIzeb/nuwL3OvpjCHpMpekeWrPy7zZKVq9WDD3Pqh03Wohjd8v1Boc8LAIAYmdP77w/WdfXHFctNpugbWbJytY3tytWawYe5DaMmu68c2/qDndDnBQBAjMzo/dYf7Oq7BhKKlSZT9o3arlxtY7tqjWbwv3mNYyZrVY5to/cAAAjBjN5v+8GuvnswsURlMmXfqO2qNYbeN42ZrFU1tm07vQcAQADm9H67XX33YGKpymT0HgCAacrM3vfQewAA/jzoPQAAMx+9BwBg5jO790l3VYm60XsAAKa5qfReN2Py6T0AANMUvQcAYOaj9wAAzHxT6L3amHzdlP30HgCAaYneAwAw89F7AABmPvN7X6ZOumscvQcAYBozr/cNPYPJZeok3QzJp/cAAExTU+n9ePLL1EllanoPAMA0NcXeG0fvAQCYvug9AAAzH70HAGDms1Tvk+k9AADTFr0HAGDmo/cAAMx89B4AgJmP3gMAMPPRewAAZr4p9F4zYfQeAIBpzMzeSweTyzXJ5fQeAIA/A3oPAMDMZ6Hea5LLNJN730jvAQCYLszt/ZC+98bRewAApi2L9b6c3gMAMF1Zs/fG0XsAAARldu9TyrUp5drkci29BwBgupti7ycmn94DADBNTb33xin7x57Q+8axvEZ6DwCAYP7A3ivpPQAAwqD3AADMfPQeAICZj94DADDz0XsAAGY+83tfQe8BAPiToPcAAMx8U+h9b0pFb0qF1hh+eg8AwDQ15d6PJ5/eAwAwTdF7AABmPvN63ygdkoz3Xp98eg8AwDRlod73plT00nsAAKYpeg8AwMxH7wEAmPnM7f2wpLJPUtknqeyV0HsAAKa5Kfe+T1KhTz69BwBgmqL3AADMfBboveFWfRW9BwBgerJQ7/sklX30HgCAaYreAwAw89F7AABmPjN7LxtOrepPpfcAAPwpTKn3k5NP7wEAmKboPQAAM99Ue1/Vn1rVT+8BAJjWLNJ73eg9AADTlCV7P0DvAQCYlug9AAAzn7V6n0vvAQCYNszrfZNs5Ld7n0vvAQCYHkx6r9Fo+h5Hq9Wa9D6teiCteoDeAwDwJ2DS+76+vpdfftnW1tbW1nb58uWvvPLKN9984+rq2tfX99jeT0z+Y3o/sfr0HgAAoTz2+v2mTZs+++yzgwcPRkREXLp06THX7+XjvTdUf+CJvc+l9wAACOrR++91yd+7d29MTExRUZEu9qb338tH0msG02sG06oH6T0AANOdrvddXV0KhcL40DytVtvX1xcfH2+MvUnvm+Uj6bVDhuTrr+LTewAApild76VSqVKpVE/Q29vb39/f29tr/IhGo9FqtWb2Prdx7D69BwBAILreKxQKXdGfQqvVTuj9aEbtUIYh+brq03sAAKYpXe9VKtWjdTc2fiJ97xWjGfeGdcnPqB1KrxlKrxlUDTyk9wAATEe63j+a9t7eXt1fTRh7n3lvONOQfHoPAMC0puv9o11/kvHe142YJJ/eAwAwTel63/N76HqfVTdikvzJvW8YM1mD/KFHWPK2H+wYY4wxNv13ITS5TjqWdW8k695IZu1IZu1wRu1wRs2wofcrV6sHH16sHzVZUdtYg2zsvsLKU87Mtc6gWf3Lpf9hGH2WtUzYox953EYeu2b51CbTr0k2/p+NH3nmDTfJhpuk5qzxD9rQhJn5JzSYt56nb9Aww0ekQw1P/WybpMNNsuGJX3/9t2zSd3a0+Wk/S2Mt1v59+Af+brTYb4DHffItT14zs8BGn7Q66VhB62hm7bCx9Bk1htvzV662WbJytbJ/7GL9cE7dM+2iBVc/k5c7E2fFr1jd8MXxH7Ohp+2eYRP+NttktYNZv7GBzJqnLcNk1br1Z1T3p+tWpVvfU5b2pFVOXG+qcRXmTDJpWkmFVlL+20v53dMYZtb/t0yTbM7UyXdNl/S4Jd9VJ5fppkkpm/SpSsq1kgqtRPflquxNrezVf+Wr+tKq+tKr+tOr+zOq+zOqdd/6wczawczxn5Mh/cZ/uobH92y/M3/3r9Np/NvpKf/+mhwte+LuDWdNXqZxtcPjcfrzLNPs3bPExv/AoUenf2R+zVBGzWBGzWB6zWBW7aCsd3SJrveKvtHse5N+G2Y/ZfemyR75FW/p5bAp7Pd/wQez7+l/xn4r1fpgT55Jwvsz9b/En3VPj/eETvdOnCHS2snTf1BimPGDT+rxhJpOXtnv23gmH1fKx+6x+XzcVEmlqqRS1TP/702XWKoya8rEkicuYcISS5SJpbrpPk/dnnhRwHA5QKu7HKC7BJBuuARgvBCgX81AxvhP16B+z/qz+uTfrlb+BfiH/As+6RMzOWzmxNUMZkyY8dnh6dXjS/tTLd281Vhu+j9z4LFLqx5IqxpIq+rPqOnX937NmjU+geFXGwcnXM79EyyTzaxlVPdnVPdlVPdlVJnuCQ3uTa80rKrX+EGTHqdV9qZVatNMe2w6SbnmWTY5w2rdDGVVPXa66pj8relKVUmlxlY9855cwQkhVCSUKBKKp7T48cnji+Xxkz7yuyaPKzJvssfvzuTpPy6PK5LHF41/qgnFioQSxSOXCZSJpUrdxQLjBQLjpQGJ4dKA4aKAbn2TbxiYuP7f2Iz+NfiYS8/VE48/6Zat1AmTTFzF+FL+PJP83lVaZxV9EtOb+npTKnpTyntTyrWX6vp8AsPXrFlj85///Gf5qpebpYOp5eo/xdL+4FWwKe+Zv9qG77JqfGWPmeS3p5TcVaZMXKki+RmWVKpIKtFN/vQllsgTi+WJxbLEYlmCbkXGSROKpBP+1viRSR+PL5KO78744u70WGCFPbH6dT/rCp64GIvvdle0Jdc5eV3Rt7tibnfFFHTp/nGxBboz9sQW9sQZd6cn7o7u6y9LKNJ/ExOL5Ykl8sQSuf7HoFSRXKpMnvSzpEq5q0p5zI+cWr/ySZsWvwP/kH+7H/upSsrVxq/M+EXkx10mHr8BqVSVZOZNQQIs6Tf3pEv5lp3+H6c0me5ybWPPwPJVL7/99ts233zzzeIXXvINDC25r00ukU2HpTzjSv9ck6eUyiUzYin6WfPL9fifDenjVyxNesISi3qetIQ7unU/afF3uuMLH12XbnG6FUxcZ1xBZ2xBZ+ztztjbnbEFnbHGjxg/aPi48SMx+nWM75bpon977Y/Zzfao37e2396NtkgB9iDi+m+uNeJaa/i11ohrrRHXW3UfjLz+IPLGA90fEnVDd4Tx80bfbI++1R5zS/dln/gt64or6Ior7Iov7I6/051wpyehaNISi6SJRdLE4vEZft5kSSWTZq3fh0L/jvqN3wCTP3/9V6NYllQsS5ywiReFH73sG/cnWfzTV/QH7gmfQ1Gz1jcwdPELL61fv97m9OnT33///V9mzfEJDG3o6s2tlMUXdj5hXU/cna4EcSyRmbvf+aXuTHjiz+Gj64gr0E/3EePfGhd7u/03F3O7PeZWe8ytNuOiTXbTZA90i9LthnGtxkUad92wRz9iWMT11ojr9yOuPW3hv28t4Vdbwq+2hFlszaFXTPe7/oRH/+/PspDLTWYs9HJT6JUm/Sd5pTnsqv5T1X1Nwq+16L5KEdfuR1y/b/jWPIi6of+GRt/Uf99jbrXH3G6Pud0ee7sj9nZHbIF+cQUdugt5k1bYGfesP7emv0j/vL/BHvvPii/sMh5W92WJm3gJuKAzpsB4ebcz5nZHtHGGC7JRf5L9xsXx25bfxGsIpv+t4Z+bVS6t6+z1CQz9y6w5H3zwwe7du22++uqrzZs3v/HGGwuXvbh0xd+8/IMVvcOMTY8NPeu0Qwqt6QflWsE3KPvNadizTvo7Z84/xYzvcu+EGT6i6B0S+t+dabhHvlDMmvPyD1664m8Ll734v//7v2vXrt24caONp6eng4PDgQMHtm3btmHDhgVLVzHGGGPsz77XXnvtvffe+/rrr3fu3PnLL7/8/4NLuanOqQ4dAAAAAElFTkSuQmCC" alt="" />

Relevant Link:
https://code.google.com/p/lru-cache-cpp/
http://files.cnblogs.com/LittleHann/lru.rar
http://floodyberry.com/noncryptohashzoo/Murmur2.html

0x4: 时钟(CLOCK)置换算法

LRU算法的性能接近于OPT,但是实现起来比较困难,且开销大;FIFO算法实现简单,但性能差。为了获得一个平衡,操作系统的设计者试图用比较小的开销接近LRU的性能,这类算法都是CLOCK算法的变体

. 简单的CLOCK算法是给每一帧关联一个附加位,称为使用位
. 当某一页首次装入主存时,该帧的使用位设置为1
. 当该页随后再被访问到时,它的使用位也被置为1
. 对于页替换算法,用于替换的候选帧集合看做一个循环缓冲区,并且有一个指针与之相关联
. 当某一页被替换时,该指针被设置成指向缓冲区中的下一帧
. 当需要替换一页时,操作系统扫描缓冲区,以查找使用位被置为0的一帧。每当遇到一个使用位为1的帧时,操作系统就将该位重新置为0
. 如果在这个过程开始时,缓冲区中所有帧的使用位均为0,则选择遇到的第一个帧替换
. 如果所有帧的使用位均为1,则指针在缓冲区中完整地循环一周,把所有使用位都置为0,并且停留在最初的位置上,替换该帧中的页(交换是必须要做的)

由于该算法循环地检查各页面的情况,故称为CLOCK算法,又称为最近未用(Not Recently Used, NRU)算法

CLOCK算法的性能比较接近LRU,而通过增加使用的位数目,可以使得CLOCK算法更加高效。在使用位的基础上再增加一个"修改位",则得到改进型的CLOCK置换算法。这样,每一帧都处于以下四种情况之一:

. 最近未被访问,也未被修改(u=, m=)。
. 最近被访问,但未被修改(u=, m=)。
. 最近未被访问,但被修改(u=, m=)。
. 最近被访问,被修改(u=, m=)。

算法执行如下操作步骤:

. 从指针的当前位置开始,扫描帧缓冲区。在这次扫描过程中,对使用位不做任何修改。选择遇到的第一个帧(u=, m=)用于替换。
. 如果第1)步失败,则重新扫描,查找(u=, m=)的帧。选择遇到的第一个这样的帧用于替换。在这个扫描过程中,对每个跳过的帧,把它的使用位设置成0。
. 如果第2)步失败,指针将回到它的最初位置,并且集合中所有帧的使用位均为0。重复第1步,并且如果有必要,重复第2步。这样将可以找到供替换的帧。

改进型的CLOCK算法优于简单CLOCK算法之处在于替换时首选没有变化的页。由于修改过的页在被替换之前必须写回,因而这样做会节省时间

Relevant Link:

http://see.xidian.edu.cn/cpp/html/2614.html
http://blog.csdn.net/ojshilu/article/details/22955741


13. 页面分配策略

Relevant Link:

http://see.xidian.edu.cn/cpp/html/2615.html


14. 页面抖动和工作集

Relevant Link:

http://see.xidian.edu.cn/cpp/html/2616.html

15. 缺页异常的处理

在实际需要某个虚拟内存区域的数据之前,虚拟和物理内存之间的关联不会建立。如果进程访问的虚拟地址空间部分尚未与页帧关联,处理器会自动触发一个"缺页异常",内核必须处理此异常

16. 堆与内存管理

相对于栈而言,对内存面临着更复杂的行为模式,在任意时刻,程序可能发出请求,要么申请一段内存,要么释放一段已经申请过的内存,而且申请的大小从几个字节到数GB都是有可能的,因此,堆的管理显得较为复杂

0x1: Linux堆简介

仅仅使用栈对现代程序设计来说是远远不够的,因为栈上的数据在函数返回的时候就会被释放掉,所以无法将数据传递至函数外部。而全局变量没有办法动态地产生,只能在编译的时候定义,很多情况下缺乏表现力,在这种情况下,堆(Heap)是唯一的选择

堆是一块巨大的内存空间,常常占据整个虚拟空间的绝大部分,在这片空间里,程序可以请求一块连续内存,并自由的使用,这块内存在程序主动放弃之前都会一直有效

0x2: 堆操作系统调用

堆内存是操作系统的一种资源,内核负责总管所有进程的地址空间。Linux提供了两种堆空间分配的方式,即两个系统调用

. brk()
#include <unistd.h>
int brk(void *addr);
brk的作用实际上就是设置进程数据段的结束地址,即它可以扩大或者缩小数据段(Linux下数据段和BSS合并在一起统称为数据段)。如果我们将数据段的结束地址向高地址移动,那么扩大的那部分空间就可以被程序使用,把这块空间作为堆空间是最常见的做法之一 void *sbrk(intptr_t increment);
Glibc中还有一个函数叫sbrk,它的功能和brk类似,只是参数和返回值不同,sbrk以一个增量(increment)作为参数,即需要增加(负数为减小)的空间大小,返回值是增加(或减少)后数据段结束地址。sbrk实际上是对brk系统调用的包装(wrapper function),它在内部是基于brk()实现的 . mmap()
#include <sys/mman.h>
void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
/*
参数:
1. addr: 需要申请空间的起始地址,如果起始地址为0,则Linux系统会自动挑选合适的起始地址
2. prot: 申请空间的权限
1) 可读
2) 可写
3) 可执行
3. flags: 映射类型
1) 文件映射
2) 匿名空间
4. fd: 在进行文件映射时指定文件描述符
*/
int munmap(void *addr, size_t length);
mmap()的作用和windows系统习的VirtualAlloc()很类似,它的作用就是向操作系统申请一段"虚拟地址空间",当然这块虚拟地址空间可以映射到某个文件,当它不将地址映射到某个文件时,我们称这块空间为匿名(Anonymous)空间,匿名空间就可以拿来作为堆空间

值得注意的是,mmap()和windows下的VirtualAlloc()类似,它们都是系统虚拟空间申请函数,它们申请的空间的起始地址(addr)和大小(length)都必须是系统页的大小的整数倍。对于字节数很小的请求如果也使用mmap的话,会造成大量的空间浪费的

0x3: Glibc对堆内存的分配和管理

对于操作系统来说,所有进程的堆内存都是通过内核来统一管理的,但是对于Ring3的应用程序来说,如果每次进行申请或者释放堆空间都要进行系统调用,会带来很大的性能开销,所以比较好的做法是由程序的运行库(Glibc库)向操作系统一次性申请一块"适当大小"的堆空间,然后由程序运行库自己管理这块空间
运行库相当于向操作系统"批发"了一块较大的堆空间,然后再"零售"分配给程序用。当全部分配完或程序有大量的内存需求时,再根据实际需求向操作系统再次申请分配。运行库在向程序"零售"分配堆空间时,必须对这块堆空间进行有效地管理,这个算法就是"堆的分配算法"

glibc的malloc函数的处理逻辑

\glibc-2.18\malloc\malloc.c

. 对于小于128KB的请求,直接在现有的堆空间里,按照堆分配算法为它分配一块空间并返回
. 对于大于128KB的请求,它会使用mmap()系统调用分配一块匿名空间,然后在这个匿名空间中为用户分配空间

code

/* malloc example: random string generator*/
#include <stdio.h> /* printf, scanf, NULL */
#include <stdlib.h> /* malloc, free, rand */ int main ()
{
int i,n;
char * buffer; printf ("How long do you want the string? ");
scanf ("%d", &i); buffer = (char*) malloc (i+);
if (buffer==NULL) exit (); for (n=; n<i; n++)
{
buffer[n]=rand()%+'a';
}
buffer[i]='\0'; printf ("Random string: %s\n",buffer);
free (buffer); return ;
}

0x4: C++的运算符对堆内存的分配和管理: new/delete

对于非内部数据类的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加给malloc/free

int *p1 = (int *)malloc(sizeof(int) * length);
==
int *p2 = new int[length];

使用new/delete和使用malloc/free相比,有如下特性

. new内置了sizeof、类型转换和类型安全检查功能

. 对于非内部数据类型的对象而言,new 在创建动态对象的同时完成了初始化工作。如果对象有多个构造函数,那么new的语句也可以有多种形式 

. 如果用new创建对象数组,那么只能使用对象的无参数构造函数
/*
OK: Obj *objects = new Obj[100]; // 创建100 个动态对象
NO: Obj *objects = new Obj[100](1); // 创建100 个动态对象的同时赋初值1
*/ . 在用delete释放对象数组时,留意不要丢了符号'[]'
/*
OK: delete []objects;
NO: delete objects; //相当于delete objects[0],漏掉了另外99个对象。
*/ . new自动计算需要分配的空间,而malloc需要手工计算字节数 . new是类型安全的,而malloc不是
new operator 由两步构成,分别是 operator new 和 construct
/*
OK: int* p = new float[2]; // 编译时指出错误
NO: int* p = malloc(2*sizeof(float)); // 编译时无法指出错误
*/ . operator new对应于malloc,但operator new可以重载,可以自定义内存分配策略,甚至不做内存分配,甚至分配到非内存设备上。而malloc无能为力 . new将调用constructor,而malloc不能;delete将调用destructor,而free不能 . malloc/free要库文件支持,new/delete则不要

Relevant Link:

http://blog.csdn.net/hackbuteer1/article/details/6789164

0x5: 堆分配算法

在大多数情况下,应用程序使用Glibc库的malloc/free进行堆内存的申请和释放(当然,应用程序也可以使用原始的方法直接使用mmap、brk系统调用进行堆空间的申请),对于Glibc库来说,如何管理一大块连续的内存空间,能够按照需求分配、释放其中的空间,这就是堆分配算法

1. 空闲列表

空闲链表(Free List)的方式实际上就是把堆中各个空闲的块按照链表的方式连接起来

. 当用户请求一块内存空间时,可以遍历整个列表,直到找到合适大小的块并且将它拆分
. 当用户释放空间时,将它合并到空闲链表中

空闲链表是这样一种结构,在堆里的每个空闲空间的开头(或结尾)有一个头(header),头结构里记录了"上一个"(prev)和"下一个"(next)空闲的地址,也就是说,所有空闲的块形成了一个链表

基于这种结构,在请求分配空间时

. 首先在空闲链表里查找足够容纳请求大小的一个空闲块
. 然后将这个块分为2部分
) 一部分为程序请求的空间
) 另一部分为剩余下来的空闲空间
. 将链表里对应原来空闲块的结构更新为新的剩下的空闲块
. 如果剩下的空闲块大小为0,则直接将这个结构从链表里删除

2. 位图

针对空闲链表的弊端,有一种更加稳健的分配方式,即位图(bitmap),核心思想是

. 将整个堆内存划分为大量的块(block),每个块的大小相同
. 当用户请求内存的时候,总是分配数个块的空间给用户
) 第一个块: 已分配区域的头(head)
) 其余的块: 已分配区域的主体(body)
. 我们可以使用一个整数数组来记录块的使用情况,由于每个块只有头/主体/空闲这3种状态,因此仅仅需要两位即可表示一个块,因为称为"位图"
//位图(bitmap)不位于这所有内存块中,而是保存其他地方的一块独立的内存区域
. 位图(bitmap)的目的是为实际的堆内存维护一个描述分配状态的元数据(常常是数组形式),通过对全部目标内存地址建立一一对应的关系,通过bit的方式进行状态描述

位图(bitmap)的优缺点如下

. 速度快
整个堆的空闲信息存储在一个数组内,因此访问该数组时cache容易命中 . 稳定性好
为了避免用户越界读写破坏数据,我们只需要对占用空间较小的位图进行备份即可 . 块不需要额外信息,易于管理 . 分配内存的时候容易产生碎片 . 如果堆很大,块很小(这样可能减小碎片),那么位图会很大,这样可能会导致失去cache命中率高的优势,而且也会浪费一定的空间。针对这种情况,我们可以使用多级的位图

3. 对象池

对象池的思路很简单,如果每一次分配的空间大小都一样,那么就可以按照这个每次请求分配的大小作为一个单位,把整个堆空间划分为大小的小块,每次请求的时候只需要找到一个小块即可
对象池的管理方法可以采用空闲链表,也可以采用位图,与它们的区别仅仅在于对象池假定了每次请求都是一个固定的大小

4. 总结

在真实场景中,堆的分配算法往往是采取多种算法复合而成的,例如glibc

. 小于64byte的空间申请: 采用类似对象池的算法
. 大于64byte、小于512byte的空间申请: 采取空闲链表或者位图
. 大于512byte的空间申请: 最佳适配算法
. 大于128KB的空间申请: 使用mmap机制直接向操作系统申请空间

Copyright (c) 2014 LittleHann All rights reserved

Operating System Memory Management、Page Fault Exception、Cache Replacement Strategy Learning、LRU Algorithm的更多相关文章

  1. Operating system management of address-translation-related data structures and hardware lookasides

    An approach is provided in a hypervised computer system where a page table request is at an operatin ...

  2. ADDM Reports bug:Significant virtual memory paging was detected on the host operating system

    查看ADDM(数据库版本为ORACLE 10.2.0.5.0)报告时,发现其中有个结论非常不靠谱:Significant virtual memory paging was detected on t ...

  3. Full exploitation of a cluster hardware configuration requires some enhancements to a single-system operating system.

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION Operating System Desi ...

  4. Operating system coordinated thermal management

    A processor's performance state may be adjusted based on processor temperature. On transitions to a ...

  5. 【技巧总结】Penetration Test Engineer[5]-Operating System Security(SQL Server、MySQL提权)

    4.数据库安全基础 4.1.MSSQL 数据库角色权限 sysadmin:执行SQL Server中的任何动作 db_owner:可以执行数据库中技术所有动作的用户 public:数据库的每个合法用户 ...

  6. Exception in thread "main" java.lang.IllegalArgumentException: System memory 202768384 must be at least 4.718592E8. Please use a larger heap size.

    Spark-submit 提交任务时候报错 Exception in thread "main" java.lang.IllegalArgumentException: Syste ...

  7. Multiprocessor Operating System Design Considerations SYMMETRIC MULTIPROCESSORS

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION An SMP operating syst ...

  8. Armv8-A Memory management

    本文介绍Armv8-A的内存管理.内存管理指的是在系统中,内存访问是如何实现的. 使用内存管理机制,可以让每个应用之间的内存地址分离,即sandbox application,也可以让多个在物理内存上 ...

  9. MIT-6.828-JOS-lab2:Memory management

    MIT-6.828 Lab 2: Memory Management实验报告 tags:mit-6.828 os 概述 本文主要介绍lab2,讲的是操作系统内存管理,从内容上分为三部分: 第一部分讲的 ...

随机推荐

  1. Android Studio系列教程四--Gradle基础

    Android Studio系列教程四--Gradle基础 2014 年 12 月 18 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzhang ...

  2. JQuery[一] 中如何选中$(this)下面的子元素

    <ul> li><span></span></li> li><span></span></li> < ...

  3. kprobe原理解析(二)

    上一篇文章和大家简要说明了下kprobe到底应该怎样用,那么现在我们就揭开kprobe神秘的面纱,刨根问底,一睹kprobe的庐山真面目. kprobe的工作过程大致如下: 1)注册kprobe.注册 ...

  4. 17Mybatis_动态sql-sql片段

    这篇文章讲一下sql片段. 讲一下sql片段的的需求: 将上边实现的动态sql判断代码块抽取出来,组成一个sql片段.其它的statement中就可以引用sql片段. 方便程序员进行开发. 第一步我们 ...

  5. 【转】WCF与Web API 区别(应用场景)

    Web api  主要功能: 支持基于Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操作 请求的回 ...

  6. Linux 信号捕捉

    pause函数 pause函数挂起调用它的进程,直到有任何消息到达. 调用进程必须有能力处理送达的信号,否则信号的默认部署就会发生. int pause(void); 只有进程捕获到一个信号的时候pa ...

  7. php基础27:文件写入

    <?php //1.打开一个文件 /* 第一个参数:打开的文件,第二个参数表明模式,w只写 如果打开的文件已经有了,那么删除这个文件,重新创建 如果没有,直接创建 fopen返回的是资源类型re ...

  8. webapi同一个Controller多个函数

    现在用webapi发现一个问题,比如用get方法调用的的时候函数名好像没用,不管你写什么名称,它只认调用相同参数的一个函数,而且以get开头的函数虽然名称不同但是只要参数相同就会报错,无法调用怎么回事 ...

  9. ActionBar在Android2.x的实现,类似新版微信界面。

    ActionBar完美兼容Android4.x的机型,虽然现在Android2.x的系统越来越少,还有有一部分人使用的仍是2.x的系统,所以我们还得考虑着兼容性问题. 对比图: Test例子与微信的对 ...

  10. Matlab中的数据类型

    Matlab中有15种基本数据类型,主要是整型.浮点.逻辑.字符.日期和时间.结构数组.单元格数组以及函数句柄等.         1.整型:(int8:uint8:int16:uint16:int3 ...