From c60a401280ce0e83882c7503ee702895f5475b9d Mon Sep 17 00:00:00 2001 From: NADAL Jean-Baptiste Date: Thu, 3 Aug 2017 16:39:18 +0200 Subject: [PATCH] add skeleton for the tab bar. --- src/prog/dashboard2/icons/alarm.svg | 1 + src/prog/dashboard2/icons/home.svg | 1 + .../dashboard2/icons/lightbulb-on-outline.svg | 1 + src/prog/dashboard2/icons/settings.svg | 1 + src/prog/dashboard2/icons/shutters.svg | 45 ++++++ src/prog/dashboard2/icons/sprinklers.svg | 73 +++++++++ src/prog/dashboard2/src/App.vue | 151 +++++++++++++++++- src/prog/dashboard2/src/assets/css/domo.css | 62 +++++++ .../src/assets/{fonts => font}/domo.ttf | Bin 7036 -> 8532 bytes src/prog/dashboard2/src/assets/font/domo.woff | Bin 0 -> 5456 bytes .../dashboard2/src/assets/font/domo.woff2 | Bin 0 -> 4640 bytes .../dashboard2/src/assets/fonts/domo.woff | Bin 4332 -> 0 bytes .../dashboard2/src/assets/fonts/domo.woff2 | Bin 3656 -> 0 bytes src/prog/dashboard2/src/assets/logo.png | Bin 6849 -> 0 bytes src/prog/dashboard2/src/assets/vux_logo.png | Bin 14040 -> 0 bytes src/prog/dashboard2/src/components/Hello.vue | 53 ------ .../src/components/HelloFromVux.vue | 41 ----- src/prog/dashboard2/src/components/Home.vue | 7 + src/prog/dashboard2/src/components/Lights.vue | 7 + .../dashboard2/src/components/Settings.vue | 7 + .../dashboard2/src/components/Shutters.vue | 7 + .../dashboard2/src/components/Sprinklers.vue | 7 + src/prog/dashboard2/src/components/Timers.vue | 7 + src/prog/dashboard2/src/main.js | 119 +++++++++++++- src/prog/dashboard2/src/router/index.js | 15 -- .../dashboard2/static/android-desktop.png | Bin 0 -> 7709 bytes src/prog/dashboard2/static/favicon.png | Bin 0 -> 1017 bytes src/prog/dashboard2/static/ios-desktop.png | Bin 0 -> 1639 bytes 28 files changed, 485 insertions(+), 120 deletions(-) create mode 100644 src/prog/dashboard2/icons/alarm.svg create mode 100644 src/prog/dashboard2/icons/home.svg create mode 100644 src/prog/dashboard2/icons/lightbulb-on-outline.svg create mode 100644 src/prog/dashboard2/icons/settings.svg create mode 100644 src/prog/dashboard2/icons/shutters.svg create mode 100644 src/prog/dashboard2/icons/sprinklers.svg create mode 100644 src/prog/dashboard2/src/assets/css/domo.css rename src/prog/dashboard2/src/assets/{fonts => font}/domo.ttf (66%) create mode 100644 src/prog/dashboard2/src/assets/font/domo.woff create mode 100644 src/prog/dashboard2/src/assets/font/domo.woff2 delete mode 100644 src/prog/dashboard2/src/assets/fonts/domo.woff delete mode 100644 src/prog/dashboard2/src/assets/fonts/domo.woff2 delete mode 100644 src/prog/dashboard2/src/assets/logo.png delete mode 100644 src/prog/dashboard2/src/assets/vux_logo.png delete mode 100644 src/prog/dashboard2/src/components/Hello.vue delete mode 100644 src/prog/dashboard2/src/components/HelloFromVux.vue create mode 100644 src/prog/dashboard2/src/components/Home.vue create mode 100644 src/prog/dashboard2/src/components/Lights.vue create mode 100644 src/prog/dashboard2/src/components/Settings.vue create mode 100644 src/prog/dashboard2/src/components/Shutters.vue create mode 100644 src/prog/dashboard2/src/components/Sprinklers.vue create mode 100644 src/prog/dashboard2/src/components/Timers.vue delete mode 100644 src/prog/dashboard2/src/router/index.js create mode 100644 src/prog/dashboard2/static/android-desktop.png create mode 100644 src/prog/dashboard2/static/favicon.png create mode 100644 src/prog/dashboard2/static/ios-desktop.png diff --git a/src/prog/dashboard2/icons/alarm.svg b/src/prog/dashboard2/icons/alarm.svg new file mode 100644 index 00000000..b9eb2e27 --- /dev/null +++ b/src/prog/dashboard2/icons/alarm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/prog/dashboard2/icons/home.svg b/src/prog/dashboard2/icons/home.svg new file mode 100644 index 00000000..132e4268 --- /dev/null +++ b/src/prog/dashboard2/icons/home.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/prog/dashboard2/icons/lightbulb-on-outline.svg b/src/prog/dashboard2/icons/lightbulb-on-outline.svg new file mode 100644 index 00000000..cc8b9f78 --- /dev/null +++ b/src/prog/dashboard2/icons/lightbulb-on-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/prog/dashboard2/icons/settings.svg b/src/prog/dashboard2/icons/settings.svg new file mode 100644 index 00000000..731a5a76 --- /dev/null +++ b/src/prog/dashboard2/icons/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/prog/dashboard2/icons/shutters.svg b/src/prog/dashboard2/icons/shutters.svg new file mode 100644 index 00000000..15a6cfa6 --- /dev/null +++ b/src/prog/dashboard2/icons/shutters.svg @@ -0,0 +1,45 @@ + + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + + + + + + + + + + + diff --git a/src/prog/dashboard2/icons/sprinklers.svg b/src/prog/dashboard2/icons/sprinklers.svg new file mode 100644 index 00000000..d152a485 --- /dev/null +++ b/src/prog/dashboard2/icons/sprinklers.svg @@ -0,0 +1,73 @@ + + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/prog/dashboard2/src/App.vue b/src/prog/dashboard2/src/App.vue index 623622e8..a6559b29 100644 --- a/src/prog/dashboard2/src/App.vue +++ b/src/prog/dashboard2/src/App.vue @@ -1,19 +1,160 @@ + +.icon-alarm:before { content: '\e800'; } /* '' */ +.icon-home:before { content: '\e801'; } /* '' */ +.icon-lightbulb-on-outline:before { content: '\e802'; } /* '' */ +.icon-settings:before { content: '\e803'; } /* '' */ +.icon-shutters:before { content: '\e804'; } /* '' */ +.icon-sprinklers:before { content: '\e805'; } /* '' */ +.icon-lightbulb:before { content: '\f0eb'; } /* '' */ + + diff --git a/src/prog/dashboard2/src/assets/css/domo.css b/src/prog/dashboard2/src/assets/css/domo.css new file mode 100644 index 00000000..75b81ae8 --- /dev/null +++ b/src/prog/dashboard2/src/assets/css/domo.css @@ -0,0 +1,62 @@ +@font-face { + font-family: 'domo'; + src: url('../font/domo.woff2') format('woff2'), + url('../font/domo.woff') format('woff'), + url('../font/domo.ttf') format('truetype'); + + font-weight: normal; + font-style: normal; +} +/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ +/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ +/* +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: 'domo'; + src: url('../font/domo.svg?150644#domo') format('svg'); + } +} +*/ + + [class^="icon-"]:before, [class*=" icon-"]:before { + font-family: "domo"; + font-style: normal; + font-weight: normal; + speak: none; + + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: .2em; + text-align: center; + /* opacity: .8; */ + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + + /* Animation center compensation - margins should be symmetric */ + /* remove if not needed */ + margin-left: .2em; + + /* you can be more comfortable with increased icons size */ + /* font-size: 120%; */ + + /* Font smoothing. That was taken from TWBS */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ +} + +.icon-alarm:before { content: '\e800'; } /* '' */ +.icon-home:before { content: '\e801'; } /* '' */ +.icon-lightbulb-on-outline:before { content: '\e802'; } /* '' */ +.icon-settings:before { content: '\e803'; } /* '' */ +.icon-shutters:before { content: '\e804'; } /* '' */ +.icon-sprinklers:before { content: '\e805'; } /* '' */ +.icon-lightbulb:before { content: '\f0eb'; } /* '' */ diff --git a/src/prog/dashboard2/src/assets/fonts/domo.ttf b/src/prog/dashboard2/src/assets/font/domo.ttf similarity index 66% rename from src/prog/dashboard2/src/assets/fonts/domo.ttf rename to src/prog/dashboard2/src/assets/font/domo.ttf index 8c52f30d3553e541ed892f7eace689992f6c01aa..88cfaaa071fb0b419d29e1fb99a2f611064fde2c 100644 GIT binary patch delta 1950 zcmZWpOKcnG5uW+~eet0sS6Y%HMM*R%?vi>?E=iG)WmB|BMF}L;azsaxUBr?dNpvhe zVA8P-l;EvMQlPP+x&@jCVjysWoC5e#6m8)GMbLvUE$UN&UYrzaeK86LaScc6tmGI4 zy4dfZ`TlwA&g}gAEc4f?>*4mR0|2-H0I!{|tkoY3{-R3!Gs3;|Z#6^G{XGG|bCm3% zjrwNg-5b|ei2n${QQur^)M?*MJWW#B+`6{W^Ci5LGafcmr z)MZg0iiSWA*C;=azC{CHNm^oGa z=zHbF#?q-|DwRC7bk9=SmUeRT%h0EP7`vO{&byhrTFm$#e+o2W>{l-WUMRPpUP+zD z_w%>%bl&$hIuPjMcv?7p*mhenlJyv={lW7HiP9N>a3h(Qvjppma@D2Sb|4lW5@ zDsxCvW08PhM`6Z^A_$TwyxxHl#Ym1-Mx92q1HMkrmu+@=RYjYk*j`oJXtOEHpxBhT zc-*5a%F&5*DxQodM~6ebddw439E!twVYf^44`Ip^i4xEg8IygoDQ10gG}(u`Bztse z2*buPOkg^PT`y=hHI~D%bOOUFdUUUkA8)mu{j=4=$EEL9CRW<)Fs-}a78`})xL>=i z`NxZe#xJ|IlGYtBWoAa^PtT9cWbo}$sf3SPtulG{5rzwmw;SPEt-D*B4U<~_uvk!T-I zU@|j_nXJ!i3B$z4v4Uw977A@zQANgZSrmklpvvXwAvZde+lqs^4@JweDl7_IT4HQT z;-r#8B;sZca&V$M60sagf*{_rvhAld-xO?}on2~CRORck$Oe1Vs$#b*Rkdf3iL|AP z#b7Y-(!SXvvY{T=f!)KRJs&4 zvS}j{HgcGvHv7^E7FJnX*87>)m&#DH>4599%4Dxc{~l6AWrk@*W{t4}B$!ERj`uNq z-|1A@(O%if6k9Meylmv==H_w+8k+X9+*W2JuVl=O`@hK-sUV z0TvGVkF=8u<#PFl8Kzm?^9Sv2d*@(pteEKTP84I~!<}8HPM$m^1;pX;rOBSbsUBCq z?s9p0-5ni)pg+h$z98jx_j+6|z26ng4+kcfva7iP7CU17g024r!Ty)Ox6itcegh7^ zLpyN)vj?*Wl0BH+c002Zie>med~&eICM;*Vega?M0{)ACF3m~*A#SBt?woV}jjbru zc23_(LtA|Tjxe<)sfoe=GKMky3$y0HZN2+8%m>m bx!GL5)UY?|mo8K6SgV#Mn0~< zm$0qGnrl=(l~tn966!`ur0s*_qZ#lnQBb5!M<8Ddoo9L$t6s7t1d!Lfi>G)7i?eu2FnMGtZ64N z+=>zKCXsR~a*o^kcGr#%G^0K!@=5VN)OADD_<8(2%N`3;Y(Vi?;e>Sz#fhPZC`Q~@ z-H6o~GfpbW@2J@5@L0JFPtt=`-z$)nXJLia0d*J=CiIt5FnD8eEbySU%KKrH-gRst z)b~X}?#Y&?9i`zv77oL`OC_S8r8KNhKBIsgCw diff --git a/src/prog/dashboard2/src/assets/font/domo.woff b/src/prog/dashboard2/src/assets/font/domo.woff new file mode 100644 index 0000000000000000000000000000000000000000..21828ace8395948baa0e4ec4cf365ad71cf54eb7 GIT binary patch literal 5456 zcmY+IWmJ@1*MJ8Gh8jY0=FxoB?v9ao=nxpXrH3v-N~F6R0Rg2uBoslu zdEWQ^^PRP>b4S-r?ngGIocSha+#{ZuG|5DP?lLG+I3{h4R zg)T!pYoLY>zYxl$p<;Oy`Y#!@S*%^4?kKl{iak;L#5PxktF^B;0|0=ohH@k*7(k0p z7`Es28dh>jIU7{XdB8oC9o8?iT=nYX<<}Ur}E$ci6+A zHUI!Isum!CLX^M=SIQnGQ4ZA$K#PI}OB$$a@8a!`at)}M3CW-ObAz03byHFhc>)!x>q0 z_k^KpNf%IYAd0A6S?Ia3`7jky5af0E|SbYQ@tL6Ob5Hxx&<$(q3|uQt6fo>cPi z%Vq55mc>t-Rj&iFVB>RYewO6sefONy62JY)#fdc-v2n@@-Z3IAmw#|!iS7M~6wYDP z+i@*8hhz{VEN*lYQ;VoJW3`nwT0wzHv!$*nq*F<$9IK9g

=7 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 C6x~n& literal 0 HcmV?d00001 diff --git a/src/prog/dashboard2/src/assets/font/domo.woff2 b/src/prog/dashboard2/src/assets/font/domo.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1942ec512f6d0b4d74b0a7d0b84d6f345a241dd5 GIT binary patch literal 4640 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 WnuBEUVNbaiK9t@t+;i_MYXAV1`Mrw( literal 0 HcmV?d00001 diff --git a/src/prog/dashboard2/src/assets/fonts/domo.woff b/src/prog/dashboard2/src/assets/fonts/domo.woff deleted file mode 100644 index 50fe49e58719d81dd0de8a0e22ca8e634a25de44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4332 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 aV>fJQ+b5&nqQFQ|cqdxgeM%4CgrN;_#NZ|X diff --git a/src/prog/dashboard2/src/assets/logo.png b/src/prog/dashboard2/src/assets/logo.png deleted file mode 100644 index f3d2503fc2a44b5053b0837ebea6e87a2d339a43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6849 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 diff --git a/src/prog/dashboard2/src/components/Hello.vue b/src/prog/dashboard2/src/components/Hello.vue deleted file mode 100644 index 2d805395..00000000 --- a/src/prog/dashboard2/src/components/Hello.vue +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - diff --git a/src/prog/dashboard2/src/components/HelloFromVux.vue b/src/prog/dashboard2/src/components/HelloFromVux.vue deleted file mode 100644 index 96f58ca6..00000000 --- a/src/prog/dashboard2/src/components/HelloFromVux.vue +++ /dev/null @@ -1,41 +0,0 @@ - - - - - diff --git a/src/prog/dashboard2/src/components/Home.vue b/src/prog/dashboard2/src/components/Home.vue new file mode 100644 index 00000000..78c97a61 --- /dev/null +++ b/src/prog/dashboard2/src/components/Home.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/prog/dashboard2/src/components/Lights.vue b/src/prog/dashboard2/src/components/Lights.vue new file mode 100644 index 00000000..af97a13c --- /dev/null +++ b/src/prog/dashboard2/src/components/Lights.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/prog/dashboard2/src/components/Settings.vue b/src/prog/dashboard2/src/components/Settings.vue new file mode 100644 index 00000000..7c0d15cc --- /dev/null +++ b/src/prog/dashboard2/src/components/Settings.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/prog/dashboard2/src/components/Shutters.vue b/src/prog/dashboard2/src/components/Shutters.vue new file mode 100644 index 00000000..8df36e4f --- /dev/null +++ b/src/prog/dashboard2/src/components/Shutters.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/prog/dashboard2/src/components/Sprinklers.vue b/src/prog/dashboard2/src/components/Sprinklers.vue new file mode 100644 index 00000000..07df3d3e --- /dev/null +++ b/src/prog/dashboard2/src/components/Sprinklers.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/prog/dashboard2/src/components/Timers.vue b/src/prog/dashboard2/src/components/Timers.vue new file mode 100644 index 00000000..93232ab7 --- /dev/null +++ b/src/prog/dashboard2/src/components/Timers.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/prog/dashboard2/src/main.js b/src/prog/dashboard2/src/main.js index f5fc96de..e6c43c65 100644 --- a/src/prog/dashboard2/src/main.js +++ b/src/prog/dashboard2/src/main.js @@ -1,17 +1,78 @@ // The Vue build version to load with the `import` command // (runtime-only or standalone) has been set in webpack.base.conf with an alias. import Vue from 'vue' -import FastClick from 'fastclick' +import Vuex from 'vuex' import VueRouter from 'vue-router' +import FastClick from 'fastclick' import App from './App' -import Home from './components/HelloFromVux' + +import { sync } from 'vuex-router-sync' Vue.use(VueRouter) +Vue.use(Vuex) -const routes = [{ - path: '/', - component: Home -}] +import vuexI18n from 'vuex-i18n' + +const Home = () => import('./components/Home.vue') +const Lights = () => import('./components/Lights.vue') +const Sprinklers = () => import('./components/Sprinklers.vue') +const Shutters = () => import('./components/Shutters.vue') +const Timers = () => import('./components/Timers.vue') + +const Settings = () => import('./components/Settings.vue') + +const routes = [ + // Root Level - Home Tab + { path: '/', component: Home }, + // Root Level - Lights Tab + { path: '/lights', component: Lights }, + // Root Level - Sprinkler Tab + { path: '/sprinklers', component: Sprinklers }, + // Root Level - Shutter Tab + { path: '/shutters', component: Shutters }, + // Root Level - Timers Tab + { path: '/timers', component: Timers }, + // Root Level - Settings Tab + { path: '/settings/', component: Settings } +] + +let store = new Vuex.Store({ + modules: { + i18n: vuexI18n.store + } +}) + +store.registerModule('vux', { + state: { + demoScrollTop: 0, + isLoading: false, + direction: 'forward' + }, + mutations: { + updateDemoPosition (state, payload) { + state.demoScrollTop = payload.top + }, + updateLoadingStatus (state, payload) { + state.isLoading = payload.isLoading + }, + updateDirection (state, payload) { + state.direction = payload.direction + } + }, + actions: { + updateDemoPosition ({commit}, top) { + commit({type: 'updateDemoPosition', top: top}) + } + } +}) + +Vue.use(vuexI18n.plugin, store) + +// plugins +import { LocalePlugin, LoadingPlugin } from 'vux' + +Vue.use(LocalePlugin) +Vue.use(LoadingPlugin) const router = new VueRouter({ routes @@ -19,10 +80,56 @@ const router = new VueRouter({ FastClick.attach(document.body) +// enable the vue devtools +Vue.config.devtools = true + Vue.config.productionTip = false +Vue.i18n.set('en') +Vue.i18n.fallback('en') +sync(store, router) + +// simple history management +const history = window.sessionStorage +history.clear() +let historyCount = history.getItem('count') * 1 || 0 +history.setItem('/', 0) + +router.beforeEach(function (to, from, next) { + store.commit('updateLoadingStatus', {isLoading: true}) + // console.log(to) + // console.log(from) + const toIndex = history.getItem(to.path) + const fromIndex = history.getItem(from.path) + + if (toIndex) { + if (!fromIndex || parseInt(toIndex, 10) > parseInt(fromIndex, 10) || (toIndex === '0' && fromIndex === '0')) { + store.commit('updateDirection', {direction: 'forward'}) + } else { + store.commit('updateDirection', {direction: 'reverse'}) + } + } else { + ++historyCount + history.setItem('count', historyCount) + to.path !== '/' && history.setItem(to.path, historyCount) + store.commit('updateDirection', {direction: 'forward'}) + } + + if (/\/http/.test(to.path)) { + let url = to.path.split('http')[1] + window.location.href = `http${url}` + } else { + next() + } +}) + +router.afterEach(function (to) { + store.commit('updateLoadingStatus', {isLoading: false}) +}) + /* eslint-disable no-new */ new Vue({ + store, router, render: h => h(App) }).$mount('#app-box') diff --git a/src/prog/dashboard2/src/router/index.js b/src/prog/dashboard2/src/router/index.js deleted file mode 100644 index 5bf9ea6d..00000000 --- a/src/prog/dashboard2/src/router/index.js +++ /dev/null @@ -1,15 +0,0 @@ -import Vue from 'vue' -import Router from 'vue-router' -import Hello from '@/components/Hello' - -Vue.use(Router) - -export default new Router({ - routes: [ - { - path: '/', - name: 'Hello', - component: Hello - } - ] -}) diff --git a/src/prog/dashboard2/static/android-desktop.png b/src/prog/dashboard2/static/android-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..2bfe5aa41d16fef929f63b050f02fc1d26e9cb38 GIT binary patch literal 7709 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 literal 0 HcmV?d00001 diff --git a/src/prog/dashboard2/static/favicon.png b/src/prog/dashboard2/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..553a46225032ed4bc458c9bdb897545fcbe25950 GIT binary patch literal 1017 zcmVmJ{)@f&FO=Fv-;EhsTnaXgY2wpgb;5Mw3ih^DU zg9#gyfjV|Ea9$`y+@wz2{HWbsHEeBKR#*E$3HBqiuIcL9B#`DkUNnhOlecMoWuDvj z}*4;4iTLB9I7>Qh|w7j&%GB624forsBwGuARH5fz;?{6z`a-@LkgaZS7b4GFsy3}Z9Sith0JLcawlwTGEF$}@ zm%G$CN-ON)&~$Ik4Ai*2dqm{)-+w#W|HD7di$tR=EiH3xex56%WAqOW@%4ATM556( z5}}{X)P($1?XIzGg3AVwZ7oM4eDp~d$4{Ojkx1keW<31s*3|2`CH28x>}*?0?e}|p ze-;I$xNB1ZB`y~aJ-CfsJ6rHIKElD5_tE5OVDEv~h{xmEgjs1XcD4}=9tBXT^U$he zJy&WN28+MnV03(f&$`d@(krjB_dpxrg#{WL+`RMV>n8W0I#RI}Ky|&hIo~2Z0qTr?|*p)`O7O9AR?YXO*=nK5bAt1(jm{Z<0Bwmb&F#esm?6m6I+?Po3MH*mo$ls?mbN@EDuc?s}$BtsN+4%g+uL%A! zmD92%ePg;A8Hmvd>PX%WRVg+V6i`~?V*9pQp4{1jucr_Vk|8$^V_v~M#jduG%(2dp6`i7qH8(T_DrWN z*({lYxBiO)Wx%@=13$iP>IuW4=?iz4ls|w-oz)T)1; z46gH?3kZj%dy7lThY@@moeh$M$-aqz|AX}oCaVxvXGRKdv!76R+<5~n^&%9kV>CMy n56`_g`SVYg|JTFmO<#Wi;2K~ju7&|-00000NkvXXu0mjfpvdH~%)?eqGzs~b{zVG`y-{*P%`Tp^JQ=D;jDvAh25D27V ze+GL_wy9qQm6uIRf3t4clJ|AA!-BTI@_QreuFQdv&v;TmASI2j+5yVVhs#Wb2zw`6 zg%LSi=B)4df{n3p&FgqCR>=vNIlkR=`Dt9K$-vjHCHs%|cI)a3o-SzXc zOn0^Pi{2fU9dPM>qhTO|S5|R9$NUd29L9$8PV?K}v1xUS6%K%wN9p+?#BnLw+zd;*p$MIOJ1X_w;^MBRFJsPf)d&3t`*f^7NG8eP7}Z zz;Utq!?aQXPN4udE^HVKwd?(Y(EROQ(X$fetm^QHtIO2aP4j~8i+7WP<<#o7wqo(` z-d#a1>vR_KZR{=@&>LYZbNM)f&xbeT^|bp9>th()A^Dgn{V}Z-)R>9lq0)^*1H01- z(0g*q6*vnCvnG(+``J&QO!UjGNLoeN%l-#06eq9iA3uKh<)$kHgE6ElW`g9dUEj$} zA~KJ`O{^nyiuKOkJj&2J(gM-nH`4SIPnC6%I9%k`Q5d*NTX3K(Ex(H9C7oaw)l?{% zhnj5!2WH|FDB`mRk?n0QtnpVt(4~n8l3zC>F)49h^!j=(c4%O|%SxPJY^Y-=0*W(=YB^7!=c}XSU z=&t{Zs7cept+$HT&=h;9ons0^^`zqXZ(7!z2=52=wt7mNn=#g#6IK%m@lcd&^EaOC zlauG4X4o)KH%Q+d2l&FeDKCb&_UwBz8%zt99L{8yQE#%>%lf3 zpEep|=&iO<05#4J=036OV*D6H7^FyVtQV*;5m}>0>Bn*f#GRcHw@1EMLr?k>r7ZP4 zf)^AOtZ~YQVJggW2l!rYCH4*RRqlYJlFoklN97d;>`K-dmol=%d#v|+fS+w?CQpyY z*hEHNEh;L{;U39?V+a7B&+I6g@^B2 ztsR3hT(GHb)z}EhDyLHN38Eo(|BOY(8Uy(xha39M9&I}K1m?A*^m<&i@9%c^PL%5cD#4)2!L`mxoG21H+1ml{14u!Y6>JWfVam6`HjBvZ{c^KIgr zn`Eqt