From 1c856a8a1e1123629cd99659f05ca1c546e3a49b Mon Sep 17 00:00:00 2001 From: "zhihui.ding" Date: Sun, 9 Apr 2023 22:30:25 +0800 Subject: [PATCH] docs: archive example to rootfs --- .gitignore | 1 + .gitmodules | 4 +- Makefile | 49 +++--------------- dist/cert | 1 + dist/resource/cert | 1 - dist/resource/donation.jpg | Bin 71311 -> 0 bytes .../etc/modules-load.d/openlan.conf} | 0 .../etc/openlan}/point.json.example | 0 .../etc/openlan}/point.json.full.example | 0 .../etc/openlan}/proxy.json.example | 0 .../openlan/switch/acl}/acl-1.json.example | 0 .../etc/openlan/switch}/confd.schema.json | 0 .../etc/openlan/switch}/l2tp-psk.conf | 0 .../switch/network}/default.json.example | 0 .../switch/network}/fabric.json.example | 0 .../etc/openlan/switch/network/ipsec.json | 4 ++ .../switch/network}/ipsec.json.example | 0 .../switch/network}/network.json.example | 0 .../switch/network}/network.yaml.example | 0 .../switch/network}/v1024.json.example | 0 .../etc/openlan/switch}/password.example | 0 .../etc/openlan/switch/route/example.json | 4 ++ .../etc/openlan/switch}/switch.json.example | 0 .../openlan/switch}/switch.json.full.example | 0 .../etc/openlan/switch}/switch.yaml.example | 0 .../etc/sysconfig/openlan}/point.cfg | 0 .../etc/sysconfig/openlan}/proxy.cfg | 0 .../etc/sysconfig/openlan}/switch.cfg | 0 .../etc/sysctl.d}/90-openlan.conf | 0 .../lib/systemd/system}/openlan-confd.service | 0 .../systemd/system}/openlan-point@.service | 0 .../lib/systemd/system}/openlan-proxy.service | 0 .../systemd/system}/openlan-switch.service | 0 .../var/openlan/openvpn}/example.ovpn | 0 .../var/openlan/openvpn}/openvpn.md | 0 dist/{ => rootfs/var/openlan}/script/bridge | 0 dist/{ => rootfs/var/openlan}/script/confd.sh | 0 dist/{ => rootfs/var/openlan}/script/eth0.cfg | 0 .../var/openlan}/script/ifcfg-veth0 | 0 .../var/openlan}/script/ifdown-veth | 0 .../{ => rootfs/var/openlan}/script/ifup-veth | 0 .../var/openlan}/script/install.sh | 0 .../var/openlan}/script/ovs-vswitchd.sh | 0 .../var/openlan}/script/ovsdb-server.sh | 0 dist/{ => rootfs/var/openlan}/script/prepare | 0 dist/{ => rootfs/var/openlan}/script/setup.sh | 0 .../{ => rootfs/var/openlan}/script/switch.sh | 0 .../{ => rootfs/var/openlan}/script/update.sh | 0 48 files changed, 20 insertions(+), 44 deletions(-) create mode 160000 dist/cert delete mode 160000 dist/resource/cert delete mode 100755 dist/resource/donation.jpg rename dist/{resource/modules.openlan.conf => rootfs/etc/modules-load.d/openlan.conf} (100%) rename dist/{resource => rootfs/etc/openlan}/point.json.example (100%) rename dist/{resource => rootfs/etc/openlan}/point.json.full.example (100%) rename dist/{resource => rootfs/etc/openlan}/proxy.json.example (100%) rename dist/{resource => rootfs/etc/openlan/switch/acl}/acl-1.json.example (100%) rename dist/{resource => rootfs/etc/openlan/switch}/confd.schema.json (100%) rename dist/{resource => rootfs/etc/openlan/switch}/l2tp-psk.conf (100%) rename dist/{resource => rootfs/etc/openlan/switch/network}/default.json.example (100%) rename dist/{resource => rootfs/etc/openlan/switch/network}/fabric.json.example (100%) create mode 100644 dist/rootfs/etc/openlan/switch/network/ipsec.json rename dist/{resource => rootfs/etc/openlan/switch/network}/ipsec.json.example (100%) rename dist/{resource => rootfs/etc/openlan/switch/network}/network.json.example (100%) rename dist/{resource => rootfs/etc/openlan/switch/network}/network.yaml.example (100%) rename dist/{resource => rootfs/etc/openlan/switch/network}/v1024.json.example (100%) rename dist/{resource => rootfs/etc/openlan/switch}/password.example (100%) create mode 100644 dist/rootfs/etc/openlan/switch/route/example.json rename dist/{resource => rootfs/etc/openlan/switch}/switch.json.example (100%) rename dist/{resource => rootfs/etc/openlan/switch}/switch.json.full.example (100%) rename dist/{resource => rootfs/etc/openlan/switch}/switch.yaml.example (100%) rename dist/{resource => rootfs/etc/sysconfig/openlan}/point.cfg (100%) rename dist/{resource => rootfs/etc/sysconfig/openlan}/proxy.cfg (100%) rename dist/{resource => rootfs/etc/sysconfig/openlan}/switch.cfg (100%) rename dist/{resource => rootfs/etc/sysctl.d}/90-openlan.conf (100%) rename dist/{resource => rootfs/usr/lib/systemd/system}/openlan-confd.service (100%) rename dist/{resource => rootfs/usr/lib/systemd/system}/openlan-point@.service (100%) rename dist/{resource => rootfs/usr/lib/systemd/system}/openlan-proxy.service (100%) rename dist/{resource => rootfs/usr/lib/systemd/system}/openlan-switch.service (100%) rename dist/{resource => rootfs/var/openlan/openvpn}/example.ovpn (100%) rename dist/{resource => rootfs/var/openlan/openvpn}/openvpn.md (100%) rename dist/{ => rootfs/var/openlan}/script/bridge (100%) rename dist/{ => rootfs/var/openlan}/script/confd.sh (100%) rename dist/{ => rootfs/var/openlan}/script/eth0.cfg (100%) rename dist/{ => rootfs/var/openlan}/script/ifcfg-veth0 (100%) rename dist/{ => rootfs/var/openlan}/script/ifdown-veth (100%) rename dist/{ => rootfs/var/openlan}/script/ifup-veth (100%) rename dist/{ => rootfs/var/openlan}/script/install.sh (100%) rename dist/{ => rootfs/var/openlan}/script/ovs-vswitchd.sh (100%) rename dist/{ => rootfs/var/openlan}/script/ovsdb-server.sh (100%) rename dist/{ => rootfs/var/openlan}/script/prepare (100%) rename dist/{ => rootfs/var/openlan}/script/setup.sh (100%) rename dist/{ => rootfs/var/openlan}/script/switch.sh (100%) rename dist/{ => rootfs/var/openlan}/script/update.sh (100%) diff --git a/.gitignore b/.gitignore index 6e32125..269846c 100755 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ # Test binary, build with `go test -c` *.test *.idea +*.DS_Store coverage.out coverage.html diff --git a/.gitmodules b/.gitmodules index 20b9731..6a4bbba 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ -[submodule "dist/resource/cert"] - path = dist/resource/cert +[submodule "dist/cert"] + path = dist/cert url = https://github.com/danieldin95/freecert.git branch = master diff --git a/Makefile b/Makefile index 238d508..baf3048 100755 --- a/Makefile +++ b/Makefile @@ -100,53 +100,20 @@ linux-gz: install ## build linux packages gzip -f $(BD)/$(LINUX_DIR).tar linux-bin: linux-gz ## build linux install binary - @cat $(SD)/dist/script/install.sh > $(BD)/$(LINUX_DIR).bin && \ + @cat $(SD)/dist/rootfs/var/openlan/script/install.sh > $(BD)/$(LINUX_DIR).bin && \ echo "__ARCHIVE_BELOW__:" >> $(BD)/$(LINUX_DIR).bin && \ cat $(BD)/$(LINUX_DIR).tar.gz >> $(BD)/$(LINUX_DIR).bin && \ chmod +x $(BD)/$(LINUX_DIR).bin install: env linux ## install packages - @mkdir -p $(LINUX_DIR)/etc/sysctl.d - @cp -rf $(SD)/dist/resource/90-openlan.conf $(LINUX_DIR)/etc/sysctl.d - @mkdir -p $(LINUX_DIR)/etc/openlan - @cp -rf $(SD)/dist/resource/point.json.example $(LINUX_DIR)/etc/openlan - @cp -rf $(SD)/dist/resource/proxy.json.example $(LINUX_DIR)/etc/openlan - @mkdir -p $(LINUX_DIR)/etc/openlan/switch - @cp -rf $(SD)/dist/resource/confd.schema.json $(LINUX_DIR)/etc/openlan/switch - @cp -rf $(SD)/dist/resource/switch.json.example $(LINUX_DIR)/etc/openlan/switch - @mkdir -p $(LINUX_DIR)/etc/openlan/switch/acl - @cp -rf $(SD)/dist/resource/acl-1.json.example $(LINUX_DIR)/etc/openlan/switch/acl - @mkdir -p $(LINUX_DIR)/etc/openlan/switch/network - @cp -rf $(SD)/dist/resource/default.json.example $(LINUX_DIR)/etc/openlan/switch/network - @cp -rf $(SD)/dist/resource/network.json.example $(LINUX_DIR)/etc/openlan/switch/network - @cp -rf $(SD)/dist/resource/ipsec.json.example $(LINUX_DIR)/etc/openlan/switch/network - @cp -rf $(SD)/dist/resource/v1024.json.example $(LINUX_DIR)/etc/openlan/switch/network - @cp -rf $(SD)/dist/resource/fabric.json.example $(LINUX_DIR)/etc/openlan/switch/network + @mkdir -p $(LINUX_DIR) + @cp -rf $(SD)/dist/rootfs/{etc,var,usr} $(LINUX_DIR) + @mkdir -p $(LINUX_DIR)/var/openlan/{cert,openvpn,point,l2tp,dhcp} + @cp -rf $(SD)/dist/cert/openlan/cert $(LINUX_DIR)/var/openlan + @cp -rf $(SD)/dist/cert/openlan/ca/ca.crt $(LINUX_DIR)/var/openlan/cert @mkdir -p $(LINUX_DIR)/usr/bin - @cp -rf $(BD)/openudp $(LINUX_DIR)/usr/bin - @cp -rf $(BD)/openlan $(LINUX_DIR)/usr/bin - @cp -rf $(BD)/openlan-proxy $(LINUX_DIR)/usr/bin - @cp -rf $(BD)/openlan-point $(LINUX_DIR)/usr/bin - @cp -rf $(BD)/openlan-switch $(LINUX_DIR)/usr/bin - @mkdir -p $(LINUX_DIR)/var/openlan - @cp -rf $(SD)/dist/resource/cert/openlan/cert $(LINUX_DIR)/var/openlan - @cp -rf $(SD)/dist/script $(LINUX_DIR)/var/openlan - @cp -rf $(SD)/pkg/public $(LINUX_DIR)/var/openlan - @cp -rf $(SD)/dist/resource/cert/openlan/ca/ca.crt $(LINUX_DIR)/var/openlan/cert - @mkdir -p $(LINUX_DIR)/var/openlan/point - @mkdir -p $(LINUX_DIR)/var/openlan/openvpn - @mkdir -p $(LINUX_DIR)/var/openlan/l2tp - @mkdir -p $(LINUX_DIR)/var/openlan/dhcp - @mkdir -p $(LINUX_DIR)/var/openlan/confd - @mkdir -p $(LINUX_DIR)/etc/sysconfig/openlan - @cp -rf $(SD)/dist/resource/point.cfg $(LINUX_DIR)/etc/sysconfig/openlan - @cp -rf $(SD)/dist/resource/proxy.cfg $(LINUX_DIR)/etc/sysconfig/openlan - @cp -rf $(SD)/dist/resource/switch.cfg $(LINUX_DIR)/etc/sysconfig/openlan - @mkdir -p $(LINUX_DIR)//usr/lib/systemd/system - @cp -rf $(SD)/dist/resource/openlan-point@.service $(LINUX_DIR)/usr/lib/systemd/system - @cp -rf $(SD)/dist/resource/openlan-proxy.service $(LINUX_DIR)/usr/lib/systemd/system - @cp -rf $(SD)/dist/resource/openlan-confd.service $(LINUX_DIR)/usr/lib/systemd/system - @cp -rf $(SD)/dist/resource/openlan-switch.service $(LINUX_DIR)/usr/lib/systemd/system + @cp -rf $(BD)/{openudp,openlan} $(LINUX_DIR)/usr/bin + @cp -rf $(BD)/{openlan-point,openlan-proxy,openlan-switch} $(LINUX_DIR)/usr/bin ## cross build for windows windows: windows-point ## build windows binary diff --git a/dist/cert b/dist/cert new file mode 160000 index 0000000..eacb320 --- /dev/null +++ b/dist/cert @@ -0,0 +1 @@ +Subproject commit eacb3208c32b022593f0e0d16adbe0c6bc75fdf6 diff --git a/dist/resource/cert b/dist/resource/cert deleted file mode 160000 index 0298f45..0000000 --- a/dist/resource/cert +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0298f45e58bfc27e3d4c65823687ca01bd992d9a diff --git a/dist/resource/donation.jpg b/dist/resource/donation.jpg deleted file mode 100755 index 8e1809edce6de22f6f7ab9c4157a616d743bdf1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71311 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 =Q3l4lt`O~q0p+N}%(wM2FqJ!;dzzNlgJ6dJ2W z#x-qwv=jZ&+@hFE^W0VSprRzRoC4H*5bdCWjEc-GM9^Vk(7~8IBm(^1>#{e;k!u3M z)xXL7#+}XQi1K`>&nadlWO_XZyb}}or?{eIrRDiFu~?J+AzlB1fALc)6tPNN)KSHS zJenMH#rqs>QlNH;zk;K7BV~ug^!2#&U_whR^*+pBK@a)tr&^LLL z2JL>wV8u!q(^f(~n|AXxt@v79S(y}KKAE#ZwXK+|ntv9l8G)OMQ!rb_*@l|&;%UwM zciD6zQc*FHSXfvn_%~%c7`5EqN8Hcy#3WTVCS&u~(;j6sjU@~iS{<%{xHD9Aq$f-W z=%{s9C@2UU!D`cB9>AWO*AH^MB? zFI)i3_0}47#TQ6r>OH%Jp`bmh$MsUC4OTT*O`Y1i^`3g|0jplW#_!%}T{fF2HakOJ zGuh(0)WM^RF9TSzpUs6@na4jjG=(Tc(C6(c6pU8t_{wXemdMP65mXDBapg1CL~~G5 zhCm`YpzuQJ3-j!W9ptqIHTZoQ<8dv68Aqv$GaORXIhW%MC5G{Un>lJocS{a0>< zW*yANsSfRdU%98kdADOuRs2WP13S%C!UV9eypG^3C?Jr_Aaqn)HUkri#hWmK+;(EB zc9aE_(n-}~v9{uw>X)0<58thIC|G?qmqif`qfGF?W2W35MU9E3+%Yn8-$VFr6((_v?6z79b{8h-bIcylrFZO4y*GzUd~BkmJOhJiC0oP6ma$!3@aJ?li4<}FxAYmQ?HeI ztfr{0vs27QSXcZ_!v4Z=?cM@V5CTXfp^K`O(>rge_jpqPX?bUpei{3*?^$~IS>a2s z-~2Tk;T`*J6wDbaUZSUB`3YYJ8E55pp)u8Du8PP@*0f8!5lUw3=xiB>1XM8Jg;S6@ z-v!!VPyHj(p2N9)t(ZB5@D4-q{jWIeKQI)J)bsy{WQSN&wroDclT^`u`C>`)K6Ly? z?Ti7(leTVHJC?7W2jg^wk%e3$?j48%hk+O3dH)kcQLFq5M9~WaqWC=()?c+?3KfcN zU`M!U5_112vp~bbo+~~nQFp~RUaW`VFF*mU4S9npsR-s4w;RWo3u&fvXXb-QpS33d z0AuOVek-b{AgEtvcbd8ryV6WQzL2K>;X^QY|6c?5D68$Sn01SvG3#{4Ffr>G?|6TC z?#PXNZDtj;MmCr7sb#(^{>m;A(JJA&NK>{mu;`PvZWt#CPXnts zlx{Kq4JMRS^c_XxEEK|I=^^a1*}wBl&n0D@ z2v7`C(LbG)Wuj8xHM6QtC4XctR71`IXXgVOdhJOUqwCFCH^?ol2{!J1EvVyM!#0c7 z?*u^$m}t=LHYb#m+@S^7-jDEUhHo`Tg?Q}>at*P-Ba}BbsR?CHp-w*%jA1dzF^*drFwC~`dA=05(VSBc}!e>||AY7lBEk{!0Ys!u2 zj-pZ1MQ>F0Q9yFhRwX{cUYVyFQOGvlCcj(OV=~cb7#ls!X<6}WOMt% zgRo{*6&`6!<<}~eh-1+S>=;Q%JQw_dc%CC`a8Ft_n{g(z*W9rKi{LPusy?OT_%zVe z0!mV`5;DVe>SS!6XLq`mANKV!YaJ}Fd@K)N1X)xyScb5dD_Z^N2;9jHU6l^?kL>Al zR{s&BeF*XEMWXlr6zc!=jQagR^_awDqY4u5YnGoW+6FTTNRPr`kj>$2FhP*;Nx#D& zoAV~)X`qnJ2$Uji#O!O$0R)))yEotOpb>#bA*kPf!L8B+ynlv~ro-EMhWvt8`T(bK znyk3%{oDrMS(r3*U;9BYCfhZ!rlU0KkC*>KN?0*ya>nvUzob_y4m_a{{ysh-Vy}!r zNF0B|U;lj(e-y4_0Llg2I+Q&2yk+knzH1213dY21i}(B^+d+WzRorVni_YzBG&bbD zd;=1h?R$v{d*(uG;$sy}WRN&HH_4s(XDJAC1OALk+ zKXykIDiYSEo}~MeyLIQaLU*8l74tQj*mBZ#(|I^yOvr?jWQ@p)p>|rJD0T&h!!M^G z>o@Xx9g_rSfKE4R?9ttflO)Mj%Ts5g4-sAK>%GkctQRJE8xV{?AoYt0zO~ak+uCUJ zg~3Chn)ytbLXYz|1@osXq7Wl`*Gpky1j095j$lZb!m+U_v&$w}dz4L6u5=m~Emys9 z%f`%}0U6BBNLwOhTZ7d7@I^ybRfaU3w8FYJ7|+A_F@UJ(kT+6GSZ&>n)$M>TqMQC-2~%;Vlwu-m*xX4snQbRVlf-#5!$(=^`X>_LuX7Xb%5j z4;APcVjx<@6_Z!RnmaW#gAVG=bgAuln0%r z3(8rawwOvroa?7$?&NvCN&ALXf{~+*Y0Nf~bnwr28Et%%po1+MP1s?t*I%(*7B~`e zS%@<-uf#!)g=eC(p-fI}n#$vrKQFE`l8T#F1S4HYYs|!T>WdA-1lcT@LIK&Zx@T?y zKMVc_-v#FqFV;#jyGB#}a9;IwgX?;!(%wSye3|Tt6kQEYvwQ=Tu*Y%JiPOZ?vsy@I zFX_j$Y1?=cq4DVH+_S7p?+2*kTp|q2)x+>N(C;i(Xo1vsmMN}4R(x&fux|t?Py2(bjCw<78Z4fu!IgB^VE55?Q02Ji&5d7eq1T(lxSKsl-*j54YTScM_b&oGigR`nN=-UJf_tx6k41|z> z^PYoxo%kgSG{E?6SvLl|5Kx@sv44V}vzisHvoA;SOJhDXEF+nC5~jS>ik{1SdK7;n zY0jOj9TWFR$hLkkC{Mo6e@BtQtdifl*llPghb~KG@jDy(E0)D=S1=}>Y{ZIqk;tsr z{(zuH#+T)7KBzf;unCh2uF5qc8{yn92N_|>!?-3rp2EO8iU2=7tZ$xyET8uySB+Sr)JI}{|U6p2c)w5U1NRc zoHR`2-f}!nGnbW+xr6yfuH-UPw%ROl$9Hr}dG3^BzIVov}I^Hca{j7^K%`2X~QWw2ue8&<*1z+2;vd}YeNdlzdH>G{ z{jM=S?(s`5LDBPo3eM<3Pi(~E(9&gX`A-%<&&>l<;u#PLr@cf*`j) zwp@O`3*{5Wgz;)qf8kdAUiy?k?{ibuV$61Dw%>_6hi3LOy|~%@J!-j)b-uX|W;O3K z_bTSdr;w&7qxQid{U72#QM&JtIxfxs73?E=06H=n`v@jT5EW#Yi*E`zEhvKM``pi?q4Ew4`C;f85O;%hixAOs}#$pKu{xvca{& z86|ZdMAPEZeWCy$;9QC7yl`C~85N9s4GGe=GTtiJS7V)zcWT}pe-7r>m-k9n4zJ4Y zG+~Xhh{6`2iRlX+b5B_n{|vjK2H8VfsGW}9kw=52hIwfDPmNd5xhx0zTfLvK{^$Ys_90I~9U-sD+2~X|!NR9wTiQWC*;y|VxT``RH%Z$N00uL_QlblA11t5!u zKG5T7U$%KwbS4xT5=#CObvk--q0sJ|G%^Yx|0T2sd~gEG>$iHUk$BoyLgDpq|HKHD zlQU&=HC8mDTmIZ}WajT6q4$Pwp+n$WgU3zOX+Y*EX6Eq%n@pdlhN^P(?iNLtOhP$;g z9|G7Ahr}YA{D#$CM)Y%w0^9Md#u$mvQ>|L%yvueYF%lklcH#4X!wepMgMIBkDe=G{ z0y&2hN*Lzk?FD=i`r`$~EA5gVwKf+A$7X9e#apNmB+Sx9PLQmzE^omOXgb)2h-fi= zVS}nKr>piBfIGT|?D8~+O#x+?`<&zhqcgPP&u{$F84T~efoyELLTKb@WwyU6+cv-}v6GPcb)O(Ujj|Bhs5v z49eL1`u5-rg>?>a#hs{pJ+*NdWU6+VesHkWsT!6D6zF%Pn~7!xsP|+;Ld(j*5bOZc z(7=e{?!3b@UR7ayc&#*^_~I@!;Z#EB&B_RZzhDp9N(8y(wzD?Bwi_73jmxCYsxzB1 zt_Y%bkF<2*gnQ8p?ah*SSO=|){@qXgs!~OPOfGZ_9N{3?X(F@U$3%LQJA=hUO;~O5 zeMyv8PAd8-vZ}SHr^LSCMD0s9tVqflrqIFEk5HRd_)rzV2zN5x4GN^1=8R$LDWK?qHYn05DsVL27yF<1}Y2q#Inku>?TsRW? z_#;H(y*E&ZK{j(6YOI0fu?%BgjEj8{Bk=OF#<|D)}#!=h^2zU{HF5CoMDX&D%5 z2x&!f2qh(@yGuYyMY^OJ8tIm9P&x*XZjkQoewTV(mowh?bHDfYeDB8}ZrcDdYgU}= zT*tW|`%jLGwbkE_MlEI;TXmMd*|x_VTn`UDMo6O>NWCzOjTX|_#fvOk_*j-7q}HJISXIY3 zl1t*S*`P!8GF%ByIIr43my6b`oN;K`&+cT)#ZWcA1o95i=s zo@SUkzO@Ont=`(H;s>ite81fIo9ysR5Mz%{)u8G^12O9&t z$&+(5dUD;G$)!u3#3-%P)iv}}YVQK<)x8v%eFj!=UGUXx48!-n!fY3mgoNX%QdmxI zS*DORV2>(?Al#{hfE(M%OaL!I>|Lj4rkEWOm<=H9b`;kihLz5S7=(xAn%7GVI$cai zC=Y(atz!K4H;K}|Dwz^;QEw)7_m~VKsAjPUgCbutQ-HX>t@i5s}W2im;NTXI=v33SpG{05NNS zZ4ISwgn~qkO3mEKX#=w@{GbdoxX?38FY)NKe$?((p#vPY4jsB5)y6>J%q5Q5d)>3f}UinGf!&L^Iqtv6~)5^U|7G6TnzfeQ=iRgJxC+3nxfGd5|Le{w>(#G zLR3olu^-2)v06BI?0z-XFhdYGIblE+ddY|EE?Yfv~mX~vcttQgtv<8+# z9#F@X4m(Q_P_;T-6`s|5fDof{z6{xiQY;RkXp5MHIm(e9x4+^6%I`&?#N05Y;vTn0 zNA3tdY11mPChh=Y%aMN56Q5%I);7KB7k=H*((~*+4oU%Sd_K2bB)hDk(3Oavo7?_t zb4l%%KI-n6F0HHA?){W9oV>NyBbr)^{SfJ>IVDBhO;Gard?-nvG+l0f+_Ir}X-n}L z)(~t=Cj8SgQ!<`5>GXX7Sg4H7!;RB zB+t7tAIY^hndh3YeL-ibHACmk&uM~;(1)kv?12+b@$P=y^)lm`R`SR9@HWdadlXa= znt~5^Hvz%gB}pC~!G&(9zl+j9!%27*8r?qB$ZeOKsN+fFt z9#!uBdvKY~NI>Zf_r~^Fvy|N-BU zU%&dL=vmdeMe0It862QT$te?qwTRQXWiwf3&U#c|s#3^WDn6&Bi&(^I5Z2R=2?)+D zt>LrtoD+8(138hQv?tseoO>zI@o2|1?6h<~kLl=XNj@DDUbLplp}W(V`Iv2b=gW11 z98T}v`JBidLfsTzYVq|b0s%s?Je?F;a`J;giV_+Ky?9ifQ>e!5Ih- zefnMh1xR|#!-!Pldy`Bdr}|d}3*4R6(L)jp!3bl<=p)YP$G1FRVxY^#$|%dG2@PxC zy{$z7h2A-O8;~dVQe~2qyM8;Rdi`=W-k|-s331zGZ zOm-WMwi;^jt4IefzyIM2~6Q`Y{cVZS^b zVk&U>`80{lzjk&1cUlpR71Zs!@^*~fj;hjlF*c~}LC334qs1+o3@k49mqY_j(Ci@6 zLY*Us(Ab`2xS85E3;zUn2oh$NNQT@$XYt|MHvjL_1WEF8mji^`f{dggQBhCEK8RClt@oW7)MH?r<)<7iU0p0y&s80L*>n^peCu1JT&6ZGv_}nGtE}Q=fv3w@*@G{zD*2=-E z(Bx_H#uDN3_i$x;ac${Y^;?or8M3R|e)6(MWG$4XD)Z~kgAvhYIvb_^2=xYYC*-G9 zCc;(ZQ#g_oUs5aR2hp!5Z4|m(CGZt|TW|Gc&+<(n#T@)JIJIsK@VvK07QzI=S?lFH z$)8@TPuo>`8J0mHZcnAnK4T`Q1dEn_p&67SXf)>MS283hih3nHMZVImSX^>eb_ULX zl+wStAI82R96BCP??e7M_?Q&`rLF*osBs-HnF*-apQ9iy>_{om+-?uAlzFh>7k2b| zrmw=pC&uUvB{{_E{*M)B6;q0^$n~tHN2PN^rBHHWAJVTu`0Kipmne{xA=ewqSGvt# zoUw1#4K~qFXpG;+$iCI#P^lNs0vQy~q+NbLQ%eRRl&0h=3M$3gvxZ~41dOihh!{zu z$h&R^19vwRi5mq1Wo7E^deQ$B_JO{JOjofI|6YE!cp%ylUc;rnd@mfmPDdOZxnena z1aIPI&-bu*eHNlOK$|1KPLM4^_SCODIEjOVOV#C>D2JLd;Zu@jX)Js{D`ZCn=M+-E zKF-Lc2ibdzrRgrw_L{~sIOa@d?w&xQv}(NYIUHvtrT_lkQ_IPZ;r{8t#LA+hUdQDK zZ+;Qe0~U%ojnqkGQKQ61;FDiJCTnzYD*LRJ5c4x2V_gW50%UN+_fImPTb}Iy9u^U$h094x}{~_o|$e|`v=Sy1H#S1C>8-~QIz>`{6l0g>n%scq2$5l>dNNTnOeY3Z-pbTH`F%&bi*oPq6Yn-P%Ns#avG$+&F z4!6q+5R zcCMrx=Qbh-8vI7GIYJ}b>QF=Jphv;l>=rf@Q;qQ$^z&N>d_kiQ1(uJ3sOZar`NxtO z{9s}ipm#xdoBC`#HR>B14`$}#?s$lcb?8w9sACKUq{9!{$bxtci#GZ~?lZ&?wUICn zTH@Y))OVf1=mV!hicEO8;o`>z+s9Jvn!kBDzx^S<_DoMeWNH~w&B~JhDK&Jc>y37< zGIJ%%o^KDZG;AnowrbkiEqk-oGKE$$G0OUucy$jUC5#Q<#0XM3t2=7d&q&pL0cw)e z-`>3dtp;K`6WGP4Rb#roiHe`wSntx_f$n872-~#6-M>MDe8OVb!yGtXyq=H{H%pQ~ z($b8v`e^jnq;l*?O2>6{G&*vBQhPKGIRhn7VcGpd1=liQr#0eCY;vlT{;N$-fctj~ z=ylW@OLR)goNz zwXcjzJUPI9HDX+SDKXO`KrGxP?7%NZRm(6p!NT13^yx;VwkJi?Jzi1-;UUvGpJp79 zbM5MfuIDqOhfFgy{v2Js6K>UN&$kZ_^z&os>89WVPy&m}JNY4)ETcvP7UydTz3WEz zOBt7M-->t+C&s3zNR0{q!@sjLfpm^uBm6ARr*!>`1a2Mutpa9&jUe4&g+_2sGUtoL zj@Pmu6B^8Z)M^7hWYi-Ghdsm9qRMAIIuazymS1)p$heV4RB*rwmUm`N^n@xDwYbKl zaZcbtc3ys6RnMq#x@Q>;axAl;{F%g-?AkKPk~#0}z0ROR(TqqQs&~jzo%GHZ*3Dtr z2UG23DPb|HrCS1nS^`s@&#snG_asvZtF`HHh%t&Nts%rLX`y1lzE&*EdmqQPX1;YJ zB&=b=vB>n?`r=mww|W{0gb=3Eb@}kNI4Hkhgl9_%<@%>=HW7)wzB~FNN75qe`ik%J zd0ULvJ=;54a!N;Z%S~(QoML`kp9566$B{wV)`?HYqWY!E^b6X0sZkD^LWFqR);^5A zbHjG@E8)@4TvGdP*%-+ssqrP8utd&9NQMvJ^G}QX2!jA~)tOmEZ4cGbZ!_e?XSEZ! zj757d@a`|B8aq#y8aOnSR&UBBQIzT1e=mU*y!#va3&&Ls?|4mUMd-{7zPrSn)MENC z)L&rwmp?-`M!AsPks3cA%?OL9k_R@VAe;qPoWBd3T7IhaEQ533HyUI$U^WHkNZwAX zmP}&JE@A&2*gGe*-0Y#5}Fdp^SYD$70a3F zE5%E`9AU=y=#455s&Q@ub(nn4pIe2MBFu+lacwv!Z_CU`rSyv z(i;4YZ)2fu3(eNYYAG?uwqb?UeR+~BN_U0ts<_4rB zM;~*&?GE33qJ-6X!siT|qo8hbZXd%|LlwQ$ae?ytg2@~CLHPI>H*TZM!6g{`ujtIWaL5S?R1O_ekJ(NN<(*CzL24I`@geIA{ z*b|2r>zz5aBfOQqG-k;h0%Ne+vi3dNk`)sMCpS2+*S|47o#^-l);!}Ok~?u~Rw_T| zPyUJQC2;-$i&aLWPb$W!lu%uHctlXLK31t^`|hPMV?X%tvxj!iyv$6&8m)9vX5{Rk zlvt%oKmiqds1^JC3dI~OEt{R=>$BQUakwOqHk{}sl3uitAZmRS+QTeM zv?^-y*lB4r0zFW-^q6ka;#ZairNQ$yh@NaH-e~P%ep14qZcK?^jr4F8O*|bcvo-9U^ z9tZ{K%OYUzg>dX+X%N4nW*pn)ekCv6*7zzy(3b5cRsyvIwUS%}p-&OJRN2TK;W*vo zQkE4)B!mYmVGU(L;@187dX51aoHg$!EquZ`m8A?ru^RH-zI(75da}sf^3bx?N|>C% zaw;cVZ?M_GOt!aV3Xy+#Maz*)-rI_MQC_%beSaBec2K>BH^Pj$?}!!oVX0?=O4upQ;zpeG1vSgC_fv3eNp4zh{J2@wF@kYaS;bq!QZgP0 z{fu|LS9R}Xr5yI*&%mtF35#d)Qng7ZIMB5m2f0TZ$7 zh)Ix$2|&$>YUBMEA32Jo;^sCAz<$Lst#%#Kbideo%AnIDVZ>YS*<(DFK)6O>Hg}sm z)v+^sEkm~V7L1MjK2=Do*1epdsOiU_=9FuELTZ}JaaNvO?M|(u5>v|B9$BHOu+T{E3M>s-&~eiFA*jV#Wf*Y+!# z`Qs-=p=}FidtPZk*pEMcqh%SR^c|z#?Sldtw@JvvOXXTI+jZiQD-UBhG6f9iW zR(Tm#AEVktm8E#9w>5HJ&?8IdNYayk{{plNyb)&9bGrBnDGFC+;G=Kwu$66LOuge> z75JQ_2>rN4J;F8RNYhwFGC4|%0u~VHS z7_LIjf6z(c8Y>pR8Yrfn8Z>0l?=PGAz45E9VAZFRv|(SFkE7iSCMpNKJs$|}JDR}8 zT53Hv7zW}-?amX=7=tAXDacudnkD9&3`^^ZgzpP(E(L_E#!VOv*@xBI6>Y|O$1(F) z-W$>UzGr@|*s{(^vW}BY9PI7VkT+_dW-jvdK39cOG9sG5I4A2IvOia+NnI4dQkj3y z4)1g+p3C!c1s}!srBb~LsNP}a-l zcn#~94J}rdG=4pLRp+9Mjt4wp;XG8)Xh0VH z__mKdtp{T2R3+#iMtP~tVCFO&dJ^pNWP^i)agE0G-rKdysTDDvbP_RaogoBIgYmMMMk$k?GDDWq;YVIB@=>Eq>3>x&fWw^(|L{u5$JEgGCmUg7H*q`4I<*H$27$o(8 z!%D)Q2U5RDl5m)9GHn%A@#r<94~ESN1Zwd~?jkwV@VAi0!e2obR}sg+jl}-jZ0%Nm zm*;h)JMfgmmrGDSB-Zx_)BYO^mSy^Lmmu5P?jt~W$@S-8)o{ZN&0)^#jr5l~9?WWJ3d@++_k2ypOmDN&^0bJp1AsTqBg@A+2XY9G zn%(}dPPY&_ZoXwlqG2C!8m$)n#f3_n-iS{!snk#jibve)7M%(<=0%YN6ih zc>Qk~(GTlit})O#8I8Q@TkL;h%&F0-Z7%AwaziHZ#lBbunjo+ea^p;Gi`4>zA_D(6 zX=pzm7yjiR(lE8CJ$7%U^kz!JpL~i?`7eOZW0qg;w`%mQco!fw;+uC}{VO_)^x;CK zxB3g`XWO-2N@C59vh=$M#`0Hb{D0@~2*xxtRfgnt+TNsi4b{o{=9t_klpi-2e-}iI z*ZWNNw8>D??;w?HE-u8q|DW1HDnA!klaqlpg|-O5HE0}@sYOGLSmxMp#DI#*Up;WMX81KpRhNzU}dW9U$Lm(OJ{;|ymTFI)DWe$h=>WXqN zKX0mh6Ftir)K(slv3~YoU@?ZH@P%5`rqJu-$k-)H1`LZ1i2d2S7_m3+jI90fWYhSx za!iV4EbbAT5x8JaSmiic*>E+yf#~ka&gEY9Oye1q5rZ=jnnBXA!>}d3eS!o&=0y?Wf`q6(Q}GvcF%nU#v0`JC!68>_x1MzVI|A%*?b z*WFtAQ+L16+lDu8bXGh~sbv||duE!nbvD6<;)0?SVo^0C$V}89$v>cI4AZ^*j`R1N z9u3Zv+mcVe5(d&8K3Nr2$R0iS1*fSySA+^1v+yY~u%>61=~8D=1{>%SvP&i(`T2|N z@ILbkQ~-zGELy^0muU4y&k2h%y#>do5@X>F+>Ia15A--h3Jt5fd#QWvKU%bqYmpS% zNq+Yecp`sdBL=jnL@5jCXv^77JQ zZqxjYmhYFcCy=dDOh4etzq9A?SwI9G$loBIojM(C=6;i{C(AVS0PbiFG8j<1eRJ9F zA3nEylRSk1vJ{v+vTpqfDn=O?8SHrA7hqVg9)n-I?>rBPxM_}?bJM?bt0xS)JJ4K! z8oVZw6i2jtBLQoOFE3gZeJlStMbjQZQ?KA{&7?EVKq&==Z6K!cN`L<}ZZ!iHtgC{y zS6MJJ?~8NVi-Kc1u@ayU?+(MmVU-+sdROE=lz)8k0(5?-cbpI7CI5V&>pEWj)%D%9 z+V%^OhTBGXK9*a3j)obzet;HN;<;RUtH>mj*CT^9FIB`pH2RgSC?zL#66XT{9H}kq zy6f!w3s4`+=RDy32`YNNUw{_*^L;Ns6AP}{^dbjBuejV(U6+G4GIw@$DfYNXgz~ZM zzO*3PYd@bqai;ycU8W;4!F*p@NzpQI30XbA-pNjM=`YZfJCMbq#UV<)(#YAm}8ompJKW$6pnmEWc(|%=_OQ^zO zs#f7V2sBY!>&wiv0UkNIIaFYi8NZNx{P+QC1WI$}rDl^#i-e_!a3066eodPF z3(=ha*8Lon)%0h53z|bK#UE}w~QTk<<^9 zS9ZO}hOJ@RA7NtOf80g>i2yX=@QG=k=jv#6xd8S2l-H5JK)ohV0vee^9{yi0sQU|b z40yzxJ6rB}nsM2tm4!l*O-_cT8AFA3BBkq!ScaA>@+}>G^W^t1zSuS;-P<9i9#sjT zeMA|QBP^VBI%YFf*n1#hg4<{+%(7-XubdZX|G@ltV>An-+wv=1BuF`lsp5m+^8f^n z>TBj|`~u4&u946XY3v^Tazjic7MbS?5;c9<#Tg02*UlQD*rHp;Om|5>yb~H@SIp8S zQFjsraX$7PSS#nE+yxU8=={4IC+|~~T$*dIzkpDqA|DX`%cKJYa!J9sCr{8%68~^O zf}b|^r*SeRh-7kR@&OL=$c(-F+v?wS{6xQ=oQU<iVtd}XDBU&v5%Arb@9KYV({=2e7o9)w@z1(Dch0Uun~>f z=L#`ya|bVSo>^Uhgb{I;`2@T&l1q+KS$!FKgGBD~a7mw(#@WSB1sPi~L(Z zLC1wth)SYEk^hC8NA8)jUFSnMAnEnVX;`OEll1LF3AWKYIWcUWN;(vvYGFW4d zXDS~+?tBo-Q7Ik~)MYGBX_Y221S>Q-B^!}b0NQl(P0|mSlT`6|HM55n0*~fPybdnc>dwkSwF$| zZ1LA)Wrm+)BhZW}+QL`ul(YULYP#l+#!1Zfy#!-BZ*TN0CEecpfpvj{kP|1*aw8#`{~7gyyHmjpO-yu7-!prfbgXjQ-9_FvE~x}l|(VP&v0PcFLOv(}oc zJxnmRVT|?HQ-ZJ@0rMp)K{d*xs2U}*bt!=`ihWMI1>S?9lC(eDRB6o|p(I|xH{&`)$OUMc$6Pww zl=aCzZW8kfmDUDn6BDnRx|_`*Cr~Pj;=KTsX`|n(T`sNdQ9nUjSdYI>7r!G?dw{O_ z-tJ7{;8^_UbT2yT`qA@)dsBM+2Cm-fwP$E-)+x1TUN{`5>vqR=P10e&`TtG(C6~$t zXy~1`Yv+%7odL(wnSoswLyY4K&6qGvT1FCj&QtV$?d`Gdwk1;VvkF) zdv5q4`uFYvhM}6#Re}*qhJ@~Ne7lyD$yY$s7iVckfVRAwJuyRfLZ6GIvl`LvVzRr* zs(qzvWtDpUVmuk$0j-W}nX_HQ^|7FcRUGF963e}j`|cUy(it$Q*TlRL-%-5d3IT2Z zl2gaF?PeB{Zh1p@zQuNE=VVlAQG+Y`*_?HbW?4C{q+lw$3et# zte~E@n4|K7XJetay!Y$5H;{*0js!R|F&@)OteL!yp+|`F*Szi8leOh{&^DZ;&SPt6 z^|nu~Z}<0pPd!ALBf7nJbuu4V`>Ix9Gs;DL3qS%h4!XH4$#d2hDnlj9%SC||Z(!HG z^PaBIpuZl0WSsoJSvoI35C7;}RVkG?S#S1D!-((JeWj3W2>Bl7H|k$5tqV34dg>t@ zhLvT-!ZNBsqLSePRzJi~^RTy!zm-d~hAvsml)6}EdYmOuw7t}Sqpx{FbGKw!VZEB5Sl^a1|M>X!E;RaL^}D<)s)^KQcZGsq`$U}1`%gUQ>yIR=d{Z?Kw5P= zhPnxDdGeTg&VAZl)Bt%Gz`Sf>AlT-9j(oXIJIFi@)(-l3ixC zNVokbl;e$8g8lMlp)XFZqp^g!-(MxFr;U^qDbwls)JHAxtoXW-t+1+Vg}B4ujlMC3 zdu^~e27w_j1Y+kS8@x$YF?j)z!;wktlf%<7 zlqLYOj36Z>SXnt!h6*uD$sLN(fLG$MN3n1vZ{OfL`P13gY1-7nR9wV#7f_1 z$UE3qVXonJ{4EHbN2RpYLLPgjyMR0i-8QKVVN59Hz)aRlu#6aksh3v?866V+>1$^g zSHER5)q6~zs^(8sg`FR5S&D5aYXnATVNDOL5f)Z4xf0J7M_7GtvB)P!3mzmc41rPV z>onWsR=({heGwufpWns8>*sZHHpOj*e8s%a{d=(tSR^(h;(If?92n!Q$TA+0-KN(z z(?~>=Q(vz3&qeSCeTg1kNkCzi7B)|y-mPTbp1&@vW8?K-VtT(zeL$*ELpl77WT}Nn zK+lA83uEF9F*9T7l27F1XY+cOuc9VZ9X^}a>yKXl-su@#5x*~DZEtSV+egZ9{B_O^ zXKRuQ4zELJOckh*mM&x9X1BR#R>~QqBn3H2vCp zC=J_V1{6)Hi*pnmWXT0YOQFzpwP|vq0n|!T$v4k|aJ&9!4}vfqQmlNO#Y82XJGXJy zz|}^Da=~8TmMq|z&6Z1;RfUu#J$J)sVbZ`=1NT{R+EJEpo;hOL@sv1U#JI8b8;lcd zy+-{wV#^$zO}RDvwuV9!?paDay?(;9lXyw7u_n*{x={+)XB?dJ!1gAVCSd>vK4XVh zYsDv^)4-H_{nI3NEtEa`0%V6~!!zD@0V=o>^^kWs(7^=2PL2_jIln(|v|CWbN zAqQt!Im;yqx?$s{sxSFZfrR&>N`bL3Ij~H;Re(vTo93-`y(y*xM)uJIHq$-4oAqy( z><}GU{NrC^F*$7cS3Qwmyq)(NTtG8Fi+8BF0JWayuVg-+3Pk<||7RAdvxMAAGMz4l zj8zETXQZ1r?eXs)C<}sfhK(gsg(BGGjZ`uMM)MMBWm88P>4QaT>5TZtH24mHxmQ(4 z{P|Vk9|brGpkBqSpU`~)I(iwbbpiVFvs5PyCvcoMybE#Pv?g+z%~qRrKEIxowYeT} zR<1gFzUz1avS`Ai!FS5p*o`>nl2tNd6V9lV9ruw^{p%!Lt+@h>)a=FIb|VZ;RR@pEqbaV#?U}t9#aDq?%5X2Ih)f|b+pF{h0Nz<@vFJ!JK4+=8?J>vD~PPyP|UEx z3sCCkudY+obLVN&1orpNCJtlIxSixX|C;Q9Kyh>lD3&K20w^&2h3nrniyZORp8xF7 z-dKg*N}|7|etYF!`t1}|oU;f%n_E6Ar5V{}CM|}A0<8?JEBg6yZ34b45AnG!^=!bS z6q|k>D7xe_cA+V8qM>)Z>&HntrYm0FmT=@FV_ zBI!nXTjSD&s2=SN(pJwHF8u>x;lo6-_Wru+;E{lc{P;e!Yo6H4dV7vHg6#w#FKHOU zEkby{9|#1PhvIt-Gn%=ERF<52e%3IMGe+tmz`J(@FV;UPgC@?er=0}}#oa@c=v}Ad zGMZ)}niof7X1tuYgjcJamH+oZ*(Og`Br48G1!fN|ArYf9^&6FTnYom97lhhzz<{*D3e3LCRO|bO)f+BlLH)8M+bZKdHR_ z0GL`LFl#Yg42yy~JRsWhoHIC}X{vnn`c`%)#n&-DzQOR&IoQ=twsm1xp?2hgH22CM z^&^rGO2*pN68>ndzGbztP@fUCrU*^b*OR?!8PBNbXwdt4JKBI7Z8=27OlwXg_Ql6i zZ0S$GVxX|1yj4=vrXhZZ{wV9+XslmM3Q-UM`}2DGJY{2a&id4I>GY>=()Ez+w%Xf0$aRlHE0ITapJ~UzSkv#R+!4H#iams`&!}i(xdbDadnpPXGaT^KAXxR*1&B0DPTyDm6R{Lj;<3sZ?3oE=sQP!u zkGq!^*CJkWFW6~?Ux0QNfl>vjwQETigzy41*o)5Jd`_T!?74M5Dp9ym3n-IaW0}vM zSw{8Pm^fN(Ik3l-pLd^zm*>o_w0wzH;L56>J=CAKX^(ndhmd1Ay8vzc_=6+|h1+DX z`V(bHysq{Dp9=dZS_%{!A_cxXoT1vr!XL6R2_18+KP!P7OrF<7YM(9zE??=0Q$qL! z5;HX)^^*2IZd>AFN8kReRUDTwwF6aNFAXG$F)U8Xt#WxDX|BdjZz4)be%yp`txyr$ zp(-yfi7}-)6+;`ObzLSYRtPw<;oHs~lLJtR_9UQk6@suZ56G>flxQ{R$y2UUrsAX+j^v@YbRzgqK%;fw;5p3P~3Ih;G)36z7x! zaFZ-*-oq4|DM?UrsHY=OQA*UJDt1;iGSo$bi-vn+h}vnB&$HqO-xVoY;X7F0h-={1 z-Q4x(i)i=~H5eWL0oW#`7*k`pY9{6*yD6SA?WEJkCt)2mwy!xxUH8p_H^}G{jza@( z$&r^cm%GDGAIr5o$QCG%uQXF}_h=cD=ej8kraOZ9Q|k@31mWZg!O!hxej71 zVYw|)LfBF45|n%YIerSA(%CfUq$%h>nBHh$TLs_ndQdV~S;s%d%xj(}48!WszfYMK z+7Ay9|70>pj`0K!8ws4e#A&=eiBOSDx0Ov`8?cIy`C`J{B*CtaIX&hFWO_oc6-HVQO0fsHrF@6FvAQgW_tU74)HA38tC6dDL=uQ2oaO`VD;kcWvSOy2PRZ^ojnHgo0paXGB zFJ}Ry4>k_oz%tSAd4+@~ePK>Tu}=_Spp3;lE9j4Ppx!BQ6hl#A+QMAAspoa{SF#!! zPvSg{+cG&7vw9W-QWMEpueN?@2M5nsDtNRG5aG?L!A z45eE5lMN@e##)$m|8qCfkE2Cpf6#RE<7)LxD(iRR-tf~g1v5vI)vS>R_@Re3+P+}9 zn*oisO?Rw&3Jt|IVb57)a%CYcfmK%&B7V1$-){(O3QFr}ClD&fq*rRyQhR#qL(iDI z;HWQf))2d|G_{je_{ilB1vHsl`N=0E) zUL#Bc#2IWjX+Bx<{UJR{@yP$W4G}$K)%%Sd)vm_t(_;j*-^vUO zW!S=t3o#Ws&a7|WVN$9;b_Z5Ye7Y4v<=ANDDaFE59es>akFc0(tPO&89m>5pIxoL* zehfUotbZ>&UF6^VywnU}3wGDy7oGx2$hV0aHve?Kn>cI#VXlPo|hFT z!%)?!@L4PNoy=0{xIhP(Re3qH#esS1X|N1;MWjYcpLGXMjAyAe#n@5F!_{A(8Z*i| zI`Ssxi#9$zC^yES)&9DtBx5w{I$raIUl2tH z%RJW`SbM&Ho4?cT0(6^nEp*6gobeuN?RO*OHZmBwtUENS2b zFYxgy43*Agb(tFjZfX(z9UbGC%X1qZ?>;!# zBSAl!i9x1fWzwd11a}Gpl-e^EtY+)H2eW;w*Hu;(A#zw!M-X;;Z1UiYHNu!i^q8{` zYh9(TrUN1^-%sDkxH~ZlENxh(i1Z zWjaj@67fbLU=F*Ow-I|>y69vJZV{_)qdd^NJkN&R0=EcsiI8~|CEA!;r&X8}CuLMD zR}|Xvu|qku-mJV$Foi5BJ^Nb-3zRY{EFT|dp=2h^q2v2zK|x}uA42aniSv5A$8 z;>y+vXqio)oV+~Ry#g3lJlLn>lTvYer|3(DlT}9(rasoFxK5qI@Hst;>E1a27xEPw z=@6k1t8bg`Fy{B<=y;yj{f6H}Xs3JbM(yqyUF`*EvVQkf;3)1H7f(XOd0dL)VIzZQ zlw|kbJ47dq?sjp&1Nv+J=8D0Ll>J(xOIex9(dh!-+t#`=c$7h*GwS@z0Id^bIyqL1 zi?ojjYBqQCpd`adD|{}_K|^aL*oNBgAD?)J&qKb4TQ1^d zx$k|bsF43^-V+)7JUyi}yxpUHtxX0;%r;GhH?S)CQB48!s&%)3kDkc+5G)9H^8%zT zb`TUDHD48hi_xg?%AdVcX|X&v@q0$l7qJJ|1uWj7|FJ-z_(=9Wz06f!f9FT`hZ z6SVefi~3#fjdCHImIN=BZ`HC4dgpLRk*VHcA1jw2^i~q|s^fT+e`8eV#GBT6zjxQm zoA!B244_a~`b(kS6)44b0Xiw8zW{Mzp3++%$nnvRR?3`)OgBk_%jrv*-rwmZ|9HH9 z<6yLyhRn$)g}@R^SPn$VJ6$G1gvYFVA&KEz2G zCTOV1+Bdd+$xODmoIxG`;tiRoER~cJyV*UW)0j3OtH^rPg0S=wFJFxF1?a#+>D-3& zP|*f?$p2!%?GvBA!oi#PGv1MkpsgR%=k!HnS<%rIr2Xxa-x!gH%qJd-k$qnw{Ex|2zSaq0}0Nmy@N(?vv^c9}M(ELBM# zm}M2;;L=uL(KgfYr(=>zLYtjn&Py}O9qD+9p3#<0ek-9sMy?gcAr@j=pp+C5%f0^e zy~cgI#m9>34%a5<%j118ESH<>8VwB-gXlFo)#$kFNSLIGlcghtYRManqP%M%nL_XN ztYmp-M95$q{2B+dqt!LDc$+Bx-{&8Z&6!^a#{s(|itM?p#giRL*Koc0pN@6h;k!5~ zQe3)Hu`<-HGXW>&!RY%7bJBD`#G_pwha>V$@RGn6y!9SypEtmf=N;ny`^ejhWY_$2 zTn3+o_6o421yWpW5jNg8-3L(iq9CqxJ+AK_857P(HFy%2G9a-cZ$9Yk;f!V&g^*{6B zQ>8mk`ve;J@vw1f>?6LJbG+J;ODLn{agvkm6&NPy#sUl#haUs&kc>$nFfO1bMN4*h zw((rH6^oj{s8yl3B0)cb<4B`5+-OJLa(Z1UU*RlKbN!)mfx&%yf7RD}Fk@*N0adSj zf{#6Fng=RuMbkuLbT%2(g1VK+bPI@i?(5S5akx6!9;UjqI|mvm+fe%i#^UX8bV$dm zj{|b5aJ|c`wc1mA^_D$z{7SD=%(t5-acHA8iY&ObGUke`~u>z^&6Jr6|D(Hqfu zo1DO{wmAmVrhlPT>qaa8$oDGQOtZgD-_4az5#t3~?oerWi8_|m)Js8S&wZp{e}$vUp&KPLM7^W_s6_i$m~&` zZob(GC;ctC+nC`vK9)~UIZI_{JwHG9{Lu@ZtG37#(f!hIp3ITm(ULUVfsv~9>MVc3H+1r))6IUfbIh;O zg$+8=*GfProIQ;mG(ojX;LzDWo`ur$t6i)Jc&Nfjmp~-(+a;e^Ia}T?z2M(=ZIjN1Up72tTNia+l3?u76 zmeSenBI!dPH+v1a*-uZ9soQ6Hg_WAAJ}J+Fnh~rCHAS1s-};a?aO&CT(eux$JY=7o zeCVyc!T)j}f#Ka5-PapfzMT$RoIbf~`&Nd~i$l<#fyFZA|M2$KaaCpi{{K-F6(kju z?k+hrNJw{gNh2-Y$Os5XH;3*9B@ZPi-5t^b0@B^W{5HmTj(0wvdp~pU_s2goXPC!> zeb!!U?X}l>zMn5d!+qq~`kbkFonQxv*kR?`Y4?}qG#!Bvx;{7ylv&-j+4kV`yfbm$ z8Yn|>K$i_M+@P5K;$I@o#@f#a0GgPDGP_6RFBMAKiR+%{P*5gw97JZ^YsDYk>)5ul zyPr=~+TF;t-Ovi1CV)|5f=cCYufetq+%Hdr{$(8$-@O*gC-t^A=x^#(ekkfjAy5>j zj76C$0BlfN_YztYG6N17fL#~mRqco8nLV`QA#@ zsN`t6I;{DcM((3!Llvt=p4r}31GEw;Kuyjz=v_4suLDf^%wyJG#f{<`m%~cJU(aA! zK&l}Qh2Ssi1gS|l!{ds*K>ftq;u2LfQFWX%+8K zgG%LK1{er-*k1SYpyPEp72Y^+o_HN!@^ML5!$E9lj_P5*`SJq>R~hJ|x`$svy3OOX z!k()db76qVxc;Vtb{BYGEl~dEhyVHp*%il&0ZHb20%TwQ39^^J*tv#a^NXJfx&FLf z-l8g{ic6+shE=n&Qpn`yw46+ysJ0U>o0bZBE~GVr9I6-)WWNoG@Y>Z@fD47VsKkr}L;t&)xZQh9@cDgU z3RpZ;t`9|%S2HkMma3&_XpJ?{G^BFnPQEnFcM4YlP;ys&23`Snn2QELglv5K<*QdY z*0q}j4$DVWI9~QL)gc|hP{|+EGxKNo7&oM49d#dl#_<~TpxFVkl!kFubZo@3#g(bWd&qEkjt1J?1m#P>r7t&S9bMf>z za~686Mk)By3MqPwqF6|$JD|X_^4=5Bweyi~)s^CQek#Z0ijgZNF;d9 zkn#8={DSD$?R@RHqjxC35Eh37Y?goV(R$CR)+}+|lS%k-kU)M@+!e1HRSP~h|H*|1 z1lP5RT^iPUfA2m2Ugm1>Kc!#8)j|K(=r}f6JBuA-Dn%fYf8RZ4x?t4kQ}O4PXQjEU z>tzHgq!JXj1(i(zPb&rn_Oc1-E^N;@_JYy3X+67v()jC!5&aUhJ?I2IB>pEPpU`!W zUqYE+4DYQ}%u&IcN?P>?{W&s$3NM#{lGR!Lmg>o)s(d4N8pi zg5`RFv?;nQ`=Y~fbR4E}4GpEl$BvHUX$O08I>JN$f~q9NWsPI$@A0&uHFA#BRut;N zCfU@(rC0g1It*a$s*2;iA7Wn6i`VIjxrzo{e1&{iU?g^mcO)ZKlN`K3j?^7M#vRi> z(I#AKuz+(N445c%WX5q5v0g426)Ij7rFAbCQ5hVt4xtc)IH;~-8IXx>}5 z2IQROc!Ec3Xdh|kX_-v*JaKGcvM{-lYDNLly|`1PbI@%(7=<6qxM7L}{ojoiHMG}+ zpVDR$s7%`YEL2w?Fxajh1(u_xQeYA}MA;21m#7YyWC8*%-k^G66Y_D`t}?rYl~V7K z;p92L(JHNGdE-_=)rFg{C6-;FS|(myq6i~+Vk^{-O{6;yeh|0N|pdBJlk6LE~!B9^v{S@ekcsmN;<<07i0j}K+o>^E%@kE9F}%j zIjv@l78l?>Vq9>u5(F>49W0p4r+C~)A4pLfEv%L5(Gzt1dLj5KdF_|7m1hQ4<#*1S z_|iw0s?T35OI4yca5#_x&6)RjDlxj>>WKf%$wTj*-z004H``Rqrw`w$ylvCLoqnUT zfPF_^i^HJV_Gi|wc(>OnP?zGzF90{B7y@(Nt(qzxeCeP7=Q?Szu0>nkFZ~!naJtF9 zj+*0#LMu3sjgc*EWOOwSK04eNN`zUwT%Y0pRU?7+D|Puco;UK^@HU=kF+=tJ!h-4i zKHcS4hJ9w=3xjA`cmsm}1a-JRjG%%GH~gCi+|_?VI5XlKQ6-E#4={c;WT83Yj)^H! z14-Q>C7OQh^;3u{z%>sCs=d+{*Nk1=j!!1C=k<+8OMYCwa7nGaqS>80b+oyN=y95F zGM`(&TG1>^V@}RG97<=fO@YL+jUN9Hg!1nr?|@!I)(x}FM@E55%oO+)nHu34aos|x zDbb>W>`XXl!~29uc?x^K<${f6*PqkTV%*04tj_m=F=dcwcB?idM&gZP7W;@3&J)}u zM+-&8=&azLo&ew1UT~nJ7Bxr^DD%NV?3-0CmXtY!1m_uEB4|Xd(PT9h%*0l78EM!n zPle|2Sl9bz%O+aZmq`$QEzSeVZo(p3*-ysLpy1J^rdxRyq(1FIBW*j_H?--{=9upe+3nCF?dh!n)_X{HhlW_ zp2tvTn;W~ReXSl$MHHh$CCFZB(_gUeSM5zapYY6NrH@>ft#T)F6<6>y;`Jjr%6NMa zH!VcZ9;G>!`7t~aAjkni9(|tUE>xjS*q!ex)8|(}U>g1o?4KQg{cv>+mZ>Qg5@Gc( zC<&jhrp^!^bzgdw0o$-;#RkTyY$pg|99c+q1^Z^I$-|hrwDjb)QX8P(;i|<)W^hdfJEjK~0@> zYsmsE8o3%VcF8Ai{hV2z$GZc2apwtDXTjDWknlJxzAD!I5bAT1@9pAmJ5R~3zqIK0 zFkMVZykP3^%>AwDaP%UzYndBQmeiB{T+QcD#xvEZvtYjsVc0W~G<-_qxUBjSm(Ajp zX$6vRXm3i3@Y8nNp;Uk!v-t^<;qUw^2yC0Vcn=(o%J#B5Uhl^CEHjRuZu#5}{z&E> z%Sbh)X0_rngYB^9NH~_!lvhrwBk0kdC}q0{?v~|VECfqp`T@^pBr`bN^#VR-1vwQs zeBjq0@3opxEd}={e7)A5ICPUs#kHbPb~R8b1{+hyDqGw(M>U%w!**HT96SYSiQ6VQ z?0^v6yrsct?BPGc3k1qcU-Q3w)Dvs6!tsDofZW)f!DT!ioBELrt7_act;hmDNu@1? z-pFuE5}lrDN)Mq6f1C3uVVq8dL^V(K5ynFz|r*sjhP>MMxFE4tT?pQ`De&TdoQ+ublT$a7%? zSkf4xU?)a6oHv8={q+g{e~JH+T7u{b3#^N{jSajKYEGJix%;b>U?#0O{gDBbK1 ztN0DDzl9hqNs_9u%L(lh$pexGo<=SoTuL2hoJcFz*tdqeNQmf&}+XBw#o^A zT*pj-7Tm3nZCHgT%5zux*|OSa`J>P{9s0Kd5|(N{CRhgQ7J}x z*N!mAw|q5AWOeB0DP2Eo`Qgt|v!Ime0_TcU&Q_;rmRTM>ljRrFI0O66N|znuHgJl5 z;+21bRkuN1`rXEN8aq4@#<9{PiLsG}r&MQ{HtzZud9}O)YQCb~We+m+ZzhTt4i!9D z;tEvmEK)FFJ#d~>%F5!N3edbCMG97w2DqK4UtuBgz_*|(IoNLF{}c3K zCHZltG2!&cb-rizG%q1uUhmj@bg&+HwqnORD!-l4OX2){Hav5u+%v^m=V&W%Zk;3m z^xOPNq_0P548BNkXEY%*hT`lD6Iebxd|-w)W~JGTMQzz@RW+^c__!-N5(ue`!F8Sv zY)RcFx%EV$1SV1y5$elT$+k{5g4gYLxW4*wkraP2;V@ziWvS`x@ZdcWW?A=;uK8o9 zvHdOTa9?sLTVB5bDbr&0svH1rbNs}-LtTDltQ%UNLI~ee-fDKwNl80(9z&yl2n{`@ z@9F!|wL(7FPL!t!_~sU``7qooBe0^DC?40c;z{+Cl6c_J$}hGf0!Rq178QT<0|!13 z)p=mm)bWXB%HO`{4FYZb2|{ZtP^Zg!Wyx$xWZU(=61Qzuaed$m!vUsafzdQK@L>r^jmI=)Y*KrEm|1-SMrIehe zCE7Ga%#O9sGRP4VDhVZJ2wqVAeIp-k=aHTjZb<@KxS2mMQ#pxoK`L@2e5d%A0~cYi zCaJy9l#a{3UAk*F`t_#Qz*{Ts;yEQBDJk>6a#>qR5Z5Ay0v~rtI)kS>>K3V!VUkcq zeJbHLWvP|^v2d{AIvfzh&kvX51A?T&h>t$O{jY#}@X@?C_p))bfB)^G3nF_7KhBw8 z^?e`l2&7Ln^oYbf0{JDmBwfQ)DE3)x;YP1$d)Q09bn(xiFHhwf6ICtQW|{5VwMAG9 zbz|G9$H@z(vqDJ}xX_`<;UQYe(nn+pHl=ricVR;B0-6`BAss}x)NxS5uC35E5M^zST>+>*&_`4Aha5 zib^%H%OZ1FeE6SWf)cy~AN`+oG$A-F43Y-Qc?v5%^yAgukJB?p$qO~y_wlRhT{Km9 zPAZT(IJ5G+OX^_|BJOv`X!p@#2q4R25b3J)#G>*HvtxV?LL1KLwN6ye8qpOT8*yde z%gS8`OLp`GeRXe&BY^28!o8rIBBaK{@MXhr5_0_Dl?=arf^n=8pQh%1K6W}{`(E-6O!0O5Ad z?S(88-cWY4GL3|HjTb_-pop>T~8F;91>48>N!fgo?@t5m(el--!wcdV*yq zU9=yaW85HxRn3N&=JyT8qUj^Q)J-(}oV zQjX2|18iC>+Us-Lcc>_DxaP4dpIdRlWfD7c!|UIk`+`93-SqLu_9ltUE)QZ08Q%z| z=^P(UNtUlh6}+~+O5Oe@x2%dON{~#JD2(~hYUb;3JbHg9{C-w!CF(a`?>po<#$%jt z_;%BI6@XQz$_fhe`0S}l@06Q?NmwT$)o74Z*O@XTfn??|wwHCFa(%*@;nj#BH@ff=Fx?$wXn@@&Pr{a%b5JSkqBJ0^Tj{2|Qci7sG@F%-Qv!$vD& zuu{6!^)6izBB$6#pD$0zgEjt;Et?Lg$he=C5E)|!1PXf2pK}?#*Ggoa2zp=tv!|9! zs-#LMD=P*1qbg6xv|F|JRumfzDX+*C#;iW8Tiz!T4#H9%#8Q$C0h6~E45~i+Nz}&I6z&W~?B#7(nxDFB*VoUL z6(4QenCvqEbw_ZiUI;e~4Y(0)v6iGHHh?I3^R|r#J&b_q6<;V{7e%(xa9I0QKpC;p zVs<4y#PUsTWLmXp*$>sL`WEPZH{A5Zh4*5o*i=p4ee1Bl4cl-_&2ode9jU(ODU=55 z)X_+VM!9ysyPz$EjsA&kM&y)|mXPmM&=UrroIA*vkj4)vC?;iKuQ&m)x3q6*BYGzM zHyhH9MqV*;L6SNPcWKt8$K^*R=eP$Z_90Ymw%E%Oyin$e6j+j0A0`3mnkMgKmsC63 zd_=3~<9}hb=?RHDYijp36^S3of8u9ra`>3Ao|uoJ8ol9jCYlUbI4cUsCEy~FfHl?M z{_LJZKWHVEe|BR-BPQhkna+@gPDOw>WKU9YA+X?+tUCzJ!8XX4xGGc|}xP~Rx=vYV^L zvDB_hRr3arMwpOzY~0^wl%^QY)fjF^@kFXnp3MevmZ{Vj;bQ2;oczo-9H^z&1F|tm zY$bA9tCRQ1VKby;U%ow5eq-&Cwag;!nNz`L(dhH8q=J{k1;`W>($Sd?5DqPh1TNR% zhNVqLn6K3y3pe#3B3K6}Hhuc)+m=?P@+XLn&yilp;jPt_X1)xaM1hjx?X`A!>9*-4 z>wGF9Dc+VT2^>E26-HSV7bdu?bKnnoQE1Pgt4-|os*F+`!8I8MXM-npgK@mkYS<|I zDlUZgORqrA`OnhS$!;CFd`k_jGAf9xa}+tPFNGDAhecPIg{b)TdF(gmrtDAFexA#a z?Z8yB-aHcHge{2&N+MQ&Uq1cSr%++**!-$|CEynj%&l#WqcyQ_7}0r!H13h#pIUsn zHr=fjcN>5!0wY1&C4p{h)3_{3EJQNtOC=%km@OP%bMZ)tAhOzH zxuIK!dwa*=v(vhnaX4BT`0hwZ@)dZ{lfYGGw%D3-7LBeDd)z>!)aDcR3`RtT;q1IG zM$yV~jI>$K!h=Jnkhh^qE`tX(t}$m9w~&#yiR-?Ov+O>Z-NLcX3=TN*{FWW*aVr}< z?qg{@%;LqJzw{KOmS$(Vy0s)7; z{0e>6?t=YC2??x^f%Gt0<9z~?&y6ouk@+XhpWVTHjk3db!jNzJOx-KAnyLftL>y%c zE{j93S@3ba41vqU)+VyeM1njjddQTqy^mr?kFG}9dOVk=w~lI3;#NzVuB>8Wvy%~J ze1RV?#FT)EKmu`|-Db~zFE=sHGsyE5rpR~U!QwaJfgTG-v@Ys79W7UGcaAB^%Ixa9 zrTN2k(fY(pE`J#j5fyn84)V4eeFU&%8l!VQAm;`XE=1bf&qp zZ(o>P5q5;4-q- zRWTE=DbSbXu=jFGDbUO^kH)#qS&#0I2lryRbSe-VCmtAtL7T!8us zg70kqi0WO2C+4p6HP17$LyO69$TfS^QIv73lHWwA#K;M^%02r`;ge(;)iz~PCdNU^ zvBY$ezf-O0rl6E-ZZFp7*%~sc-B3|v6k;k-s+rB^P$$GRM3Y-$XZqMSa<`Q-WWlWY z2~%Q(mZjVIFj=96To}m_Ri1tr2=+asJq~`z+eq}$tOMlevEJ5Ca&(li>=!xuZSwt% z9Bo7NcTsiQEeiy;tLu5=^Sw(xev+-Ky+3uF%upknMZ#5u7V^Iq}Z& zrSg@~WVN0|Mi8{27zb_>QGsQ6HqTfZs}^qyfZ(blUT+3sKL7P3GN{x0YodbxmtO}O zLLD$woj2~ZeQV6Uz=>o3axCT)lHa6qZN?`#`@;zve;BzVFso6!G%9@v7AQ2R;JFID zmGxs*G+WP7o`Z*>{=h!RiC9eo*s@>qIpBAPK_hO#z<>y^h!JXLV19`zyUcQhc}bhT zD@TsESk@(9Bxw8W3@DbqQC=)KdA&H51XYuAbj%ZCgHLQaYqm^GyrO{bdu;=ss#WS7 z!ImG*Hu0O7M!J&j(H5Rp!7#()T1P>aPFMe-seCPSR!(2K7&ApV>r)(Oe?wTt44)Z< z_s9Q2R#mA03lIGkAPkB)zK<#iZVc}g+Q5Ia@183rSLIn|WXeSjK|K99N60xNwJa1}!?W_B+c-oXwm*b` zHyI8{2gW6fCRd+ak&;BzRkOg|Zbz-&G_Sg7)dZkEmhVvCKAzd*qIP2V>E zFEKn7erXZ(s#_TFi8&c*2WT=#nBZ+ymDO(DTT&qI32WpB092QT)?Z=1@7-_R*;TxJ zKP}fhZPHX2crJ90L9&PE)m%YEw;W@#eDI#`Uj`$jzYInnXJG)pTXzL+iQ4~@gknZ} z5KtU_XBOg$GXnl2B@oi_o|ccjvtn5jMXM`LEwAYU7xJtS|D{~VXO{jxTf@sa_G!PW zsg$z|SOkb=@%{Lxs_f)+{WI=Qv#TjH``1?KYnHli?#1|E%j%Zx8n!fB;(ZS}Zpp{g zdKs5hM=?ZY#JO0o>?YKGCdFHG#1Ie=G?RYl4Y~$-Fa|;xfFyJy-dG_*WGs4TqJ%bY z5Q?fg9k8hwNNN??4-g!gliu^Kd=UlL`EntBb60h{;O~8+!u5M_G~I$Kb;UZGV;u40q=^t^!)1l7$n#HR5E&t(7a8J`i!GPRl+R36n8!nQ_G+()GlL7_m3s!A#dl4OwAZp3jrzBkByoxUce z-7;yBw=iD2a^c1_V;eV_-DLLIVspq9Rf*HlkHJRqTX^j|BoI$BEO|X)b7wY7)gW6zd6#ehwhj%ngIO{OW*TTGnZC0)dHR{}kM-9B zcO$+%Ob52%sDl6Di{~XY!RjbUe|cb?P9ob(!CI2+tfS+yjOZhOj?kuv{wh=Tt8Y#r zu~HIpAYS!P&~;)W+^uz7KunsZ_At2P9qa6x zvz1I+sPL4m?a8V&ZtwV~a$X|?woSnUZYe537; ziJLZ_Rgp@`2r_VQKo?XN+M>lZ?;K4;PY%RMpmIiPV9>>w10mx?7;s0na39cYV6Rwc zd3Lz5g^uFV;+fYP?~{LdOqj;oxNl=Nw}2H1)CyMcJEA4J%l-*MFN!-YPCw5(yaju7 zG%&UW7%I{Rv7fiZrR(C{%}-_IiO9dsnX~71U3v zIgl8srDBli^+*Vv*sQf-BO zNjUwaSu}$IBzvn-_Y-gBzq#S(LUxzL2n&CL;JQI)>O(%Iy>jnbkEP|+_dS(*h{)4> zyOAh-Dw4zHW+Q=$2FaKu<@)UzWq$dYT2^@jCT7cma#kI$RuKPRDZ}8F9{29U;Q~sG zMEFFl(g=h5l<^WF)vhk{qSOlWYJ)1!^@C&L{#=^wS6TZ;2hQTLK1#9`^VT{C#Z-q6 zQM(=w+f*!~vHNRi%Fsy$*(nf>iHaSDpY+2HCBClka|LxbsV$ONJc(ipg$;2D0CRlt zKEPfJR)izqQB!dFWRK3sEHIB@$@nvrCf09G@sXaL(d6maV+iBud=lN)=nKRLqI$mcRF^Wlh!Wn zuAwCD49Sgi%Py;DQd$1^67&HvU6sI_!fQs@sY7_qMcn>L+~a)H6{79>9>Z4;^w{F~ zZ&MDDs91Lm-|r~PDX5fiWS(+dqM&t{GG2-lKVGsDI}er*gKGiL7+($h?%AhWZ_2%^ zF?`fXdsUtUcQ*+1t12?klcZX5LcRH__P-i@~2}aq8$g zGT59LhsAsXRt@8`O7ut+)J z*=)hfVb4%MEh4nrwYgCy2KlPibk?$VeO2vdqj7)o^^DlfH48>OFs|i5nN$e(#D-~E zc*a?WZ6@3pSHC42^zxmP*=__~&T8@KmR3rxkE)7bwql-ycA&}~*+Ei<@i|u$0Q4`G zRE*7JqXDoA6T=UcdbNxeWYRKE-rzAVluSPGq(j^~^8*)3#eUX^UX>X#Vt{`1ESH>g zM3PjF$?B8<0};w38@#-mbSdvU*u{#ZX8%yD*p_5O*Qj{?jyA0+K1L>?6`M>>%rhH< z2DNGd+mE~>7)Yu<^Y=4PG?;Zs&B^h4w1Qgfwz>U6?fJ`%tifj^)rC>ue6}^^SCgU5 z)MT)|>-Lhz;+g-+=?Z^ei2ba;Yqe>4Zj#5-F+`d_#Sz0u;!(UPSzmk7>f`JR9UQm&t%Nr1(deCbnU%* z<#9nS6ah|7bn~7Dj@KLtU;ZI)ZTZvp)i9UV&HLKGl$Zps-1fQR$A*nyZjo###g-8$B6l)zG||06#aN6*bsi2z~X~PhAnM*%s<$DyC**ZANBXZ?P2V z5VhP0LiCf3P%Tz9k7W@2jxZ4b2-CC3DRDvNY#LEvVNnyV6NHUFK}j#<0r}43mD9lz z_W`*3n)V2Q{9Z6W^cQN9zTM0-_h45rCvIF0y4ht>zS1j2U%Vodw}}~>Atb}OP{p_> zpUJn225o@D7;m*z*TvU=SiaeX{Bb|@V`s=4#mGG~i@FlmQJTDA|i7(64}Wr^msUqlk!>tg&b-i3!(p!;w_jrHg4hjC~Au_S)_X*x$k}Y~EYXXjQy_Yh9Pp`WF;5 zVl-raP~dkeYoG$QK+Vt1Y#2(WAQ_t$9LR!TL`E82wY5snw;A0{Gv3}`eYw8lIg(@E zuSF;$t^MDvLRA-m^41G6t{;WtcQC^o=dq1h9>guLZ+v3sThzV7rlLe!Ksi{OtI(BY zWq(W-uApO6o4`|8Uq7|CUuabm_CgYbR(=WF^;U|M+dTB!wIX>JLq3)Us<%6rW86O~ zfT}pDXc{WWXBX2`oYMW)=!bbAWTw@@+#@0DUOq5|!weTi7hAXe$c}keo^pZ8UG_}z z82RW;Owt+8U?n?clE5kO^oTAsoAbM^S)*0)433rd9}W&g?7%|lOZ@4lUs zvCs@N_+|;cydjh@2TQ{ttZMUgs>(ikxs|xqLRoWFzh^!To%G$GVQRv(fsM zxlMDvwl!bC-TRzqz0Z@Cos#VxNoj|Y!(T{9Tq$n&sIQgv!FYP$BgFnwr5fy!s<)vu zVmJ4{h%Wo|aQIqbQQz|*)50J85#)83@h<=gqORN-p)X=56!KP9KoDh=A{$de@+X0m z_IvGT2Yj|B=qmE7MI(lRY9GgDsSxk&(?`{Q&LdWw&hARZ>LcSM8T5gQe|O}nJq35( zia@FjbF%S^qY@Kfv+vXSBac0UE36L{dx|3@S%20ppJ{lt^59Y6?(1*qk}b`l?4lL{ zm45|p*8B-FcTuu(@_iv5{@^1i;1~GnePC_Myf)F*r@cE2hGvu2J*}X}lPz=}`7|^% z`4=c;EB>T5t0F@V9GTn$1v8$Yx&AvF6@qaZbM~;|aC56O*Po!5>0gDNf+Tp&z~@B_ z`~+*9$gem%fk3_U5hvQfx{tn-Irs|Dv@O_ci7^K z{?DvcN_^Wg7HzTn+J$O^iq0R8NzcB5KyDl?@rRa6ri?DD5UrsIoi~%%D7h+iYtPNh ztduB4{IEJv**|b*5zi=UDo{ZrWS6xd4?J$w`va6>8|+139JQr9maE|$@nNsFh}xid zAKatCu{6*t^Owu&IZ?tqx223@??^zQq|=iNGTC$NWm1bXoB+ZoV{Z)ZRO_OD5e?*-o@Id$*yQh$WH+U;dc$H5ln@3fQ(KpXy| zoMqVpIi*+BM!#flHiI9{<4(yMX(%b*4vOSD+US#fqVV(Kkv*Vr`~MF8^0sgGGkrru zot*08&a8wrbuX>EB!tU*9@r)}Ri~d^&_!L;MVNm{@uW!0#o_CC;r_Tr=n^(ptMJLL zA%x^ClaVR;^Ty9 z3D5L=uw2GJ91i)f*jK^;d?+0v^p&^^EC}-neR*WOC`{gl@xl0;95jBIs7Dk@lXahM zJ`LaASEjpLV?AC9d1I~H0nP+-0Lul@piwaB&j+%9=E#*sUILUYjRJ+F95Z2?@f@K{ zge->Tp|L5qt9(!KYJ7c;+9vWX^v(08T*Nr=+x#ffrj#CkJiR1uU%Ub-N%DOfn(1zP z(rxebzc~k%8?jGJ87RNV$?=Z38bBxrs}{|LfSD7#`uvxfvt%OH{jGIA8|5;iGC-&@ zv_wA(BdftRWf!UaA?9r6zrKhIQyujOY)EBu3FnJesmNa54IV1ulWcFUjCxxhgjMvN zmy3l1q(f>_1*6pT88MX76#Q&ZS(eZyTdTy7bQ3=+$Q|CHC*^fNnULG}UTdqKj8+`x z4;CDZ*?mZAn~lI4L(djW-}vS@y~H@HTX^>A|KGE>_qQHYwv0xWXC7(1ZGWUJjh18B zllbZ^%%mWOwxL$gfTGJ|;srHT6v4hi#0PRayST6VDHof;Jc9q3?5r8aAOyI_sM^IB z|7a|5)HG&2SgOFG!Nk)WQ%~95v!{+~n9Jk=6#HqP;M6kzy-wk`N9rBey;dP|A+36t zz1B{2(8c-B+NQAgMBD#T+;aVbED5*yP~KeZGvC4C&X6o-fYah1hhX?%UD zbcal_k#GwhZMjLEh6RRhbgibTupM)U)GgU3+|Q_7Yf#LVr>wd?-x~lPlbeVqxL>hH z$}8yk#kB8zCO8~q($Vq}H8(L_t$18HSbkmo)y17-HO5sPq64)r2fY%Q63j-fQVbiF`aH^p;k;DHOT|opLGI|2jPRZM!F%En0F(Ku9m|N5v&FC7MC_w8_pd#k2m&%Ike!R_p`w7?B>055Qv9+j^1Ny|%o(<$q{*+{B*- z*QyWuMv*BVIc)S>^L-wI1laBBqQsEKH#;L7v3Bs%DT0zW?h_5d<9)Dz4392pT;+P2(s87n~c(u_X!>oej4({XD<&H#YvYh+8 zvLwgBc#eGz>gI#vwe%u$o94|{MP!rndx^M?u{l)i&W1`O*^((+&7(($Ht#ly=cLqh zChfLKwck(R2+T#f(O@lNReDwjGgBZunTC0>i=ZA;&GS%#I%S_ywFW1s*lAen-@wZe zAvv7J*oKT8-ef8*A z+-$Keo&Ez?PwnZMfy)xz6H_BN{W#HW7>^xd;(`6pY*dzsDx*i~U};KbXeq5)(Rs%@ zI8P$0I7ZwbiMgHf3P*|bmRwn3I8Tpl?XK}x`>i&H>>ecg({LFJR(!o@&;4Wp#zI+{ zW4Cc8DjJ#jI`BPd6+!!<*zs#GkPCW#^$8hqA&YZX;diK}^oQWpOrJ?;? z+r=B}DzEEqLqDsBC}}0`Od5# z;K7*)u2^seFG~~!bicbqMA&_=o^@i*DtIx0QUScHEOh%XT!Upu00E79F0AFm0VZ_l z8i5|X&xbj?H85vO;$W{D%#8NKfnvl{Gv$XtTY0B3D+a?M^1n(@z=)uKnrzlX+5hWV zlzI?~rs`sSAeS*jTlv~VgyCT&bwqL$!BFiM0{e`hjD%|Yk-Gq(gXpl$QSZON;~D)vbv z6l`X}d?y9ZfIAC2LmS>OnCI#rrX$mQCD~j9>HH2?4008^+N~Wve4431Kf!e)HKGIV zK=_gfmR&&DKQXQi1(Qu2GgTZa%IFSs7?&uXOS^o)8dmA72QO88Tp{0=5Zxop?rR$gn6b)kW4~! zYd$|E?Rk;J5QNVu+KlS%a94(80NW1UarZjLD6D_Z66(9HNWWqJJs8Wd^66i}SlLSR ze+6S%!f`6|ZwBG84Rwok{G=X}SGCH^!#LZPP0M)SF`w^H*Z17K_}(jZ*YA{%ujUnK z4nD0qI0lf*u&Z(r4-(kH;bf2c{HU)o0=Ibxc7ax6@3z zp()8s-1bJ*Sk_;?ZV}df1;QA+CT>kUgUMRm*%plx*2Ac|muRi;#5_o;C8M}*yM@$~ zOG+u?cGol@A&Q|brl)%=bCvjLdAbTrMpN$%^k0;dokp{3x!4{DJB_=k>@`Mdi-eTT zt!}OFa0_W`R9;o(Zz|Eqv47yeRFZ*EbjlUR5BGQg925q|vqjjs;r2S{tep46(^Q|* z#XioD(^=SjviaN;t7OW}Pu6N29{^;q-_XD|3XLQ$kYhC6-lYdZsLIh3g)bZgDC*_TQ1;!`>qYUcI+f|Fx|<1rM#k) z*`bX1OL?W5ex8(qL)Wq5Vhd@nwH*ENz;I5&M>(K*WMG3bC#?-e;)<4T*Bikc# zb4w8qd;~9$kof@SgL^Dphl5r+(d$xZm+)vg*X_jWOY7)0+}e2F#Rue8s?-+MTK%wr9QTef}so?8VOa>+ObekUGyrdq3&9I&*&!ze38dI+ywFjUgQl&`%oy>>l`S#ijEXr&R%bO=SLo7;>XiLMG&{)V z+@rJil4t>iJdpmT5EGVS{}ZjmqW<|}f7xUk%2eUBr=yx4x5?|A;ukvOfpFj{3WnCA zQ$?+ObCzvLJW|6Iv`A9C50t$xt|S2}Vzz!aY`x)(Pj7S*Jd7k)Yb_kzV^{J&jmF65 zD;Hp@UA1h5c#z}qtVY5#AVP`G1_CA(fR>F%D-!_0zYvfr=#Td?bNp>QB~DBv+@v?eJ&*#26E}1TaAXZ7%+a^JA0- zqUbs!JpxVIPu}g+e)WyJI?5VN&FK%2Wd|x{v))#4zEs4npfko^RSY;L17GvN_-ZXu zdfVbF%(4C}poLi;#6NyN<@O4g7dC@|dEr|Nmz<|K{%YY8xE2OY0VMHlSP9?FHepyf zfHxoiuSI{`N=<|%G4^l?c+m#DFzJd!L1M-mLito7;&PG51okZ2TRSc6#eDUp@Egv5 z#u}*H{W%Z(_D>l4-WBw#Dh>1p=YO*c(bbN9skV=kFzxf{W>BmLS}VS5{U?L3v=snN zCgPP#OHMv$UQ8<#0*;|!xEBWYQHY)HBX4v?QS!c>@D-7>U*jAQpxNkoS#okIwj*rZuu_fs z9Dd9Gzj3YpwmFCvX1gu#5xit@;O~zU+1sZ3mi972*1YI1bI|u>!tURa2^(CCDfxE4 z#=AD>yl~Ky3qCG>f&A5ffY(+NhxB&?#bjSuf^4U2-tHl8XJUVKh9G*9U=B{Ps5=IR z^V2uB_b|@?GDlzYOzuAMzPud({rG|yxRHDYJ$#PfuxRH^&eM#Z6eQ!*vpu7dfS}sN zASsm}sKD4yRG@q2UgMb1>LBb{$$R+BGU0L;A6p-!-Fj#5{K@<X?o78*bAeF%|jaf^HrC1INYXCvuhS*r>Av{m^WUTfexCpraVw zN{s^b%G(30@;|~Us{$D+d?^6D%Sc$*#Gv*)h!-RN?!Zz%t!gsmc~2k5ywmlG?{X-e zm>il2V;LoD?)c5xy~r4DtFpaLa`(Ne%!@WYF*r-j2SS*|5ri1o=qs$Q1P-|b+$HZ` zVJxCz8!i)S#Y11Z_?sFuJQ%}VyTYO5t*;XBTrI0De*wDBW}%BUbuCC1?QzmFl=^7-#o}@hV|;hq%KETnE6}J@LuRHb zQYd407DMIIc?S|XCYG1x;%cd06ulbyc0W8G6j%khE_fwCPMVXrE7zg#E_9lZ%c4Xw z6&Fgr5r&F*<~(=PLSW24LfZnrd6)=G+GJP{Z*?~isxjLT>}f%gh?~v~K8gr_s@|9w zAQn{WCy5Q5K&^@<9$PQ2O73sS&I)QUSTuZ$uiRSY&sB5Dp9KUMnB}LDOT)dtq!PoP z^?GyE^6|F6d$Pw86EsAKZz9Ek zV*(a~&frV%nW<{MNDbbea}x22aMFk=dRkvF@;aOMpbDp^#mT}JkT80v#g zwp(NcDyR;s;+buNGf!EDaODOiHhXI}giSa%Ky)!f<%7s=p*#Eb&(Gr>iVg&KGwUBu zPxCF4oBzN1CCy>p3TA9Lj$a3&!wwlzIgZ2lF8glNdcp+sQ=R@e8L6?L4%g8`D>)tv zhAK(hmN@Pa35H`9(t9^S|J^2@K2@NNu#Q+IPX9$v=&9rfb5xS~Xne-3DX^(zotbiL zMq00A&UuJ4jve0fj>Omx`;o44@f~4yyyc^V(qreX)&u(?HtwHF)Iq+o=HR*zF2?qr zC*6$tn*p)b%#&Lp=9MxA>4bKq`6oqP&t3~V7H4nu#Ht)9yW3m3X2zq~wu%)GI2 ze?f5w;ZghtzY`2Ujo?~~6Ntu; zChLQX(7I-ozRT#&hT0XH=;88QVlYcCfYNf;6paBa=V ztjX3^z~mR0498%y^JhN`{j@#-h1&>Q`wJC=$j2t3JN$ow;yBQ1LebaxB~x1_l)GE) zMURvq+$Jc@T7dy{1$o6vnRV*Q6iS^p)lX?Uw*16WYs&k?w?ulo`;vDk;RYq@?E@vY zhFz_S$BSCCCj|F%My#~5i5Gh@1F};0hj&wbPPf{>bmVQxUZ>>+& zo`JUV*_-ZrcNe356q;RUSGw%UE@!8w+pEqAr+4wD7o&FyWn}vsc`5Gd1>eN0;9tNP zDx{dyT#}-%@o%4s?Q7%FrLZa(WecJ#=c+F7s^L=-RwQfFlA3|g7k;{v(vHwmU7 zBXf?J>R8I9(1x6RGx`b~XyW}R$SX6R_r>x9Vw{op!8BRS&kd{={l?kKZ9X_DDMWzN z857R$vgRf$UX6vopJRa%8TK-P5uCjBQuDfbSVXeo-ZmtuOOLn4NN?#nMcb%iHsL|0 zGQPfIo_$7{2q9}6!OvN-VWku!J_FrSE5aMqW@TMfJH#xC2{~ev9P$&oUWD;Aqtk6Qw;`21ZvNM@B1RP(XjHB;AZByNC1tfpgSQ2qjMV|%(Z&_0t5s`#2 z)-($jp!37O=BCfXNx5$XiZ+~RR2p@RL0IWGpY(~+sy?5TSz#P@nw6Ha&Qv)y(9g(I zL=i)Yb5Et|2|IVUwVnP0nDtM;d|iqnxF)tF>xynWu6t(`wg zI>lJ}yg3eR8PJMa^w|taQoZo~Q%6aZO1xLXnXJ@7=uMg0F!48c10DX&z{l#DR~wtX zA)%CQ>@;Z2!T@l#>OnR{w2E4g4JDq71)Qk|AM3jFx&4SEQMDd@ii>-(@_1;JIA6Tk=<>Ibg*z*;q6 zPyY4=5byqr05QDYfByFpHgPx|Hj|0UaRN?#GL{?a!W6CXXwKP`^HuE~d|RZV(z{Qe zJcfiN1c%-si;8YsynDQD>81em8xRimNTMJ1z=#|V=TcH_iZkOc;l|6+C-=7_hYdcE z($J<1*7V4C_J5R}K6gHvzQluR7?fr2yErgk^41`i$fxbHvdjdJS`)h;8D+W^7C=T> z{P&D9L%aW)QN|tsLI`*3Gvg2&yTur98#g(|sr(k3?VVexD`g?}oQRI%$TUs_pR8qp z(2YoNlEun0|H-?m?JXS-_+~>r`x2AEaO(%w(K@>S6YKaW@)yQod zKcE0k6kx!L|L8vQ1$Hsr@{EbWA6^<}3E$s#nBChsJIvIT8BA)<$;c?kW5J757&%o| zwZiNz(X|t-ah@}r(ytKsezE`P-W?8s9vQ=4uR*siN@<*Q%_r2Sq|>M~5k*q8{w7cr zJ7zHz8P*f}78)d@Xn3Q+jNZ4u|9{a``00cFQf{&l5cQh9cF{JsQ0|s|-T!Z!-z%>< zwNP!+wooM*jpH&iyx&ipoWNVs}5={)m!Rg?h8KZAtm}#vC8Fr z_xI->6R1Mm9@t#DfLU!;T)~E0Q5os!oSUb6pPPHUM|f?R)*Ge!6O&AR^YTw;Zc3Or kXUh4CizkA5&)=~9Y4$#UXEyjYNN@~{5<@ry>i^#a0M($wbN~PV diff --git a/dist/resource/modules.openlan.conf b/dist/rootfs/etc/modules-load.d/openlan.conf similarity index 100% rename from dist/resource/modules.openlan.conf rename to dist/rootfs/etc/modules-load.d/openlan.conf diff --git a/dist/resource/point.json.example b/dist/rootfs/etc/openlan/point.json.example similarity index 100% rename from dist/resource/point.json.example rename to dist/rootfs/etc/openlan/point.json.example diff --git a/dist/resource/point.json.full.example b/dist/rootfs/etc/openlan/point.json.full.example similarity index 100% rename from dist/resource/point.json.full.example rename to dist/rootfs/etc/openlan/point.json.full.example diff --git a/dist/resource/proxy.json.example b/dist/rootfs/etc/openlan/proxy.json.example similarity index 100% rename from dist/resource/proxy.json.example rename to dist/rootfs/etc/openlan/proxy.json.example diff --git a/dist/resource/acl-1.json.example b/dist/rootfs/etc/openlan/switch/acl/acl-1.json.example similarity index 100% rename from dist/resource/acl-1.json.example rename to dist/rootfs/etc/openlan/switch/acl/acl-1.json.example diff --git a/dist/resource/confd.schema.json b/dist/rootfs/etc/openlan/switch/confd.schema.json similarity index 100% rename from dist/resource/confd.schema.json rename to dist/rootfs/etc/openlan/switch/confd.schema.json diff --git a/dist/resource/l2tp-psk.conf b/dist/rootfs/etc/openlan/switch/l2tp-psk.conf similarity index 100% rename from dist/resource/l2tp-psk.conf rename to dist/rootfs/etc/openlan/switch/l2tp-psk.conf diff --git a/dist/resource/default.json.example b/dist/rootfs/etc/openlan/switch/network/default.json.example similarity index 100% rename from dist/resource/default.json.example rename to dist/rootfs/etc/openlan/switch/network/default.json.example diff --git a/dist/resource/fabric.json.example b/dist/rootfs/etc/openlan/switch/network/fabric.json.example similarity index 100% rename from dist/resource/fabric.json.example rename to dist/rootfs/etc/openlan/switch/network/fabric.json.example diff --git a/dist/rootfs/etc/openlan/switch/network/ipsec.json b/dist/rootfs/etc/openlan/switch/network/ipsec.json new file mode 100644 index 0000000..dd5851e --- /dev/null +++ b/dist/rootfs/etc/openlan/switch/network/ipsec.json @@ -0,0 +1,4 @@ +{ + "name": "ipsec", + "provider": "esp" +} diff --git a/dist/resource/ipsec.json.example b/dist/rootfs/etc/openlan/switch/network/ipsec.json.example similarity index 100% rename from dist/resource/ipsec.json.example rename to dist/rootfs/etc/openlan/switch/network/ipsec.json.example diff --git a/dist/resource/network.json.example b/dist/rootfs/etc/openlan/switch/network/network.json.example similarity index 100% rename from dist/resource/network.json.example rename to dist/rootfs/etc/openlan/switch/network/network.json.example diff --git a/dist/resource/network.yaml.example b/dist/rootfs/etc/openlan/switch/network/network.yaml.example similarity index 100% rename from dist/resource/network.yaml.example rename to dist/rootfs/etc/openlan/switch/network/network.yaml.example diff --git a/dist/resource/v1024.json.example b/dist/rootfs/etc/openlan/switch/network/v1024.json.example similarity index 100% rename from dist/resource/v1024.json.example rename to dist/rootfs/etc/openlan/switch/network/v1024.json.example diff --git a/dist/resource/password.example b/dist/rootfs/etc/openlan/switch/password.example similarity index 100% rename from dist/resource/password.example rename to dist/rootfs/etc/openlan/switch/password.example diff --git a/dist/rootfs/etc/openlan/switch/route/example.json b/dist/rootfs/etc/openlan/switch/route/example.json new file mode 100644 index 0000000..675dc26 --- /dev/null +++ b/dist/rootfs/etc/openlan/switch/route/example.json @@ -0,0 +1,4 @@ +[ + {"prefix": "172.18.22.0/24", "nexthop": "192.168.1.10"}, + {"prefix": "172.18.44.0/24", "nexthop": "192.168.1.10"} +] diff --git a/dist/resource/switch.json.example b/dist/rootfs/etc/openlan/switch/switch.json.example similarity index 100% rename from dist/resource/switch.json.example rename to dist/rootfs/etc/openlan/switch/switch.json.example diff --git a/dist/resource/switch.json.full.example b/dist/rootfs/etc/openlan/switch/switch.json.full.example similarity index 100% rename from dist/resource/switch.json.full.example rename to dist/rootfs/etc/openlan/switch/switch.json.full.example diff --git a/dist/resource/switch.yaml.example b/dist/rootfs/etc/openlan/switch/switch.yaml.example similarity index 100% rename from dist/resource/switch.yaml.example rename to dist/rootfs/etc/openlan/switch/switch.yaml.example diff --git a/dist/resource/point.cfg b/dist/rootfs/etc/sysconfig/openlan/point.cfg similarity index 100% rename from dist/resource/point.cfg rename to dist/rootfs/etc/sysconfig/openlan/point.cfg diff --git a/dist/resource/proxy.cfg b/dist/rootfs/etc/sysconfig/openlan/proxy.cfg similarity index 100% rename from dist/resource/proxy.cfg rename to dist/rootfs/etc/sysconfig/openlan/proxy.cfg diff --git a/dist/resource/switch.cfg b/dist/rootfs/etc/sysconfig/openlan/switch.cfg similarity index 100% rename from dist/resource/switch.cfg rename to dist/rootfs/etc/sysconfig/openlan/switch.cfg diff --git a/dist/resource/90-openlan.conf b/dist/rootfs/etc/sysctl.d/90-openlan.conf similarity index 100% rename from dist/resource/90-openlan.conf rename to dist/rootfs/etc/sysctl.d/90-openlan.conf diff --git a/dist/resource/openlan-confd.service b/dist/rootfs/usr/lib/systemd/system/openlan-confd.service similarity index 100% rename from dist/resource/openlan-confd.service rename to dist/rootfs/usr/lib/systemd/system/openlan-confd.service diff --git a/dist/resource/openlan-point@.service b/dist/rootfs/usr/lib/systemd/system/openlan-point@.service similarity index 100% rename from dist/resource/openlan-point@.service rename to dist/rootfs/usr/lib/systemd/system/openlan-point@.service diff --git a/dist/resource/openlan-proxy.service b/dist/rootfs/usr/lib/systemd/system/openlan-proxy.service similarity index 100% rename from dist/resource/openlan-proxy.service rename to dist/rootfs/usr/lib/systemd/system/openlan-proxy.service diff --git a/dist/resource/openlan-switch.service b/dist/rootfs/usr/lib/systemd/system/openlan-switch.service similarity index 100% rename from dist/resource/openlan-switch.service rename to dist/rootfs/usr/lib/systemd/system/openlan-switch.service diff --git a/dist/resource/example.ovpn b/dist/rootfs/var/openlan/openvpn/example.ovpn similarity index 100% rename from dist/resource/example.ovpn rename to dist/rootfs/var/openlan/openvpn/example.ovpn diff --git a/dist/resource/openvpn.md b/dist/rootfs/var/openlan/openvpn/openvpn.md similarity index 100% rename from dist/resource/openvpn.md rename to dist/rootfs/var/openlan/openvpn/openvpn.md diff --git a/dist/script/bridge b/dist/rootfs/var/openlan/script/bridge similarity index 100% rename from dist/script/bridge rename to dist/rootfs/var/openlan/script/bridge diff --git a/dist/script/confd.sh b/dist/rootfs/var/openlan/script/confd.sh similarity index 100% rename from dist/script/confd.sh rename to dist/rootfs/var/openlan/script/confd.sh diff --git a/dist/script/eth0.cfg b/dist/rootfs/var/openlan/script/eth0.cfg similarity index 100% rename from dist/script/eth0.cfg rename to dist/rootfs/var/openlan/script/eth0.cfg diff --git a/dist/script/ifcfg-veth0 b/dist/rootfs/var/openlan/script/ifcfg-veth0 similarity index 100% rename from dist/script/ifcfg-veth0 rename to dist/rootfs/var/openlan/script/ifcfg-veth0 diff --git a/dist/script/ifdown-veth b/dist/rootfs/var/openlan/script/ifdown-veth similarity index 100% rename from dist/script/ifdown-veth rename to dist/rootfs/var/openlan/script/ifdown-veth diff --git a/dist/script/ifup-veth b/dist/rootfs/var/openlan/script/ifup-veth similarity index 100% rename from dist/script/ifup-veth rename to dist/rootfs/var/openlan/script/ifup-veth diff --git a/dist/script/install.sh b/dist/rootfs/var/openlan/script/install.sh similarity index 100% rename from dist/script/install.sh rename to dist/rootfs/var/openlan/script/install.sh diff --git a/dist/script/ovs-vswitchd.sh b/dist/rootfs/var/openlan/script/ovs-vswitchd.sh similarity index 100% rename from dist/script/ovs-vswitchd.sh rename to dist/rootfs/var/openlan/script/ovs-vswitchd.sh diff --git a/dist/script/ovsdb-server.sh b/dist/rootfs/var/openlan/script/ovsdb-server.sh similarity index 100% rename from dist/script/ovsdb-server.sh rename to dist/rootfs/var/openlan/script/ovsdb-server.sh diff --git a/dist/script/prepare b/dist/rootfs/var/openlan/script/prepare similarity index 100% rename from dist/script/prepare rename to dist/rootfs/var/openlan/script/prepare diff --git a/dist/script/setup.sh b/dist/rootfs/var/openlan/script/setup.sh similarity index 100% rename from dist/script/setup.sh rename to dist/rootfs/var/openlan/script/setup.sh diff --git a/dist/script/switch.sh b/dist/rootfs/var/openlan/script/switch.sh similarity index 100% rename from dist/script/switch.sh rename to dist/rootfs/var/openlan/script/switch.sh diff --git a/dist/script/update.sh b/dist/rootfs/var/openlan/script/update.sh similarity index 100% rename from dist/script/update.sh rename to dist/rootfs/var/openlan/script/update.sh