From 1aa8ec7f3eac66ef8e02326de0fc97d55b19b3bd Mon Sep 17 00:00:00 2001 From: yumaojun03 <719118794@qq.com> Date: Sun, 1 Feb 2026 16:00:12 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat:=20=E6=B7=BB=E5=8A=A0Go=E8=AF=AD?= =?UTF-8?q?=E8=A8=80=E5=87=BD=E6=95=B0=E5=BC=8F=E7=BC=96=E7=A8=8B=E5=92=8C?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E4=BD=93=E8=BF=9B=E9=98=B6=E6=95=99=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增Reduce函数实现map-reduce模式 - 实现装饰器模式wrapper函数 - 添加函数闭包和计数器功能 - 完善结构体方法、继承、组合和重写机制 - 增加JSON序列化反序列化及标签处理 - 创建新的学习章节day04关于结构体进阶内容 - 更新README目录结构包含新章节 ``` --- README.md | 3 +- day03/README.md | 4 +- day03/function/main.go | 43 +++++++ day03/function/map_reduce.drawio | 61 +++++++++ day04/README.md | 5 + day04/struct/01.drawio | 31 +++++ day04/struct/README.md | 155 ++++++++++++++++++++++ day04/struct/image.png | Bin 0 -> 99789 bytes day04/struct/json.drawio | 76 +++++++++++ day04/struct/main.go | 212 +++++++++++++++++++++++++++++++ 10 files changed, 586 insertions(+), 4 deletions(-) create mode 100644 day03/function/map_reduce.drawio create mode 100644 day04/README.md create mode 100644 day04/struct/01.drawio create mode 100644 day04/struct/README.md create mode 100644 day04/struct/image.png create mode 100644 day04/struct/json.drawio create mode 100644 day04/struct/main.go diff --git a/README.md b/README.md index 57d942f..a447f6e 100644 --- a/README.md +++ b/README.md @@ -9,4 +9,5 @@ + [基础语法与环境搭建](./day01/README.md) + [复合数据结构](./day02/README.md) -+ [函数与结构体](./day03/README.md) \ No newline at end of file ++ [函数与结构体](./day03/README.md) ++ [结构体(2)与指针](./day04/README.md) \ No newline at end of file diff --git a/day03/README.md b/day03/README.md index 94955f0..6fcb057 100644 --- a/day03/README.md +++ b/day03/README.md @@ -6,6 +6,4 @@ + [Go语言函数](./function/README.md) + [defer与异常](./error/README.md) -+ [Go语言结构体](./struct/README.md) -+ Go语言指针 -+ 扩展反射与内存对齐 \ No newline at end of file ++ [Go语言结构体](./struct/README.md) \ No newline at end of file diff --git a/day03/function/main.go b/day03/function/main.go index c2cc321..cdb7b40 100644 --- a/day03/function/main.go +++ b/day03/function/main.go @@ -48,6 +48,18 @@ func main() { walkDir(".", func(filePath string) { fmt.Println(filePath) }) + + // + fmt.Println(Reduce([]int{1, 2, 3, 4}, 0, func(init int, target int) int { + return init + target + })) + + wrapper, counter := Wrapper(func() { + logfn("hello") + }) + + wrapper() + fmt.Println("", counter()) } func logfn(log string) { @@ -206,3 +218,34 @@ func walkDir(path string, fn func(string)) { } } } + +// Reduce([1 2 3], 0, +) -> 6 +// 处理函数 处理聚会方式 +func Reduce(nums []int, init int, fn func(init int, target int) int) int { + if len(nums) == 0 { + return init + } + + var sum int + for _, num := range nums { + sum += fn(init, num) + } + + return sum +} + +// 装饰器模式, 函数增强 +// @函数作为参数传递 +func Wrapper(fn func()) (func(), func() int) { + // 统计函数调用测试 + count := 0 + + return func() { + count++ + fmt.Println("开始") + fn() + fmt.Println("结束") + }, func() int { + return count + } +} diff --git a/day03/function/map_reduce.drawio b/day03/function/map_reduce.drawio new file mode 100644 index 0000000..59e950d --- /dev/null +++ b/day03/function/map_reduce.drawio @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/day04/README.md b/day04/README.md new file mode 100644 index 0000000..378de00 --- /dev/null +++ b/day04/README.md @@ -0,0 +1,5 @@ +# 结构体(2)与指针 + ++ [Go语言结构体](./struct/README.md) ++ Go语言指针 ++ 扩展反射与内存对齐 \ No newline at end of file diff --git a/day04/struct/01.drawio b/day04/struct/01.drawio new file mode 100644 index 0000000..dda1d31 --- /dev/null +++ b/day04/struct/01.drawio @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/day04/struct/README.md b/day04/struct/README.md new file mode 100644 index 0000000..cd0b531 --- /dev/null +++ b/day04/struct/README.md @@ -0,0 +1,155 @@ +# 结构体(2) + + + + +## 方法 + +```go +// func ChangePersonAge(p *Person, newAge int) +func (p *Person) ChangePersonAge(newAge int) { + p.age = newAge +} + +// ChangePersonAge(&p1, 22) +// p1.ChangePersonAge(22) +``` + + +## 继承 + +Bike 继承了TranficTool 所有属性和方法 +```go +type TranficTool struct { + Name string + Speed int + Color string +} + +// Drive 是交通工具的行驶方法 +func (t *TranficTool) Drive() { + fmt.Printf("%s 正在以 %d 的速度前进\n", t.Name, t.Speed) +} + + +// Bike 是自行车 +type Bike struct { + // 嵌入了交通工具, 继承了交通工具的属性和方法 (可以上班) + TranficTool +} +``` + +## 组合 + +Bike 继承了TranficTool 所有属性和方法, 同时还组合了PlayTool 的所有的属性的方法(组合的时候避免有相同的字段) +```go +type TranficTool struct { + Name string + Speed int + Color string +} + +// Drive 是交通工具的行驶方法 +func (t *TranficTool) Drive() { + fmt.Printf("%s 正在以 %d 的速度前进\n", t.Name, t.Speed) +} + +// PlayTool 是一个表演工具 +type PlayTool struct{} + +func (p *PlayTool) Play() { + fmt.Println("开始我的表演: 后空翻") +} + +func (b *PlayTool) Jump() { + fmt.Println("海豚跳: 高级版") +} + +// Bike 是自行车 +type Bike struct { + // 嵌入了交通工具, 继承了交通工具的属性和方法 (可以上班) + TranficTool + // 嵌套了PlayTool, 继承了PlayTool的方法(可以表演) + PlayTool +} +``` + +## 重写 + +我们继承来的方法 不满足我们的需求,那么我们就需要重写方法 + +```go +// review的核心逻辑: 优先找方法接收者所属的结构体的方法(优先级最高) +// 如果找不到,再去找嵌入的结构体的方法 +// 如果嵌入的结构体也找不到,再去找嵌入的结构体的嵌入结构体的方法 +// 直到找到为止 +// 等同于重写(Rewrite),覆盖了之前的继承而来的方法 +func (b *Bike) Jump() { + fmt.Println("海豚跳 基础版") +} +``` + +重写为程序提供了更高的灵活性(兼容性) + +## Json + +### 序列化与反序列化 + +一种常见的序列化的方法,也是 常用于数据传递,也实现服务的复制, 既然数据都复制了也就实现的深拷贝(现在, 不是一个对象的完整服务) + +常见的JSON库: json, go-json, 还有些第三方库: https://github.com/json-iterator/go + +当前 Go 标准库的 json 库已经足够我们使用, 并且兼容性高,性能也强,最新的版本里面 + +![alt text](image.png) + ++ 序列化::把结构体序列化为JSON字符串 (obj -> json(bytes)), json.Marshal() +```go + // 类型转换: []byte -> string (需要字符辩解库: acsic, unicode, gbk, gb18030, gb2312, gbk-sjis-x0213, gb18030-sjis-x0213, gb2312-sjis-x0213, gbk-sjis-x0212, gb18030-sjis-x0212, gb2312-sjis-x0212, gbk-sj) + // [123 34 78 97 109 101 34 58 34 232 135 170 232 161 140 232 189 166 34 44 34 83 112 101 101 100 34 58 50 48 44 34 67 111 108 111 114 34 58 34 233 187 145 232 137 178 34 125] + fmt.Println(bikeJson) + // 编码点 对应的 字符串 + // // 123 34 78 97 109 101 34 58 34 33258 34892 36710 34 44 34 83 112 101 101 100 34 58 50 48 44 34 67 111 108 111 114 34 58 34 40657 33394 34 125 (uicode 码表) + // {"Name":"自行车","Speed":20,"Color":"黑色"} + fmt.Println("bike json string: ", string(bikeJson)) +``` + + ++ 反序列化: 把JSON字符串 反序列化为结构体 (json(bytes) -> obj), json.Unmarshal() +```go + // json.Unmarshal() + bike_cloned := &Bike{} + if err := json.Unmarshal(bikeJson, bike_cloned); err != nil { + panic(err) + } + fmt.Println("bike source:", bike) + fmt.Println("bike clone:", bike_cloned) +``` + +注意基于 Json来复制对象,是有属性无法复制的,比如指针,指针类型无法复制,指针类型需要特殊处理 + + +## Json标签 + +json标签: 用来告诉json库,如何将结构体字段序列化为JSON字符串 + +```json +// Name => name +// Speed => speed +// Color => color +{"Name":"自行车","Speed":20,"Color":"黑色"} +``` + +Json Tag: Struct Tag 核心能力,通过给结构体字段添加标签,来告诉json库,如何将结构体字段序列化为JSON字符串(key 映射关系) + +```go +// JSON: {"name":"自行车","speed":20,"color":"黑色"} +type TranficTool struct { + // `` 表示字符串 都是 Struct Tag, 结构体标签,lib 反射使用 + Name string `json:"name"` + Speed int `json:"speed"` + Color string `json:"color"` + move bool +} +``` + diff --git a/day04/struct/image.png b/day04/struct/image.png new file mode 100644 index 0000000000000000000000000000000000000000..30f8fe2d6e155851fdb8cb80818c41bcbb866b7c GIT binary patch literal 99789 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%0DHkn^<6PI@LzC>GoK%c_l^isdoU4 z-juf7Cu6(q3ua?vZMU=yG^Vm8w|g#JS~ndi(BV*)zY6-dQIY*OV$FLpSk4V!9qc$@ z3T8q3mGfTm)rMNGe$KxpUL3FxsM*r~4ztr2;~kX1E`916`rgpqB1?)wK$Ie~omtJ( z1J?YT`CGs~A5L?4RS4{xn>GCU`zAO> zTuG2EU1#@$^G zX?IzSfcu}H{(cg9q>PhghS_Mna$0$%2eADZ`d=vk`kwLP%qk_*I%(!e$t3iAsvMwy zAtyoP`0s6NARVW^TaO9hunw=uwC`RA+lhc3P|mx|mg<(Tk?`OEh2^r&xn#?|&Rp8uM4sA}y)qd}Tv|2VV*z+Jlau z;!vc6;rRrRn_P9W0L;!VntCM5L|MZBqV2uovHbh@ajvY(-r0L^myD1uGudP-*<{NI zN%mG`&qRbuqCru1l1+B9R}@-^`aaL{9`}8J{`md#`|I}TeRG}HdA`o)IF93aJmcwR zkOI2gHC*Ep{mOJV>OtBwe3c3YQ}acdndhnhAB2bd81vO0t%->55KQ8~NjrAYGABhy zXFh1WEP5*M>$4jlGj!xX6bpU4_dFkLYWy}POfL5*f)C2&kM(y@k{^e`81X?|68T25 zUcLXh*D^G8RYmbSO@;{KxwCUN>fr=!vIpL`|{{HcQ$#bxcBnZjG z6$thjW%@U(qU^+w@d_~hr1V8n;-WwZje<$1?XRB)COUlr2aDoYA6}AJ%_##{MX6r7 z*2?dIKBfc+Afje!}tz9tL6MzVm%0S!$P`~Hw+HWSe(ijQBesc`}o_}(r1|mo_6x@Pdz-gYCErsz5 zFox-Z;5h!&>%IB+=K$-1>IUXC6K=b_P3o;oYWyH?I(WIdh62$DXQSEz<@2;%=bcKF6Pr_DZofaJX4PsFfA!b`tSJr*PLQtR%(|=JLy&!z7 zM4yva5IGzFIpSZGj@px*h7k`9(ZY*eg7q7&!d;`kK3f2-=u0Bt49zQ$yqzaXp8{%Z_FO-ICK6+9PydtVf3;PL6^-WDF%3$nWW z;8BZ!XYFa$Dj-F~fq@2AuNvk;p1YYUs(;X0--MY8gQ<>!i|A-$TI^O~4X_+Tbe>X@ zkTPK~V@bGdwEtOAQWu`q+C2~ITW$zI>;HDbLF#<%zr1SGk!gLjttf``y%&L|7E|Hh}+hPK~aH{V%&_7`TGn9z{^`=wKvBvJD*#EIT^_P57zoadvm3=#g7fxW{I5xs*_*1Y$j1j>$$97d1}a~ z5?~kg?`Qs~$hy4`b25)r@ski@@?4yP_CLBK4iiK%u{|hA-no*?uW)4jTFUbh zI!L>@-?k{=18!Z@@al-2%4;w`L;MA}Wd6(tcQU_RL`V(c+cm3YdCywv(QhrG8cTnG z?M94@V{4%XVZQ>?8-1du$^XvA*dWLZ>92CEeb4mp3dhV(;cmTT>6O*q3KC zcZ+3jv`q{@D+I2xStctUT!RqI@)Hna;8AU)oO75k|D?5aM29tAzDk7XC;)r>ve^re z<4fQggnkzH_~--MC8{^zB-x&96;5HoB4LBQw+HhcxAP(CoXq_N8vYO7$drk6@PC|M2haX%Efkv*M?1Em_HO{OhJeS`QPIl}Lk@=Z8X>R7P(#7$o0E}a zaBmIVFb2mUu`l6C3LPf)axpk`Z>7&C{T9}6h~kPS3}lKy7h~zuP6vL@r|%Oo%D9j5 z<+*P|gmC3dY7t`(*;KCcN_HdoA7WFK&x+)q-uY zVB9>g#7lW#kUDXzvBvV#+B8hGiJTG-yvUnTjT&J2*RWBBI5Z&J%W+h{o0D`^8{qX2 zFW})J@DGy+-4EpLm76C$cx0Z$B|TK8J7hZp2DK*}NlxQ`nRC4y{iIki_;u<PfKZwxDmVEGo{%krGG{$o6fDns(NIH+lZ5)QO&asi39RlS{^CRd-yMy7%|) zKMg1u29v*0jxM~|7j1ZVa{{Bs-b8hRpkd9flVB zqm9%hj5+4A%|dnx=b%LdNWf7zJKI?!?vE|>BvNY<>worZUBiz;$J3nnP9 zDebvj z>@UPku+EJ$|CjAs81p?0%JLUt=IOkiGPK;A+;)p5in>1Wf5AH4THG* znQwK&BpUoK^V1!Qj;Q4*8oe=?vW&lJf9?2OhMMg#yNpqfRG*@6kF*)>g~KNWPe-$e z3-9OiuP2_*wso$%$4h4Fw%uS5ysIV>pIW2!pFfUs+)J@}0TY5yaa;hcinV>R^isaB zp36FTt~Ug%^oNfMKWLz~rw`zN=i7H8P7cupfw;*$ zc80xZwZ0?Ztk|@wXUw+WYa>WQ*h?>Dx!}&HH#!Yfl-vz8O(9Sk^NQI_ax)i(%MIg1 zj)jw0%hSxAP7ulg1k5Edd!~wkq$ov;;e@5y;Z?DoC+9$&-M`;@&ILLc_!U)B>DyXw*pdfHbxcdJ5X68mxu z1}#->K>U<__2(`+9|8|FA}8-)5XVZy=F9UE;4kyqV)ap^AR9TKZ;~hDQRk>&B%zMh zR~F1(ImpUik!}dxY$j~DC?|^{#ub}`3d;@!C;|5`-iHxEP#GAQgSpo@2xFlC%k@l2 zaEQzy#hoDgr6ZXGW2%!>r&yGE%;ZK_K{tnPIRhPvPi|yJ511>43()i$+r6S`q0GCZ zLS{?!Me*nRU087uvcL7pN4;CDQf0)Xw2Odgiz+%h#9H|6vdV;i!)~{G=NY19tqlLr z4>qBFF3&EKMO~=~xv{LJ8~E0reVy*_q2>ce?+4(}*dthVX+COQ{3Y{RMb26rTS#azEbyeKFWDGCzV*YtYEp=vo zorrVu2|^w_5;4{yafC>(og*M+2z$xkZX&m~0_}vOOMV+InoE>HuqvqD$&!*nI+B2l z%j&Fkvp0d)3pH{^3{NGlZCw6NS@RZID)b;Em0Ib0trRCIfed`gsOJ|d6LXSb+uNN+ z&wGsdYv0wMG(kiq*?{{bb%XNJlHr2!X(F9M#pB#DlXW)f1+IT?-S2C}))Ki04vCy~ z%7oa@5&n!f%(A&+(8}X6-K%rH5;BtkNcE_38HmQRB*xG5`Mn_aiBKGmz+aZNtx};5 zjgSm{T}~*y0EN`6j|9y00Y~sB^En=;e1`ze&OqvE*ZsMcpG z#BBOq7_81x#>X(NijNf{v-E8xOKPc8z~VL3ork{LULazOD*ug|G-cD-MSwG|+ZjY} zlF+dBMIE&!we~)q4?th~SDG zR6Ah6RaYmPxe>E)jt@#ZRt zTjgL#Jyj+m@jWbnp?>h}MDQ1mpTNMNBS}Mp9ttSyH@}F9EG=oC=lu@NP@JbATXYG| zvVh^qs*r~|%4Fzi*J9(|%S;LZB9pmu))zFPo%0=tms1k#Vnjiq*#0qwyK($p)K@b9 zm>sY>p5u-EoI(9=oP(6}W4|e-o5WLPG%$Qh%$A;Tv%B|9O!AJk!q8SVKO3CYryW@jw451-nWl z(3O7ezO?qg^5S1VhUddsxL7Qy{HM72*L{Z{)31dU>-_)mk(P@(e}7`Q9VLT8z2B&Pea@j*Zx3FIs}OVW>CHKeGYZ0YPC^3&!_^3A z2;Q(i+vw*VU++U?>V_jHc)T`^da|cClfi!c|Efs-uR5i;REH~bA`X$hD#4$IwIB;n zz8*BJ?p3btK?}Q+2?Y52&yD&1eP6YQ+Q0vV0nW`U1+zVvHzM#pTirFiZz+4uBTp<; zdh z82*YN2!N&{ekFkBZ2};Yl9LbXY?yksQrRB#SO4o_nozm4A8ihdE%u7t>QrovPAAiK z@GB$TpdVaT>5_44K<+K<**HML6Vm!NerJ0S@~cqZUuaIdFs`PSv!`gl8vzo=E9&hi z-Q)w->)NQbMWA!pe`XH#3bNQ_G1E%y=VuNxi@AdLv~q?K5_Lx*4iDeAdP?~VJ__0BW5|X& z4__Kot+6jYL$Z;&;Z>%Sg9+MR07YyVUvc+B2+#{V`pVI}4YHqK)0nW~Urd(mN}(<{ z9`EOUm4}fwG%8&xPYHml*mGhM_>i%+}CT`gA`7Zmj@*f>PH^5%1JkAvKMsnWJGxoDv0qwxny<9 zZ|n9`@Xi1jPz#DF%yyvg@2C~t6iK1PK$`>AT?P09hS+S|o^RJwp5RsgZZxQ9$r ztA^=+MWi=?R&w3!>pTW7ttWRvlmHA6Z`f?v3}Ra&P3T5)cryX>rY)izzYgblt}UKr zf8qEPZt8>IIROb;Ma0l{7>63As9Oil;-7lY68@fY5t^f6UFB=lT1;lW5%pxw#LXe8()B#dwXY-Vat+?x^ z|2E8r)cB`s?7mDH_;U41b>GR83fU5tN&KA6ZC>az%*CXW#!_>Q8UJL#a->7%y_pEj z+DG6#JH&ukD2!*Cmm_u87(s|3WT6sM@{Ki)u<|wvbQQe3S+g_M1Vm$a$~dt^L`G-# z$vM#|^G}Fv_ttWwKemYz$w!);O=Z2%c&1%f4)K3@N-*y0!l`#k;2=|-x}ei&z~XE> z{#67{d>rQN7LUF~!qC6kcGqY~ucw_7PW)nt3KxC_g`Mw?y2}wlF-2AcxIfFAosClBY5emlk=I|$Db{Jcc9Txae|2lyC-IO{+yaV(8u_UE!$(iK;vR_I?5~hZmyVKQcD`| zC}0b*mkTCXiW`wqIVBCJ^28j;Yj-)zTdPcR-W>GNFcFJb6-(sX{@|~2P}xm7p`~_l z&tJ1^Q<{eB%D*3$C~`eH;tfZp;N=gw`Sa(GPpZj^`0Xq9kT+&nisv2~UV6-7Xv^B# z-Wj-=*s9%~D3Ra%mGr2!5M16Xm|C?lH@>8L2}_-Vou{5@Ypj0!Iotl)>{T_KaP?Ww z=Nla-sXTqKF+9md*DaIV7a@bNn3a$JWK5W$c;Uk-fAQ~<&OjXRk(z)D-*K-Mz#L|h z*1!>Pf5Pp7da4DK+j8mY{5f*^%?xVleEKiKP)GZ*gjfj_&F!$oEJSn=Ssz;XI7b(1 zE9_h9nR~oSBP(o~8BhlV4fj-k@6-mL=K%CE#Sc&bVJ zpQ5a&3=M5a%j$Dbm86hv_A+$&I#A27o`tNgL*n+xoF*J9;qACGgi&W;_pyC_HFT)` zf-WK)f?Wug3{S&ZEx&*QdX67+?B>OgqODJn9(f`C(es%G<-kdHtVldnE!%?a3;UTwP_m!><@74n`24>b z$;$AsOw4XCin<$W4g0GeO6;GN&B zvn^6A!Qh&u<-#hJ(h=~^kzJO_L@!$ zW!dz zZA3O7U!vfdT)|I@W4U-d5;Q14Vz@gp!10ggJWxPRHzpnae(N~G3Al>{(vHvO8zzuw zgwFcX6D-ZiNzS5|0eQ&I>HD$9(KIZftV5I5o-XO5!=7f&+E{xODF%LO+WdO!#dNYbOLxN z7?f&*DZXz&bzQ76Dx~Z&<;Ba!@LgNAr_RyhOP|kyiqMGnT`e=b4M(VF8rEbyCXUTC zvDW;3Y*MgFcuuyjPAToK$x)ozoyl^5sc9%PJ9N=z9T!Uc6~6_uPQWaXkH*kf=rA@D zVG57D<&J72`G^nlw*NkX;TW1t%{t7Hr}Y@h%}YLv9FuBX;TAi)O!`EpE%?+y&-xB(*#%&N?y4aM^zgCpr1$N+Nu?>@slNU=IL_X=Ac)kxGH#*F zepi3MJlz#wd99(EXj*&sTvmgQ*|W~J(5=P&u?kLnvS3F&--tfEObD?04OBt^&_0Dm z{xJschv46lt1=Ty653|EVZLt8P2+u2jk_;YI;oNBN*CfOm9O2^=l@Ok0HW|!s11xA zDs4qG%PDlk&UC9uz0;9D(}xl;v@-ou-2Pp5!hP<%iM5Z%AdSHbbx;7w!PY*Y(LW-a z`=AWij&r-EBidYjHBM>&M48`@8y8JmfGvr`0EO7``U5f}2mQ?p zsAPBO1?9Db@1apTCrH8^o9t{(S4+4SPX-wM&vjhK9wcHwK(+YvJ3vys3y7?pLU9ud zul1T27pvh;$K61MKcjOb_j<;#08_4ARGnb8c>Ro6xI0RO zG?Oqf>b6UdgR_*ze}8`-13#2M1PahE=Z7S{ZH3}n2^63w>glfx44;pN3nnIsacrHl zMZbN|z?%Bc+xq9TjhVxPX&g7lo z*HioF0Z8#0@E3z}&t3-X@p}8gvS6nR!j@NNopUdW?`xO@28j^fxQbvzw>AwLr#IHWSP4o zLdqh$K_JGjpFzZBh40$J$)=Uh%zdyj`9#r_PP&)|!sy}uIFIPJZ zzXN0c@ZmzP)yV$84c+ zqi~QnjmLl%B~lBp^iAGNKu4bkwNlVX&adEWX6Btg$^iuV#p)Hp<{K?6eJc9Vhy5ia zV5`WPRo?rYcj9`zozQ>%v%BN6Y~C$Nq{tNA5whyMe6reAxr7$@2?+NMf}gJCK1zo@ zXTDY7^a)FmV!1EUpY?7|pUvS3FQ&A~c{pZ%QA9EGyy4m->i>Ets9n5KkNLZ%uKqdz z%v^COruI6dD(Rj5=KSwpEH^_*^K}9A;t2SYBc>N9L=cHS zv373vG2zF}WFfi!;vtbm!rSrFmwErr5{GB;u}V>gS`Hlhl+W=nfX|TR=o(#faE}=U zSIM53Qfe+6d6DD4@4o>R>M;*u@rdlrh0?qm3VdrSa~UCAqUwF~C=qq~+t~j->!N%H zQpMd6Xf6+)=9laR@W26pIghO{Q2}66kzX`!iEyx>H_vPTyXZJP@I|)h;UocM{9p34 zJKH#D(wGCDumomM+EB%i`Po{So_??%^XGUMx#RsD@yob>ocT96jf)-@4xgZO9OK`H zc}*CucWv%*ZPbgIujE9*b@IF!)YXwb<`!V`JH8~S&kUEjWm-5X=L?z^j2!mIRHe+`F)SC~QWKHfXn#$8e?o6U^3M~&o^`yE1Dn}J+7_`XGJ4LcI^Um*K^#{ng* zJeM8>GIwN_^z7Y2SQk&GaGJcq6&0`f~yOcBmB$Y-_`7N8}x6 zyEiB1Dn$hToENwQCZb(aaNk*uH?$B7BMK-oIa%_0KB8(li((PuOgCM>F}=gjOwfj2 zLk9e6PX?A+t~>fko;lkv!iP%)js-`N9E)wP#l8r+IED8VSkz|g%TVw|!KwcaEBVS` zSIo&@`@Wqy+gcT{_v!-dni34sfk)Y;T4WNGd%;2&F^&}sgdqFmUR@~4g`gZr{Rax zaXo1fN=p^%ATYTG)wu^=E`sO6dCda=(Meusx)RVj70?(%vSP*Dgo_(ayE}u}`6A*y zv&t=~aXIlS&C(HJ41{#pT(=1L;oTG}OH))SUlTQw+AXR?CP4O*`Rw?I!)R{IA8y0l zdcCpw?)N0A-tyki31KvL2EGlfuNs8^N$fT}!0IV(si`rZm21D8xB*xp!bx$pQUV33 zYi)MU|7{LA;SomK9Apa{+{fz}8pQHI<0&Jqjz7k(0U(D2^`hXX;^#o>K}u~>XRi8~ z4OkDXdAaRCW)+>=Z_W?e!sFqc?WE60t#aUzEq;F6`A&5nD~r&!iKtl^=~m@ZUKG^w z7|-xq9drbdg8iF8aLi>Wg}LUfsMcu|3S6?~9{?84{Nv>VO7;vcL@&Ap5b{rdkbxw= zqFLG}ZY$V%d)MqilHxQRmUdo)(o9T<60+GD(Fr0Y?Hu{o1djnRO2pV*$>Nd7JEbdo z>BZ;|2t*Hk*)Se%{+sHDc94!$Q)lPKUsyZ2+Rd#yaN_-ht#eo5$$@f&kkax^%SL!DSB8{4_ND zRdBRGITAk!x_0O;^6>(VcHs8eE>pknkJA4LijDMPsLU>f^UK8S)xF9AqnN&E0C1C6n}b|`ra9=LjiK(KGmI%kxJ?njr!zK^?jMpy zLV6rKdt`&81p{Bb+MV0TZ&NlkkVK{rT10~_Ed>msy%pMcb(AgSVbJT3N7w>_*avo@ znqW4Qv!xw-xempCZSUTBXIg}NeEA6`g_Ie@rQiiqzu`YnUeEmgv1m#m4% zb2AIa3~+*pu$ub5{f6X&%y$9xI8x1`{Xe;X+O_{ChHIYDs0A34w=n@wMR zWa6dAA@Q5wnZw%#tVtSv2<&AWe7gPeI&lyMy^)Mg)O?S#GJQ+Ekz>L85GR?1ieVPI z!K%-Y|G857o^^eF&7RTjO!!hI^27O1;)^P0s+Nj(%H3&)rm$7krK4vwpJxa$YZzB- zm3_W{D2^Y8Ur6rv(h+MUkubhqLZm{IY1CS*m{5F6X<#n z2xr?b#a@io;?eBtMQtl?#~X)3hP z$S&}>$dDMMC!n~PPXDehEx$+RgekO3!+7wS@P}8sw4$nd*&ty3?n|&aXtk=VyXWMg zB-pfEA|K1gGa^Fvq#x{kB}pJ1Pf?dpZ}umNz<&zT!&XC*QFtTSA4IVR0cEJPrO5`u z8E#4=K|LgMkU!PrAG?iY905#QN7T&5)Mu(D{pWsp4>=cjJX86TKDlY|)w=>?jldu9*+am(Iiug%~YJ;e6IC z3MQ&{v3Mq8lj-yIOIP9VFCK;`q#gD?Ik2XQA>7lOCoS}zxu*FUe-{?# z19JoF)dTP80LAO@<%{a@D)rLQ(=EHz0w3k>>!KDpDKkCII~Fetm>w2)(#m1)tCX{B zWz(MN=;~NR`cdDd)G@0LvVBhZJUqg)<=SmD4d2W|M`&syjtJ?Dk zwy3(?GX&%(P+tQ5M2=K;+^dg#Uu3!>iK5eKUd}y{F_dZJc*G+{;S`_Ekb+G_8y5&j zh3t3}L{?4BaatIl=y-mAdAju&-NRT|nG*I)hfYr`@)8=~VLn;*nkrETrVX#vIixIV z82ANoJjydI*8X2|y?YHC0*UOIV!o2uUX!zYK3$JHWi(4{Npa04a3;1ap7JxWt@cM-A5u3kf$4lk$H(eqwWuxY{>X1THC z`K&lsa-sQ2G)Yzy(Xsr+w&_yJ)(=3E>+ooZLGyZt=#{;_k}A$6DMK>Du<(5t6=^9W zxGFE@)Qx3M_-3RYL<(=(B2P+ykk#=YR1?I%vcV55P1|4WYL>eps)ws-&=I#bFUzAf zu-D7fLhA4tF@ zZbe3c7$=Fw-qSvjizcRWQ6XsP=zlo#<>)y6O}Q<4bS;H2i%$4urgg`$Qo2HJF6QX` ze8mhOzVFcQo^JWZUn1lMg@hedxtJlrWkrG~Fv3pf7C6EkzD;9;%iXm(T)eM4S$x>o zm=f8DN76?&k{-QcnpKezf44UD;v-m=W56E4spGw+jaY33wo#p;Y+}Oae*yD3B(~&+ zEsfe5<0~@3O-YFYwhDO z1WOZ8WA#P1D6v;(GZN3KuP7irscrte!xzd8zF>#A9Gx@qzf^~|KAUhw7NxA+1*n_= zb^N4OSAReNje8gmW-qF%*Cq+C@+Q{2DV1V>?UT3kcZrbm50=;_WPhg%7s+srw(>WR z7>e*o_&0&YbueyeR^==MP>wUqzq>5YGr=_C9NJYg#eJ~x;f#Q6y2nr%nT+5TA9%}T zc_$rHxIr1#k<5HbNbK^sW_$F`Hl!1PJ62c3$Es~~HGG)b<4Ki*?+dSIS1MRa@etge(n_iC_*wxx94gz;* zpoV(8cqWFGJ?TEMKI$yDOimYdaNak_gJBP_qK1D8gtl z8rIisre!F%+ByWv*idY~K z9k*9VAPt8VD3QK3h`d_woyPlS6@CFs^K;$KNWq?^Uq8C~T`+53pxqS6$I``PItL+v zNd0V`gk{4!P4_tSaBjYY+L*X%ruNLdB!b2OA^qxVMd0mOMRawTMaO`BilTOoXf#e= zD)j^QysEa_IU4jvnO#9u(nEaIQnY`ngtiKuqYQP+Q=RezWQ)-M6ivY7jQmGWC*ZcoJyOGQ^0G0x zPVXrto7YbA*lwucxE-aMv)dstwn!I!Ds6(C!3c!irNJ?T!`9n)3Y6iD|T6wAxV7@%~Af@E2i(`7x&wC zobg)=pdZEz{uKqv8l>gXg(>qnN5*wQl;t4^d`vRLHQl8Pt9&} zPuP8?x*RZ;($7vJZ3{ra==ylsJnP_!w?6rpDDZBmWe7<4*PluAv#! z5=e`<qD)q9YH@~tm_@HvBlnibS3KQ26=lC7 zo#(16h}8w<%Em!VlyX7EHE?m*Ly`V7eX9hS2@&D3kn=w`D)uX#MEM{^9 zSI?rD87b{5+xl;*M&4ntGcb~fjn8`>H9c1&>rON`wwm-gzOyNO1imMuuUuc;-l-&p zW{lF0_1X$WdGrscWfWobjayv8yuuqRy(F66lIrb}Xx7{DVx>5d>n^<=;76>z7ZSFM zIt?7a2(R?ySPM)R?-QvK>2w}r$xB}B1$V1gzNSy!4kde&4uRU?=t-VDCIb&B00WXN zbT|Dz!^EoN`ZDp$f$}IE=cGB}*j~KgEgV~f5Oc(<)J#XpX#2P+yT|T|nL@<44xyy? zYk$3`E#1~A=MkA-Io77ZP-B1itZDVa&Q}B60K$x=Bd`T%!OU~k-!c+1a1lmrtCP!p z^3^!;WOQ{_{M>x_iUi-6tiTYW@9X0#fU)Lk7bU3WfbK48+P->pN;3PTUf5Osv18kk$vdpq`^Z0+#@@fZ@&(b_ zX$XBwW0ahhNrYojXXIuo_*eGj@dlvJ=NRcprpQD_znp49H4L=?D{jd1B8%IjS7C%a z7573+S|yFI-P;y|()HWlHYV+DS~3b~+p84>%^oi_^GYO;>iUvHIroV*UJ158@l1Pc zu0=c~y%rmEr>IkH`Z(2D@4d^w-OoOU(GvP1wsl9qbA0z`9y6n0`i0$&aclf(oYHt| z2ZU#Q>T)i_B|t1}BrKgD1!_E$S$H@|BHlph+GHN-QLMQ-o=Y-vy^b*Pp1>}Dc#y+X z9tC@kdm~5-ezx2S7X7HteU$W#T;El%WYVsOhXqCrdK2en?55)DQ(3cgR$*uLKh?fr z;trpqo;gbFO2WqvW7@dVz7u}m%s$LL$v(%dWGDBYX`J`RS=YiAI~UbdXn0SKjoReV zi0kz|ESpU!n~@0YEfX%}i~{0)b6wLOK>ix4a;{S^<>;Kp#wR?+&4>L|`3nQN*hf;i zTFoVHI9wJw?&rYz<3$p#1SgeAqEr%1obr#=L)l z=~#dZXZEt3^%5{*@mf?(-FTB}K)?)ygJDM<7lp`pK-<&r?&^HKQLpYYCg^CE8n1*X z)*_8TC6RHeK&z8xzfFUgNtkP~l;*tcO=p;JIe&RWIzZx~I4v`y{PnB;?*Zx+aF;4m@8xE_Sw&&L5t#PTZ_`q@prm}^tew1xS=z3+)d1m?2XXTl=K}H z^HO6g{nK@;2asgCQ^%B!SKYaw%c7n5o?KK+Q&uET?r40fe|Keqh~v(6k^@-UbHax_ zsaqXKGMe@DZ8o1aDrjPlAFuEP$clV6DQzPnj>e=DeYIKGTMjLrAPa!3Eu($S@Ep@$ zFl-8zBkcYAq%a2_0~wTJ!vYQ=T}}<|Q%>|Tj&Rehn_EdISM(WEgDwi*b}!V;7R|#h z?DGC_kAT4}-i23g;!2-Y7$S2K8J{)9i}6tlXV!-985}t_uR3p(XrM6Nwo;|>I8G&g zWT}nPm0lBHB}ZRfJ5ERK6Vpat#gE8k?CY&(hoC#rp{UVGj0FLyWNmj&m7 zod{`^9Lw`R9e2+6(P+pxYdh*IhS}O_Sr)K{R(cpWoIb>lc3X+K&9YwrpX9<*BS%)R zuFJRK=JelME$_e=tj)-#jmL}=n)yum3v9#PQg=LR;gBl8f-mp4f|V;2)xz|n;EuR` zdyDd;KSX)e@VL|o`Y`L~66VMbTk*9REFEk7yE0wokb}7x)gMhxqT+SY`{jjcJTrofZCdO(2gn_agvJuA->7r|c`V60IpP(0goykk;VC=x;%P8lH)Wu{fNZ_^MXbo2; zi+Ew)nv|XnPCib-)xNJX_XA6>MOifr1EtSl*;pkWW{L8MIl%iz|TU9b!R zuO94`kXc}GO$fXHA-}fSD+iDbzHNz=b5YABh1OPi#{7w0} zBLMOjB6R`!rOmF~o7xXfiA0;q$e_FZMh!@Z5mF4%0l-I$m#Go-TFS#lo|1gSuqzYh z{Wb-(HB{H{MOJvHH^ZT8!CZU3EqGhz%^`0B-Rgqc((N?8i*Jm$y93obcHo-XVRqVZ zD8zaG8E86xf^Y&1t4<_bCq$e-Jdpzs=s@KAq!rfaz?q}*Gz=Fw4Axxh``KaJKmh*8sveD6aGk9Efb5-6*(KH(wf>E?9_nij1?z zJDEWemGgQzm5TldwF^CR93FuK{175=e`;|=LJAK^O=V*So;945*87pe80hkUigP?9 z)B=3>{p!c}FMk0oLP47Yn5>wCRp4xNkSS$B4lCw|CGsxJSA`H)^wj)e6~p)V!hU3H zrp}JC7VBKOK008Mfb%{S5&ZY>al+yu==EyHTFyK|+JecG^U#JSUBw}_z39IK+I+GE zoxZ{oaNE}*tp~!46PHvfkgs|gf-da z3Q-Wha9}Eii$pz9zNQEL^jXQoHM(eKM$g@*Izt`&9Ba+#Rs z2V50$ap(;Y?=Pp|1o9AaoxAoO>JLXL+PB-j+ya zwVbKHQ?yR|W`*yjM$b?+UO%mO(3{Qq1f8Phprh+~sj__9SUj(p*lsT2?JoLB9 z?}&0rM!^t^H%dxR(AJHD3;&}{C#6Y?^=-|qad>S{C$Gh$U?zdfws1|omr%uMA!-L8 z!B125QmG7g)b3Q&yb{9Pjj!Y~__8$^T>cVf8Mb1Ge8)OBXIp*pQm8)N2dy&&(gd%F zO}B3?^-Oo_%8c{eoX)$mf){8&c@Wt=ba~)|R}`^D6X_YL9F1(ZSAWQ3QP6Xy&MsFG zU_?7yn)lH<1@h7k9eRo-w6AW&FtFW^#!>LAEB4m->HPzaI8{@>6Ij1>b%ycd(k37m zoN)bS^hBjei@wCv7lNKRGG)UG$~bbF1nuKH>7*6)B2$S<*84nB^tJ3$b|JJkD4%e7 za(0-ZHEqi9DqVh1Um>gcfKW_Bp?SA%;{~dPIr}?CXDXAEWV5!53VRA3QWsZfn&L@g zWEzUw%R7g^pEY~Cve`<#*BW$`ku}i{8DdYmoj#dzytR^dfx`3`Ot_U6rqC9AjH1&C zSnAih&FJXdc};LH(1)4DGTvJ~S>wi;S{#jbGR>l9G*9OvI-VL(Wq7l^1H4{nESA8F zNtogV|HH3k&Btjm`_*Amq!uI<{eMNoXPlHC7Q_iU?~>kx8=nl(xX3N)(nPOmqgPZsJ{T2r`K zA$8`IVtue%10HCm{4Kih=HEgTo%-%uO3(W%&DeoBybr+BGe<6O5m&tW>l*gBDFrdj z_q`6t`l(E$!Zm|zOAItlatmj;A8>Iy@5=!3h>Xk#aA8j;_o`c^9E7}{TgBa9+Qpx(Am#Ji$#pBvlOA%&Su0 zeg--O%MC_yrR4~m6f)Z68@g9(kf1cZ;sWxr1L-v@BD@mLmUt&6#vEi&0)u?M>N4y@ zdG!IZWA=cd7q0;gUdtfan>s#ucm6}=Nhy+)>a5PMJ8Hcv{;JK9hrR9Meb!LJbpg%W zm6po6B~#88?|hDstkj~o`(AA?lhA_5aMBW24&R^!2E#M0VK4YG@WKa(nLRF&sPe4$ zq?l=~KXj5iIQM+{0n1z8-1)wgihWE)q%A8l@A@I{;IO7mzlpuwS*=|__|x`5@a}Wl zMCv#hnnvjL8IQGC3=Q|&lfPz-Dc`2A-p_@+&07GxU+w3Ydrv=OFQIcz#Cr%8JZtX*!VjM&@W~ShMUg6x_Nz==YsfYjJcdkAt!MN)2W&&U<^`Hkbo)VR&H|Ve6jotdq)b zJQ|9~%31O}`KkX_D=Z3-_neX=EroG{80}`5Iog1h>Ny}%D?Fy6i2l&ji`y{rqhSCz zm9(yYg3TmfAO{=vf$7v6`a4c0=2Kf2RX%_?Ar$Ipj^@p0z`oCpd`C3LFz&lb7oZVB z=xO@BQq)&{T8r+&qlg7oFRp#lkcc*#h!5*C+KOy9^+C)$+(#PSD^k5i>8Ocb81mHe`Ndw^6wgoBay&hG)Ku8kbRDXHX;AS( zAsz&zRNF^xOwKqcS#zIH#u=8JVgY6U*ps65A}wzv!%aTb!PHZ1<7Y*No30l@HOG|d z0`eM|vImHeJc5d;2V4k;r-&1kra?!#3x4PGTf6slk5-!ct$#Kdswv@x0m;@ z+83UIe){cRP)3VPp)ukb;4!ix3UH6gN|D4g7|jysgv7b zWErN!&F|d&L9b3AT2`N+Lq;}KH6jrHF0ZP8S2K0oHkLK8Jkw3BStL>9r256)v@6q%KadeCc~#QK`07qz9#jXF^5mlnG>(ac z#lgi`#m9B?_$cRc^%wRLT&iARvA6>#;@EW6A9(ftcAsT$J|ac|&FDqIFv-{y>+&}y zGVv^R!WOkGGClv*(T$*I)cEo*Hv&y`t8;kId;RJ;>L&A;`?7&5LE!UnyqL&LaMt_7 z*~oUkXkjy0sJC@j1pTrOa_}VHYOgk)rY@&O+1`p# zx8gll1M>ukASnDI^-Ovx$fuOGT`-I86HgAK)no0VV0EM-oa_YRhXkBOG&ux0F0p?U?z~(E8^xrpM*uL`@FRX{%l#BFa$j zG`dXz`p_p*PyRF-|N32Nts*Bi#%nC(dD-N!f8p%i5dqKV=Lqr4Lq${w5GCqJa~w;= zpKtotpb3cNqOd)2n10)v$Vdp7)%i8y5*p)WCToG#`y@T5_CT_B72%(v^6-$r?+Qd= zMdL9^pMkbPx?zOTletcdx%ft_2p`Wp@b@o1#BUeoaPC+1bNcB%=j^rC{;|heW9S%j zFz0;d8_#p+bzL_t%0=zJ^uZd4VkiMVw4Vg6Mf5E%`+2_IHkdltSdvtBQ}ndAI~?0sv#*fHtrI+h3p0 zKMahe|EbGQ=&r^iP~%IB7ZNU137U;+8Wz7b3hzFn;-705+#bjlHwZb=4uV4icn+X0 ztsTEr>BkH%L%NQLfoX$67y$Z?kr+qDUvRO5=mKoh1b|zO;L$+q?puaztRrMpY=w>J zxF_4q=ym$s3ryk6&WB+nFAyR@RXqvhnT$V7$S3 zyg`JHf!1E3w?j}lpA3Ce1NEV0RX0qb)1su zUPQXlb$|p$>T>kmp=JsBG$=+KH^RE@1*Jw( zBn_d|J_XweZt|rL{9~3t@B(349u9=B2l?!Y>m5h!mnm(E5Fo8mjxrIw3>LYFC@^)f zE66`SML59_gPfj+D>^DEzw00Ou00UjA-#dLIG;(0*T3yk`b$fRydS~A%PvxjyK6R` zafF%J0CgXpoKvzlDaQ;lOGadgDBIo%j04mi`}Fe(^Mp%opj!9{>VUhTBxk;SpS=NN z^-LqWK{SH5X0E#67X{oR&7z$AsV$6swFd$Q$wQx6(>|_2E`NP<%!1ATI)Vxe!;$@g?nWL21EvQBsS)Jo zP7s73EN{qn`CeSIuAK5#I8glJ(Ama5eGe8;a%Sd@(DdxT`2~VsR&;=tL;+h|<1_c6 zw~>IVlOyfM6!WG>SkkZ^=FHC}e1V=UkuHw6UF6)$k-jgg({OsocAP)4;=z_YiodU10}e z!*2@nC|)#zUiYJ@!!i~UAF;>pd_t3Xf`H`#L)#r5t<^{gx~I@Mo`Xq# zAc4c9!uu8lB`qO`TX~w;gQf zw8$(vull{cxl(l=XgkpnNU0N0Y4P!Rt#w!QrwBI{MUU)_vEz2XNI3q?MaI%wUy-o- zB?LwhQ4iaS3|g0=kTx=#cpf2BeCX*4??)9z>m$f?kw3%@)l^+iY#r7u>~F9i5s}KY zw{R*V?j;c`)Sk3!fJC%QwDj~J(}PkHCgGP?6T6=Q4|Ha%YI1WE{wZ zERF=5|G7zJ685rjv7cdU;aBX)cL0XNri?zaY3EE#f6|F7lb!0ZtTQluT1qBRML48K^#CXbG|dr_gR)#JE&?{O(JHiEWWr zru;3SmjHTGbhM2xPP3*4fp*GaQIfb1-X)oyYB&LiQV7!8yJlE?{wA0*BBT|28T!^! zQD>}ym@DS5#u>M39Erza%C~ds4yb9_8DV__mF<4$qRTkL-q(9&1HfVuqrOMcO#c{t zsjIp}eM(xhF|csDAv;1U$&+*3*0?UpY5=FyJb|w}TIj4QqDSNKalG#6p&5LzYn()l zax)+-cHzsUClr8YKzw5o__xC5!WvbO3JSyv$_Kl^3TskMdFpxCz|=GBnO6mwlr00{ zXJ)Pw=*sL-Uu-Rj1Z?R-<1bSU%ifVQWNp~7t2Ih$Go0f_A&vpDV&Q5Sni>R=2&zJN zj2%Ya#gTb?p6&4N^EQt^@PjZ`6aN!WqfzGF>=m|mMOW8)mMP1!>M}6KXE>AunrkXNpnbyUrL0V#(znhIFvAo(@3iA@|`a$U_A}rz2m}T z<6VE~eB%kE_3=y6!56QI8v}UipL^FKK6$VHN-ivMzJ&S;9ljg4+j1GEmhbUL2QtW7p z#?70%P4hO-Eg_$y(bzuc)_8KR{cOT(_|98_R)6vm;7LuN<#&~PdUWE#rfBmb2dZQt z4*CXtMLd+U2&zk)4%m6aPA&Lr1Ej)3;TclfC3`UyNV#!k6hYGc+#C?i+%I_QyPonsKpTMV z2$u(PtrtWR<(r74#Z;$hFJ*C4486OC=>=OvRuR;(iS7svtowYZg@EH4x^URj@}o+T zC25`$q*o#{k39|ZPG#^G^09;_gAY=HMI8Rh)-&U@hMgI<<1an{qak%Vj89vmHsr(2 z8+sQWT~z##CJ5dU{J5H7;!SqN3!Zwv;wKLr!c0-=Xdil=n=T@iAj|wIl#;IzuoeCx zM8~PB1nE={;l-4T}UkRdbFn0)9 z^~>_PLH&7a`Mh2e#+^z#akF_jb$crUU5>&t-|3>*(rM+}HVCxOoO%Tq#{B_1b#jmh zXhB|`gq7}6wT+}*_DsB4&`i^FiEBU#%!q(}P>|h52dXhuz|XXoKV*1EWtPEL*z*uU z%iY`1k#mJ~QOcuF(8BA$cbaSBGa!3j-MyS?Zsh-25!UrF53mGY-lQM|a3=<7#5KuF zfxUVPRyb1i9mMs>_^3~E{UByt9R0Bf8#fD)eUSJN68v*vz`aa6Ew`5}qxX(15WpehX7Qo{q z0UU61v>5Q5ImQ5V=K#@E)b+zFV}2f8zUT6z-q$#dm6|~tL?|bTk>1`?q`yV(T@RYx!mMuWewhj_B{UifSR z7iE}HN%TA4U?o=0(ND!4#v$j@Q*!}HnSq2c=`i@A#91`1{y}-u{D9S~aya+?4JURW{P+8t85H5z8H|X4DdX^71A{t4niFwp~FX1jEy~reXJMFzzl@b-C z2MB${A@bYBN+qwAJj)t46e8(pJ0;bzbniP^evlol2r*y*mJY=R|iOH z%5mroyJM`<1XYrACETC=Ud{FJ5jyvzT#OIn{%#ln`O6?e)>O;P@~)-NA14wD2Am_F zzB+gLjZNj$p?V_wtz+~?5f-$M=ANluwzUmxheBG*4)WN#mt4B@Ob)3^B;YbqjznyI zTXc>sOO2l}o}yio8RjBKrsjg{YPD~w0+mZ31(}&1^)doA+NLUJ*F~rcA``&XE37Z} zJDM#*ls+385O=4NCgs6BRq{1IRnb#&H>cfFu&f6PpI3oikx5q+fy1L~2>$fedEfTS zFeGRfvt2E#I4P9eaP@;r+P0=d4b&0a=`?8K&MB1_uf<;0u$M}t$10uF5vBR~tuYld zK%sEI)s0FdA!+-rK!~XLBVUg)~3c| z5#$gHwVY}EWIwaVfo*WI(uzcaim$wh&8sa22!=( zy?eK7O)KIJ>+u)wI&AJZ5bAbB@uxqQG-QgFdxFhY^qg>TRO3(1EZ#LC`PqASe zy`VPN$y&qAm9RM|?EX_ %t=5`B@Ns|nkWN*9W~769dsGbvL(z7V0W;x+(}0vVqn zeE7tJi7QmC;#VKilW~=6Vnku3drIn=M^UFgYS-_Gs>iFluFhQV8@>wg}4hTpi zEl{u{c#yaALeT(nr4O*;AWy!d&e1O=dEhr$6~@-EkZOk?;EsQeEA$CYt}AXHh>Hl+ zX2bGIAX1g}=$1 ze7}7{YH-wdev|^bBZYbh&k1~O15itBi(f*nI|{uapuw#Jl&HIcbd4wB03y=k?s?+p z`F0n)Bt*G?`!7ARsS_FcYt2+4FKZ%jzE<{4n`&g_Pxc4rGN%Oy4;nJ&DR|6pyk7(@KNt*tAg~64`|zB)&Cl2W zIC>BtnpkwLJe`pyjHoFbo21~-e-0b{F66`1bT?1Hz%#^9gDhDY=%+H!oeA#rN1_5G zjX}}{sN!Oq0a=i*n9QyV>CDNzD!1b5bVgA_`VnYn8hw|ns_Tx)2Y0p&Dq8gw^CFs) zO<&u=qaqUF*2V4gh}tCRY54VPYYiY8W}xtv@)*VzfVbNL)P@%aG(I$6@oFLKKDT7o z>Gm6d_$=yI9u@iH%2pac>T-vT3Ui#A_CwDtTV8zeQ^<%EXiEoER>F|)WKepvf>!ugl z|0$aPa{`GRurqHMj}y?3l=tUp@WmkQLFlA->B@6Deo%cuV=kz3TXUcUDlKf#_wb=W znwp@!f=Cx$d$bG^yj$He?4P&5asAMgL_ok$MidKlf%{A@GVlt2vMUSbPqU~V$b)$4 zh~CbZPkOcF0;p=5+)#QSQ2j(!?}JWh9B0-q^m}TG zNlCu&RQpg4xur>A;?qEHdVJ-=T+lTRO@e~n!)D+C7S=yKbXc0|gRRe*G9&we+)v(J zy%yZ#4D@?KX&v4t%l(!1Ba({k;ncO*J*uiFYbHu<)!8@H=7zVr#S#@Pih~@rURD`% zov+`QR5ykyYt#?1rhoqYDtBv8f&O-%1^uB%4=ey+^Rl7Ui>+hl6=%l3djQ~k7%_}x zCAlR3*m8)Sgsu?mbBrPLKg|o2L@2;ia|@>b1U~<&U_ksr2wsARBy!?FJv zGdODB`zZQfPUY8krLG9cr(e;{`ynRr>kZ_)sfaI6F#tKT-~Wyr9!el$(S#ml>c3L% zU&jv;2f5{dK(jv)_jy*{?{8s4MC;x7VPwCGtg0;tR| z1Z4c6s((3>{_uxTP5Mi-3uXJuxy6M2^oP%BN2n20-XG7(!ww%7)nTJo|8frdYk?dV z6{q_TG24HAw?h~f6;+s(=${8g!#0GYwjY=VSlC|{)nQmvc5>x-e_d2?RQiKHfI#_Y zW&iUskqU8G!lS%@IcSj3Avo%P^NZY9oNy%kt~jB}OCYVEnoC%8M!bXRKl^fs;~a|- zp~>t0u^In*Hgf9dd1K{P0FOZk2A_^FPJ!Jw@BBHfLRL+JToNJrsm<{j5Gq>#T%t0j z;tEKLIJDIr^*rp=4~xr46chX%wBc}8#(@JX~TR$SvIRpeSbvF@759|Ye8BOz4grB)}R~{gt2L~7IpuuJd}+?jp)_l zP=)?=4Q3%C^S-$of8A-sa8$;dh+55`-%X=UWKd)(9{N*R5AL-B9QD8XMgEW?i~lY~ z)>8aPmGHDtxDOqNg7Sa%WpSXI8Dl8_Tk*d>vpz!8L9pA-xWe~3eEdx$u*np7Z)oi9 zD?9>4MWkaNo-5cu9vWq*ktM*Csx`-FB*GQ)L-?`fO!{kO^FSQ4;Vs$d9{qq4A8}b+84a`8)KH@*iG4TcxLWm8y{xyWa0Yga4Pyg2tLIDXONYoa8 zpiq9_6pV0Gg~_Nhzg+w;<1Hly*8YZJp32{>eJWUcNe_dNzbtG*1`;?Oh2S#nzwNXj z5wQ0E%`Z}2HsR96n&tn`(M*3Egz&!_p#l?D zD>RTg;-a%6sltDSb^g2I&y4uf5bmvelfPrn|a44>0=I{cdT_wz#@_;5TLekzflLjZrifrc>+)8>gHnTN&xd`kq5_h9no z_i2Q`zw09nC!txaN%nK3+^-YFg3M@UTY<#a6YcqTVeJNerhGgN-8RI&TKYC44bkGnq!MgPgia!xDn6P zuiH2$xIPxQy|$paJ^adZYCd(Fp~G!{V&&4t$$;s&fvWX_io?(PB{$^5zVPxL?b;4ce05g%rr<0N%m{Iw?k zd6jTLnEVu0&7X$@`WaRSu}Jjof2L{w`phLbiA(s7f7t~hSomR#4>&h}t=4~D-GP(1 zL;Zmk<&=LsG%sXuI+oEgGAaCDzxD-A;)~G8U$zbo4UB!n?|6Oi&keGIjUV>OqtNfq z!x4+XuA&L6I{e2EQBM+4Grav@JSZU}m@z%;hR((1hdF!Gnp#?yUfF}$BU%-+7{gef zq>V7@k-`X$07|nx^cpHe~}gti8}sRj-rACP7M3YvHseTQQ7Rr$*&`K z@#f_wk{Dh{#!K&Q3vw9pWnJ>M)7j=r6(wiD<5gJC{86i1(**Zy$e|9`_ZQ5wf`kF_Y-$*_srd&&= z!p$AYI5#Q%kF_zVL|ZwgbU2szNo9T9gBhVt;kvBgP2mp zKD`;`+e7W~(}a$gUIwLA*mC7LqRKL86gpemDli0IYHzmn~Pg9D%*|>1HVlpu{b-s z<92bg-T#T5Skd@xQHx)EDoUgUnXWkeiK{F$m08driQMl6!vtR*BeHWzEAO4)Tyh|G zpifrqZJ?U;mhIpti53$$-HRIp}&j4hY9KHtO*w@1vp zmQM1tyO1PeqaRr(hoBl;{2F&kYQ+ar$93Ma2#T7vw1W4c12>fZuG$~xG>Xj@I*4l; z^~gK65{(no{^(P)Jd&b86=Jk2J%|W#!(z1XB?-a%=BSojh!Y*>DFbavrGGQO6dmo` z!rZZ#{#3L}9XGCs+eU|2cv&39#^{g&iQL~*ab=lyBXk2W%|AA>(#2hWj64B`0|d^ z(wGv7T+=0cfk;lQungE2s~?=yf6ZZb7gEDb<)?kSt%OEkHKZVBLaZTgDlU-k&XyF? z8Nm_@Sm*dfjIXTIBD~92{0@(9)X0i%!~oZE z@l?zdOTye%OUu2b13%tY>P&|+Jeg6)i+JA$TJL-GL@G>f_A5zfUdO^1az0!5`^V%?`dH;J zk@`Kl{*0FAGo#BJtqSEP-Wj48TQ}k4BbZnnVR{+;hA7ca#|xYzx98xI(_dxq zr9s_Y*tqXEUS_+w1b=ZW`& zY@M^-ALs|K$}cZ2>fpuqq|3-k6~D~Ec?9OJ9`_S4a)ap{EY=2@ead9*VW%#LM6rr+^YHn6J=?RNC2Fx*Z1YS^DS{o zhDEq9IxTK@Rmzz0JRGB)B!Mt-kQ!yvgULIa$Tn3^z`=@<@}N99hl9l26m6OlkELV7 zR}3~z(K^P)KT$B^h6~)ko?Pa%l0SY(ia)4Ws&Y>Ftr1pBxYBS&O%d$bHw~pne+9L0 z%X@}xK2p)?bEFM>eHs{PHY(lz2zkwP6}F04Vj_9~jw_$FH>z{SG9>G%SoZbBAq$r0 z7oVsL&tmy1NyT^??IJd>Ucl94f7gqHvPP*g*)@?ZD2q>y7JWN#NuOhTC{OA3){qvh zmdbnc1veR1yH-&JQ@7>e9(4aOGgJBehp0ccL41>d+{=Jlux0$d=1U8?T7L{n@mRm< zaQRL%^92asQ}d*s6b4TOo;W4u2H1HrO1{LO(G4xoFCdd=a1XU2jebifncSe^0 zh_=17oc_UP)B~$^{@uDU-~_e^&kU>rajx27aR|XR^`%L>DfNh47F-9)4DfzypnqNq zIxcRQBO5sEZtXe36u;I38iqb`j|@?4nc+m5K`l|F_yLbS5`IuE0lZSyg}RR)?mZqT zssPoKy^Vr<8zinU(qOJTHe>!FXia=R5p&)t|LEYr0JCQ0P0girtPg;9eS5AYA2OyX zNz_FO5vFP2qrCPGK~Aqp*2lL;?0Q}E5iRUhQ`_CV8$O0l?_;{e6%cW~tOjmL_}1Lz zJ%P2LPDJpN+s6zUP|j`I0|+2ZEv==a!8g%mbnJ-F{1$_XdqCJQzd&*NS#H|#@G5Tf zBy<>Dv&%TQgox$Tj`)*vAy_G7@*gz$k1|hk0zh-P_2g}t8U*Fgd1mS_Td@dhBqkT9 zwX#{wpbC$SNbA%O8%1-6d!Y7ERon6bI{^%Za+^P4>Q z5PVA5y%utlO!stp%n13}VxvwF8VQ~4j@5xCzjOri7KoLH=NSsjak*v1-A*V+b=TBr zdEc_m7lp}qR94}kS7AfIqbdp9m)ho!0BR;UE$$C^9YD6M&uVNV6xOd3dkBUOW*2?x zkZ+s;kPX5T0BYzO3>4{(<}%q{pYPbzQWS`_uAT>Cjs@9NKlY6mF+811XPz)*cMuDC zekMI2@KmFx0ehNka%kNKEr_TV^II(ST{LUiy?@?%_<9@gL_P8Wrahzz{-Rj#SQ1qm zL3TWRbN*4B>STfnAZ+tuwgA_?5H9)fgk#j9DpQJ3T26}gV&_lOFhTPkK#DmJ1EjF9 z6Qt%6sp8+~Edb6oqYF4&Vz}Ec;spAY*T_LL9R%j|GHPBbsc0#AMB!QR)jc)?q{NDL zD~YrPZEK72_Rv@_PCH>11k}&yI;yJU%|GPG1UmTGO{Bg^s}pd{_oYM3yYyaP!zf1b z1r^Eo&b7EaKCZPNxh&UL4vlNXbMWDNB^$=ZcfUK1w7~|_Fuf?5*^;Z*M6pX@>c``P zQ2AXvaRI*IdkwrFW&juh7{~0{bMszOfJw?W?*oh$B1{CM@Or;Q0@ZjMnH>v=8c4l{ z;h%WGU9FWXXFG<*atfAQhaDasJwZIW1pp!LL~%@*ZIpRDKzS9J$a8D@0X9)f;ECG+ z&qkC*1b5B*3igk;m5sPl59G9Sr_v9LP{$y6#7$tD&r?t==;v5Ffnq)2ziMHc zOt=e>6cI4K)O)KTkImk%dEo_9?C|6pNP51uX_Q;ev*d2cjSb$UWFg5_(YKHYTy}s# zMiz(q0kAd6BB>6ZVTuFQet^MZP(tG)&bdJ;x8iD1_6C8G`J4_c9KPZ7VMJc3=f>$g z+>|Uy*N-8N03(`fbOr2=TTF4PnJiOoxI5p7?!nlUR5BJbpYEEn*j0yRhqBm@wCdX? zKvel`6tTrB9L;&}faxU^d(MIL9+zt(+F+gKtMse>LC6Vd(i?!n};xYu4e;W zt$G($Q5}H0oN%5_F#iQWP^v7GZtZpfPFXN>PVkHzc z574CzBE1xMTE~sL$4)ez3*lzTl%jcP$ z0sRGqS&*c50rVhalBgdU+vhjQK;Vc-X_umqO&JN$F3ih=Sam!EPPx!A0W{E_9X&5Y z6wiHA+|$DH6NL>&AE9oN&dG!Sy2pJ)y28;r+cGu{L)jd@*``Gq5M$L@OXhqwUk(xB zqM)}2p-ClW(&0Kw!zJN9}FK+}tE!9bB`U~gy6zk5?wW=vcxpAN>AGsWxf%L{8= zyWhTAK>b*<54I3F>K1}-gXJR~%3l28ior#Xy7G!{cAik zZOU1xSmjLF+xC>jZoVa^S&<-?FmSsU#w$za?2H3zWn3m8rB^zpRzOMz0tP`hAl8rX zz>pAAGzy5tWEk)s7TxquzcODZ9kVz9cuK@Do!a~I@LF$9Ozqi_zuW^Yp^0RxddUw? z(}&E+3XdnKx3fp@RJ#IDeIvdSU8BUigu+D9o0c^)nwzB@hH1vC0}^Y$Dxl z!t3ZLb`9$}L!zp`n+rVyQHq^_)|jkjAA7W&xl^r`0|EIPQqPu+j&m(it_$-FHmO@tk z7A6y{v>54Ep^?efxF2d$y@J%jbf*=@ZrAvasgPIRaL_dlWQvPD9p={fCFN-PQMC++O7x%+`Y%Iut(vH;Ev^YW;QH>91Pj9hUaq^87KM6&F-r3?skRF(3* z6JGsKRQdbdHUiZBycclG-CB)nWhD4)+ptZe{L=ugUJ54vy^;3#yfpTum)S~pC-m|J zw&JC4%d$njOwC;wZ14|jPdmrx`CE!}I#I~Kjz+_lTvoz%qJnaEL6a^3YJH|B$ZuO( zo+O&8wfwdN@V6JSe25BTr*h)RY9zB-G7g(|ZRH4)a^W_VbdK}zp|(vubTHQg#)iyi zaCwhiSw>$j>SesLUR*VA1z6w;m}+lcj@}$`*{Fk9$r&)~Oy#~LxtE~7CEgu?>XIk- zFlr4>eYxLl5S-$Ekr$3&3&O|tFv>>?!a2a82It8X&3uHZMcIYfc^zaLZ*UY(L2u1= zmKDVSQBRWHG&p71CL<>1Wf%52(%=-@V|TXX3>8}N3}D=*BZ%UddV!Cjb68GE;Vgjk$lr0P}-*vyp{R>KuQ*S>{_Y*BgK3ItG2 z5WXQA0|+<7Sg#WXVMP(DKj1HPXVQG(X@u2*af!qbwL>VBgsExTLWL*6m{Y7r$xF4un4o!vC89u}0(^#+2~q zfQay!WT++xG%!;(1HZ1mSq7T08~E$dWstu5^77uUJ&dXYuc;VFS{%(`;C;^Q5hBF{ zsu95ZJb!1aUMr_OCei!L(X_jfi82c{QHM~@Q%(wfJH~3FR3%q6=|PSwP{~MgZEMcp z-$b`&QXFkD;#QWRfBm>wjZw|E~BPBAPxMsIZQi1a4>8pXIAuv$fAwv@g z8!;0D01XGI{D6_Mbmo|H8nC`h&V>%$xzA~~q&DXDYwHR@q0ypTyme$#@|&cN&WUiv zrlq6>4%{#o&6eFX!}?qE@F2Or0Hw6*r0H1cJPeRZ(F#b6=Cz8MvA~;zu)im~J)%&_ zm{_PchBM!v)Ng*Gp}`Tz#GfFSQriU(yYUpI3iAa$o8~9{w))OR>nG?KLhCQ3iJ@$- zutIm}7)=+9K}krw6+e)1YMEJgu+BCbeY~8(dIOjyIVa(&>k4>d3R2@<#Gkha*ZG(P z1hGL!-~yOGfnZ%ESq=EABB*8RPiXv_*N0bH+rX-P4@FqVf z*UwbYTUde0#G<(C!{ALv3LRq(Vm~M6V^%<+D*p;2r7CwKSTxkPp_1SjJ^ma*OWm5m z!NKu6X+V$U>MWXh5UyS4SRzBmLa=H^RPcJ9hECDZCzz9QQ7#6>qzYx>yw@nDq<(fM zO<}1ybB+=zpDsT_$Ugduwj>QD-HY z3ZGfubLo?WqVh$?-7)iui(g%@V_&ana?GzN9Lg%va#H-*tJ#;onlDfl7k-};!$_g$ z5jWbe(v(LZX^*tMrT>w0ZDEdANv|%E4A|R7PiM;4mYEJ@26rD*FEtI`yyhAnva}1D zbmMoVH6GA$)rP3`&D>B@Qd2)Ts+msrIx`NqKmAS&t#2S#m!ccQ=Q-P|*e9P`s~#J8 zDTM@O^`uG)=_Hk5`HbJqvvJ*)QS3LBRzSCg*@|bBLYrP!Ky|G;n2q6WI@G`4vq0pAAm*ZqFu?bs)4bW_bRrX~!UHPDf) z2$QKxzA)~mI>S=^uKT)M%%66n7CojiwPXG(mw};gMW|GXu{EKhz>$dgzBE7Ac2a@Q zj*)dvW?)0dWo#rjtu1vt8s7k&No^OXkasYV&~3(awHIhxGv~wJ<|~a;guG>(XHZsC zR16&rY3%CK_YjDq{NINs7;~s@EDTCJDDtOM)$<Nt^S-x_pVc63NNNkP3!{PD>=Coa5Gmv(|gj~3mDN5spR^5!L6!^=J@ zbnJn&P;TmYz|zI+GUvlbj^F&QQp)=Q7*b9j2bEoB-iJX&(MD~_IHTse#(=nedaa86 z)o|77TUiTPS76(tcVZa37T|}luG#}wq0i|z%oQX}^n=#hV{uz^-zu%!9Xe%%u1E6n zxV8n+%v-y*2A;6Wn?TIPt3JqehaImA&ZmOYWXy|dM>KQn-btig=bw78ou3Va9-W#= zFoGBE?cPZ%t4CxH@^ypyAU`fWk@s;9GWA@=0Sunh`nd?#EvbsT#bwW-+0jKsNj{@l zBR2JsGVO&tQq;P1gNby%eX-3KE2Qw!FzoB<1(U_@uAP1Og)uZH;(j1FEbF49Paz*x z>}h}m*2q{V$W!PU&Mjy>E|Qw9NK8g{5A1wZT6_UzTM$jz15a9lX4;au1L^GsWSYW6 z0qMOx#{Oc~axdpQTjgIt0TB{w^GtdSQVAz|;pkhNY+ifmbeh8DX5O5yJ?NLl6PhTaemlYuwWaa_{feP)-9rWW%TN|MuW%|% zp3w;3F1M_w zO)nfXM{!X|5Ygj~&MR#_{rnN0vn;EZkSO#I%orr||Me-DA>I{!u9`JT!Chvvt88xkc#r;+-48wJX$`jkKJuBOhFF z*}CL0aM<9`E3>Z&et9x9j9ncF;^c*>tvx_ET(zPSCbPb+Cm6m;eHpG~tIC!X^*pX1 z*RlPgOE+2~FfL9@=$YYbiRce${P%@Ipa~x`FgK3kwZcl=19Wt&ChYDW(ziPQ%us)3 zW*QFxO$Z;a!a_ajfJP(BW~Xkn>nmFkEp*pRZW(du_LWc1l3ABJs61E{56i5$*ZcH^$&Z)6TqsqUuSd~a48 z%14`$C_@n|5!*-q9V2HI+MNGikIZTMn8U$I!DwJWh1LDw)~Sc+n3e?OZVQ>lEHhuQ zye@}&@YzMnzbNxt`8KTQeFnkeS=Vhx26NKXy`(`oeSC%>_o3awDrw)&k^9t`)f^R! zZfIV*>sG1OZ-6%S>FqzW}ob8Zh*EJAtlYhe6+$KD5DFo*+tQ}hq! zatj#)s8t{^_)&qBCb@?z_Kl$&ZZFhFd%y!e9NcT1a&kSZh-)n1qoZck6-?$;{i5SM z!kw+ikkt!JbYrnb+E({Djdl<8+(9{C-)lle$K4joU1YY?yZr+E@*fgr2LU)l{rzaq zxrnef8@GrDV^6IJz7#;eb5A|!x4fMeiW)Xv29|C9vm7(^w=9AO63n@M+^e-?S!WJ4 zS9VrkZ6dXI*gAvHzyg~nZBS=`^w*>Iup^L@Yl*<>C9|_4I(yBqO{Qae9Gx{^-de?N zsc$)x(DlH&*;}L9tyBUAE#&L3oCc^+zP^q-5=4$^w9fLTKC_iCsl9$_QQMkWeA^9o zTx2sQRdYGFetE1cM~W$lB~p>WQ^*WV7GvISayiP44~utqqd5h`nSotzlSJ;uRDyQ+ z1p`%zs(+}`nDv641Y8Xp?P)`&QAjKALbbe1Yvly)qXAs}FiAJEej$__*+*RnQOqg( zE)M8M%5zyy`o~0Gb#IwIFE~sYScJ{l(L0Mro+`{f&&#lCq?N8_7VQwtW1;Ne;9z`7 z04r4kELio|$RQM862yeY=Pjc1k%Z6IgXC-Z$0mlDwdua`&l*KtbkfYE2K|vY#&JxC zXPntY1dpLfW;fhQ*3JuWosYXOqz)D!wamnf48^>dk*nl5J0*|>trZV)|y0~yWfjUFJAl>LW(7Q zEA9F_RfGW)JjM9_edCI`GP4;l(v(3|lU^~sUVxQ0w3WDId)#joD=ZEcPsk!ClmD-L z^Z@!(bZcU7=}b*o*?>zq+1dABwue|8H1z2-oNDKJMH$S|r};9K3VnvAC-Xv#y|0v7uZ!);lJsDa=1Xlj{hR^{IcC16y)Tiq{8%3W++tM2WDIR`(r`qYV+M_auN!ng_@?H@`|y9@aUc{SCIKijHfeUXnpqp77gl&gj$r5*30 z0{>Gz*L54?%f_9Lrm39sy&srf@VVr0)%$_-GY<88b0A^bIYcnEb?4NPP1~yn6C|Cu zF9Z)%Ws`i1&9jKA50mvqH8=o96%sNqEPd|Z#37je-d|&YH__e z;S1vZ{1_Cf?kf6x>rX1XCX*R;l@r%B7I;LzaT;!_ zKt|>O`eBdDdR9zHbBpwiT=K}6-bNh1Z8BlL^>ckHOl*v4*xy7CnTCHyNABuCK@-aC zY{Cp(Q}IKF+|Brj*hijcx<1!;zC*y^4=38hZx1lpUyUmU9e|>iW_@E7G%#CYO6m?& zXL!CebkeNtSWUd!w)pcAt3$_5<~|3Y$WV~ej5-!|kQNv_N6J7{z$gTKOe+?avzL3x zwMIyLl)|2)(|tDME7g|*5awW-mKLXd?VLJCB+>DEwobhp;pJk6+%p|-?qi^15evcL z(1NNkQEvwI%4Kv?CEFqrOu14j*BPH@^r^7GwDjKPUy;p_h-tV#;s?Fcd?zQ0)B%K z@;E|5=IT*A3+zQ@4-j0budY^qs8vd5(Ytq1S1~9%JA0Qe_9FDk#XZEERT&rl!edEA zZqL~5sLv?AV1HQ&$phYyvBNq^;kRExjB1c0m=?2-dSkyWq3<6PW0WKRLc87AMYZ^{ zN8Nt_YntGbicg7?zHNUe^9J)iF=5??*CX{wJHzIT%Zs7d=&gNhVE2bsOMxFKz)@E& zuFLx$j{X+Ka`p#bLBqy)_Ud=YAYaL;l9@9IdPJjO7r<@h`DcGO;@?*&^fMEopQ-s9 zplW~dw$TF|Gxo^VANSH-$R8f4{_~l>zr2O?r$-IjP=K*N6I6X-*iffg0igApFF{VD z7-ElhdQnvH!jD7ar@)RnZVPCrKYlAn7EYa){5RC%{-HgNBN4t&XWDO0@%yiOSi-3n zw+B5&^|bqkevZIT#Wh)fgEH>FWe8lD(0|+M@4rPY4%f>uZD;n|_SkE1et$IX9H>2D0^99kd6Xgg+G|J?ntD$oh z;TU3fJ!ksg|6>=i28RNDVQc&EmhSr^m?p{0&CXsOe>#2r{{(DRde8e-=0~}G0Fzt% z@#5GUr^Kq*zESoiLFV&x3Kb^#b3sJHU9B{%`U@8fACg9TjEACstQ2=4O?c|lAv4u~ zdCLcmhfj6%4`Xrw-4<5mBk736--`?14?zRR6S>L%7whz#4o-qqE&nfMs|Ntr{%>_r z`!un#ga1Pl`yXB{BqjehlZF3>SNo3x{vTfL&-ms49$szs5li-HI+_(^d}dP;JZ=3s1cu~7qj0(cbz)xN&IFlr#HxY%xHEHB$p z19YxcKpBw-M4=H~!W>798b=KTj1DdRiJe(K5IS^~Y?G7xcTD7~lc=E6Qdc%W=Df7c zS%)do2NlCk(%pLb1*)0Xu4S7rW$g|K=3NG1c4(-t01&xvE+gTtAatBCbwsL9?*xf( z`SzNAg^pR1wCiIg)qbE1;PJh_nG(Qj-k;vx0`j}<^s&g82T zr!6)z?$tr49KRo9#3C^2l<%D3*wM$Mb|L#@_3tq1{ea{+yFg@%Kbu z5+My&Xn*UJh_=*9P_0is1N4P$_;rrkpFdPsR6vvGOd&7DNMEs$G@foRdj!l)xaz46 z{oW)rR-Aa#{!CI5xyma#;j!Fi$!HuDWGTHI6sJ>i7#ULJxo|p6k90$`WxbJcJtdfj z!YxJhF>gSX8Z?VrCYYf!>uJk7Z?C0xjTPvy!$TPaM08yTQ_h!; zzwo`aAz0N8FzmzelYy=ipy>fGGzLWlPSKOT8K&I6Evcr4zAYI$pDP*$RY?L=%>bS| z&ZBH9&Ou?d;rrwcsPa*ya)FLBAVEf2KA7$Vihp9TOttEY;>f?G0dqQeLF5nyj9Gz# zBw#!}V`6ee*YdVd?r$uQ&>uq&VFDIEHeL=WQ$ z$@8~pP(Lkg5*o|S$#HX#GZi;*1=tTuz;f^LQvvJprjoBf*D}u#x}XET<8`+YUIEBw z)_=T(knuefh@qL3KsvPz6Ujri3}l5D02Y}A&|)Y6z~TXzbv%GZZvyBWaHm|jj*8uB z7pHwruOIeAu!p*QGvYr3Mj>;g?2&(tr^^uVlWarQINHuOmZzoGtCq@NIRbz?)W7zs z-({%(l|!v`B0Kw$JeSFf9Uw=f62EA5E`A;nrFk-KbAktn zxj8YpQ`TTAugb0%nO2y~jbKyAy<-mv7?aAqK(IK#%%~KNxt?8mhC*5)5UNmqiOrK=&F{B(1m`ye&RSsNEqcls-IWhRyTJ{khvspAEgvrrL z_4ZsMV+F;BtkHt{J1BAmcA%gU>Zg#(323kmkdowKMF5O;WPPVpc#I7JkuwSdm0(Cg z+yqY6vUziaoSY;Yy%pTHxP^2~iwB7u!pQIeUvz~r@1rNOMG0YSUMtWE=pN`>U~V8h zZ4nGhU5UNjZ)K^GB#Oty&M!iB`m~ zTABwHWP$Inlp6H6-CPGU<)Qhv4pNjUNpBpBcj>cq3}GDI5Re;+eT5m`r7Bx+9mX`J zzZUleIy5lTM_Z4=YWsZ2p{+ z_fC0{%VH$+$|9f0+?evJilj`1xG#-?LX1!|XV%TBqyekJh2#KODxD<;& zHEqhe8?%+Y3s%`!W2_bw!^fKd-caDU!6ldA3jl!iUa3lt(Cvgaz#gX#np?Id#hdCy zeqMU@D&Gx3=>c3ns56?+W*o%AOLK%?PB;6p=sdOlc4aX2Y&UNozL*L>S5gVUHh5;v z;jaPqOi|cAkF`MMi&4ax!#};P5Op=AYVW-pw1q7M7i^LceO!<~wow_dsoSR0Xs}b?@qm^X4HE#H(<983CVNw^S~v&qzRO87DV^7N3T@@>nu%}M4*Dq!-=cu*Esf?BRm7mP6drxc%SdU3@1QB-@r6N z$3-a!;UiV7Gos(pKx6jQ;Dp#xL1eWu)E19szu_G-O_7LXEeR#5?n|HI3b~W)*nduX zIqS{(u8o)R-Mz09IYQA{J(@_B3{7^tm!aW=Hr;O^%^bOTaD@jBf zdq*ecUDM+2V7fS^P5mJf^9m4L9Pbi6D)9W!8?f4$|TpYUr ze30SeF`jBTw-_#oLuI=5EkAB&`i}t(KZt+fv0KSn!Eiov<@oNlPou+F$^4)2SVVC8-Fxq=&78I=XhuT$?Q!2L29#3MB{;oHL4uAXj6KtV z+lr}oLzU%OQk)0mub!}dPT=}T;e?4@oqsvK( zyQ`56?=wYM#_=Cx8d=KuNBBBr+=EpnwYWU)^&pZ(BmMs&>$~H*+~5BZvO-1~5wbJi z*%8@$ZxI>UO7_eM*)p=TXI6G(W`?W~k`WnMp;E^0x;y7|&gc94=R7*+lis|#_m?EMeGd}dpZ<%qNh|`&vA%`DxhUkas{X3O zK<41P8fR8f9M$!$2J;VhHFFj)$&NJ1l+)(0bK(@ewBj)=ruPdrp~m)oSB(#8;?zUd zp(k<@W*5(;XioqIvfz>mO_aP`5fgNZRO{e^9IP34avqpbb*6~nseGTg$W z5)`kfXH4W?S&uMWx41gA+CN=G_mTkh&Wd}XDi_G|wgnfUyU|G5pL+7Ob zpg>#pnizka;uZJVLAM{ z%B<>9Hy@!4Zkb{WqGUpU4jfuT^aO;=(SH6_^iL3drg46}`W(3};ZKU1UoB7fOg4Ky zc;xMq;;8pPxK^~XgEuKxC_=YXV_LSrx*jxO<&{eMQ@zv$_d_vA@h@^|`$cP2VN^)` z%b}LYfG6lk8sQCt1TtS3C6dK-hVMku>1g-jomOj1GLErtKtM7!PbHJqvR+9tavUkG zJt&#ZDZWB}6D>d+cQtY9r$#O_+sbIJ98sB2!Blw8wSJqif~W#Q8c0GiydoQ<3w_CR z`6@pV8=q$+h?)_2l}GP^8Zucw>7= zoj946>2ud|rgqZlGwtg>H=6%o$Wrnq@G0RxI@ zm!c?b++ZE$n*LHPqo`avG)a27m=SS@d8q3*GPSm|9s?wWVu{>Q#S71Q|*!wytP{ z>z9S@nVN3&a#*3OkPf>+&$dd`<>gQ&aLn($GvBUZa@i>S?KRh-W4125QhN;gw;|Yz zYy7f!KCG9jVPP-mFs*%Ymr4}Wa!HcF}{noSp-G)V)YWl+;i{0=Q? z-X%J$jKE`Ll(wJe&f@7*_#=8nq}XDmz((<9L)rD*IMiIV)!WRn>$XMFRxXGUz86zG zhAc=u8OuD$~TkrO<_0u50@`C<&LsHuaQN2ui@PkuiH6NzPu`u zRH^0Dl#~K-&(suQip3mfR zzFNS2+-e8nL!kVPaOZmU6>(~H;9u!@w#Fb{@-X$pwk+{sE!%K`IHBF3lF^guUOUwT zVu>t9%$lsoicCX4%TK*=c%JqkJ`~AgvZ`UrPL7Zr^B`56Y+TcMAI^66!Wbu6!XYrU zUA1kTD6h*@(Z7mUy-&&csDLT7mhh#?X5Jm>a?@@gFGJ&l&t7l87VxLaE}cUn?<}V) zsf=%49a$CA3U{~5(FGY&^D@h$kqEjW=u417 z+P$!<*7TCgNSDe z4Cnn@YXrZC3g^H!I_f7fe}Ad!A={pUI;De9Aq8w#Ksupqt#7{1m-rRvgTpVHASCkh zaJH1rJW_{R$?9dd*-M}2kn+>?UDuao!7e{3ee!dmU<}%At^C@##tv3R>#>=qAlYVS zg2)(k@?q9wc!k+IQ1=&KbJk5sieu}Xqj{&ScFd?P`MuV^@~5zYv2mGD^d|d{oZQPk zI{{dkgd(eSU3d8US3o!^{3%w-MLx|+l#M5^PfMiB&yjVEUDx|)lIYcpHw8As`}h|^x`JB7YOV;!U#_V6pq&dL`|gN`K{ zdlV16siY;AZu2$Wg(OxGw^yb}8~)Ve*LWypM#Th+?zfb_o0DkDO#5pj0pz-9mJnFFpRQlj7Y$;bYy*uzi>(>nmfeuL; zUB;}Y^3As2_a?K>5S!=Wx|J_3vw4xmgHPWm7k~V%c(f;{B>tyMm59Sl4#k z7A5fh#@M6u1l;ud-IQJmWx7ctq6HxLiKZ4*l{$XqpQ>u$Z9|BG^O`Zs`jPCyCLmpM zG_DCIoq0CbAxk7@>!3&cg!fZ4qWiy)0Z9*${TA39HKvszrPlJ5CUX`_r(WFoI&W*j zD!MKgv zDQbdT*Q{O){1&)WF#a8bq_co90Y&`zg&X5M_P*qRJZ)@T@}z^^Zh zPKC9?_eu3wL@$I{jva=3@T zUIqGNofflN=5t=(Ef*#0hVT`IMrD~teEV--Wh#{J*tSI!Twi-jP##J0^I66X@~y`8 zlG6P(Lbl4B1s*Tz`jR~5V*=5YWb+#5O5LXVut*cb!VNp(*y}R5oC=7E!z(B$-<}fC z=;#;+Aic@Pi$-ITe=rs_j7IzfC3RVUo|?EB7`ZHns4#)?+Za4OE5Du#nHMWr zRj`uoCbynzZd7UtHYwa3O~J+TZN7im`_O&G_nO*&=VxiUW&GpyO$un=a~V*Ez3O8+ zVZFhkc*}0`L_xH;ViaDY`?0GUY=Y?1|7U#}`&=S52$fop*Gg*J@+#z>U5O9Sf#Yje zwz`d93?{;0~&g^WJHP*j>IF>dq zr;MHazcea%*W^PbN&-<{gLl7geE@XvC7@Jx=kz|N$&HPe)iB&Z7vu4=-``n1KN_?T z;*1`5?tiC^zdLvduRxSxRqfrknJ@`#fe>5JtRomCn`2El<9ZS?QM9yTlHce6fVDe# zg@H^Mf8KE9SG^i^OgB@&q`(yb(uwOXKfi4v(X${a{xszmPCrjN+?gvUPc#bhs<|e2 zr>N9ja#KW68zyB6oHlUqSpBiPwA3K|K_GLi1>1Rw-D$|FvpFJ|$hagk?fJskl3+2F}vB z3!425m$Cwh`QyXJ|*gW7;Bc?2F%wU;3RTT z83kuOtS|3VP?=#>Saiw|w1jGs^=ZR*|z1XyJ z{i-_vj03T=pXqsS$Im{Mb`p!GNjAVbfY`cSQp|@h;}AP=F3Fc3}8$O&r2$3HqY4!LcQJq(0mPq#(G(!)V6r7* zjB^ZGJz#FM-<#pJUJSFiUNqcZ&u=C?{jIrqL$yE0Oq|56lvw_`NV)D*55ATW)L=B%;H?po~(Ad1??#tw&C1$QuwS_rHx^Xb zQ_)hWMT^|0iZ-Z44(AbbtQZjZ-duo5#$f4|3k}m3+thAv$iul>#>@gbxPQQBFiF9GM;ql{yztdGj>`N9XLf9Ltw28ljQOHf*sbP+D|1M=oqrhL@M_8D(=cT9>ET`bm% z<4sB+7;Q;B#{mDaH?VK2m^9wtp9&wDdR4<)S@?-xhv3ukbE%>)0PoCi5Vtl|z*(iQ!FBnjpCp~}H>@#d zk-cnMa|~O%&6)bi=L#x!M(>~$i^!>ja%FrFOqBEMpoV6_oS#FeeO6Td;lFG$R>^=- zoPO)f-m4YOIm@^XDeo9u@)Vb$anK;jqg7(&O*EPuGr`2816Pj=WRn7ZM;`9iIhpoC z#gE$ET7RxzJ?A~rlu}dr^e*@9mRWMGJD{bjYl0**&%OW5$Yf~}xR{o6zTb`08eE`` zU8KHzz;+kio9^J=`gzW~XQ!hP(Nxycs|Ib$P!bURS5pf{dy?a1c?JnG4ctKD$l)FK zgw?m3{F0shGXE>dw5-UKoj){AvN8$Fk%6Fz34#49q>NqPD(d)7?u?g^p0c0M!6y@Yd zUSo|BTExi*AI$=_XO8D7U(s*D=~q`JFu|oa=k}qnJc|z>?K<(F4qYMuE8I6P(gcV7 ze3Uef&+^@XssSC}_IoOvNfSyhU~N~{KdMOhMap~<0QFp*3KOonK|YEApcmT ztm|2kCRinUgd1I?cQZY$+NB%LgWPYpv$$1$)+M1o_OL- z>9(TrG?(7n@TTll^rlOHJ`EZM6TSNQ*wgZ+EfM-m@NZ$dslfC`w~bcA`_`Ka0m$$> zhXHBauL@{vq$A6-s(3tahm!u=s41#uc?6-rKQHS7|G0C=*10UEP^Cw2q$OgCXtl-4 zy{zBl_3?pti%Q)TtP~*nZU98^S$4KnbJ)$Or~fL2Se*l4r9?m@qU{DLhl+9dnqru< zLAFGkbjW?A#ef=q9Y%JfK8Ox2ll|#)14zhON3#aNam~bQjVWsJ##Y0UqIQz))5M2= z{rv~4NjjZ2K!TUPIIQ@}ygPD4{rb74(&rrOwR1UwNmu`cnmw?>`B=@jAJZ``ZL*Kb zaGA!~)#;^^c`g^zV&E{cW_{PGc+t;}tNYOC-yV>WNj>`!&y$z#b-%a_Yl`5@6cKTn zYX&*C9ZSUROHpZ=epL>7MPEL#ykZtS zj`ds}+g%C)_da6aYePbXw-e~Lb3YuJl!Aizg9|(jx+&C-4L6%YFFE6!r*xW(<#I+x z?lUYPHN^UWDDu)fbHiwp^)&j4h@L|p_~-o-Vi28Cdgm_=H5ldLG9D<)Hgdmx@E57W z{luE7zmOASqUnmLOGK>)+~ z%Fqegd4^(=cmJnvXEhAS!S8Q|ITx^K+r5=R#9uK-C-)8xCf;iHyWG;V`Z4!S(f`MO z8|nA&VaQxepyanrV4s9`UQdPufs(~uexrD*UR%umr_23oqFTTT=VArM!drPWXmYPM zW4TMyz5M;V`QdqnA;Le9kUvJGs2haj%!luKE#x8N)y?ISh|FxuruP;n3D=ZKN=vMZ0BM6tf zC#O-ZVCm5613M)|#_cL{3vhcR$r4gy_3kR*Vd71hr*E~R!h3J|>~`6nfEg1-*nd_h ze_e0`a=~D@N&2o9BDELzS6DH+xJ_er!HMwpkED11fyzll%Fhe-9Mo0qDPl zToBS&-?axv4$C>FuHhpv3;hC3Ej6qJc(n`2HsB}02%;UHNK{ds6jNMOG>rJdoWSrw z9EbaPk@cU)j@a0ABu6G!HtNL&0VOIARzKeY69B}HrWN}M%#x98U>(3_*$qD4NI0?U zoW@<)NSjf~-G&beM;J_I_dn8o-|&YAihUL+TeE7}76om#P#dKiG=RasAwdnF9& z?qASgfWKnnsNz-6y+p)Q(nt8qgi;&r67V-_Ozx8Vn+aO>F`&9`o7w(({PHB`0XFoU z4>$|nlQS^*Ji@=&0_P<_?YYygi;r2@n^Bhi3BY5KL8sz8TV>iF2!r(ady8|PnF0>e zuzjhA7S(70%mAb(``i|Rbu$GcjlEo-99jS?h76ykEV^l}1(;gKjAlCD&=Ze4n0p2u z0tTIYz=1m_(+>_xwgC?=|8@hV^IGbT0!~_Ie}6wn?OWl+n?nJz-n>#c3(gNv(Hilm z%9}Xj<4phY z0w86!2do<5&j65NmjV`*7m7E*k>jdVjtRy$io&&16TDHI{wKuyGiX{#>jymQAiMwl zVZzlV&ZvEKcd zLD@od3&-ZF4{+dcZWJ+)4SH8`(M65&6qtO&yjk+rH6)m>b{V_mTDYKX5EbuGhtT z&-yjz(($40Gh}0#;b@7pKduDL)O!@oUU}!kq_R*u-X37cR{!?bEEuUO)Pv`cO|)Q6 zGOo1>_p25|o352-FkhFHu;)WU@q-ibMqG8vzgnyx2^OD(YRaR$**J=%o^^ zCl59lov|vNA!wnpB)*rttzTn2rL9DjK@aV!oW|W8va)r1GAt@ZiKSWcxLxBxaKze! z$>Yn%)>GI_-p!_-j?RSVB#OPIonw6E;$B_(v$r{@!~01Wqv>w%pPPf4&kT- zkZrxmk8*3}_$|*i>7#+hMsXXqI`*73B|~>zkIEhY<_cvIsuEVgTF&b z-~4nLMTs=cpSMj2bHBdk^y6Gg&j$a8U#-RRnEa%+iaIvo#8Q%xiNy4_VT~coE9`NL zimbLJ-LWQ}{0Y|b??eT{iX9XaZ)qv(MHUl3P?w5b{O&jb1Tg&I@#d1T5&JlFYP@0M=Hr>2@<02DcfV(?6(`}L!5S2=|U-pbmbvunLTjUk zO?!B-5y4w%%LzvFBJU@7VHFR4(~zBhyfecMzd*+$7ks5kAI!QI;cbdeG{RuseUD(rSWPH}lbO=`On~W?F+V-$ z(Z|ZgQbLK#*;_J0Q}2>a+6@m!0BO%D}0!? z3~uPmdvNxP+f6)=4Q0H8gVYv!>d`&`g(&lqV#6CcWtK1Ax_8q<{k3Rlb-d7`2pR7C z;l~ZJ&VloijH!fmo7#TB8KN&BCOta&nqCLKbr4&z8|HCI5oU*IOi)wzeMY_E=)Bu- zkBRbi?k9bmp6?A7_>1GGNvyxPB}u-L_QBz66?)#XKY9WacRabR_1s+QCp;F+Y;-{d z|7j(`#XiNG2g+{O9pwz~cafX>d{q*c#TI5hz@{spvgQn^jGW00V)Q#{a#`zOY29r& z(229z98bIbcZ6bqn=~CO^Tpdfyd`HtP4AImXUH{DK=671`Wfu!l^uAPu)k0Jlr@D; zhL;m*dQ17{fKl%buyWFQXsL0p48jbRU>|m!m1DfGU7=kT8=YzDO8mKOM$vSz3~YS{ zL`Z;>qvgcIV}rfXZ!{9S^SH`6WH(9?iSbEmk~?GCAUeN;pn00&*Tss48Y;K zkn}d-%-M1PdBcPnP!g&P*gyeDC3s)i;<z*zgNvh{f3t+(PK$%#?$%Jcbp1u&hYJ;%$swH1A+F5hhfVbQ4nKcnN1q3>FMCYxI6)sg-z79LTk4Mh@1shMyVo4Ln zlriw5EMABT>r@%32{e=n$ky;s`uR=eg(=Jz!1eK3>WR7QO|}aStj11ZUmA}iVktf3 zltX8Ng}{7t30c*_?&ZyQWoB<4Hv&#PWz_cTTKJBF(HBmr$4x-)1`)nzwlLYHj`U&a zIIv|rAAK>@{~9ambn#*El{ae=6Hh;0n4#?Kuowl%F}8VGdegMO_vD>L^MU{=&Kn{7Rfh*m zu3TXZoie%hrQNaxLuE7Re=;?T#L>xO!IF<@=3F=G^*wd$XFrs2i!V7-VT7?YykUwo z(Hi1Nm5Q!xp(m1~k@3fv&H4HTcqf=1-&QzmF_buK$(}V|?kZH~^Cn8mRM!cd2)aTc zAhsJELc9k)y`~pClS=1PpAsB#5)RBLnTycydj()nMHW6dk? zwezj~^t`ysdh=2d*?<|b%00FC=fTG+W)WIp(pk8aJ5*9Vfn&F64|X5NbI2t7>L)J{ z&*yXa-`v4|D%%*9L%^bzPe=szk5rVE#|vXhP%e&w?Rncp~ETmmc=$-TQH2r711Y=fK@m+LhKYIWX_)GZFW! zj+Nm%Ii!??R7I5u?-~CIoR#RIYa1CV4#>KJDV03G_;eg>9}jx3#4xteGR!?ZSs?PK z6ZQFVZ?-9~zk8;k3|A`IxnOm{$1Z%{^J0C|>Wv?(%N=qAakDv-^C}@vee?(6(e6b! zgKC%FKL;OG%*qEhrRa&DeS5DH+;Yup-nv}=@K?~U*kx`gsPV|&`o zI|s!}{W^watD^0sMPn-B%=TpGq7GNkt}rIC?!Apil#DZRJjt*1L%27XlJpr2f}Qqu z9;q^Bwq<%O;`)V7*@c&yI#@i(3J>i>Srt0$me}f@*;)+5e_3hC=4f7S95KQ1Cvi75 zybUP$Y3oFCM30hxxSiXeP<}k3Sb22;{kpus;hg@x1Zwt$z!JJ+zY1>elQF!gt`}?;4ZZI0tslGglmm`3kbiRqs z^F9}m9;)E$y|@=OB(up&pq9QcXmAB1J*h|JIt&MP+Ww&x0v@+z>Fhe?BaXyNnmHtu zf3VXNix_ymAHAt_XwDfow2#$28k1R zxf1u~zoo}NmOKIMlQUk1h6y zwq;=cV%CGJ%FbW&=8(SlN3;udSgo0~%*o}ETe&BvqniQ*Net2TIg%;$6vYe^K+ko1~5di<(k&&zxJU zIaFhj%_Nck@62Tp>VSJc&F)gW?nPd7Y8Vm0j^To1hsyW*dQt9^Ei1qM+{=#$;{(vr zk~NP%x5rRKi-qs%HxYMFV}0fZ^0H1?k2#u?7;d!<&fbL~)kPkAN8wbeP=0!%XZN){ zUAT8(+6_@fMo@chA&~i0KA>lD^cBt!xnL1Qva+*qfxg&seINtfUrBWdT zkNFeucj~QCk8_K8>OUia-zCcUT*3 zWBFlvQ~unejJA#E)v7btI?zo=SS}e%!mx|AU_oTWkv4FPs{9tNY9i;TV{ShRvnMUJ z$GJW#HJ4#iq;=VpO~ytv0GVIyFvjGN(aQBb^m_7z{j}BNG<=8b zm#o-SM=Z-nO{@L{wmvVOBHRzAw{=i086lne)5C{D-+Y%njB4edoQmz?3&iCUoKgk` z-EVR1@Fx(bmU+0T6t=PZG*{z;b>U_RR(e8xss$ZImvns#E2{7E67yR22gr2)`!zVA zCsu6}f?W)F=iZF)2*(||;~{~>_8>YWZNWwKDS3+Gy~n+M0TUxJ%0dc3KZPez4er@i z_7;JssnE-jc_-cLz{NUm*Aa3>aY6nEFpPbLs1o-?92*uwtlvqh5>yEnJ{HY3$KfJd z;G}c(66T~OqHKQBygO*7*48K34w1 z7332=JgX)sRLq#(JT)tQzgv>gs9aJffOdfbXV(vs(;euBrKA1U#7^4o(?|Qvgv9CR zv17toFZ^@dEq zV;jF5Ou^wOl;jOezIHJl^G_12Cga&d!ReQt(9qC6otYYvu%@wL>s8S1NIMtO!awbt>wR)|ySV$deNC@!8j-e%Ckfh+fd zkb-9(kga_2;>=4f!#82gtILks)4l#vnL}1Fi!NY=#PSEpdk}8De-Y*q#bnZ6WpE4Q zfQ5MOWo2X)PMQBkK4(tX{Fops%F%#***x;kb@$Rg%)KyvL0J{}Npb>pS77Y)5k9nw zd(C`hs9x5MP3&pvSyciDYXm#%Y+*j|O3XA@={$Kp&yx&8cf~7+sWOOgG%AFON*}QD zl})M;Xu?J}z<*wQ0d0Uepn!om$x*-i+_wHbh9HK{G*V^dAST03Z_Bg)b_U+`4^wa} zqJox`jt&<6@=wI>&YUk%EM|!R(wAyio}y_X$(}FyIX>l_k_3i|OxBuo%DhJUhZvPd zeM9nDk{D)d%rr}S`jzYNpQu_aW-IA9b>T7nX*=%HwFy&DNT03e$S`Y;)__KbI-nfX zKWq*h*Iw`$St+-_c;$7_aaXADIm{6%Tc-Vt_7-C#rXxd{Vrf_dC_ezt@lS4B@A24N zJauUQxC7hQnC;_!Z%xmk(Jh0z1cgQlgTyOZRNSSS%*%HybfT4Qnx8ACBt*pN2&3|M zGop0Z0thLC(&iwQq9=mm1&-rwkxyte+Kj_1ryUMl@?%L+M@9rLrn)M3**Yy?@aFPC z2ppWMk(7+X+L#?VGy?Ye=H9M9*9yvaqGri50{akac5CtUeg z#!YXofEAWu^1DlYCfLVpSOA6fH)y`>1EPbkphV|2?mGW z1ihbA2dDmICq&K#=B8hfBL~>^woOwo(%y{OcWKkGL*%TzjB>t5oo^6#VmO{(Y*`kyvYLgq$E- z0iR5eEmc)uGY;2ac1WI!sPhzg%tcDrc>?Sn*a%#_kyhyRP5STe1|63#sSS}@vb)Wf zdg_s1h4GoYRG(T$#~m1;$FA?Z^*`(yreRLw2b8PKi~#6}Y{h&4@dvj1R{)6l9K<)1 zG4*p0@EXkKJ98WasE{%&o}%BM)w|P|$^2@7Z|2hb%ea5{AnOYAAbm~cG3!8Luz z{Vcu*VGGt_;F)iVh>XFKUukauUW+qg!0MX=9yGENDfEUYq!}Q0D?aE>25xm?6IRJ`963w(?d< z5*fI`OjJpB8ENH}!p5h%IQ{njR23I{j2N+R6trlFStA*xZ1@xBy+J|PSuI%eEn@>g zu|9tP{oQAYR>{}hw?NtYutQQTPxCWWRD?gXOBI8it{`oP6D|)HzC_k(qUZKv<=PC z|9jI%EH;)E#)mD}T-V2et0zF2LZIi{3=w7cpQG+vJR^ce3);gP`Db!bR0ja>G8zfO z0HZCRSJ2sQc$NsJVh+kHW)7iMBd`mUI8;*Iqdg7D9KBH*$ctCwKu#JD?~G z9$3Z>!*1uwRL3RKGixQ8dCH1V+vASq&R)9L1}7tRxVd_er)pz~0Ay*(R6vtn-#?=ct~&b zTmvD^fjdBaXqg%(JIbPT%foZk@*3H@ud~!-DZ?`W@4X0!$j}9~$Fm$|)5SteLz%2% z_~zm;l`x+#4W}9L3tUsmD!|l_&ODC{+qg>o|NgHUJpuMzDLVAtZ zihJ~Q!d*&Ude*obOSD07zaV>pVg0776yB=zzkB~H?#rY!c z8O70B-r_3&o7m}xza*g|&4BfE*PTgR?{xR_>G|>Zir7}PxZ|m4_)nPi(>X>A>vax( z1{qPlPRJ_M?s}tK;N5t^`^Md&OJ89(mfMw{Pf4Ydl)2+<52riVre*|h)cS)sHyWpi zF{*213$sNphMdw{E}Z#$O5s$s8&D5^u=}El8rxQG9?k)xL
*3~t%$tT`}Gb|YG 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 JS9f{G{tN1-AMpSH literal 0 HcmV?d00001 diff --git a/day04/struct/json.drawio b/day04/struct/json.drawio new file mode 100644 index 0000000..affe2cd --- /dev/null +++ b/day04/struct/json.drawio @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/day04/struct/main.go b/day04/struct/main.go new file mode 100644 index 0000000..f6498ae --- /dev/null +++ b/day04/struct/main.go @@ -0,0 +1,212 @@ +package main + +import ( + "encoding/json" + "fmt" +) + +func main() { + person := &Person{ + Name: "张三", + age: 18, + } + // 通过一个一个的函数 去处理数据的 编程方式,就是面向过程编程 + ChangePersonAge(person, 28) + // 修改体重 ChangeWeight 的函数 + fmt.Println(person.age) + + // 面向对象编程,有更好封装,也贴近与现实世界 + person.ChangePersonAge(20) + fmt.Println("修改后的年龄:", person.age) + fmt.Println(person.age) + person.我的名字() + + // 修改了wei lght吗? + person.SetWeight(80) + fmt.Println("修改后的体重:", person.Weight) + + fmt.Println("结构体与面向对象") + // 创建交通工具 + // 能做的动作 -> 海豚跳(Jump) + bike := &Bike{TranficTool{ + Name: "自行车", + Speed: 20, + Color: "黑色", + }, PlayTool{}} + + // bike.TranficTool.Drive() + bike.Drive() + // bike.PlayTool.Play() + bike.Play() + + // bike.PlayTool.Jump() + // bike.Jump() + // Rewrite 方法重写 + bike.Jump() + bike.PlayTool.Jump() + + // 炸街 + motor := &Moto{TranficTool{ + Name: "摩托车", + Speed: 80, + Color: "蓝色", + }} + motor.Drive() + motor.Music() + + // 打开空调 + car := &Car{TranficTool{ + Name: "汽车", + Speed: 120, + Color: "白色", + }} + car.Drive() + car.AirConditioning() + + // Json + bike.move = true + bikeJson, err := json.Marshal(bike) + if err != nil { + panic(err) + } + // 类型转换: []byte -> string + fmt.Println(bikeJson) + fmt.Println("bike json string: ", string(bikeJson)) + // 123 34 78 97 109 101 34 58 34 33258 34892 36710 34 44 34 83 112 101 101 100 34 58 50 48 44 34 67 111 108 111 114 34 58 34 40657 33394 34 125 + for _, b := range string(bikeJson) { + fmt.Printf("%v ", b) + } + + // json.Unmarshal() + bike_cloned := &Bike{} + if err := json.Unmarshal(bikeJson, bike_cloned); err != nil { + panic(err) + } + fmt.Println("bike source:", bike) + fmt.Println("bike clone:", bike_cloned) +} + +// Person 是一个表示人的结构体,包含姓名、年龄、性别、体重和喜欢的颜色等字段。 +// 也是一个复合数据类型。 +type Person struct { + Name string + // 不对外暴露的字段 + age int + Gender Gender + Weight uint + FavoriteColor []string +} + +// func ChangePersonAge(p *Person, newAge int) +func (p *Person) ChangePersonAge(newAge int) { + p.age = newAge +} + +// 修改的 +// SetWeight(p *Person) +func (p *Person) SetWeight(newWeight uint) { + p.Weight = newWeight +} + +// 不涉及到对象修改的,把这个方法绑定给值也是可以 +// GetWeight(p Person) +func (p Person) GetWeight() uint { + return p.Weight +} + +func (p *Person) 我的名字() string { + return p.Name +} + +// GenderXXX 表示枚举值 +// Gender 是一种自定义类型,底层类型是 int +// Gender != int +type Gender int + +// Sex == Gender +type Sex = Gender + +const ( + GenderMale Gender = iota + GenderFemale +) + +// ChangePersonAge 修改Person的年龄 +func ChangePersonAge(p *Person, newAge int) { + // 自动解开引用(*p) + // * -> 解引用(Unbox) + // (*p).age = newAge + // p 指针类型, 自动解引用 + // . 访问字段 + // 自动解引用 + // p.age == (*p).age + // 所以可以直接写成下面这样 + p.age = newAge +} + +type TranficTool struct { + // `` 表示字符串 都是 Struct Tag, 结构体标签,lib 反射使用 + Name string `json:"name"` + Speed int `json:"speed"` + Color string `json:"color"` + move bool +} + +// Drive 是交通工具的行驶方法 +func (t *TranficTool) Drive() { + fmt.Printf("%s 正在以 %d 的速度前进\n", t.Name, t.Speed) +} + +// PlayTool 是一个表演工具 +type PlayTool struct{} + +func (p *PlayTool) Play() { + fmt.Println("开始我的表演: 后空翻") +} + +func (b *PlayTool) Jump() { + fmt.Println("海豚跳: 高级版") +} + +// Bike 是自行车 +type Bike struct { + // 嵌入了交通工具, 继承了交通工具的属性和方法 (可以上班) + TranficTool + // 嵌套了PlayTool, 继承了PlayTool的方法(可以表演) + PlayTool +} + +// review的核心逻辑: 优先找方法接收者所属的结构体的方法(优先级最高) +// 如果找不到,再去找嵌入的结构体的方法 +// 如果嵌入的结构体也找不到,再去找嵌入的结构体的嵌入结构体的方法 +// 直到找到为止 +// 等同于重写(Rewrite),覆盖了之前的继承而来的方法 +func (b *Bike) Jump() { + fmt.Println("海豚跳 基础版") +} + +// Bike 重写了 Drive 方法,定制了自己的 Drive 方法 +func (b *Bike) Drive() { + fmt.Printf("%s 正在以 %d 的速度 脚踏前进\n", b.Name, b.Speed) +} + +// Moto 是摩托车 +type Moto struct { + // 嵌入了交通工具, 继承了交通工具的属性和方法 + TranficTool +} + +func (m *Moto) Music() { + fmt.Println("炸街") +} + +// Car 是汽车 +type Car struct { + // 嵌入了交通工具, 继承了交通工具的属性和方法 + TranficTool +} + +// AirConditioning 是汽车的空调方法 +func (c *Car) AirConditioning() { + fmt.Println("打开空调") +}