requirejs:杏仁的优化(almond)
这里只是调侃一下,“杏仁”其实指的是almond,requirejs作者的另一个开源项目,它的定位是作为requirejs的一个替代品。
本文概要:
1. 使用场景
2. 打包例子:未使用almond
3. 打包例子:使用almond
4. 如何暴露公共API
5. 限制 & 支持的特性
6. 写在后面 & demo下载
使用场景
什么情况下需要使用almond
呢?假设你手头有个基于requirejs的小项目,所有业务代码加起来就几十K(压缩后可能更小).出于性能优化的考虑,你可能在想:如果能够去掉requirejs的依赖就好了,毕竟,gzip后的requirejs还有大概20k(2.1.6版本)。
almond就是为了这个目的而诞生的,开发过程,你可以照常使用requirejs来管理你的依赖,而到了打包上线阶段,替换成almond就行了。gzip后的almond只有大约1k,优化幅度相当大。
例子:未使用almond
这一小节主要举个requirejs+r.js
打包的例子,下一小杰会在本小节的基础上,通过almond
进行进一步的优化。代码很简单,扫一下就可以了
目录结构如下:
demo.html
build.js
js/
js/main.js
js/cookie.js
js/util.js
demo.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demo</title>
</head>
<body>
<h1>简单的requirejs例子 - almond</h1>
<script type="text/javascript" src="js/require.js" data-main="js/main-built.js"></script>
<!-- <script type="text/javascript" src="js/main-almond-built.js"></script> -->
</body>
</html>
js/main.js
requirejs.config({
baseUrl: 'js'
});
require(['cookie', 'util'], function(Cookie, Util){
Cookie.say('hello');
Util.say('hello');
});
js/cookie.js
define([], function(){
return {
say: function(msg){
alert('cookie: '+msg);
}
};
});
js/util.js
define([], function(){
return {
say: function(msg){
alert('util: '+msg);
}
};
});
用r.js打包
首先,在build.js
里声明打包的配置
({
baseUrl: "js",
name: "main",
optimize: "none",
out: "js/main-built.js"
})
然后,下载打包工具r.js
npm install -g requirejs
最后,通过r.js
打包
r.js -o build.js
恭喜!可以看到js
目录下生成了打包后的文件main-built.js
js/main-built.js
define('cookie',[], function(){
return {
say: function(msg){
alert('cookie: '+msg);
}
};
});
define('util',[], function(){
return {
say: function(msg){
alert('util: '+msg);
}
};
});
requirejs.config({
baseUrl: 'js'
});
require(['cookie', 'util'], function(Cookie, Util){
Cookie.say('hello');
Util.say('hello');
});
define("main", function(){});
运行demo
为了检验打包后的结果是运行的,我们需要到浏览器里验证一下。首先我们要把demo.html
里的资源引用修改下
<script type="text/javascript" src="js/require.js" data-main="js/main-built.js"></script>
在浏览器里打开demo.html
,看到下面的弹窗,搞定
aaarticlea/png;base64,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" alt="Alt text" longdesc="http://maxiang.info/1398002468755.png" />
例子:使用了almond
我们看到,上面的例子打包后生成了main-built.js
,gzip后看下文件多大
gzip main-built.js
可以看到只有174B,这种情况下,在页面中引用requirejs有点不划算,这个时候我们就要引入almond了
-rw-r--r-- 1 user staff 174B 4 20 22:03 main-built.js.gz
很简单,首先下载almond,并放置到js
目录下
然后,运行下面命令,通过r.js + almond
生成打包后的文件main-almond-built.js
r.js -o baseUrl=js name=almond include=main out=js/main-almond-built.js wrap=true optimize=none
js/main-almond-built.js
/**
* @license almond 0.2.9 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.
* Available via the MIT or new BSD license.
* see: http://github.com/jrburke/almond for details
*/
// almond的代码篇幅略长,这里略过...
define("cookie",[],function(){return{say:function(e){alert("cookie: "+e)}}}),define("util",[],function(){return{say:function(e){alert("util: "+e)}}}),requirejs.config({baseUrl:"js"}),require(["cookie","util"],function(e,t){e.say("hello"),t.say("hello")}),define("main",function(){});
同样,在修改修改main.js
的链接后,在浏览器里访问demo.html
,done!
<script type="text/javascript" src="js/main-almond-built.js"></script>
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeUAAADUCAYAAACiYTveAAAgAElEQVR4Aex9C2BV1Znul+QkJCHhFZ7yEhVRYsXxiYrYik/wUS1iR8tYp1XxTmmL1rnaWkurVluqzJTOiLZWHSu3irU+KnWsWIuoqPhAhaqIyEteCYQ8T3JOkvt/+5zvZGVzTggIhYS1YGf963+ttb69z/73WnvtvbOampqakSE1N6cXhfnhMt2Jp1xVhMuubpiWTTp+2E+47Nq2Re+qXVs+vcwj4BHwCHgEPj8CWVlZu+QkbLejsipx9Vw6nZw86SiXnisTL51OWr10QTlToErHD/NUVq4GZSqH+dR3eZlo+VXu6rXFk8znHgGPgEfAI9DxEUgX7NLx1FNXlokO67p6lGUqZ+LLXzpbyWSbFQ7K6YIbjcL8TOVMfFVMeVjH9e/KXNq1T0eLF87T+Qjr+LJHwCPgEfAIdDwEFMjaarmr49KycXmilUuHOXlhfqZyJr78heUuv11BORzYMpVdfjra5bERKodzNVB8V1eydDxXX3rpeJL53CPgEfAIeAQ6LgLpgluYFy6zty7PpV2Z+MqFksrKXRuXduUuP+xHZem0CsrpAliY55ZFK5dzt0w6XKaeeMoz8TL5TMcXz81d/y7fpduj4+p72iPgEfAIeAT2LALhoJauth3puPJMtPxKrpx80eFcMvFVZq4kmXLyXTpdOeBx+jpdUNoRT3LldBamw2XpZOJTriQd5eS7dFivPXLZ+Nwj4BHwCHgEOj4C4SDHHrk8l1ZvXZ5o5WEdl09aZeWqL1zekR/JlbeyTxeUw8EvU9nlh2mV3Vw0GyJaeTqeK0snd3mkwylsL3kmvuQ+9wh4BDwCHoF9CwE3cLkty8SnjisTrVw+VA7nrr1k4qns5qKlk8l/mB8uZzU2NrZ67ikcsNKVXV6YTldOx1NDJGMuOp2MvEzyHcnC/lT2uUfAI+AR8Ah0LATc4KeWh3lu2aWpr3I4d32lk5Envvxk4rm+XNq1lw/JVY64jB3R4cDpBklXJn6YJz7rCctUdya+bNLlLk9+3Nyt1+XvyC6s68seAY+AR8Aj8I9DIBzEWLPO565MPLXMlYlWLh3ZiM+cG/ncRKfjSyZfzF0eaSb5Ec1cMtLpUquRshopRbdMOlx29SSTXrgc1pWcfNmIdnVdnmyUh/Vc3TAt3bb4ro6nPQIeAY+AR2DfQSBTMHP5mWj2QrJMeVhHeuKznI6XTp5Ol3pMbckoT42UdxToXLnodDl5Lj9Mq8zKpcs8Go2irKwMDQ0NrexdPdHMlcL+dsSXXLlrL57PPQIeAY+AR2DvI+AGwXBrXFl7aNpLj7lLS5aXl4fevXsjPz8/FTypp1glO/Fk58YRV+bKyWeSrlsWHejznrKUAgvHiGXKXLnodHyXl44O26pcW1uLDRs2oEuXLiguLg420pkS7dxOZNJrL9/1J1p5e31Iry07tVk6zNtK1N+RTlv2ku0OP2qzfDLfFb+yYc6Urn/p6gqUk392JHd120O7/kQrb4+9q9OWndtn4eDahun26IRt0pV3h590/doVv7JhzkS/4ZSuLldnR3JXtz2060+08vbYuzpt2bl9Fg6ubZhuj07YJl15d/hJ169d8Ssb5kz0G07p6nJ1diR3ddtD018sFkNVVVWwcYDYv39/FBYWBuZsqzYyRKsPKqeTuTzRzJlcO5WDPByUXZBEtyenjrvReXvLa9asQSQSCa5QmDNZu4Jcf9gBtx3Z2dmBSDzpMRdPOXVJC0RbcY6cnJxUHS441HP15UP+WZaO6nLbJl/ihe3lh3K2g7mbZOfyREvX9UmafNdOPOnJztWRT+VhGctqn2TK0/kXT/6Uy4Zl0kxqF2nxSDNp3zB3k+uH9n7/J9AR7mF83LIwdnkutqTDMpb9/m855wgv4h0+/lzsSGuTrmzd3MU3zKddukQbJldO2q1PcvKkJzuXFzhy/oRlLO9P+5/nE8YEztSWl5cjHo9j8ODBKWwJFTHRtqNyWE/6beWSRbTjyHCT+OFcOi6ftLtRxy27dDpZfX09ioqKgg7zioX67JR01UGdqFlW0HZ1pc9cJ23qUoe2BF36zF39oGB/pMucm/yQVpuYqy20E5+07FUveUyyl0/p0T/pcBLP9a163TaFfbMsPdeH/KhelVUv+eLJjvWwn8olV52UuTxX120HdVz/sidP/XflPAbkV3yWhTlpv/8Tx5SwFMYu7sROZRfP8H5zfYhmrv2uXD6kE/bj97///etY4THC40XHiH7H5DOxzG1f+f2znTp+OULevHlzqu3sh4599UPlRG8SfaUsnKgnG8lUDueSp+4pkyGnO5NT193khx0ULbnKlLl1kC4oKEidaKnHzkiPcnXOlYknueokXydt6VNHPOkrp45kqlc5fZJmoj4PIpemXDrKKaeNfIgODO0P65JMPNrKt3isTxsvKKjDpJw+KHfrpZx8JvHduqgvO9e36MAw+Uft5FWjayN/+gGyzMT6VCdz9Uc0/ZDHuphoxzqkJ75ktFO7VL8rE486pKkvufanytQRT/rKqSOZ/CinT9JM1HfbSppy6SinLm3kQzT5TKxLsgQngZ18i8f6tPn9nzjWiY2wYy58xJNc+1Nl6olHWrbMmSSTH+XuPqWd9pFov/9bfh9hLIQV+aQ7yu+f95W5f7kxMefxwD4wFz8QJuWZZNQJ26icKU8F5XQV0WFbfIItHekxd/kuTZm70ZZybvxRMGdD3caS545wXR3SBEM+6U9lychjok/yuFGfeq4OeUryITseTGoD20lfTLRRmbTb7kDB/pAnHfploi43lhXw2BbpUYdlnYjVdtmyrLpUr2xY1i0A6as+5fLH+kmzDayPSf0MCsk/lKk+2qjMXDT59M8y62fOMvtEn+qn2hD2L33Wo7qYk682qSwdylQv/TKpLJnqka3qUT+YM8metHyQpp3f/37/6xh0f6M6vnmMkHZzHjtM5MnGPdaoz7J+FzwupUc7llknc/pgzqR6VJfKlFGHZf/7T5yHhDexEYbCiDLS0iFuSsLdlVPGMv1wY6IN7eVbtOvL1SEtW9mzHOYHQTnsxC0HtScbID7zdLQ6TJt0tGtDORN5pMMHpBpLHdeXbJgzyY46tOFB7ib6d31RxrL0KVe7JNMPRX6oz3qYqBvekbJXW1SmnZvcOsmXPvmk+WOiLTfaqh3yp3qpTx7L0leuA0pl1uP2l2Um8qjDxLrli1PHosmnPzepTeTJXnUpV39kq37TRn2WPW1Yn6sjWv5ZFi075kzyJxu//xMncu0LYuT3f8uxHsbDxUky9xgXj8cZE/V5vIp2cx2LOlaJu5t0jEouffJJ+99/Aq8wTiwLMxdv0i6GxHt3/P55DlSdzJncfc56uLnnrTCt9lIvEx04Tv5xdVIjZSlIyLJo5mFaPPHVCdqlo139MK2OK6cPgUCeQFBdlCuFeSxLXzuIZSXS5NO/bEnrRyEbyalDmnZqC3PyVaZvlsM8+aBv1wf16Y/6Oqgol1/yWVaSb+bqC2npM9folDSTfMhWvpRLT7rqv/SZu0FV7VO7aS+aurRXIp9ybuqHi6tslQsDlpVkJx3VJbly1u0mlqnLTXWSVhKf/mVLWv2XjeTUIU07tYU5+SrTN8thnnzQt+uD+vRHffWdcvkln2Ul+WauvpCWPnO//xNoCSPtZ3KFmWjuY+0b8kj7/d/6ooA47s+/f/6muPHY4ebSPGaYyNNxlIlOaLb8pS9iyySaOZOO3VYLvaQsBeXiMw9v1GGDpCNaeizLj2SuDfX4g+APRTaUuycl2qkDLp96TJRJR7R+aJSLzs3NDfRYH5NsmDPphCyaerKlDg9S+hdffVZOGTe3TJo+dCKgb/pydVQ/bSVXXdKlD9LMVYd49KXFUWyb9EirftL6kZFWXZST5kY+E325ydUhX2Xlag/LTPJPPlczsp2UMXcxZjvZJuZhH9RVcuUuX3LaSkc09dQf0X7/J2Y9tH+In7sPhZff/4lzAfHQsaNjlceX+DrelVPGzS2Tpg//+2/BQb9bYarfLrESdsRMyZW7fMn1mxf+1Nd+o47onfn9cx+rXvqlD7ZNNP2qreQxqV7yXToQOn+o79rKL1VIp0bKUpLA8RGQlIc3Cli5bEVLj2VXx+WLlly65PNELTk7oE4opw3lStKRD+0EyikjXzz9oJi7PqRDPSWXVt3Uk0/Saqv805a09FmmHuuTLuulnEn8oJD8o3rVRpZlQ19M5PHk6erSp+qlrVsHbXRioC/a0Rdp+aYOebRjrvbSjgc09ZiYqx0Bw/6oXtXJ3G0f9dQm+Zcf1Ukd8lQvaepyE81cegFhf6SjNrFvrItJdYlHvmj5oh5tyeem5NJqg9rKnJvaKp+0JS19lqnHeqWrvlAmPmkl1UsZdVmWDX0xkefiS13hQF2VqUuaye//xgALYidsA2DsD3Eln5uSS2t/Uo80c27ap/JJW9LSZ5l6rE+62peUiU9aSfWqjSzLhr6YyPP7P4GYjnsXG2LHpH1FvMjjJpqYKtGWfG5MLFMu3Jm7MvplWXZhP9SXjHQ40d5Nqoe8VveUw8YshzcaSU8y8txOkM+y+C7tykTLlrk6Khs2nnpMzFnmJhvStKHMBY1lbfLJHwXt5JNyJvkg7Z64WM6UaEs77mQ3p77bD+mxDdRVWTn1yWeiHybKuLG9TGwTZeQppeuHi4naRBvhQlvqMIXbojqlz1ztoj5PAGoDc5emXH5J05ZyJvJdPzoxkS8flGvfaF/Jn3ToS37Jo1xl2pBWPyUjT3zyVId8UsbEsmz9/k/gSGzc/eb3f3CopP4QHx43xMjNqcBjTcex9FimrsrKqS+c6YeJMm7+95/4bRIL4UKMuOk3TprYUke/YcmEo/bFzvz+6YP7RT7VBrc+tkm+pUee9r/qpw1p5dRxE/lK1NtupKzK5VDKyl05K2cKg+CW20Oz89xcXTaUmwISO826qUdwSVOfSeC5bRNNHzqhUF91BIb2h35dn7RjncwFtHzR1uWJlk+VWSd9MtHWLVNXCzpIc2N/qENdbuTRF32wLH3SLh6ykT7rE4+6SqRVVu7KZMOcifXSJ+tVmXa6b0na7St1mWSvsutD9dK36nN/JKqTetyow83tL/nU8/s/cSISjsTZ3R/CMNgp9sctk3YTy/LDnEn7wu//xKhJmLk4kyfMyXfLxJEYMglflfWbIJ80N//7T+AlHIUZcdxbv3/9BtQW7mu2T78R5iwzidbxQB5lsmFOHfmiXIk8JlfeaqTsKkqZeaaN+pKJdoEVrZy6opXTTjRzldUhnYAZWJnog4CRz0SaugqknGbVjqQ/yrgxka9EEFQH9ehfwU8Akcd6VIds3T5r51FGPm1dWm2QDf25FwnUpw7lTLIPCsk/6g+Lag/rpQ3LzKkjmj4olz5l1FF/A0HSF/lqo5vTB9spG/mkX7WBfsRXwKYP8SVjmX5oS57azbLqJF+24jFXn9gWJtqqDSyTpm/10e//1heBxE/YaF8SNyZh6+ItHe4Pv//97989Hvhb02+POZN+453t98/fBM813NhH9dXFQzRzJv2OqO/aks6UpEt5qh5biGM2CSM3F63G0Yi0csq5ZeLJjrmrI75rv3z5cvTr1y8IitrZ7Kg6zTrZYPkhzY26PBhI8wTinpApY1n1UYeJ9bo0eSqLVtvom34oZ872kHb7rRMbbSmnHnnMxZM/5tQR3w2k5Kkd1FN95JNmW8hnYp9Yh2j6pIz2lKndbn3UpR/qEBf3hKs2Ua7+yB9ltKE+c22Uqx61g2XtI8q5MdEH+bSVP/Ld/quPzJmoJzuWaSvfaoNsWPb73+9///v3v3+eU3g+4Lnh85z/P/vsMwwfPjx1vtI5R+cl9xxFmfiunnTS8XROo51o6gV0OCi7J1PR4VwnR+aSiWbuynWSFd+V0Zbljz76CAcccEDQIJYVgKRLPTWePAYOliVnHQomqY5ZB9U21552qlc+aS9aAHLnBgAlAWddtGM9pF092qqsutQ2+iBPiXquPWXqr/RUN+tiEoYq017tlY38M5dMPOmwbibZi08eacnFZ+72Nx2fdcmWfqmvH4YwyVQf+eG+uzzSapv6RB7rYFlyv/8DmFJ/hJUY2m/av8RN+83VkVz6zP3+b5lRC+NBvHisE0sd69Rxj03iKzxJU4/4u/rh34D//ScGIPp9C1PiR94/4vfP7zEceuihqX2r3xRzbWyP2kJafO5b0trHpCUXL5xTLl7qkSj3wKECy5k2ygmO5C4tP+Rxk67KYRvxw3rkqzNqLHmkmaselqmnR2/oh2XVQ9CowzJz6ZHmyVx6KtOeNDfJFLTJY90KkvLJnD8k1sWN7/LmD03BgjZMlMlWfWFbaUu+6mVOvnRpS55OACyTVnuoq0QeR41M4gsvypSow/Ywsf2kqad2ka+20Y46TKpXvHRl6kmfeBML6qke5mqL9gfrUv3K1X7qclPbmMs/+dSTH9bNMuWqjzqqU3rkEV/pqUx70rKhnHr0SR7r1n6RT+bsHzHk5ve/3//+9584X3TU37/OQTofKCdfiecEld1zDuXkk+fSPE9kSjy3KKUWeonhGop2c9LaaCOaORuiPEyrHJarXFdXF5zQWGaivhqqk6I6Trn0qEO5gorKlPNE6V6Fyp/awrLqVx3KqSNQpeO2STLyeBJWmbTaR1+UK6nMeqlPmQKo+kM+9dhuJcpcOe0o5wHPT1zSB31yo61o2rPMRHtiJD/CizL6c+1UH/FTe9Rm6pPHumnnToXTjnrKKWeZfuifdvJNP5KRx+S2T7bky1b25MmGPihXf1Sm3O9/v//979///nXO4bmBiecW8lhmzrLOMcql456HeP6RfUDYH/KowyRaem4dpJVUr5tTJv1WC71kyNylZbAjnuzcnA1WB8lXWR0hCKR5UlU9POHzZE8ZG66TK/VYZnLt+cOTTP4ITBgkBRnVpx2gepWTrz6Qp6S2yC911G75og79sy7KyOem+11qK3Xoh/r0o0Q76ZJHHQZd2ak+8mjHiwD6kq70mVMu/7SjbybSxJhJcraRfNrIjnL6lg5pyanPpAsC8pnEJ0079VN28ic9tlN104Z6fv8nFisSD+1Pv/9bfuPEhccRE48dYcPjjWUdc8RONHX979///nVM8FzHY4VlJp2/mOsYYq5zYqBkf6Sv44/HHJPOb6J1ziRftPJ0PNpJ3jIcI9dJNGRKl5PHjQ0T7eqJr1x+WNYme5bZeQEhsGgjAFWHC5LAYa4ASF+0Z+eoq5w/WrXB5VNOG/1YWY/k6g/9UYf1kMcyP4LNwMkybflVEQYS2irRhnL1gcGT9TGIqe0KjGozbdQetZ0+1H7KWAft3HZRV2WN2qlLnts31U0Z/TKpHraJvpmTRzlz2rCvtBGfeuwzE2lu1GFSHaybfCbmbll1sy62T21Qm2VHudpKG/khTRmTfKj/zOVPufCTD/GZ07+LEesgX22UX9ZDHst+//v973//nfv3z/MAzw06x4hWWecI8nWeIk98nT8kpx15kqfLqcPUKijTSBuFcqw8zBNfNszV+DCPfG3SU5k5T4w8ofOkx5MoafKZFPTUEfJJMzGnLRMDkn4s9EMfTLIjTVvWr5M6y6S1E1QmT8HP1RfNOkkzcepdiXWpDuYKCAoolCtA0wf7RpmS65dtUB9Iq030QRv5VM763PrZPvaBU9y6AKAu/VBXtPyxDbRR+8nnxiBEPv1QxqTgT5p+KKdf6rMu6qlv5Ksf1CVfbVMd0vH7v+W4EibEmDQ3YkvMiCM34qWcmFOm/SeM/f5vucgSNsSSiWXSxJC0ysKa+OrYpr5o93fqf/+d7/evY4H7nInHA3luIo/HAzf97pgziefKxQvLaUOZUs5NN900XUpiugqSybmbU6bGk09auct3eenosrIydO3aNahendePhA0m7Z54AkX7Q1/uRj7rVSd1wqKOZG7Oupjkg3b6sZHHgMp6mdQO6dBW9uRJTnsl8VnWRQbbRzuWKSfNulhmzjZTh2X1mTrCQLri0Td53MjTSZs+mJizTaxLemqj2ke+dEVTh/5kSzll8s+y/Mivi5VOZsxp416c0C9t2DbxVS9l5NMXc7ZRfRc2rJtJ9SonTzbkUZ+28k2ZdJizLibZsy72SWW///3+d49p0jpGeOzo+NHviHL9JnhciU/a//4T4z9iRNz4G+PvcV/9/VdXV6OkpCTYh9x/TNyfSu6+dXmkw3ouLyxz/YjOslGQ4ZM4KQso5u7mnszEJ0+b7FgmTeDDdKYy+R9++CEOHHpgcPLWiVeN18HPg10+ONJimaNiHuzasQoYsmFb6IftoV+1jTT51NNJWCNs1UE5abVDwLJMG9oqyT/L9C25fJDPuploJ335YD3cWBaPPpjkg+2jHf1Ql31W/9x2kk8cKCNO8hs4sz/ES/2nP/plXfJHW7aBZdpSphEvfZBHeyWWqctE3xyV0Ya+5VM+hCXLTOovy9Rl3fRNn9J1dchXv2jj9//2V+jCUTgRMx1TxNzv/8S5gMcXceFxRKz87z9xPvG//8Q5Zu26tRgxYkRwjOhY4fGic6fOS27ZpSl37VQWT+c/lt2Neqnpax6YbSXKpSN6R7lOouGcdi6P9NzH5gbVs4GUK1eb2Fgm2ZGmTrpEHXWUcpZde8nIo0xJ7aKcJzfZMRdNHSbVzTI3+pI9dw4TbVQXaSa1g7RsqS85+bShTLY8cVBHwZw6SrRjW3myVRuYc5NP+mKiP/Ikkz5l9M96yGOSrcoB0/6E20A9+hdeLKv/slFfVKaO+kaZ2w6372o37dQO1UceddMl1z/lLLv2qps8ypRYn2zVH+nIh9qkulnmRj3Zq//yRV3Vo3awTtlSX3LyqU+Z2un3v9//PEbCvz0eKzxu/O+fSLQk93dHLsv63bky/bZlqd8vf3fHHXdc6jep36HksiNfvvVbpq90NHnUl4x0ppQKyumciecay2kmHhspHeZumbQ2V0beLbfc4rr0tEfAI+AR8Ah4BPYKAo8//ngQxxibFITVEAVUytxAyzIvnhT/pEe7TDzZK6deMCwi4SaV3TxMs9zejb7ZYOmT5ia+6IDh/3gEPAIeAY+AR2AvIpAuRrnxi01TeWdy1060m5POpsO2kuSqWLpuWTrsiPhuLr46GtYn3yePgEfAI+AR8AjsCwi4MYvtYcxy45fkbpyTjvSVK96Fyy6fMqWW1UrGkVJbeViWqXHUc2UuLRl54qtBPvcIeAQ8Ah4Bj8DeRCBdjCJP/HS0eMoZ25hYVu7S4oXzVFDOpBx4c/6oQteRaNeH9Jgr8IZp6ajxTjWe9Ah4BDwCHgGPwF5BwI1ZbpxKR4vHhrq0ysopS5fEV77dQi/XSBW4uVuBy5dDlxfWVfClDml3c+v1tEfAI+AR8Ah4BPYWAopNqp8LsbiR7y7KotyNea7M5ZN2ZbJjTr4S9ba7p0wmk3Ipu7lkzDNtbPzOyFz/nvYIeAQ8Ah4Bj8DeQiAcu3Y2nrn27APLmZJkylOrr8UIOxCfubawjlsO66gzzJncMnVZlixQ8H88Ah4Bj4BHwCOwFxFQXFKMUs4mhWMYeeG4R54SZUzSccthHZZT95QlVC5Dld1cMreSXaHdzrn+Pe0R8Ah4BDwCHoG9hYAbm3Yltrk27APLmVJYljEou45UQXt5qkR24bI6TL7oTA32fI+AR8Aj4BHwCPwjEXBjU5hmO8jTlqns8kUrp63ogHD+pKavHV6rqC7jsAPxww2THwVbycO5Kyftk0fAI+AR8Ah4BPYFBMLxKRy/3LIbv8hnklx0wEzyd0SnRsquExkpd2UuTTnLyiXLxHPlYTpw4v94BDwCHgGPgEdgLyMQjk9tldnUsFw8dUNy8VlOl8hPBWUpuMouLWeunuTMXVq64rll6TJ3r0bk1+ceAY+AR8Aj4BHYmwgoTrkxSjzmSuKxLH6YJ76r49qH6e0eiWqPYbhS16lkO5vLh889Ah4Bj4BHwCOwNxHY2fjl6qvd5DG1JQvrstzqnrKcUCBHpJVcOXlu2dUXvTO56vC5R8Aj4BHwCHgE9iYCOxO7pMv2urTKbj8od1M6/e2mr10D0mEnYV7YqeSunWjppstp55NHwCPgEfAIeAT2NgLpYpR4bBtpJZefiefquzqi3Xy7oJzJOBNfztQwV0886oh2c5cvPz73CHgEPAIeAY/A3kRAcYptEO3mLl/tDMulI7ly6amsnHym7YJyWEFl5nIm4/byXDvRmWzJ98kj4BHwCHgEPAJ7CwHFKcU6tyyabRMtvZ3hqW+uLXmpoBwWZDJw+WEblrWF9aTr5tIVTzY+9wh4BDwCHgGPwN5CwI1Nik9uLrnap7J0wnyV3TysK1kkk0AKytvSoywsF8/li3Zl4qken3sEPAL/CATiWD5/HpbU9MCY8WPRv9X34lrXH127CL9/fi0OO/l0jB7eIxCuffUpLNjcFceddCqG9w4bxxGNA/mRML/FbzxuCiaXRjwaRVxl5VI3XdO2ZHk8gvx8WRkrWoGyanNlPIeb0KadbUW9eyM/4Pg/HoH2I5AuTrnxypW7XsV3eS5NuftlKFdGOnwcbxdcwwaqkHm6lE7u8sI0fWTylc7/vsprjMWQvbUMKN8ElG1E1tZy5NTWIKupkR1MNNs+0dWcnYPGgkI0de8F9O6HLNuaSvogJzd3X+1amnZVY8EDt+PO376ErRiJHz14K0bUrUJ5wVCMGtYb8bULcMddTwCHTcD3rhr3Dzshrpx/L2Y9swpHfvkafH3soDTt3n2scF17q8+73qMoXp7+HVz/6f/B39eMbdNNfOMbuO666Xh0aXlK75P5t+Hb/3UyXl0zLsUTseyBb+GU6+aqmDE/584X8Luvj7LAugQXDTwdL6Mdb/bLLsVzKxfgmKKE22X/MxWn3DgvYx0w/WeWL8DoxLVEoLfs3slt24y5HSuevAqOSWb/XtIpEVBMCscrt6yOp+NJxpQMaRwAACAASURBVNyVtxWMqce0XVAmU05It5Xao+fqqFLXpyt3+R2BbrJA3Lx6JXJWfIC81SuQVbUNRZFsuwqyuwL2iczEDmj5VqYhi+Ym2zhKiNmnLS1gVzfaV7K69UDTsOFoOnQkcODB+3yAXvvUzbjwugft5kcpSpuXYcUnr+A/J30Dr3a9GctXT0Wk/APMfNDkYw7Dtz5XUK7GnMnH4+7jH8JLU4/Z7pBY++wPcNQVdXh9zV04yI7kujUv4cEH51m1k/Z4UA7XFd1tfd6um+1nVCzC2IPPxdde+BRXjUpGrbasexlo55+C3hl14tiwfCleeHwusrpMQdeq5ViyMYLSUQX428xVwDlfw/rFC7C+phYVGIIzx40MLsAO+EKp6Zdg/uvXoFtdJbaUVyLSrQSFuTHYTwa5BXX4/bETsLghWXH+wbjzuadRGemGXt0KjFmA3MoXMOq0qZh2z3P45uh+qDPDuPkqr8zFwW7X8ux3Zm2b//pUlCTH0wmvPCDewaUn3Y3c0Fmu1wmXYdY9F6Aorwh5Zu+mhoZq1OcN/4ddSLp1e3rfQSBTXFIMyyR3e9AeHepLTwE7dLi6LluU1ZDW0paSnLp5izRByYer49Jh/X253GQj4OZ33kDk7TeQW7YBhfn5aLZA3JSdhTiDbo5d8Sc/ih30wy6AjEtAAQvC9iozNCfzguamYITdbKPr6IIX0NDvAMSOPQE5x4xGdteu+yQMn3y4ImjXDX94HNeP5Sm9Akc+fB8qehwOni+juTrT5aW/6mtvryrex+x5mzDpu0PTWNho/eE/ovlfZ2FI6ihO4NUtjfbuZ4Xqcvq8Z6ZK45g/41uY9PNlmP3KC7h4eKrTqa6tXfQ0luVOxJgRbtRKidMSh9Vvwsq1Ky3gcYI4htpKYOiokegRuI/iqW9cgBuXVqG09GNMGD0bKL0di2YX4T9Mt3T17bhwQn3Cr/FXJINypKCLHet1WLrofZw58XR8eOfRuKzmWqx46OuIz5+Bi375ro1CG9E91aIiDLfjvbl6JV5Y+CFQWIjcWAMstOON9etwztoaVFTUoseIMRg9Mty3rmiun43TRlnb0qSsnPHbHYP9R52NS22AvjNp+VM/wOhfAC89dxtG7pkdvDPN8bp7GAE3Nrk0q2U5nFwd0WEdtywd5grGkm//y5YklLtOQqK0RVefNJN4aQ06ADNeV4fmN15B7qKXUFi5FRGbco5nZ6Oel/8WkLNsappr57KabHTMqWpmHDJrJzIYW9A2RjBKZoBuNF6j5QzSEfPVZdN6ND7xKGpf/AviJ9vU4EknI2LT3ftKWv7YtbjwjoVBc56+cxre/bX1xi4ehpZYG/t3xRdHD0/b1HjZEvx25i9w42ybarQR9uU3fx83Tz0bPaLLMePKn+Ddrkfih/9xPQ51Tngb3kwEmXGlacZyyYA9/ZlR25103QZsWPIsZv3ibgvu1mbW++9TcM2VkzA8EXXsemI55tz733jk6UexcFnUdMbg/lcexvnDqvHYzJ/joaceSfBHjsGUyd/G9Tbyb3Nas1sD3pn/AH466Xq8XHo4pk2Zie9dekxy5FWNRXPvx3/98meYt6zOAtx4TP/2d3HFxGOCixm7nMGbT/0aM+97FH9euCzoxpR7FuG2icOx/LEfYdIdiSnhKd84DU+d+T3cfdP5STuqmm9epHzjrlYYuliE6bxuuVg28wocO7O15JlV5RjtxL7pL6zCVBt5R5c9gIFT3sUDtz8DXP4wFtx1dmC47IELcMpvW1+ANQ+vxeJfXokFW+5Ar/U1KF34PUy99zBcWb8QPU//Bi4c8Db+2Lpa1Kz4CyZddmOwn0oP74HSy/8Fzc/fh2lz38DSpfUYOf25NDMmdouII+W3bKTMGahUiiDHRsqX2EhZ3Ojyx3Dm6CnoOeZk0+qGbsHVW1fw2jerpsYQBCor7arE0sJXtuKeV+Zh4vAkEDaqz/o4EPk/+ykCbvwSrbw9kEiXeTgQu/btDsquEWm3grAsXZn6Sq4tafcrG9LZ1/LYh39H7tN/QMGGdci2YNxosbYhFkdWjhEWTJubbcqaAdeCMxiUjcfU0muj+TUs4sDgzB0TjJYZoBmsbRqbQbqR96CBruVb0PiH/4dauwCIXXQJcg8v3ScgKR50ZDCCWWqNHHrs8Rg3uBhVa+dj+kwLGGOOxPVTt78n0ly9BN8acTrm2j3DG+55GH3evhvXTb8MK7q8gCcvjePpeX/G0uxV+O4vrnf6GMXCuU+h+dIZaYPMhjefx7KcczDuqDQBO+mlbNEslE6YHpzkp9//KErefQBT75iK/7lrMRasvMvuhi/DtQd/EQ/aqA3jp2HWdw7Duldesf1qDuIb8fzPVmDC7Ptw4yDg+dv/DTNvnAQcvAS3jTNGpjTvRkyw646LLx4DzF2Imd/5Cc45/0m7BxrFsz8Yj8tmL7VgPAX3P3oCXvzxv2H61fPw6N8fxV9/OM6C3u9x5hXT7Zgaj/ufmYG8T97Ax8lJh+JBpTjZLvh433XMsedh3JFDW0+xVn+I/5m3GTc8c2ybFylusxsqYxbonsGfrznKrgfi1mcu0LKFUU5AzrMry23bKkyUj4rKKmR9VIuCkYdh4rAGLCuLYmRv5yrKdY6x+P6cL2PEqMtsxmc63ls1DtOHnooLrf33LL4HeD3N/WPONthF0QtrnsSo/Gq8Of814KATcMywCOZccCQe6bL96So3LzlSLs08UlazIsXDcPEN/xfo3gclRQlg68sX43vTH8SYKdNxSWkJGhoabKvCmOOAQcUt9Q2feBvKJsqTzzs7Auneea0+u7FMvHS5G+fSyTPxgqNOxpmUdsSXfTjfkV1HkDfW16PpuWeQ95c/ozAnG3EbAXNRV1aOjYoZYBmMs3nlYzTjsMmbNHVtsTlIVKOIQTuwMX1OcwcButFGyYnAzGCdmN5uRowB2+TFa9ag5s6fITb+PGRPOB85XWxqcC+m/qO/im+P/zmunrcR475yJb5uc3nx5XkWlC0SWWo5jbU08uNnHwwCMsbfjolnfxHFIxvw29kvY+Ezb6Piqq/i0SXv2MrbfPR3ggGql+J/5m7IEGSieG3uo2j+2s/TBuxEzdX40+2/DMiL//M+TD3fRvDnH4PqNxbhxoUP4vGX/x0FNb9JBOTSG7D0oevRn9oTdeYdhdllTyJeXWare6M49rgjbPi0EO+vsMVObQRlBtRH3rrfVKpx9PrjrK6FeHNFBY4ZsQoPz/57EHQeffQ2jLPKzh+Rh8WjvoZlsx7AkmnjMMKmbJmamytRXd8N4y+airOTMa//6Ivw1fG34mXD/cJvTg1wD5STfza89me8knM2bmnjIsXVF92rS4Gtg7BKkti7u4A6eQcW4I4LR+EOGYy/BzfMPh0zSw7HKUvvQfns85OShtSIlIzs1dXoMWgS7hzTC/edfpzt25G48obD8YdZF+P0YT0wr9IuAjIliirewpmTJmHaMyssKNsFcKvL26RhvAzr88Zj0apfofj9u1F63lxb1PUcCh66BKdtuw7rbjgS7zy/CL2CEbStzu5/DKZen1ibsGT+ApScPBaD8o/DC9MfwrjLrsGlIyMoswuN3hkvNDI12PP3ZwTCcU/lXcUkMZxLWgdBYlc9pbFT49rK05jtM6x4xVY0/vcvUfSnJ5BnQbIhzgBqoyqjuVirmeXU1lLOipmOjaItsqa2LCsnbBJ5E+2N1xQ3X/RpfuyGdDCNzals8rjVm04X43f9wx/Q+B93Ib51617GJ24nyERqiEUDIpoMJpkaVlu9OSGyUeSxQwdixClXgCNtbK2yE7kF40GDMKh/71YBveytF4Igc+YRaUbCFrDvm7seN3y57VEhp2eZRh81IFE//27lMBh4Y9k6VG5JtKv0lC9sv9gpuhKzJo9Fv6Ej7H7qKFw2c2Fgt6P71c1nnYOTB/HSJIKiZP00rP7kbcyzUWJWzgD01vx37yE2Wk9cudGiqPR8zJoyxmZSFmLqRafg4IEluPbeBcG0qh0cdBMk4a4yp72Di5SLLkZppoFri/JOUQ2f1tmF0RJs3LgRS5+ZDqzaYrX1wDXP/dhmAq7AnLVRFHDQObJ/q5F705AiVFcsxuMLK/D3nz6K5dEyvLdwPZqjr2OVXeTk8So1UzIw4p99EkhPPFBgba8cXfMiLrz6CjzxfrU9yFBiCj3RrSgfhXbdOrKvPQaVsxUPXDYZx39hJtY45pzGPm3ShRh1yb12wZU4HpAbxdrHJmPEiIF44M0yR9uT+zMCbcUuyXYnPvTZrq9E7c5Kw772RMfCdexKuWHDBjTO+Cm6v/+OTStbHE4FYRvBBgE0EUiDQBsEVwuiFoS5JQKu0Q0WeLlRbltKTr0gmDNwJ4O3ArH4nNK2YBzcdzZZE0fN77yN+K0/BtvWkVJhUZ9EczkiLS9HubYFUy0YxlFdXWFbIsAnFKN45Yk5aLYgk27NUipgH50mYDvAcHqW6d2PkxcFFjaKhibuzx8xvBcKbeqTaelLy22pWuu07Pc3Y/q8pTbT/DA2Wntfun18oNCclwj0rbWdUmXrEaMkRUO+gPE2ldLcuB516mq0Ep8lFYKQG+mPS297EutWLMGjd04JJA/eeCGeXZkw0GgxL7d15G22qevH7CJl2qXHt7qwUd2fJ2+wGaBu3eyCyZ4d7l1SbCPghLeiUWdg1u334LRBNlNiV2kjj3am0wl7j0/wyE+moGLaf+KnF6zA9777DVy3dRyuPut1/GLOIlQfkJg+btW2WFVwQcLurXlnEbLyLseA/ETf8+ziZWF9y4UJ7fKHTcQfp5Xi5xN/hSVbdKmY8NgLlVj04M14zGYPnn3vegxOVbQWs75xXeD7pUeuQu9IDNtM1lBr09UTZ2C6jeyvO/siPJXEXGZlyxZgzmMLUNa6CRL7vJMh8I+OS6xPqdVIWUzl6RomnuvE1RfdkfOG9euBO2eg++o1Njq280QwMmaAtGAabMkRrROcGVybbVo7sTEIx4LgzAAdPDqVkpvDIBBbHgTgpM8kHdTBEbM9MgWb1g5G21Znk013x+zqoNuq1Wj+6W2o/8zauJeSgkO66tOdsw45+/IgIGHpHbj62lmYv2gR5j81B983enn5Ulw6dDiGDrsEb1YnPUY/xNwH12Laxce3Gn0lpHEsDgL2BWkDdkubinD6NZcHxf/55s14eMGbmD/nFky16V9OMV80ehiGj78yuE+LpdNxobXlb2++iWfn3Iv5K9mQZMBe/R7+Nv8B3HDjs4GvVYteRyBuqah9VNEIXHBx/yDoTLhhFl5dsgj33vDvwT3i5osSfVn+1AxcO2MO3llVhyGHDQ/u3XNxWt9iBmEbeXfleBqY//jvra22Yjoo2aPx7z+Hedkn4ZyjzX/GZBc/FdWotpd0RHn/2Ma7DTZrsCUZ6PiSjXicsqhdIFWbNJHyeubi4V/eghkzZuCOu3+LplHJYBoZhkuvmmhT/nEsmb+8da2FNgn+8kx8/6Gh+Pl3L8VVN33D1gcsxA220O+HN/4INmuPhhq7qA2lotJ/xiI7NnIXzcHlUx/DOdcei2cuPwK9+16D8kl3Y+mVialn12zslFvxne8cCYutdueoW/D4UyTP5jO2rcWSd4FfvvhrHJMabJdhzrXn4o6l1fjl/J8kVlFHcpOrwIlJf0x98PcY3/R3/OuJ38US50pt3fwfYOrVF+JjAeM2wtMegSQCmeKi4qYLVDoe5W0GZTmQcaYKpcdcui6vLX5Yb2+X621U1PTzn6PbmtUWDy0oMvBaUA6mrPlscTDKTY56GUhTo97EyNmdsk4FX9Nx+ampb9kyYAfT2fSXqItT2YhbkA9G0MmLAGtPzEbQxQzMt1lgLts702wKDtuNdQZoBW5SkpzrzSoahV8vfRrTxpdi4YPTMWnCBEy6Yiru/f0GxOzW/AG20zmtW5CIOah4Z0EiyByTJshEP8LDFrCn2EKq1uPFliOnMDmaHXT2TXjp/ukY2fhnfPvCMzFp6mxbjDYFj791d+JE3eMYzFn8B1w9pgeWWbsuOvNMXDb1RqyxhdEjz70Sl8MaN+8OTPrqb3HGrJuDAL5s7nX404ctZ2vVZXdfEw1IM79dFDwoW4SJv/oLZk+zEffc6Tj3tAm4ce5SW192D5b+amJwS7fArgMetIVoE04bjdETrrPFbyNxw32zcVIwIZCPL15zY9CGeTOvw8QL/5Sa1l789CPA2ZNRGr4h3AIJqpfcjaEHD8XQgQMxcGA/lJSMCB51Wjb9TKNL0K9fP9soG4ihQ4di1pstfexZ0h99+vRB9149kf12VTJg2xvBFs3Hs0/9Dk/aArNezih29ct/tsVsN2DR3x9JrOIedCaWLFqCqfbGj/xDL8K3zh2CbatsaJpKNnW8fBle/duLeOTOb1jfp2Lp+J9ixvWX4oqf3oOrTnzFVqlPQumVM7BoZaJd0bULcMsPbsWsxz/AQQMbsODp++y3Mg93z7oXD89/AwuffhtdjhyH8vm/DvTm28g3XrYKSxeXY8r9i+3+cRE2rFyOZUuWYZV7v9qOiVnP3By0rM5+k0qlVzxtK8BX4Ng2MJauzzsvAjsT3zLFy0w+hFpWVVWV6SQWHTHnqjOtPBOdLucqYfKZh2ledUtGWjrhXDrLli3DtGnT1Ka9lvORp9jPfoYe772LGFdP2wIuixb2qJPd97PFW7CFXsHqatJ8BMqyVJkF21otdaecydwoEWMu4NIWPCIVLAAzjSBnULYgzn3CVdycxraNOeX2WHNA51q+7ehRyP3+D5BbyBcudIwUtalqDtQi+UUocl+XmGp+3FYpj8Zlq2/Auocmbhd4uaJ6xHnP24KeJ1u9pSllno6wEWB1MDq0+7bu0mJHt7rCVhjbaDTf5C3NitvzsdXG6xHw4pxmt9c8FvUo+lzTxPFgJMoTvmFQlLwSSbWF0/nVXAiN/B5Wb4ovImptirbgF12GyQNPxZBH325zVXis4iMsWLQGuT3sESC+PS7DqyxjNsNTU1GDIaPt9Zk9qvHA5MuRd/MfcCmfi177LKbcuho3/eoq8Lb5yqeuxbFXPGi/gTF4+PWHcfawRMRacu+pOO13V2DVgq9r/ZgabzfX38TYoWcFawqmPboENwWL5irsJTEnBbMYGHM57rnuGpw71n2Bhz0q9tgvcObVMzHm9ufw5FXHILr8KVz5vbnoc3Di1khBQQG41W3ZYu8eMdpq3GK/Z6bNKzbjAnssLvV4U8AFFs04CRPusOeiLc1etM6e/W5Bm3snvGcCRf9nv0Bg5syZGDlyJHJsQW+2xQLm6Tbe1pGOaJWlL3vmmTbGDcn2iaC8dOlSXHvttXt9Z9fcdz+6/fEPaM6LJOIoA7O9FERBOci5MCd4DMryICozt6YzcFsKgnK6+QcGU0uJoBxQicBMvoK0TU8H8oDHYGzBm4G50U4RjONBYLYyI7PJspviqPzqV1H0r1fQYedI8bWYcdrJwK2v2YtJth8pL5tzLU5Z/EWsust9RrdzdH1XelFti5YOPOV5/O8Hs51p2l3xtAs28WqsXWOrrAf3txXcjj2nwXmBYyesdKmMLyuxdQb97eImlWwh2NqKfFvw5/BSwgRRtnKl3Ucetn2gD+m1u1ixEotW1OGQEYeid6sOtNuDV+ykCNx11122wLM0FXAVYMO5AjEDqujPG5TT/2o6KdBtdeujz5ah4IUnUBSz0WhWowVXjoptxJptwZGPPTHmBm8DSUTcrMZk5GVgZkBOBuXmIFCnqcmCaiIxuhrFQMygy5zFJJ0IyhZ0WReDr01ZB8E4sDFFjqKVInkoePyPqBs1CgXHHC1ux84jg3D9glUZ+zDy0rtQfmlG8X4nKBo+EWUbJu6dfkeKMCg5Om7VAHvEqmXM2UoSFHoPGrY9M7+3BeTt2S6ntwXk3Zp6DMPo7W9T79YqvDOPwM4ikIwsO2vWufSrojW4t+J5LDyjP+rq7d4T7xVz2pj3kuMWDXlfmcGaA1YLis0Bbbnu97r3jLkyLLWZnWgt7uJ9ZOMF96Lpy0bBTazP8mC1NectWZ/lCR2Oig1vBm22x0mc/s+39jX/+teIVdnKVZ88Ah4Bj4BHoEMj4EfKtvsWbHoDm7ARLx5VgqMO3YhhH9UA9qxjxO4hN/OlIAyIWfaMKUfMHDIbrzl5v5k0p7ibLY6mBsmU87BgEE3eH04wzJZr6/g6zmBkTCVLnJbmPeRgGtvKXGBGA+owJTPWnSITEnsDcTO6fvgpqp5+DrmXfiXJ9ZlHwCPgEfAIdEQE9vugvKWmAvO3LrKvxeSgtksznjt7IK749KPgMaYs5NrtYwuDnJq2iNscrLKy3cxikwXXLBvVBgWLyHwGlYE6GGXb9Le9rzp78FBk9bXPM+ZbhA+mqxvQVLfRtjU2Ko6ajS0is4VkDOEM10xZDM5B2Qm/1gbJRQTv1E4yIxbk89Y/jWjNl5DftVfCkf/rEfAIeAQ8Ah0Ogf0+KL+8+S1sza5ETtw+BmG7760RPXHcsb1wzMJy1Gfb27RybHVdMGucDJKpe8fGTEVKM+RQma/fHDECXb70RWQffxwiBwxAtn1BKitiI2NTZlBvarTp8doNiG95HfHyv9nHdD6z2Gxy8xuMwxmAEwSdBovM+ApPjsITK7tJsyAZ+UDf7AZsqn7FHq891+x88gh4BDwCHoGOiMB+HZSr66rxyrZ3kGOrrYPngm0PMuA9e/pADH9vG7pWx1FvD8oEgZmRj0lTyhYwU4mro+2TM7nf+CZyv3w+Ir162SPKcZTVxFBZZT7seWNGznz71nJ3exi1Z8/D0aX3EYjVnY+YjXCbNv3R4i9HzomV3okgnAy+DMxmG7xbOxWczZ2tAA+axNlwBnTzXRh9GTV1p6JLQXGqaZ7wCHgEPAIegY6DwH4dlD+o/MRec1iOHFtJzcEpU8Tu564Y0BWvfqkvznryM/s0YzOiFnTzOWJWYE6oBn+bLeBmDx6C3Ju+j7xjj7Y3IsXw7qoKvLuhFluj9gy3aTUnvuHICW5EzEfvwhwc0bcQh/XvgYKDrkB99yOB1TPswsCeseQjWKbTOggnRsXJJ7RSo2qnGTZQb0ZB1hpU131kz2n6JaUuNp72CHgEPAIdBYH9OigvqfjAvomcbVPKzqjX9hxfzDH/5AE48o0t6Lc+iiabXa5nYLY3M2UzwCoZL2vQYOTd9hPklo7Eqo1VmPfBVqy30XFOJMtG2PbQOUexjPhWRdzuF9fb4q8K+6D8sk11OHBNFcYf1hODeh2DWOSHFph/YrepK4Lpa46EOVPOqWyOhHeUbBCN3C5ZiNS/bao+KO8ILy/3CHgEPAL7IgIaIO6LbdujbaqsrcKHNZ8GQZYBzU0Rm6Le0i0Pf7VHpOzBqCCgcmV01B5rapIyV0wXd0OejZBzDj8cS1aW497XNuDTrZyGNhvzEbdgz1d1NtirM7nF7PGlRuPTl30JBB+V1eGeRevx/mdbESkuRdbg7yFin9zJy89Gbm5WENjbE5DdtufHP0DU+uaTR8Aj4BHwCHQ8BPbboLymegPKGyvt6aNQRE7uw1wLpi8f0xcf8TNFfDe18VsFZhsl5/zLZOQc80/4+LMKPPxWGeoabNW1KcYtYPMd1fX2OFTMVmPz28jBZnS9vdM6bmUGZz7gtK2+Eb9bvBGflm1DdvFxaO553q4fRXadEGkuQ2N07a778JYeAY+AR8AjsNcQ2G+D8md8NMleO5TFEW+axKeb6u0xqb+cNQi1ERvhWjDlqJlfa4ry23vDhyPn3PGosk8OPvL2ZlTZC/kZtOMcIduIOG76jRZ8G4Kt0QJxY0AzV5DmNyf4CNSW2hh+/9ZG1NqLSxq7fQVNkZ5pWrRjFttWWGAXBjEflHeMltfwCHgEPAL7HgL7ZVBm8Pys1j7hl36QnNpLXSy4vmePSC05rpe9hSsWvOmLga/RFnc1nnE6su2rOa99shUfbYkGI2lOVXMUzJEyp64VnGPJ6WsGavJizE0vlgzUrHDpplos+nQrsvNK0Nh1bKoNu0LkNHwWXCDsiu0/1Ca+wT6V+BTWcsZ/N6d42RL7/u2bqU8Qtse9a+PS7bH1Oh4Bj4BHYHcgsF8GZX65alPD1nbhxxXXz5811O4xZ6HRXpEZt3dtNhUWInLiaNTW1uPFT7YFT0lxuppbMDK2oMucQZej4kQAbp1zwZeCcwODuF0gvPiJfUGpwV4wUjjG2rbjxV1uBzTe52x8pGmTBX++2GQfT9F19qnEK7AxTVOXzDoFJTPe3OUORNctwHeufWWngrJr49K73Ahv6BHwCHgEdhKB/TYob41XpR6DagszPiK17oBivDpuYBDoYhY0m4cMRU7fPlhbXodV2xqC+9INptdgkTUItgzQFph5/7ghmZNOlO2+chCwTRYEcY6ubfRtwfQTG3Gvq7DvzOYOQFPuzk9hMyAzZTdt7RhB2b4idLJ99i9dOvji3+Klfz44nah9vFx7FUx2lzY/jLCdo6RN8EiCS2+n6BkeAY+AR2DPILDfBWVOXfO7zjH77GGQkoGMzxNnSrk2Zf3KKQPx2QH5toiqHhh4ALLtG8brK6Mot+/0crqaQbmegZl5Mjgz+EbTbOQHOoFewoY+ttijUuu3Re3V2AX2ys6+mZqzAz7fDJb4hjX7uifShjcfw+SSPigpKUHv/lOwpNpqsanoubdODnjk/2DOotQoNb7hTdx6wcEJWZ8LMGdRunve9k3da8di8qxF1nr7Bu7rD+A3C+xtZ0GKYtED05L2YzHnzbIkewkm95mcqD+p6WZNQ+rx8lMzEu3sOxnPrmRDLdnnIR+wutjOkrE/wJtlaYbqCc3U3w1vzsH5yT6XXPADLNqwB+bcU7V5wiPgEdhfEdjvgrJ2dOrR33bErWwLypU9CrBwwhDUx2ykbG/vsgecsaGqAXVBME5OXQfBORGIGaATgTcxatbIWcE4sQAsMbKu8VGNMgAAIABJREFUNztOdVfaaLqGX5XKiqApO/N3ZdWHcK575HsoFieq2/AsSs+8Gn1mPYsV69bhg3em4+D8OOb/6FxMeeN4LF61EauW/BGrp56HG59l8F2L20sn4I3T78eq8o1Y8vQETJ0wCs+uVSDshoJIFM/+4HRMXfw1zJw6Ovi4fOWGhXij3N6EZmnD/Ftw3k0leGNjOVb9bQq+PeEmLKd5ZCD+z+//DQPTficwz27UT8ekud2x+MOl+O3X3sdlj/GD9mzrl3FdwfexsbwcL01ZjTOnPZG6gGB926UN863PU3HGH183m1V4ZsJqnHv0LViznaJneAQ8Ah6Bz4dAMFP3+Vx0PGuOIJtsY/BiTOajSYlvJWfuCx+Reue4A3DYyOU4vsHWYXPBF4OwOYmajPeT7T0kwVu/GPCz7V40r3gS31fW/WF7DIp1sxrLzSxoB+8n88UiDeaTC8nsv7Wp/ddL9GfmwcI1BmbSe2qUvPL155CVdzmmXnoMerAf/ftb41fimdmrMf25yRjGj8UXjcWNt5+EUx5ehFuOyMN/ZB+K564YG3ycvmj0pbhz5O14YtFKnG2v6e7e9Cx+8/0z8eDiS/DOgqvQmz6DFHg3Kop3npmHpvohmHPHrUDdh/b2slU2Q2EL4It648RxLRZJw2TWgOyCaXjvoatgLUTdYUMwst7aFl+DF2ZbOB3zHO64dbG5ex3Zfzs+CMqZfgxr33nGHle7HZPHDgsuGEb/y/dw0o2n47WVP8TgYWmvCFo3xZc8Ah4Bj0A7Ech0HmqnecdVC0aVFrwSEdCCpv3nFLa9vCtt4ss+4l0ieOmiERjx/lb0aahHj4IcC6Q2FW5v+WJQbbQ82xzzC04Ry+2lXJaS76g2isHS/gbBOPH6zQTNp6Ap40NX/DZFc1ODfQSjkso7n1hHUM/Om7bbIqsgCE4pfVv8VmuVdrF7xKlkA1VUNtjMAjk94YrQK2IzAolRMHAYCgqGIuuDd/GRLcMePGj7INdAF2dfiPMvOR7N9vjYeZcV2uiczLZT00F9gwsBaqk2fhS7zto6fsIEXDKmN2pj5+Gym/sFepkmpOuqa9E0xAbmoeqq7XaDTx4Bj4BHYHci0P7h2O6sdS/74rulI/bpxeBLjDsRwCI2vfzpyL54c3AMTZU16NM11xYS8a1dtiKbU9C21dswl9PRUctrbShca/ePa2yrs63W+ORRFk3qxowObG36utAeju5b1AVN8Rpkx5P3TduJVctFhg0GmyLB+7PbabpTasOOPxPN9bPx4FPLgnu/1WUbUJ01DF++eABuvPtZVJi35uplePi6RZg4+USUHHgMLm96FXf/aVlQT/XyZ3Hdwi244MSDgvK27F647Mf3408/rMSkfzoT81PT2mpWPo6fMB5Z/zsftcUHYdSoUSgd0icZIKuxfNly2HdDtk8WhbNXb89G7jBMmDIE815ag+JDRwX+hvRJ3ipIRW6zc+hho8fbVPiNeHYZewcsf+5BvJL7FYw9dOdvMQQO/B+PgEfAI5ABgf02KBdndbXRafASzSA4cwo7CGwZgBI714Z8L4/MwvqacgzrmY/+hdmosTd+RS2oNlhw5iKyRo6eWbbAm3hUioGaU9yJaW7y+GKROPVswVm9vemr1p597m8j78F277qpYSOyG8tVZZu5pq6t+UE/OK0eby7eY0EZ/c/Gkj/ejplXnIJ+tlDqwJHX48NoBGf94ve4Yf0NOJiLv4aegvem/Ro/mzjMJgqG4SeLfoPPrj41WFg1dPTVmHb/S5iYnPbtbu2uM/vRUx/Bo//eE5cc+y28abEvlyPtZOo/7of40619MKF0YOCj/0FTrU4TVn+I0aeMxvvphri5NvNgo1slKyZTBON++ATu7PoLlPazhV7W3qGXP5a4p+zaOHRk0PlYdP8NuPqUxGK10d9Ygd++cAcOCg+dVYXPPQIeAY/ALiKQVVVVZbcfE+9jDu61WsDgyM2lWQ5vDD7kBUEoRPMZWclISyecS2fp0qW49tprd7ELO28WjUbx0LIn8HLjksQXmezShB+A4P1fm4HOOIWtmuqbY5jc6xxMGDwO97y2CjPsbVy97POPfE91jn1Bgs82819qMZkZ8uqHAZTT1gz+hniAcYzfWDb8t9gbwaafOAiTjzsIka0PIb/6cdPccaLPwLERthus7VlYXT8WeYMnI9++5bzHUjyKalt5nl9U1GpaN1pdbSPofBTx3nKrFEe1vf0skl9kn7BsJWh3IR6thlW5XZ3tdhBSTLQ1Ym1tJ04Z+hxy64seAY9AB0fgrrvuQmlpqd1OzLHzup3TLU+3RWyQJh3RKktf9swzbZy9lWwXT48dG3GC17dLLzRV2acULVoGi7EsUAafS7So3LiDwGy7Ca/Vvo8x9SdgwojeeOqjzVheVY+uEQuJBjwBZnC0zJJyq8fqSIRjC6DJCyEyK22kfGT3LjhrRB80xcqRG/0rFXeYGJDpk0Hero/YkSA+x3L6o7DVTdwdutp5hQgD7/ZmDNLpE4NfJll6izCXAf3zeWjtMXNbW+ulShn6nJJ7wiPgEfAIfE4E9svpa16R9M/vY4uGgnFrIljatC+ngNuTIlk5WG5vo3p5yxs4oDgf37FV2byvvM1eLFKrLRazRUQxW+gUs69LJbY6m6Imr850yK+zraK+wd6/Hcd1Jw1G76KuiFTPQ058x28bC0bI1thgyl1B2cqVlXZRYUGZffTJI+AR8Ah4BDoWAvvlmZtT8wML+6IkpzgRiIPpeiMt0uneMsN1W4lT1H/assBGyKtx2iF98dPRA21xUAOq7OUiccujsfog+FYn8yAQWzCuMxm3elu9XWEftohYoP7pyUNw4rB+aKx5D/k1T7VVbSsZR8m8kEiMktn2bDRk9bL53QF2odHOK4xWHn3BI+AR8Ah4BPYmAvtlUOYosntRNwzNG2T3YW31s0VgLpAKHo9qZ2DmFPbWeDUe2vAE1tduwsSjhmDWuINwiL3dcWN1HeJ23xoWeLMtEDdbrg319Wgw2WbT+YItErvnnEPNdijKqtcDW2bZd5bTLSVufYgEM9XW3CwjeCHBoNzUZHPl1pcaHISCwu5+pNwaMl/yCHgEPAIdAoH98p4y7/l26dIFXyg+GIs3LUOurTxiUA7uLVseLNPitxu56iu4L5x+X+bZm7c+rl+Hez57BJP7XYCzRw7BYf274w/vrMETH2zC+3af2ZZYm4/kqJX+7A0jR3XLx0VHD8TEo4dgcM9ivFv+KbZu/C+c02vHK67NW+o+skbJDMy8mVwXbURd3kj0tr6xjz55BDwCHgGPQMdCYL8MytxFDFqH9DwQJRu7odJefRGMOvnHVk8z6mUlAzIH0O4q6vDu7ZKVixX1n2HWut9hfK+xOLnH0Zj2pZG47NgD8cHGbfi0vAbborGgvp4FuTiwpAiHD+iBvsWFqGqoxRMr/oqX1v4JPx6yxka3tjtYYYbUKiBbgSPkYKRsK9O46ruiocQ+JzncB+QM+Hm2R8Aj4BHY1xHYb4Myl6uXdOuFf+p6OJ6ve83eOJVjA8/EG7k0PM6y0TJHz4yTjNGZ3vbFEXNFUw0e3jwPr1e+g+OKR+GI4kNx/EE9MNbuN2ebnD7t/V32EpF6e/ypAs+seg0LN72FxVtW4aYB5ejfdecDMoMyH4OCTV3z3drbIkejuLhXsER/Xz/wfPs8Ah4Bj4BHYHsE9tugzPvKeXl5OL7PkXht+buoi9gqaHsJNUejHLAmkk1kJwMzZ6DbelSK95g51b3cprM/tK371hcxINIbvfO625u6Csxdlr1kpNbuP2/G6poyW6ldGzxze1LXBpzRm8+Fc9I8fWKbuG4rmAW3QnCRwJy3ny0gc1S/paYYsd7HBX3yK6/T4+i5HgGPgEdgX0cgFX729YbuifbxeeXBfQbg+E1fwPya15CXa19nYrCzBVMtK+ASgTmImBb82grMbGMkGBXby6aa6vFR/Rr8vX5V8Exy0P6YjbxtZMvwm5udY7rA5L5VyOeXLNJMWzMYMwUBmQULzJqybrSGBFPXcRvJ2yi5IvcE9CwZaCP+/XqXBnj5Px4Bj4BHoKMi0BJ7OmoPPke7OYXN0fLJ/Y5Cz1hxsCarOdaELAucDMzB4i8LlomcwTTxKk7GT84at5X48hA+z8x7zoXZecjPykOuBeyI3ftlUK5rzMbZ3StxNN8zGQrIjL8KyCSC+93JgJyYsraW2Ci50QIyR8kba/qgsfsJQV/YJ588Ah4Bj4BHoGMisF8HZe6y3NxcDOjdH2f1ORkNtXyRhwVhBmYb1TbZdLYCchA4GSC5CGwngrMOiyYb1nJ6mlPQnKruH4nj4pLq4F51SscIBWOOjoOCMRKLuaxoU9VNFogTAdnkNlqutLeSbSs8Az1KBgR9kS+fewQ8Ah4Bj0DHQ2C/D8ocWfLxqOMHH4nj84+wF37YGJjB2LbgHjPvM9v0sKa1GSC5MTAzMchq5Nzm6FnR1izrTXFijwoMLuRINxV7A38KxhwdMygnRsaWm02jfbmI95Ht5WG2wCsb8fpmrG8+AYX9jg764EfJAYT+j0fAI+AR6LAI7PdBmXuOU9hdu3bFhCEnY0hTX3tlpi28So6Usywgczq7mTyOooMIbLnxOKp2R87hAG0qqWluvmGL5QYb7R6eF8X4nvWpgMxAvF0wNmWurGYwZiBuslExNwbmeMyCueXrokPR2Of0oO3sg08eAY+AR8Aj0LER8EHZ9h+fWS4oKMAB/Q7AxUPOQNe6wuCzi402jd3E4NxgQ1YGxtSoOTmtnbzvnLjv2xKgsy3CMkBri1uZsZyBl/k/2yi52NZjmbkxGNxts+AbTFMbzZGwgjHp5iAYZyHeYLIGuycdz8ZnVT1Q3eMC9LaFamy7f1lIx/4h+tZ7BDwCHgEi4INy8jjg1C+D2/ADhuFfho63wNwFcQbdBhvhcvraAnNWuuAcjGY5ctZmDoNAy0CcCNScDmeAbrDg+qX8KpxYZJ+2NLvECDwRgINRcRD4k+VgVbWNjm1UHG9QQKZv+5ZzZXds7TEJJQPslZrWZj9tndyJPvMIeAQ8Ah0cAR+UnR3IRV+cxi4dciguH3ouukYLELVoydFyMGpm4OUiMAvSHDkz2HLJNqe2m2wInLjfbME4GaCzk3mwrNt0i22F1leKK4PvDzMIp0bEQWBPlLmimluTTU83MhgbzRFyPGa7yu4jc4S8pefF6D3osKCtbLNPHgGPgEfAI9A5EPAPtYb2Ixd9MTEwX2VvEZnz6V+wKmuTPUucE6x+zrZ3bvIbzMHrvSxv5js4beNLRjgctoFsMJXMmelgubVl/OhF1FZcX1hQiUNym9BgAZdT2Vx6zXvNXI3NdWOJ6WveO+Yo22QMzJRZMG6MxbG2fjBq+9iU9YCDg28Tq62syiePgEfAI+AR6PgI+KCcZh8q2B06+GB8M9IFT699Fa9uW4ouXXPtWWMLohaEs210zMDMIJ3FwMy4ymBtbwprNJ0cK5tGcL84bqPqoZEYzimotfvSNhIOArLpB4HYgjADrymzHKzyDnQ4Mub9BT721IjNucci1veL6DtgkA/IafaZZ3kEPAIegc6AgA/KGfYiAzMXTw3NGYqvFXXHwWsG4rmNr2NTdoWNmnMt6Npbvyy6NloQTgRmxmgGaJveZoy1jSmY4bZoe0FhJXrZcLjB7hFz5baF9mCEzEDM4BsEYyO5qKvZjM29TVk3obyhNyqKxqKw/1Ho3aMHCgsLg9Xi9O2TR8Aj4BHwCHQuBHxQbmN/8jEjLqLi9qX843BI0QD8bfN7eG3rUlTnRJGfl2sBuCmYyWYgbuQImqNmC845HDVbilpwPSKnAaPt3drR+kTADQJyU3YwMk6MkG20nBwpcxY8HmvElmgRqgqOQn3J0TY6HhzcP2ZA9ou6Erj6vx4Bj4BHoDMi4IPyDvYqg2BRUVEwOmWQ7t+7H07ceBhe3bwMb1d+jE3xrehS2MXuM9uI2UbOWTbEZYDmxkEwn4E6r3sN8uz+MJ9RNqkJLKeQ89vJxJFxbU0MNeiNyrzDEbMPZfTsOxh9bOEZF5+xbv/Yk9DyuUfAI+AR6JwI+KDcjv3KYMjpbH7sgY8gccQ6pN8gfHHTKCzbtgof2LaidgOq4tVoyrfvRZk+7zNbHMb4LjEcldOImK2kDhZ0WVgOnlkOVms3ozoK1KMYdbmDUdf1IDQWHoTeffsFdWiq2o+O27GTvIpHwCPgEegECPigvBM7kcGRQZmjVgZMjqAH1Q/CyTVHYcuWLVhTV4b19lnGDfa95LKGbahprMNxubXYVJ0bLO7ijHbcJrvjWYWIZfdALLcETT36oiG3L3r16oW+NiJm8M/Pzw/q8MF4J3aOV/UIeAQ8Ap0AAR+Ud2EnKjgzgMZtaTWDM4Pq0NhQxGIx1NfXo6GhwR6Fsmec7WZxuVMHv3VMewb2YrPnc8bayONo3H8P2QHMkx4Bj4BHYD9CwAflz7GzGTwZSLkx+HJjINaWeAaZq6yDu8vBPWFOhXNjYNZGPz4Qf44d4U09Ah4Bj0AnQcAH5d20IxVYOdJVcoMxeeGy9HzuEfAIeAQ8Ah4BItASQTweux2B8GrpcHm3V+gdegQ8Ah4Bj0CHRiD5NG2H7oNvvEfAI+AR8Ah4BDoFAj4od4rd6DvhEfAIeAQ8Ap0BAR+UO8Ne9H3wCHgEPAIegU6BgA/KnWI3+k54BDwCHgGPQGdAwAflzrAXfR88Ah4Bj4BHoFMg4INyp9iNvhMeAY+AR8Aj0BkQ8EG5M+xF3wePgEfAI+AR6BQI+KDcKXaj74RHwCPgEfAIdAYEfFDuDHvR98Ej4BHwCHgEOgUCPih3it3oO+ER8Ah4BDwCnQEB/5rNzrAXfR88Ah6BToHAhx9vwVvvbMKyD8qxtaKuU/RpT3SiZ48CjDysBEcf1RcjDum1J6rYaz59UN5r0PuKPQIeAY9ACwIfflyO5174FD0GluD8ySeg36AeyMmyDxTYlsU5TeYt6vsNFXxjz/40N9n36C1vtG3j2gp88P5aw2ul4dBsgbmk0+Dhg3Kn2ZW+Ix4Bj0BHRuCNt9ahqF8vHDVmpAWgZlRVNVpQzrLPulqvbNuf7zVaPAbsj30d14JyM7p0Kw5wWvziUhA3H5Q78pHv2+4R8Ah4BPZBBP7+QRnGTjwMVbX1yLMhcbYF5Eh24vvr+3VE1r6ygMzP38btgqXJ8gYbMR8wfCAWPLZQGp0i9yPlTrEbfSc8Ah6Bjo5AWXkNCnoUoSHWgOZIDnItIHOq1iIRcoKh4p7vYdU7d+Oimyvxu6f+L/rtoLq3/3sCZtd/F/dMO2MHmrtH3Jh009ychZgF5li8McCLuHWm5INyZ9qbvi8eAY9AB0agEfUxztEm7yHbvVJYAOKN5N06dd0cxZKH/xPv1HdD36IuiFVvxtaqgfjyt87G3370Y2R98kUsnvcEInVbUFR6IY49tGeA6bZP3sHmeC4ikVzkRPKRd+hx+GTqVzD3hFdxXN9c1McbYJES8dxeGHboEOTs5j0RXJckL1LiVogxSvNGMxSud3OFe8mdD8p7CXhfrUfAI+ARaIVAswVlW8nExVxZFmcYaoJgnIjLrVQ/XyGC4kNHY8SaP+DW6Svwvft+gCHNMbz+y8tx78AbMP3mk7H1r1/HL+4/ELcv+Fc0BMGvCvOvPQu/XXEsxp5zQKL65gKc8bX/g5WP/wc+UINqnsXCxdfhgVe+iyLxdlPOeMzrFIbhJmtTgxG89w7DrTMlH5Q70970ffEIeAQ6LgJN8WC62markc3NYk0Wh5tGM1DvvhRB36NPRaTyzzj86ttw7NFHYfncK/Gf972ES++diQMG5mPtimrgn69EXtlH2JB9KHp1tYuE5Q247LEncd7wtsKGjaZP/N/gfq+Nm3drMhiCxBjMWMxJBbvtboV4UtI5srbQ7Rw99L3wCHgEPAIdAQEbHkcZbTgU5GprjpCTkWj3BmXzH/8Ej35nNqqnjMa7C97H4k8G4tRjumLOvTPwafPTeGXbeTh32CL85suX4/AHPsUFXyjG0FtnYdv6xzH7l39B3iA+gpSPom4FaKjfahtQv7UcJcdPwJd+dAqaLU4aa7emVFA2fAhTPQfIvHrhtEInSj4od6Kd6bviEfAIdGQE4sn7pDaFbVGHU9d7Iihnxdbj5VvG4UWL/uML12P+1BtQ/5PX8ZWD16Jw0M8wIfdglC06BRd88yQsz/0UH1hbGhpzMPjMyzCkZjW6dh2OvPxca10Z5l/6ZQy95684pMCmk+u2IafP0RgyqJjPLWGPjZStPU02fcDFXpxFsCsM/uk0yQflTrMrfUc8Ah6BjoxAs83LcgETAzEXMXGkHNxT3s2datxiI+PlI21qvBjHTpqCnNw/4eGaGGKFwJ+vmYB3m5ZiXXYpfr64F5a/9RIuPikxVRw0o+AARD+Zh/IRl2DU8IPR/+izMaj0KPR1Igmnlfdk4rPKjMeNlnMdHHHrTMmBsjN1y/fFI+AR8Ah0MARs9dK66mY+AYU8G4hm2TAwi5F5d6eCM3DuPaPR79qrsNpuHRdEmxHN2oalHy3FKf/1Ak7KmY3/9/IYTJx8LDY88lV8XAWsMb1EWo0Xbr0Bve++BL2qY6jq8hLumHwuhmALak2hbOVSlF7/Cs4/q1QGuz3n4i4OkBtihhGvYLjqqxMlH5Q70c70XfEIeAQ6MAK2YCkv10KxDf8i9n7NbAvIeyQoBxBloUv2i/j7nx8Gnn4d3SfZ1Hl8I166ph9eotxGyr8xYvMnS3HWr7OQa+1ialz3Jt4tmIZpI3shF1Vojh6FS279HQ7sbrHR1os31ceQXdwnpR8Y7eY/zU3Z9mYvhuXki1X8Qq/djLB35xHwCHgEPAKGQBwFudnBSDkSyQ7e6MXAvCeSebe3hmWhuGdxsLJ7c9nfsWHZCfi3vz6CAZ/OxK/+fAS++90zbKR8CZaabqG1KwubsXDGd9BUV4Pf3XUorrpuAvLQDf0Gl6DnP3B4x4DMN3rF+fhY8FJwf095Txwj3qdHwCPgEdivEeDypfwuFoSbsoIRM1+zyUd+soLnfnY3NDXI7n8NTjjnIvQ5qhcePfc8vHLqb/DVbvYWsdx8bHhrDbpYW2o/eg25/5SFrl2q8d6dJ+Hpqtvxs9fOx7t3TMAtY6cEjTr1qd+h6gCOnO2ywt5GVr9tPboMvxD/dOSA3d1ou2Dh9H5WcE+5Ibjpzkn+PXwTe7f3om2H/8Drm7Yb4qUeAY+AR2D/RsBGyvwslD2bzHvKOZy+5kCZwXm3A3MAxv/8JwmvxXl2R7gZE68Yh+586faof8O99zyHH9sjUutM48qphah97Wb8eu6puPmv30RvWxB22k/ewInfWoE1Hy3B6vc/xOq3XkcsmnDXEK3F4aWTUEhfuzFxwpo3k3nPvdFGy3yEm1PYfvV1AIT/4xHwCHgEPAK7FwF7l7ONTvlOrzz7XqPNYAf3lDlS3r3hLdTqAWPwo/e2AF3yWwSDT8X3n18KFPVBr172vNMhM/DAW3ax0KVFpXDwISix7ahxLbw9STEoMyBzoVfcZhOCe+4BMn6h157E3fv2CHgEPAL7JQI9ehYiXrHZ4mAvC8r2HWUu9rKAzE83MiDt0cCc5wTkAP18FB5yUKv9UJjXqvgPLaj/TRaMucYrbs9Bc1KhevNmELfOlPz0dWfam74vHgGPQIdF4PARg7HJHkvqZ6PUHHvUJxL5/+2dTY+c13GFOyIpaSMIUARIMgIkQQTLglcxvDay8W/0b7FhSFlpEeRj6QBCAmQhyFlEWgnZSFT6eTnP+Ez1fZtDmuT0MOcCb5+qU+fWvX0EdKGHI/L4HH+Evf2uF8P53r6zP//i258aH78mbwOZb8rHX/J6dPxRwn8e/cK312l1KL9O/zX7XupAHbi3DvzyFz87/PYf//nwh98/PvzdLz49fPhXP9n+7uttMPOuXvaPsS/UOb4l83Prx8efFfBvKfN3hfzxv/94+I9//cPhf7/6r8Ov/uGXF3rz57tWh/Lz+dZddaAO1IEX6sCnn/7t8f+//eHwL//274ff/eafDv/z7fFv7ehaOvCXx/+V62ef/s3h17/6+wO+vU6rQ/l1+q/Z91IH6sC9deDRo0eHn//848NPf/rXxx/Pfn/8crh9R7y37+dlXpxffnv48OHxLyl5tD0v86xX3btD+VU73vPqQB2oAzsOvI5DZuetlt5x4P/z7w7sWFK6DtSBOlAH6sDdONChfDe+99Q6UAfqQB2oAycOdCifWFKiDtSBOlAH6sDdONChfDe+99Q6UAfqQB2oAycOdCifWFKiDtSBOlAH6sDdONChfDe+99Q6UAfqQB2oAycOdCifWFKiDtSBOlAH6sDdONChfDe+99Q6UAfqQB2oAycOdCifWFKiDtSBOlAH6sDdOHARQ5m/Mq2rDtSBOlAH6sAlOHCXM+mFDOW9NwDvo9HmidaKdaAO1IE6UAcuwYGcUcbeyxxcrT1+pZ3crYbyuQvMw9XOg/b4qWteB+pAHagDdeASHdibYysebi51q5ras0PZBopBuVXTFZd7G9eBOlAH6kAdeF0dWM3AvZkpP714Y6/JFL6sfO9iL+u89q0DdaAO1IE6cM6BVz2Xcg7f+KachXMXvm3NN3YO7fXtt98aFutAHagDdaAO3IkDOYvOzS5rL/KS9NyG8p/b3P0Tb3vZN9988/Dll1/eVl5dHagDdaAO1IGX4gCziJl02zXnnvlt90/djW/Ks3gu92DwNit1uZf43Xff3YbyV199dZtW1dSBOlAH6kAdeOEOMIMYysykOac8LGeZ3Apz/6q+xz3cK0z+WQ9IvW9CbvZ+5513Dl9//fXhs88+O3zyySeHjz/++PDee+9NWfM6UAfqQB2oAy/cgW+++WYbxgzk77777vDRRx+dnJHzy1g8ES8IteC5dXYoZ5Mff/xxt08ZTO2PAAAQDUlEQVTqjKfYi1hPfPvttw8ffvjhgZ/lf/HFF4fPP//88Pjx48MPP/ywIWeTy2VOzIPWeIXch/0s6q6M5Yp1oA7UgTpw9w44N7iJ8RtvPPkBb86QGT948OD6my56HjTwmRPLvfXWW9uXQWYRM2n2JM97bMnVy542NRmnPnni5VB2w9MGlrrZNPPUEM9lHRM++OCDw/vvv389gB3EiQ7cHNBw5NZWyLnwicTs66oDdaAO1IHLc4Ch6XJ+JDo/JjqE4R26ahzKK5xazxbpwbKX/Apvo1n1OhnKNHJ4nTvIy02NF8l6cjPOS83aKvdu1jyf/HlW/kd/nv3dUwfqQB2oAy/HgfxcN04kvs3j7W6jVcMe4xWuesol5t7kZ4yO9ZDAQTdFmbshOWMPNQflcp9x1uTcI05N5mhYDFS/6WafJ9W+1oE6UAfqwH12ID/XjROJzz3MiHP1rOETuStr8qJaNe5JPrmMs0fyxtfflBGuhvNeg3OXyT3q5BKzRsz5mMifD89a5l4ezsFM3FUH6kAdqAOvjwP5uW6cSLz3POtARs9a9ZMX1ZCzzMFc8skZT6389VCWENkwh7RNskbsk3uTM05Em/mMz9XzHGLMnHdVU6wDdaAO1IH76QBzwWWcOOeG+bMMZPfsIeevapPPe6o/x2XNGDwZyjSbAw5utZL3EiuOvVk35hzjRAzlx9LJGTuArXsv6nvLmu9LRJ/x3v7ydaAO1IE68Ood8LObk41FOfKnPU8b0nv1vTOSJ2blHZ4wf7qzeeqSkwdPhvKeMPmVKbM+NdTz0s8TO6yzl+fyW3MMWIY1OB91xTpQB+pAHbgfDuzNEW6/miF7w1Xt0+rqzqFn66Bac+vwrozPcdS2ocwGhphIgThzOXQu6i715MYvEh3IngnCOXz9hS913qtYB+pAHagD99MBP++5vXEisU8O3Iyti+dqap4HvSN7XRlbt2aeGuLlb19TmMPXnJoPHLFL/nkRs+xJD3PQH1d7nlyebbz61kzN9yAm595iHagDdaAOXIYDft5zG+NEYmbB5Mh9rJuDcqK1mcs/C+oce7y3+2dtlZ/8+JrNDq2MbZ61eaga0XrmcD4YQD/z1FFjEItq3OOQdg9ILx/y3Os58H6rJqZvLnRddaAO1IE68OodmJ/HeQM+z13q4JwNiWrlVjo5UW3iXi3vgZ6VuIpTs22IPVm7Hso2WQ0lajwONrXZSI1ozXyFqeHNO2gzdh8cy4Fqzp28l/3k5MHVXjhrm+D4wnlddaAO1IE6cPcO5OexsZ/9zoZEbpw5MXo54syTX8Vy53B1phzIcv+Mt2K8oLvxZ8rWKDiszsV5gAPQHrxxOS+USH01hCdvv9TS19w7gPA8Lu8uR84yJ3bIE3fVgTpQB+rA5TjAPHD5+Z04Y3Ie92VubB0Nj/xtYrWJnsU94cWMNzLqalb89Tdli4k0ZYB5AWMbZj255N2bdd6Evc7FDt580w5ROfrw2Mdc9FwQLpGY+3XVgTpQB+rA5TmQn8/GIrclftrDbFBD7JPcs8Tz3L08eWOR84y3IF52hzKbHGKh30JrvhGRovEKZ91BipaYgQuy9mJq3Mu6w9dhTS+5RPZRY8G7MpYr1oE6UAfqwN074Gc2N8nYHC4feeZI8ubgbWL3qjV/HvRO4GrRM9f1j68hHVCIZuxl3DwbuSd1xLwpeoH89ZmZ52DN2H1wGbM370lfnz1+Vaeni3pXHagDdaAOXJ4D+Vnt7eTA+aCBY1ZkzXzi1GY9Y3X0n7xnojHegquX5IkzVydHfvK/RFFkUIluSrQG7j1c3KGaGvpQ8wxr6kGWQ5rYwSmXOfvNQR4586zTL5e15BrXgTpQB+rA3TvAZ/lccmA+6MyZI+qIzeEyl19x9nJP5hnbI7mMvdd8H+ZoU3Pjx9cUc0hNsXVw9djY2sy5vP/YBLGLM3PgWvMu1tDDyXMONXDW1Imb4Gq/sXsyb1wH6kAdqAOX4YCf7d4mc+J80Jg7Q0A4MWM4+RVat0Z/Y8/JM+Fmru5cbdt09YLueiiTMMAm5gYPlPMg+dxL7MMbsTexgzTr9HD4TqTGfpZ7ie1pDZxx5uxhyc14K/alDtSBOlAHLsIBZoRrFTtDrJnP4UnOAq2dQ2v2A5PLWA39MzYXqa2WvHg9lN3IwKK4h+iyxuUccuzLxxpcxuZekP3Uc9lTdFBPDXU11MxFuRUmR9xVB+pAHagDl+MAs8JlvEI4H/TME3PQ+SIPZqxm8pnbz33ukZ+IjgUvZiw38eTPlLfd8UITBpzNHIDkWYPnEmqtg/JeEk3qrcexW508hzF7ctkH9C5y6IxB88SN7EsdqAN1oA5cvAN8xrMSiVe5vOjsAeESZ2yuzjPhrYn2F+HVi9Rc6qzJJ17/9rWDSzE5DUR4Yw/xANG95iL7uKz7vXgO3Izpk7n74OhJzgJXz6xt4iu9tcmZF+tAHagDdeAyHODz3mUswhP7zFwezCG6iuF81JOzkrd27qw8d8a5zziR+OTH1zRxCCYiZnkINVdyvAH3wZuj9U0SoyGfw5cai73UWGg9z9i6PFpjNZnbJ5G4qw7UgTpQBy7fAT7zWSuES95ZA0dsfebUrM84tdbUZs3e1LwfXC41k1MvorseyiQOsdxobFM0xmI2zJhLogcdvu63hj5r5CzvwhnnBq5adOzxkbePKA+ykn/C9LUO1IE6UAcuwQE+112rGE7eOJG9zJrkzFcoh544c7kVZv+9mLtYI95bJz++ZhODCnQll0PMA9Snzpg3xULDY54cWpZoTYRnMIvw5vYV3TNzeTAXuq46UAfqQB24PAdyJng7uUTiVS7v3HHIitSNQR5W7lOTtZU2982YnEUv0TOSo3b9i14UHFAZ2wBkZQP0XjS/7cqhd3jKqbMm7xDNnLPQUzP2bub0cW9i8sQs6olbMl7UDLppHagDdaAOvGQH+FzfW9ZEdMTmxolomCnJZb4Xo7cGrmI1s5583jHvQJwr8+sfX7tZIcMJYaIauazblAv6F4TA8cDlysEsT08ea+bsn4OZPXDU1InU9mJqLOqujOWKdaAO1IE6cPcO8BnvyhiOXG4Vy4HOIFA+4xVH3cce5nMv91lx9vW+IAt+otobQ3lTXb0gYGCt0IZcguFoc/XyIFzynsG+Bw8eXO918EKgz6HLedbnfeyfaA+Rmitj69aKdaAO1IE6cDkOOGu8UebE5ony5zAHKL3NJzqj4H3yrKmnV55rXc76CuFYN/5MmY0MLQ81FrO+4twHGnMpFkOVZU5MD960NXJ5z3I4Z64m97E398/cPdsB8eKeoBrWgTpQB+rABTjgHMmryCUS7+UORnoYq80czhw0lj+Xo8mHs8yNRXhjMbmTb8oUHVTGiVu340tyxCwuzaAEWRmbg9Y5Rw09iEWHqudYM6duTE/1oLk4uU1w9WItucZ1oA7UgTpw9w7wGT+XHJgxOrnkk5PPAWtdToQ3FuXI5WZsP3DeKTlrm+j4Ym35i15T7CaRQcZFGJSsjGlsnZr/XCMxy+FK7EC0j9+a7UGdGpic+0Bje5hnTY4zWZln/KTa1zpQB+pAHbgEBxxU3CXjzOGticwkNXLqEtHN3H3UrNtPbubusZf7yNVaW+F22auX5TdlagwrNju0jG2YdTn2eQGHLzmxvL3Js7fDV52556Lde+iJzt4TPWcTHF9mLp/7kmtcB+pAHagDL98BP8dXJ80audw5VHcOnTtqyInF5NVa467E5mrhicWMN3Knfv1N2Y1zYNkInli0KRdx6OYgTR4t++CM0bLmt2N7TC37fexhLsqDLmosccZbsS91oA7UgTpw0Q44i7iksejFzcH5uE+eGTP1cvDOIOPEjN1jf/fJo+WxLspthasXuBu/6GVRMYPM2FqidTTGXMSBawxShzemDxyPnD3kRfub5144lmeaT3TPJu5LHagDdaAO3EsHciYZT2SmsOB9Zi5/G6SfuqfFeU7G7k/MOjHr+sfXCBlkiQgcbsSsrHM5B61DEY08WhY1Y/qR8w3ZGLztszU8vqQejjPhWHuYtU0YWvNiHagDdaAOXIYDzg1vk7nxCpMjNqeP+W3QAcw+Y9A84+w3efR5h63BFScv3vimDOlA22tCXR1ozCVWg9nLsY/Y/qI/vibPh/MzzzhrxCzrxiuEY6HtqgN1oA7UgfvjALMml/kK5dATmxtPTJ01Z1fmxqB1cMXL2VuUF+FdcCfflClSmIMLbi40XIhhnLE6ayB1h/YcxNbZZy/0eQ9yH3TGYOZbEi/W1SSGrGEdqAN1oA5csAPOIJGrZuzV4eSNz+X2QcMsytz9yRPbz3hPt+rl3u2gq5fkdn/RCxEDTXHG2QyeizlMjb0M6GCkRuwe40R/rJ0c8ewnl2icZ664rVlf6kAdqAN14N454Ezi4sainHmicWrg8jlXS50xM809e7FaUT258RYcX+Cuvykn6SBDQOzmjNWD8A7jvVi9PRnixuzJB22emTVi99kTjjUxuRmTs9zzJOtrHagDdaAOXIoDzoG8T3KrWE5krzE4H3tP3pw6842cJb83hJNXK+Z+Y5Bl/xt/ppyFOazcAL8XcxnqDNxVTM2+XhztPFdObZ4nl72M1W0Njy9q93L4qVFbrAN1oA7Ugbt1YH6mc5vJzVyNPLiKp46ZpM6ac8oeiWhyT8bq7GPf5Km5kv+L77///vq3nhxQz4Jo8+EQ8hys1rMGZ74XU599tk3Hl9wDN/PkZkzeVQfqQB2oA/fTAYcct1/FchPVy+fQnTU06sDV0LW+V5s9POMs5lBGOIfbzNUkT5xPapLf24OetdLKi7MHvMsa+V48a+4t1oE6UAfqwOU64AD0hpnvxWjnYFQrpia1e7yaiSu9Z6hFw0p+5jd+0WtTX72wicE2UU3ycqL7zEH1DsvM5VJHDG8vUV5076zTf2+5Z69evg7UgTpQBy7LgXOf6dw068Zgxr6j5DLOPu7Nupy6vXzynuu+Faq51S96KeYgh18ONvhc6uCM1e/laNGoc+/kqdsDdLlPdJ/1zHNf8qltXAfqQB2oA3fnwPyc9iaTz9xYnHvkQePUJG9d7mk5faY2e1uXm/l1/+O/4rT94W4OM8SZE888NdbUzVytdXKWufrkjBMzdo+YNeJcqUme+FxtapvXgTpQB+rAq3PAQbU6ca+WvPFE+k2OXM7607isG9tjD7M3MUvtFjuUSeaAypx45uxhZc1YrfkT5Z+01lf7U2t9hVOXmhmrPcenpnEdqAN1oA5cjgM5uPJWye/F6K3t4dSokydfcav6SouOda621XMoQ+SwnPlqwKJhZc0ek5Pf05/jra0wOeK58txnqU1t8zpQB+pAHXh1DuQQnKfetqZuov2SN6ZmDBrLm2dtxakHWak33wpXL1v9WYYy+3LQml/1W9ZW+hySxlOXvVPjWVmf8Srf4+C76kAdqAN14H444PDL204u84zZYz7RfvCrWvL22eOyV8b2Tc4YpP5/duxgX4MHJT4AAAAASUVORK5CYII=" alt="Alt text" longdesc="http://maxiang.info/1398004698705.png" />
看下gzip后的main-almond-built.js
多大,只有1.6k!
-rw-r--r-- 1 user staff 1.6K 4 20 22:34 main-almond-built.js.gz
通过配置文件打包
上面打包的命令行有点长,对于楼主这样对命令行有恐惧症的人来说,还是比较习惯写个配置文件,命令行则越简短越好
build-almond.js
({
baseUrl: "js",
name: "almond",
include: "main",
out: "js/main-almond-built.js",
wrap: true
})
接下来就很简单了,很短的一行命令
r.js -o build-almond.js
暴露公共API
上面的例子,如果没有加上wrap: true
这个选项,打包后生成的文件,你是可以访问到之前的定义的模块的,比截图所
aaarticlea/png;base64,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" alt="Alt text" longdesc="http://maxiang.info/1398014130739.png" />
但加上wrap: true
后就完全不一样了,因为所有的代码都会被包在一个匿名的闭包里,大致如下
(function () {
//almond will be here
//main and its nested dependencies will be here
}());
此时就访问不到之前定义的模块了,包括require
都成了匿名函数里的一个局部变量
aaarticlea/png;base64,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" alt="Alt text" longdesc="http://maxiang.info/1398014304157.png" />
这种情况下,如果我们想要访问模块里的方法,该怎么做呢?可以修改下配置文件
build-almond-frag.js
({
baseUrl: "js",
name: "almond",
include: "main",
out: 'js/main-built-almond-public.js',
wrap: {
startFile: 'js/start.frag.js',
endFile: 'js/end.frag.js'
}
})
js/start.frag.js
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define([], factory);
} else {
root.Main = factory();
}
}(this, function () {
//almond, and your modules will be inlined here
js/end.frag.js
return {
cookie: require('cookie'),
util: require('util')
};
}));
打包
r.js -o build-almond-frag.js
生成的文件结构如下
start.frag
almond.js
modules for your lib, including 'main'
end.frag
现在,可以在浏览器里继访问我们暴露的API了
aaarticlea/png;base64,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" alt="Alt text" longdesc="http://maxiang.info/1398015130327.png" />
一些限制 & 支持的特性
毫无意外,almond只是支持了requirejs
功能的子集,所以,在使用前需要了解下它的支持哪些特性,有哪些限制。
限制:
- 需要将所有的模块打包成一个文件
- 不支持模块动态加载
- 只能调用一次
requirejs.config()
(原来可以调用两次??) - 不能通过
var require = {};
来传递配置参数 - 不支持多版本/上下文
- 不要使用
require.toUrl()
、require.nameToUrl()
- (不了解packages,直接附上原文了)
do not use packages/packagePaths config. If you need to use packages that have a main property, volo can create an adapter module so that it can work without this config. Use the amdify add command to add the dependency to your project.
支持的特性
- 使用相对路径的依赖(dependencies with relative IDs.)
- define('id', {}) definitions.(不知道肿么翻译)
- define(), require() and requirejs() 调用。
- 符合这样特性的插件:能够将资源内联进打包优化后的文件,并通过同步的方式访问内联后的资源。比如text插件、CoffeeScript插件
写在后面
本文简单介绍了下如何通过almond
对依赖requirejs的项目进行进一步的优化。当然,almond
也存在着一些限制,比如无法动态加载模块、只能将模块打包成一个文件等,具体的可以参考这里。是否在打包阶段使用almond
替代requirejs
,得看具体场景,这里就不展开,后面有时间再简单介绍下。
requirejs:杏仁的优化(almond)的更多相关文章
- (转)requirejs:杏仁的优化(almond)
使用场景 什么情况下需要使用 almond 呢?假设你手头有个基于requirejs的小项目,所有业务代码加起来就几十K(压缩后可能更小).出于性能优化的考虑,你可能在想:如果能够去掉requirej ...
- requirejs:性能优化-及早并行加载
为了提高页面的性能,通常情况下,我们希望资源尽可能地早地并行加载.这里有两个要点,首先是尽早,其次是并行. 通过data-main方式加载要尽可能地避免,因为它让requirejs.业务代码不必要地串 ...
- Grunt 之 RequireJS
RequireJs 提供了一个打包工具 r.js,可以将相关的模块打包为一个文件.相关说明:http://www.requirejs.org/docs/optimization.html 将相关的脚本 ...
- 关于web优化(一)
我们所说的web,无非就是html,css(web font, image),JavaScript. HTML优化建议: 1. 尽量不要用table进行布局. 2. 尽量用最新的带有语义的h5标签,这 ...
- RequireJS - 快速指南
原文: https://www.tutorialspoint.com/requirejs/requirejs_quick_guide.htm RequireJS - 概述 RequireJS是一个Ja ...
- 如何利用Require.Js管理多页面站点文件(译)
英文版地址 最近使用 Require.Js 的时候我发现它确实是一个改善代码管理的一个好方法.我以前发表Backbone类的文章时曾提到过 Require,但此前,我从未在传统的多页面网站内使用到 R ...
- 转:Cesium 和 Webpack
原文地址:https://www.jianshu.com/p/85917bcc023f 注意:webpack 和 webpack-cli 的安装参考 https://www.cnblogs.com/m ...
- Cesium官方教程13--Cesium和Webpack
原文地址:https://cesiumjs.org/tutorials/cesium-and-webpack/ Cesium 和 Webpack Webpack是非常强大非常流行的JavaScript ...
- almond进一步优化requirejs
这里只是调侃一下,“杏仁”其实指的是almond,requirejs作者的另一个开源项目,它的定位是作为requirejs的一个替代品. 使用场景 什么情况下需要使用almond呢?假设你手头有个基于 ...
随机推荐
- Android之自动文本输入识别提示
相信大家都熟悉自动识别提示吧,在我们的生活中随处可见,今天就让我为大家简单介绍一下它是如何设计的. 所谓自动识别输入即是根据用户输入的已有信息,为用户提示可能的值,方便用户完成输入.在Android设 ...
- 编写可编辑的List控件
今天由于项目的需要,要编写个能编辑的List控件,即双击List控件的表项能修改其中的内容.由于MFC自带的List控件是不能编辑的,所以在网上找了下怎样编写可编辑的CListCtrl控件,基本上都是 ...
- php分享(三十五) 文件多写注意事项
1: resource fopen ( string $filename , string $mode [, bool $use_include_path = false [,resource $co ...
- 轻松自动化---selenium-webdriver(python) (二)
本节知识点: 打印URL 将浏览器最大化 设置浏览器固定宽.高 操控浏览器前进.后退 打印URL 上一节讲到,可以将浏览器的title打印出来,这里再讲个简单的,把当前URL打印出来.其实也没啥大用, ...
- 【知识积累】BufferedImage类实现图片的切分
一.引言 如何实现图片分割?若有园友用到这个模块,使用Java的BufferedImage类来实现,图片切分也可以作为一个小工具积累起来,以备不时之需. 二.代码清单 package com.lees ...
- ssl证书生成:cer&jks文件生成摘录
一.生成.jks文件 1.keystore的生成: 分阶段生成: keytool -genkey -alias yushan(别名) -keypass yushan(别名密码) -keyalg ...
- web框架--bottle
安装 2 3 4 pip install bottle easy_install bottle apt-get install python-bottle wget http://bottlepy.o ...
- 百度Map与HT for Web结合的GIS网络拓扑应用
在<HT for Web整合OpenLayers实现GIS地图应用>篇中介绍了HT for Web与OpenLayers的整合,不少朋友反应国内用得比较多的还是百度地图,虽然HT整合百度地 ...
- 大话ASP.NET(第二篇,Angular结构篇--翻译)
AngularJS API Docs Welcome to the AngularJS API docs page. These pages contain the AngularJS referen ...
- JavaScript基础插曲—获取标签,插入元素,操作样式
Js基础 1:document.write() 这个是动态创建元素内容,利用js.这个可以利用js来创建元素,文本,标签等,document.write()与document.writeln()的区别 ...