From 930bc996ab0b4f69af7ef1024de4035c1193c206 Mon Sep 17 00:00:00 2001 From: yangjiaxuan <171295266@qq.com> Date: Wed, 22 May 2024 10:06:32 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=96=B0=E8=B0=83=E6=95=B4=E5=9B=BD?= =?UTF-8?q?=E4=BA=A7=E7=B3=BB=E7=BB=9F=E6=B1=89=E7=8E=8Bwebscan?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kylin/hwweb/DEBIAN/control | 8 +- kylin/hwweb/DEBIAN/postinst | 12 +- kylin/hwweb/DEBIAN/postrm | 30 +- .../hwweb/etc/udev/rules.d/60-hwwebsane.rules | 44 +- kylin/hwweb/opt/hanvonwebscan/bin/restart.sh | 4 +- kylin/hwweb/opt/hanvonwebscan/bin/server.sh | 178 +- .../opt/hanvonwebscan/static/css/scan.css | 440 +- .../opt/hanvonwebscan/static/js/FileSaver.js | 342 +- .../opt/hanvonwebscan/static/js/ScanEvent.js | 28 +- .../static/js/WebScanController.js | 1312 +- .../opt/hanvonwebscan/static/js/fabric.js | 59296 ++++++++-------- .../static/js/jquery-1.11.1.min.js | 8 +- .../hanvonwebscan/static/js/polyfill.min.js | 2 +- .../opt/hanvonwebscan/static/js/scanWeb.js | 4854 +- .../hwweb/opt/hanvonwebscan/static/js/util.js | 242 +- .../opt/hanvonwebscan/static/js/vue.min.js | 6784 +- .../opt/hanvonwebscan/static/webDemo.html | 1638 +- ...页服务器重启.desktop => hanvonwebscan.desktop} | 2 +- 18 files changed, 37593 insertions(+), 37631 deletions(-) rename kylin/hwweb/usr/share/applications/{汉王扫描仪网页服务器重启.desktop => hanvonwebscan.desktop} (78%) diff --git a/kylin/hwweb/DEBIAN/control b/kylin/hwweb/DEBIAN/control index cc14752..da3e56e 100755 --- a/kylin/hwweb/DEBIAN/control +++ b/kylin/hwweb/DEBIAN/control @@ -1,7 +1,7 @@ -Package: hanvonwebscan -Version: 4.52.16521.24142 +Package: hanvonwebserver +Version: 1.0.5 Architecture: amd64 -Maintainer: hanvon +Maintainer: scanner Section: libs Priority: optional -Description: hanvon webscan server and application +Description: scanner diff --git a/kylin/hwweb/DEBIAN/postinst b/kylin/hwweb/DEBIAN/postinst index bc60bb3..5e196e6 100755 --- a/kylin/hwweb/DEBIAN/postinst +++ b/kylin/hwweb/DEBIAN/postinst @@ -1,14 +1,14 @@ #!/bin/bash -#RC_LOCAL="/etc/rc.local" +chmod 777 -R /opt/hanvonwebscan/bin/* -chmod 777 -R /opt/hanvonwebscan/bin/* - +udevadm control --reload +udevadm trigger echo "installed in the dir /opt/hanvonwebscan" - -chmod 644 /etc/udev/rules.d/60-hanvon* +#echo "demo web page in the static dir" +chmod 644 /etc/udev/rules.d/60-hw* udevadm control --reload-rules udevadm trigger @@ -21,6 +21,6 @@ systemctl daemon-reload echo "enable start.service " systemctl start hanvonwebscanserver.service sleep 10 -echo "install hanvonwebserver finished" +echo "install hanvonwebscanserver finished" diff --git a/kylin/hwweb/DEBIAN/postrm b/kylin/hwweb/DEBIAN/postrm index 4bf8ba0..67eaf69 100755 --- a/kylin/hwweb/DEBIAN/postrm +++ b/kylin/hwweb/DEBIAN/postrm @@ -1,29 +1,27 @@ #!/bin/bash - - -systemctl daemon-reload - +/opt/hanvonwebscan/bin/server.sh stop +systemctl stop hanvonwebscanserver.service sleep 3 -test -h /etc/systemd/system/multi-user.target.wants/hanvonwebscanserver.service -if [ $? -eq 0 ];then - rm -rf /etc/systemd/system/multi-user.target.wants/hanvonwebscanserver.service +test -h /etc/systemd/system/multi-user.target.wants/hanvonwebscanserver.service +if [ $? -eq 0 ]; then + rm -rf /etc/systemd/system/multi-user.target.wants/hanvonwebscanserver.service + echo "services uninstall is success" fi test -h /etc/systemd/system/hanvonwebscanserver -if [ $? -eq 0 ];then - rm -rf /etc/systemd/system/hanvonwebscanserver +if [ $? -eq 0 ]; then + rm -rf /etc/systemd/system/hanvonwebscanserver fi test -e /lib/systemd/system/hanvonwebscanserver.service -if [ $? -eq 0 ];then - rm -rf /lib/systemd/system/hanvonwebscanserver.service +if [ $? -eq 0 ]; then + rm -rf /lib/systemd/system/hanvonwebscanserver.service fi -test -d /opt/hanvonwebscan/ -if [ $? -eq 0 ];then - rm -rf /opt/hanvonwebscan -fi -systemctl stop hanvonwebscanserver.service systemctl daemon-reload +test -d /opt/hanvonwebscan/ +if [ $? -eq 0 ]; then + rm -rf /opt/hanvonwebscan +fi diff --git a/kylin/hwweb/etc/udev/rules.d/60-hwwebsane.rules b/kylin/hwweb/etc/udev/rules.d/60-hwwebsane.rules index 6aaaf4d..8913c82 100755 --- a/kylin/hwweb/etc/udev/rules.d/60-hwwebsane.rules +++ b/kylin/hwweb/etc/udev/rules.d/60-hwwebsane.rules @@ -11,11 +11,8 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idPro SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0239", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0339", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0439", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0402", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0303", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0302", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="064b", ATTR{idProduct}=="7823", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0306", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" + + #Lanxum --->G100~G400 SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8620", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8730", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" @@ -26,9 +23,8 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idPro SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8739", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8429", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8529", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8630", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8426", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8626", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" + + #Hanvon --->G100~G400 SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="7000", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" @@ -40,36 +36,4 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idPro SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="7002", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="7039", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -#cts --->G100~G400 -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3308", ATTR{idProduct}=="6006", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3308", ATTR{idProduct}=="6005", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3308", ATTR{idProduct}=="6007", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3308", ATTR{idProduct}=="6008", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" - -#microtek -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="05da", ATTR{idProduct}=="9220", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="05da", ATTR{idProduct}=="9222", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="05da", ATTR{idProduct}=="9223", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" - -#unis -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="32ec", ATTR{idProduct}=="0200", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="32ec", ATTR{idProduct}=="0210", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="32ec", ATTR{idProduct}=="0201", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" - -#Deli --->G100~G400 -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="300e", ATTR{idProduct}=="401c", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="300e", ATTR{idProduct}=="401d", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="300e", ATTR{idProduct}=="401e", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="300e", ATTR{idProduct}=="401f", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="300e", ATTR{idProduct}=="4020", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="300e", ATTR{idProduct}=="4021", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="300e", ATTR{idProduct}=="4022", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="300e", ATTR{idProduct}=="4015", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="300e", ATTR{idProduct}=="4016", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="300e", ATTR{idProduct}=="4017", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="300e", ATTR{idProduct}=="4018", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="300e", ATTR{idProduct}=="4019", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="300e", ATTR{idProduct}=="401a", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="300e", ATTR{idProduct}=="401b", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes" - LABEL="mud_rules_end" diff --git a/kylin/hwweb/opt/hanvonwebscan/bin/restart.sh b/kylin/hwweb/opt/hanvonwebscan/bin/restart.sh index d8e2371..413dd3f 100755 --- a/kylin/hwweb/opt/hanvonwebscan/bin/restart.sh +++ b/kylin/hwweb/opt/hanvonwebscan/bin/restart.sh @@ -1,2 +1,2 @@ -#!/bin/bash -service hanvonwebscanserver restart +#!/bin/bash +service hanvonwebscanserver restart diff --git a/kylin/hwweb/opt/hanvonwebscan/bin/server.sh b/kylin/hwweb/opt/hanvonwebscan/bin/server.sh index 2f9b18d..73d6061 100755 --- a/kylin/hwweb/opt/hanvonwebscan/bin/server.sh +++ b/kylin/hwweb/opt/hanvonwebscan/bin/server.sh @@ -1,89 +1,89 @@ -#!/bin/bash - - -DIR="$( cd "$( dirname "$0" )" && pwd )" -echo "current dir $DIR" -BASE_DIR="$DIR" -export LD_LIBRARY_PATH="$DIR" -APP_NAME=HwWebService - -APP_PATH="$BASE_DIR/HwWebService" -echo "APP_PATH = $APP_PATH" -LIB_PARH="$BASE_DIR/libhwdriver.so" -echo "LIB_PARH = $LIB_PARH" - -#userage -usage() { - echo "Usage: sh script.sh [start|stop|restart|status]" - exit 1 -} -is_exist(){ -if [ ! -f $BASE_DIR/HwWebService ]; then - return 1 -else - pid=`ps -ef | grep "HwWebService" | grep -v grep | awk '{print $2}'` - echo "PID: $pid" - appNum=`ps -ef|awk '{print $2}'|grep -c -e "^${pid}\$"` - echo appNum $appNum - if [ ${appNum} -gt 0 ]; then - return 0 - else - rm -rf $BASE_DIR/HwWebService.pid >/dev/null 2>&1 & - return 1 - fi -fi -} -#start server -start(){ -is_exist -if [ $? -eq "0" ]; then - echo "${APP_NAME} is already running. pid=${pid} ." -else - echo "APP_PATH: $APP_PATH" - echo "LIB_PATH: $LIB_PARH" - "$DIR"/HwWebService & -fi -} -#stop webserver -stop(){ -is_exist -if [ $? -eq "0" ]; then - kill -9 $pid - rm -rf $BASE_DIR/application.pid >/dev/null 2>&1 & -else - echo "${APP_NAME} is not running" -fi -} -#running status -status(){ -is_exist -if [ $? -eq "0" ]; then - echo "${APP_NAME} is running. Pid is ${pid}" -else - echo "${APP_NAME} is NOT running." -fi -} -#restart server -restart(){ -stop -start -} - - -case "$1" in -"start") -start -;; -"stop") -stop -;; -"status") -status -;; -"restart") -restart -;; -*) -usage -;; -esac +#!/bin/bash + + +DIR="$( cd "$( dirname "$0" )" && pwd )" +echo "current dir $DIR" +BASE_DIR="$DIR" +export LD_LIBRARY_PATH="$DIR" +APP_NAME=HwWebService + +APP_PATH="$BASE_DIR/HwWebService" +echo "APP_PATH = $APP_PATH" +LIB_PARH="$BASE_DIR/libhwdriver.so" +echo "LIB_PARH = $LIB_PARH" + +#userage +usage() { + echo "Usage: sh script.sh [start|stop|restart|status]" + exit 1 +} +is_exist(){ +if [ ! -f $BASE_DIR/HwWebService ]; then + return 1 +else + pid=`ps -ef | grep "HGWebService" | grep -v grep | awk '{print $2}'` + echo "PID: $pid" + appNum=`ps -ef|awk '{print $2}'|grep -c -e "^${pid}\$"` + echo appNum $appNum + if [ ${appNum} -gt 0 ]; then + return 0 + else + rm -rf $BASE_DIR/HwWebService.pid >/dev/null 2>&1 & + return 1 + fi +fi +} +#start server +start(){ +is_exist +if [ $? -eq "0" ]; then + echo "${APP_NAME} is already running. pid=${pid} ." +else + echo "APP_PATH: $APP_PATH" + echo "LIB_PATH: $LIB_PARH" + "$DIR"/HwWebService & +fi +} +#stop webserver +stop(){ +is_exist +if [ $? -eq "0" ]; then + kill -9 $pid + rm -rf $BASE_DIR/application.pid >/dev/null 2>&1 & +else + echo "${APP_NAME} is not running" +fi +} +#running status +status(){ +is_exist +if [ $? -eq "0" ]; then + echo "${APP_NAME} is running. Pid is ${pid}" +else + echo "${APP_NAME} is NOT running." +fi +} +#restart server +restart(){ +stop +start +} + + +case "$1" in +"start") +start +;; +"stop") +stop +;; +"status") +status +;; +"restart") +restart +;; +*) +usage +;; +esac diff --git a/kylin/hwweb/opt/hanvonwebscan/static/css/scan.css b/kylin/hwweb/opt/hanvonwebscan/static/css/scan.css index d29e310..36825f8 100755 --- a/kylin/hwweb/opt/hanvonwebscan/static/css/scan.css +++ b/kylin/hwweb/opt/hanvonwebscan/static/css/scan.css @@ -1,220 +1,220 @@ -html { - height: 100% -} - -body { - margin: 0; - font-size: 14px; - font-family: "PingFang SC"; - min-width: 1200px; - min-height: 900px; - height: 100%; -} - -.el-container { - height: 100%; - border: 1px solid #eee; -} - -ul { - list-style: none; -} - -.imageListSelect { - /* border: 1px solid #909399; */ - /*box-shadow: 0 2px 6px #ADADAD;*/ - border: 2px solid #fa7857 !important; -} - -.aside { - border-right: 1px solid #eee; - border-bottom: 1px solid #eee; - height: 100% -} - -.aside .header { - height: 40px; - background-color: #eaeaea; - line-height: 40px; - padding-left: 20px; - /* margin-top:10px; */ - color: #09aaff; -} - -.scroll::-webkit-scrollbar { - width: 8px; - height: 8px; -} - -/* 设置滚动条的滑轨 */ -.scroll::-webkit-scrollbar-track { - background-color: #eaeaea; -} - -/* 滑块 */ -.scroll::-webkit-scrollbar-thumb { - /* background-color: rgba(0, 0, 0, 0.6); */ - background-color: #cdcdcd; - border-radius: 4px; -} - -/* 滑轨两头的监听按钮 */ -.scroll::-webkit-scrollbar-button { - /* background-color: #444; */ - background-color: #cdcdcd; - display: none; -} - -.el-container .el-header { - border-bottom: 1px solid #eee; -} - -.el-container .el-header .iconContainer { - width: 100%; - text-align: center; - height: 35px -} - -.el-container .el-header .menus { - width: 100%; - text-align: center; - font-size: 14px -} - -.el-container .el-header .menuContainer { - float: left; - margin-left: 15px; -} - -.el-container .el-header .menuContainer ul { - padding-left: 10px; -} - -.el-container .el-header ul li { - float: left; - padding-left: 20px; - cursor: pointer; -} - -.el-container .el-header .menuRight { - float: right; -} - -.el-container .el-header .menuRight ul li { - padding-right: 20px; - float: right; - cursor: pointer; -} - -.el-container .el-header .menuRight .iconContainer { - height: 28px; -} - -.el-main { - height: 100%; - padding: 0px; - position: relative; - overflow: hidden; -} - -.el-main .opt { - width: 58px; - height: 100%; - border-right: 1px solid #eee; - float: left; - background-color: #eaeaea; -} - -.el-main .opt .active { - border-radius: 4px; - border: 1px solid #fff; - background-color: #cecece; - margin-left: 4px; - margin-right: 4px; -} - -.image-container { - overflow: auto; - height: 100%; - box-sizing: border-box; - margin: auto; -} - -.el-main .opt ul li { - cursor: pointer; - text-align: center; - line-height: 16px; - padding-top: 4px -} - -.mask { - background-color: rgba(0, 0, 0, 0.6); - position: fixed; - left: 0; - top: 0; - width: 100%; - height: 100%; -} - -.mask .messageBox { - width: 500px; - border-radius: 3px; - position: fixed; - left: 50%; - top: 45%; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - background-color: #fff; - padding: 15px; -} - -.mask .messageBox .title { - border-radius: 3px; - margin-bottom: 30px; - padding-bottom: 15px; - border-bottom: 1px solid #eee; - font-size: 16px; -} - -.mask .messageBox .title .closeReport { - float: right; - cursor: pointer; -} - -.canvas-container { - margin: 0 auto; -} - - -.el-dropdown-link { - cursor: pointer; - color: #409EFF; -} - -.el-icon-arrow-down { - font-size: 12px; -} - -.batch-item { - background-color: white; -} - -.batch-item:hover { - background-color: #eaeaea; -} - - -.operaBg:hover { - background-color: #C0C4CC; -} - -.font-style { - display: inline-block; - float: left; - width: 30% -} - - -.cursor-pointer { - cursor: pointer -} +html { + height: 100% +} + +body { + margin: 0; + font-size: 14px; + font-family: "PingFang SC"; + min-width: 1200px; + min-height: 900px; + height: 100%; +} + +.el-container { + height: 100%; + border: 1px solid #eee; +} + +ul { + list-style: none; +} + +.imageListSelect { + /* border: 1px solid #909399; */ + /*box-shadow: 0 2px 6px #ADADAD;*/ + border: 2px solid #fa7857 !important; +} + +.aside { + border-right: 1px solid #eee; + border-bottom: 1px solid #eee; + height: 100% +} + +.aside .header { + height: 40px; + background-color: #eaeaea; + line-height: 40px; + padding-left: 20px; + /* margin-top:10px; */ + color: #09aaff; +} + +.scroll::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +/* 设置滚动条的滑轨 */ +.scroll::-webkit-scrollbar-track { + background-color: #eaeaea; +} + +/* 滑块 */ +.scroll::-webkit-scrollbar-thumb { + /* background-color: rgba(0, 0, 0, 0.6); */ + background-color: #cdcdcd; + border-radius: 4px; +} + +/* 滑轨两头的监听按钮 */ +.scroll::-webkit-scrollbar-button { + /* background-color: #444; */ + background-color: #cdcdcd; + display: none; +} + +.el-container .el-header { + border-bottom: 1px solid #eee; +} + +.el-container .el-header .iconContainer { + width: 100%; + text-align: center; + height: 35px +} + +.el-container .el-header .menus { + width: 100%; + text-align: center; + font-size: 14px +} + +.el-container .el-header .menuContainer { + float: left; + margin-left: 15px; +} + +.el-container .el-header .menuContainer ul { + padding-left: 10px; +} + +.el-container .el-header ul li { + float: left; + padding-left: 20px; + cursor: pointer; +} + +.el-container .el-header .menuRight { + float: right; +} + +.el-container .el-header .menuRight ul li { + padding-right: 20px; + float: right; + cursor: pointer; +} + +.el-container .el-header .menuRight .iconContainer { + height: 28px; +} + +.el-main { + height: 100%; + padding: 0px; + position: relative; + overflow: hidden; +} + +.el-main .opt { + width: 58px; + height: 100%; + border-right: 1px solid #eee; + float: left; + background-color: #eaeaea; +} + +.el-main .opt .active { + border-radius: 4px; + border: 1px solid #fff; + background-color: #cecece; + margin-left: 4px; + margin-right: 4px; +} + +.image-container { + overflow: auto; + height: 100%; + box-sizing: border-box; + margin: auto; +} + +.el-main .opt ul li { + cursor: pointer; + text-align: center; + line-height: 16px; + padding-top: 4px +} + +.mask { + background-color: rgba(0, 0, 0, 0.6); + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; +} + +.mask .messageBox { + width: 500px; + border-radius: 3px; + position: fixed; + left: 50%; + top: 45%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + background-color: #fff; + padding: 15px; +} + +.mask .messageBox .title { + border-radius: 3px; + margin-bottom: 30px; + padding-bottom: 15px; + border-bottom: 1px solid #eee; + font-size: 16px; +} + +.mask .messageBox .title .closeReport { + float: right; + cursor: pointer; +} + +.canvas-container { + margin: 0 auto; +} + + +.el-dropdown-link { + cursor: pointer; + color: #409EFF; +} + +.el-icon-arrow-down { + font-size: 12px; +} + +.batch-item { + background-color: white; +} + +.batch-item:hover { + background-color: #eaeaea; +} + + +.operaBg:hover { + background-color: #C0C4CC; +} + +.font-style { + display: inline-block; + float: left; + width: 30% +} + + +.cursor-pointer { + cursor: pointer +} diff --git a/kylin/hwweb/opt/hanvonwebscan/static/js/FileSaver.js b/kylin/hwweb/opt/hanvonwebscan/static/js/FileSaver.js index 7b66e7c..5d204ae 100755 --- a/kylin/hwweb/opt/hanvonwebscan/static/js/FileSaver.js +++ b/kylin/hwweb/opt/hanvonwebscan/static/js/FileSaver.js @@ -1,171 +1,171 @@ -/* -* FileSaver.js -* A saveAs() FileSaver implementation. -* -* By Eli Grey, http://eligrey.com -* -* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT) -* source : http://purl.eligrey.com/github/FileSaver.js -*/ - -// The one and only way of getting global scope in all environments -// https://stackoverflow.com/q/3277182/1008999 -var _global = typeof window === 'object' && window.window === window - ? window : typeof self === 'object' && self.self === self - ? self : typeof global === 'object' && global.global === global - ? global - : this - -function bom (blob, opts) { - if (typeof opts === 'undefined') opts = { autoBom: false } - else if (typeof opts !== 'object') { - console.warn('Deprecated: Expected third argument to be a object') - opts = { autoBom: !opts } - } - - // prepend BOM for UTF-8 XML and text/* types (including HTML) - // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF - if (opts.autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) { - return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type }) - } - return blob -} - -function download (url, name, opts) { - var xhr = new XMLHttpRequest() - xhr.open('GET', url) - xhr.responseType = 'blob' - xhr.onload = function () { - saveAs(xhr.response, name, opts) - } - xhr.onerror = function () { - console.error('could not download file') - } - xhr.send() -} - -function corsEnabled (url) { - var xhr = new XMLHttpRequest() - // use sync to avoid popup blocker - xhr.open('HEAD', url, false) - try { - xhr.send() - } catch (e) {} - return xhr.status >= 200 && xhr.status <= 299 -} - -// `a.click()` doesn't work for all browsers (#465) -function click (node) { - try { - node.dispatchEvent(new MouseEvent('click')) - } catch (e) { - var evt = document.createEvent('MouseEvents') - evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, - 20, false, false, false, false, 0, null) - node.dispatchEvent(evt) - } -} - -// Detect WebView inside a native macOS app by ruling out all browsers -// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too -// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos -var isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent) - -var saveAs = _global.saveAs || ( - // probably in some web worker - (typeof window !== 'object' || window !== _global) - ? function saveAs () { /* noop */ } - - // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView - : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView) - ? function saveAs (blob, name, opts) { - var URL = _global.URL || _global.webkitURL - var a = document.createElement('a') - name = name || blob.name || 'download' - - a.download = name - a.rel = 'noopener' // tabnabbing - - // TODO: detect chrome extensions & packaged apps - // a.target = '_blank' - - if (typeof blob === 'string') { - // Support regular links - a.href = blob - if (a.origin !== location.origin) { - corsEnabled(a.href) - ? download(blob, name, opts) - : click(a, a.target = '_blank') - } else { - click(a) - } - } else { - // Support blobs - a.href = URL.createObjectURL(blob) - setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s - setTimeout(function () { click(a) }, 0) - } - } - - // Use msSaveOrOpenBlob as a second approach - : 'msSaveOrOpenBlob' in navigator - ? function saveAs (blob, name, opts) { - name = name || blob.name || 'download' - - if (typeof blob === 'string') { - if (corsEnabled(blob)) { - download(blob, name, opts) - } else { - var a = document.createElement('a') - a.href = blob - a.target = '_blank' - setTimeout(function () { click(a) }) - } - } else { - navigator.msSaveOrOpenBlob(bom(blob, opts), name) - } - } - - // Fallback to using FileReader and a popup - : function saveAs (blob, name, opts, popup) { - // Open a popup immediately do go around popup blocker - // Mostly only available on user interaction and the fileReader is async so... - popup = popup || open('', '_blank') - if (popup) { - popup.document.title = - popup.document.body.innerText = 'downloading...' - } - - if (typeof blob === 'string') return download(blob, name, opts) - - var force = blob.type === 'application/octet-stream' - var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari - var isChromeIOS = /CriOS\/[\d]+/.test(navigator.userAgent) - - if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') { - // Safari doesn't allow downloading of blob URLs - var reader = new FileReader() - reader.onloadend = function () { - var url = reader.result - url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;') - if (popup) popup.location.href = url - else location = url - popup = null // reverse-tabnabbing #460 - } - reader.readAsDataURL(blob) - } else { - var URL = _global.URL || _global.webkitURL - var url = URL.createObjectURL(blob) - if (popup) popup.location = url - else location.href = url - popup = null // reverse-tabnabbing #460 - setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s - } - } -) - -_global.saveAs = saveAs.saveAs = saveAs - -if (typeof module !== 'undefined') { - module.exports = saveAs; -} +/* +* FileSaver.js +* A saveAs() FileSaver implementation. +* +* By Eli Grey, http://eligrey.com +* +* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT) +* source : http://purl.eligrey.com/github/FileSaver.js +*/ + +// The one and only way of getting global scope in all environments +// https://stackoverflow.com/q/3277182/1008999 +var _global = typeof window === 'object' && window.window === window + ? window : typeof self === 'object' && self.self === self + ? self : typeof global === 'object' && global.global === global + ? global + : this + +function bom (blob, opts) { + if (typeof opts === 'undefined') opts = { autoBom: false } + else if (typeof opts !== 'object') { + console.warn('Deprecated: Expected third argument to be a object') + opts = { autoBom: !opts } + } + + // prepend BOM for UTF-8 XML and text/* types (including HTML) + // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF + if (opts.autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) { + return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type }) + } + return blob +} + +function download (url, name, opts) { + var xhr = new XMLHttpRequest() + xhr.open('GET', url) + xhr.responseType = 'blob' + xhr.onload = function () { + saveAs(xhr.response, name, opts) + } + xhr.onerror = function () { + console.error('could not download file') + } + xhr.send() +} + +function corsEnabled (url) { + var xhr = new XMLHttpRequest() + // use sync to avoid popup blocker + xhr.open('HEAD', url, false) + try { + xhr.send() + } catch (e) {} + return xhr.status >= 200 && xhr.status <= 299 +} + +// `a.click()` doesn't work for all browsers (#465) +function click (node) { + try { + node.dispatchEvent(new MouseEvent('click')) + } catch (e) { + var evt = document.createEvent('MouseEvents') + evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, + 20, false, false, false, false, 0, null) + node.dispatchEvent(evt) + } +} + +// Detect WebView inside a native macOS app by ruling out all browsers +// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too +// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos +var isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent) + +var saveAs = _global.saveAs || ( + // probably in some web worker + (typeof window !== 'object' || window !== _global) + ? function saveAs () { /* noop */ } + + // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView + : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView) + ? function saveAs (blob, name, opts) { + var URL = _global.URL || _global.webkitURL + var a = document.createElement('a') + name = name || blob.name || 'download' + + a.download = name + a.rel = 'noopener' // tabnabbing + + // TODO: detect chrome extensions & packaged apps + // a.target = '_blank' + + if (typeof blob === 'string') { + // Support regular links + a.href = blob + if (a.origin !== location.origin) { + corsEnabled(a.href) + ? download(blob, name, opts) + : click(a, a.target = '_blank') + } else { + click(a) + } + } else { + // Support blobs + a.href = URL.createObjectURL(blob) + setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s + setTimeout(function () { click(a) }, 0) + } + } + + // Use msSaveOrOpenBlob as a second approach + : 'msSaveOrOpenBlob' in navigator + ? function saveAs (blob, name, opts) { + name = name || blob.name || 'download' + + if (typeof blob === 'string') { + if (corsEnabled(blob)) { + download(blob, name, opts) + } else { + var a = document.createElement('a') + a.href = blob + a.target = '_blank' + setTimeout(function () { click(a) }) + } + } else { + navigator.msSaveOrOpenBlob(bom(blob, opts), name) + } + } + + // Fallback to using FileReader and a popup + : function saveAs (blob, name, opts, popup) { + // Open a popup immediately do go around popup blocker + // Mostly only available on user interaction and the fileReader is async so... + popup = popup || open('', '_blank') + if (popup) { + popup.document.title = + popup.document.body.innerText = 'downloading...' + } + + if (typeof blob === 'string') return download(blob, name, opts) + + var force = blob.type === 'application/octet-stream' + var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari + var isChromeIOS = /CriOS\/[\d]+/.test(navigator.userAgent) + + if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') { + // Safari doesn't allow downloading of blob URLs + var reader = new FileReader() + reader.onloadend = function () { + var url = reader.result + url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;') + if (popup) popup.location.href = url + else location = url + popup = null // reverse-tabnabbing #460 + } + reader.readAsDataURL(blob) + } else { + var URL = _global.URL || _global.webkitURL + var url = URL.createObjectURL(blob) + if (popup) popup.location = url + else location.href = url + popup = null // reverse-tabnabbing #460 + setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s + } + } +) + +_global.saveAs = saveAs.saveAs = saveAs + +if (typeof module !== 'undefined') { + module.exports = saveAs; +} diff --git a/kylin/hwweb/opt/hanvonwebscan/static/js/ScanEvent.js b/kylin/hwweb/opt/hanvonwebscan/static/js/ScanEvent.js index 6b026cd..19eb5b0 100755 --- a/kylin/hwweb/opt/hanvonwebscan/static/js/ScanEvent.js +++ b/kylin/hwweb/opt/hanvonwebscan/static/js/ScanEvent.js @@ -1,14 +1,14 @@ -const SOCKET_CONNECTED = 111 -const SOCKET_DISCONNECTED = -111 -const SOCKET_EVENT = 222 - - -const StaticImg_base64_3 = 'data:image/jpeg;base64,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' - -const StaticImg_base64_2 = 'data:image/png;base64,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' - - -const StaticImg_Base64_1 = 'data:image/jpeg;base64,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AABCbGQgVW50RiNSbHQAAAAAAAAAAAAAAABSc2x0VW50RiNQeGxAUgAAAAAAAAAAAAp2ZWN0b3JEYXRhYm9vbAEAAAAAUGdQc2VudW0AAAAAUGdQcwAAAABQZ1BDAAAAAExlZnRVbnRGI1JsdAAAAAAAAAAAAAAAAFRvcCBVbnRGI1JsdAAAAAAAAAAAAAAAAFNjbCBVbnRGI1ByY0BZAAAAAAAAAAAAEGNyb3BXaGVuUHJpbnRpbmdib29sAAAAAA5jcm9wUmVjdEJvdHRvbWxvbmcAAAAAAAAADGNyb3BSZWN0TGVmdGxvbmcAAAAAAAAADWNyb3BSZWN0UmlnaHRsb25nAAAAAAAAAAtjcm9wUmVjdFRvcGxvbmcAAAAAADhCSU0D7QAAAAAAEABIAAAAAQACAEgAAAABAAI4QklNBCYAAAAAAA4AAAAAAAAAAAAAP4AAADhCSU0EDQAAAAAABAAAAB44QklNBBkAAAAAAAQAAAAeOEJJTQPzAAAAAAAJAAAAAAAAAAABADhCSU0nEAAAAAAACgABAAAAAAAAAAI4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA/gAAAAAAHAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAAzcAAAAGAAAAAAAAAAAAAAZpAAAJHgAAAAEAMQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAJHgAABmkAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAABmkAAAAAUmdodGxvbmcAAAke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Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIGRjOmZvcm1hdD0iaW1hZ2UvanBlZyIgeG1wOkNyZWF0b3JUb29sPSJTY2FuVG9vbCIgeG1wOkNyZWF0ZURhdGU9IjIwMjEtMTAtMzBUMDk6MjQ6MjIrMDg6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIxLTExLTAzVDExOjQ0OjExKzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIxLTExLTAzVDExOjQ0OjExKzA4OjAwIiB4bXBNTTpEb2N1bWVudElEPSJCRTRCMDc0NDIzMUE3REYyMUQzMzlFNzZCN0NCRERCMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyN0ZEN0I0RTU4M0NFQzExQkM4M0E1QTFGMThBMUJENyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJCRTRCMDc0NDIzMUE3REYyMUQzMzlFNzZCN0NCRERCMCIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOkRhdGVDcmVhdGVkPSIyMDIxLTA4LTI1VDExOjI3OjQ3Ij4gPGRjOmNyZWF0b3I+IDxyZGY6U2VxPiA8cmRmOmxpPkhpLTEwNTA8L3JkZjpsaT4gPC9yZGY6U2VxPiA8L2RjOmNyZWF0b3I+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjI2RkQ3QjRFNTgzQ0VDMTFCQzgzQTVBMUYxOEExQkQ3IiBzdEV2dDp3aGVuPSIyMDIxLTExLTAzVDExOjQ0OjExKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjdGRDdCNEU1ODNDRUMxMUJDODNBNUExRjE4QTFCRDciIHN0RXZ0OndoZW49IjIwMjEtMTEtMDNUMTE6NDQ6MTErMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+/+4ADkFkb2JlAGQAAAAAAf/bAIQABgQEBwUHCwYGCw4KCAoOEQ4ODg4RFhMTExMTFhEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEHCQkTDBMiExMiFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgGaQkeAwERAAIRAQMRAf/dAAQBJP/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPBUtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE1OT0ZXWFlaW1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COSg9OSDpmVHFwDYUG4xIFpjhYuxV2KvnT/nKLynxubLzK3qNZqwhuQjEHjXkpHh8PLK+OQNWRf0/wBGf4/nJBPLky3Qv+cffJEsUGoR27zLIodfUldg1RX4kY8W/wCByk4ZHYynL/Sx/wBxGMmHAepJ/H9F6PpflTS9KAWxtYYeIABRADt70yUMEImwN/5yiICb5kMnYq7FXYq8N/KW5Gkeetf0Ijisr+vGPHf4j+OV4+XuZdHuWWMXYq7FXYq7FXYq7FXYq7FXYq7FXYq4CmABXYVdirsVapkaVvCqgkcgkLs9UIFFoNj48vtYBaVfJIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgVoDjsOmAClbwq7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir//1/VOBXYVdirsVdirsVSPzvZm90S+txuXt5AB78SRkJmgoeD/APOH2gTQJqOqOaRuywhaHqvxlq/TxyIO6S9782eVLDzTp8ml6mnqQSfQQR0ZT2ZcckOId382X81BeWeW/OF1+WEv+HPNvqHS1bjZXvHkvDtHO6/ZZf8AVyzHkGT0y9GUfzr/AHv9KP1NgPHz2n/unsdjf29/EtxaSLLC4qHUgg/SMkYkc2BBHNE4EPnLzRqsmj/mHqWqw+n6tpZxSD1Ad0HFZglP2uL5QDR+Pq34WcT8Xtut2EHm7QZbVSDDfW5Cn/XFUP8AwWWTFhiRT5yv/wAwn0nyHqXkvViU1axYWwVti8bGqOnL9lVGI9Y4v9NH+azG+73r8nIGh8paYrd7dCPkRUYw5MCWZ5NDx3/nJyxpoVvq0f8Ae2F3HIpHUAn4v1DKpcwWUXq+lXIurSGcGvqRq1fmK5YghF4UKNxbR3MbQTKGjcFWB6EE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gN9+D/csQSOe6bflbqsHnLynDDfqJPgNtcI3cp8Dg5dICQ97KQZN5T8o6f5VshpulR+nbhi3EkndjU9cjCHCKsz/AKzEPJPz8vtU07XtH1HSrOW7lthIyhELLyNQqsVH+y45CWWET6jX9H+d/VZCQHNkX5R+T7rRbS81/wA0sq6jqZ9ScMQFRe0ZJ+HGAOU3XP6Y/j1JBMkIf+cmvKVs0lszSq0JKABKg8dhwIPHjmZHEK5x/wA76mfAO9L5/wA3/NXmSEt5Q0hhGa8ZbioB9x9lf+GzHlqMcdt8hH81hxwHfN5XPrVrq9g3mX8wbi5vXjuDbrYwEKFK/ES/2VReP+zf+fJSlLJtxeDi4f4R6pfj+nxsyeLrwR/opP5p80+RLqzSfy5pl1p+owSLJG7/ABIxU14SVll8P2VyvwQP4uP+dHJ/HH/Niw4Yjkf9N/0lN7p5b/PhL/Tjq9/amw0eKIr9YkO8koFPTgjUfzftfF/scuAjfDDp9UvphD/dcbKgdhf9b6YR/wCKSP8A5xNvWvE1eZR+6kuuYY9anelfkch1YF9B5NDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgBV2FVrOq9SBirlkVvskGmKrsVWuoYUO4yMgDzUKTozLSL4D8hlYH82kqwFBQ75ahvCrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf//U9U4q7FXYq7FXYq7FXYq7FXYq7FXYqxT8zPKq+Z9ButPp++484iOokT40p9I45TkG193qW0H+UPmweZPL9vcSGtzCPRnB6h0+Bq/ry8m9+9lIdWb4GLsVdirAfzn8hw+cdAmtZGCTQgyxOaAB1Hcns32cpnE848x/sl36PLPIf5n+Y/N+kQeV/LcCpe20Yiu7uUgogBKB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' - - -const staticImg_Base64 = 'data:image/jpeg;base64,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oooooooooooooooooooooooooooooooooooopAMDFLRRRRRRRzxzRSc568UHoaRCc4PahjyRyTikXB4cDIPFPIB6ikAA9KNq5zim4AZuD0zShcflS7sHBB/Kloo79KKKKKKCAeopMccgHjpSgcU1gOwGe2RSrnaM9cc1Fc/w8At2FSqR0FAxnpS0gPOMUuKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKOc0UUc56cUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUCiiiig59KKKKKKByM0UUUUEgDJpFIYZHSloooooooooooooooooooooooooooooooooooooooooooooooooooooo7UwP8ALkjHOKcpyPwpaTIyR6Ubu3eggkUiNkkcZFOIyCKaUDYyORS9+tLiikAOc/pS+1NwMYB596RPvHBzT6Q53A9qWig9KAPfNFFH4UCiiopx0JQMB1yaEcAyMxUKCMGno25cgU6iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiigjIxkiiiiiigHNA70UUUUUUUUUUUUUUUUUUUUUUUUVR8Qara6Jot1q175v2a1jMknlRl2wPRRya8h1T9pf4ZJZSpDq97aXTxt5Dz6bLtDY4OMcjNcx8I/2pPDl9oUqfEC8h0/VIpdqSW9tIUuE7NgA7T7V6X4J+Nfgbxj4v8A+Ea0G7uri5aIyRytbMkb4BJALYOQB3FeiLPAztGJoy69VDDIrzfwx8Sr7WPjb4l8CDSY/sGjxxML5Jecsithl9yT09K9IR0DBPMXdj7orjde+JWh6H8Q7DwbqsVzaz6jGWtLpl/cyMBkpn16fnXO6t+0H8ONLvpbO/vr+CSKQxsXsZACw7Din6V8fPAWp+ILHRrKa/klu3KCQ2jqiHHGSR36V6qOlcp8RPHui+BY9On13zktb6cweeiZWJscbvY9K6neuzeWAXGck8U4EHoc0UUUVTvdV02yvLazvL63t7i7JFvHI4UykYyFz16j86TWdW07R7MXeqXkNpblwnmSsFXJ6DNWreaK4gSeCVJYnUMjochgehBrP1rXtG0doE1bUray+0Nsi86QIHPoCaSHxDoMi/u9YsCP+vhP8afNrmjw273E2q2UcKDLO06hQPrmrdpcwXUSzW8q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iP8AZ58D+CNJvBda59qtYZbRVO9CqFD+pFdf8Q/h/wDD6C4s7698czeGPEFnpMMd3FDIFeUKnp3JIx+FcB4MkufDHwE8a63aRNeW2s6o2nQzXK5JiZeZT7/1qXwZp2nfDb4w+CZvCeuW3iH+2IYIL2PIcw+Y434x93GBivWv2u9a0aY+DbJNTszcW/iG3e4jEylolG7JYZ4/Gs/9sQ2useGfA7Q6kv8AZcuqRRy3cDhhHlSNwIOMgZNYHhm1f4fftE+F9B8IeKb/AFrT9TtYjexyXHmqoZ/mJxwOFBr66oooooooooooooooooooooooooooooooooooooooopCM45xzS0UUU10VhgjikxghB0GKfSZ6UiKFzj69aXAOQRmloooooPSik4xkelA70Z+YcfjS0UYGc0UUyVioGM5+lPooooooooooooooooooHIoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooHFFFFFFFFFFFFFFFBAIIIBB7UAADA4FFRXdtb3cBguoIp4m6pIoYH8DT40SONY40VEUYVVGABSgAHgdaWkZVYFWAIPYijaoXaAAOmKqSaVpkpJk0+1ct1LRKc/pVmCGK3iWKCNIo1GAqDAH4VFHY2cbzPHawK03+tYIAX+vrWZbeEfDFtqX9pW+hafHd5z5qwKGznOaTxN4R8NeJCh13RrPUCgwpmiDED6/jVvStC0jStMOmadp1tbWZGDDHGApGMcj6ViaT8N/A+l642tWHhrT4NQZi3nLENwOc5HpzUHjD4W+BvFmrJquvaBa3l4gC+a4OSB0B9RzWzP4U8Oz+GD4ak0i0OkGPy/sojATbjHT6Vz3gz4Q+APCWqNqei6BBDd87ZXJcpyD8uenSqHif4GfDXxHrNzq2qaCJLy5cySus7ruYnJOAa05PhV4Jk8BHwS2lA6PvMixmQlkcjG4MeQcVV+Gfwe8E/D/UJtQ0Kyma9lTZ59zKZHVeDtXPToK9BooooooooooooooooooooooooooooooooooooHTniiiiiiiiiiimlBvD8Z6U6mMG3g4BFEa4GenOcU+ikJ5xzn6UpIHeijiiik4HNIF4wTn8KdRQBiiiimP8AeXr+dPoyM4zQBjPvRRRRRRRRRRRRRRRRRRRR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5eSeQszuQAW59cZxXQUVz2jlW8b64wABENuvX2c/1roaKKYxzG55GB1rB+HfPhWFs53Sytn1zIxroaKKD0opGOASc4Heuc+KDD/hWXig9P8AiUXfX/rk9aXhVPL8L6UgIO2yhA59EFX9rE7sgH9KUht/D8Y+7/WmmIHHzMMNu4P6VIaKKKQ5zkHt0paKKKO9FJ0GCajymG7DPNGVHbqwxgVLR3oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooHAooIBoooozzj0oooopCqnqoP1FJ5cf8AcX8qTyYv+eSf98imm2tycmCLPrsFNeztG5a2hb6oKjbTNOb71han6xL/AIVDLoWiTHMukafJ/vWyH+lU5/BnhKfPneGdGkJ/vWUZ/pWjpGl6bo9mLPSrC1sbYMWEVvEI0yepwOKuUUHpQMEZFFFFFYXjXw1F4m0y3s5L25sntruO7imgI3K6Z29frWcvhPWkxs8batx/fRD/AEpP+Ea8UqT5fje5xnjfaI39acND8ZKTt8ZIw/2tPT/GkXSfHKNx4qs5Bj+KxA/kaBYeP1Yn+3tJcDoGsyM/kaUQfENQcX+gOccZgk6/gaP+LhqvXw85/wB2Qf1qv4f0jxU/xBfxBrw01IE0s2ca2rMSWMofJz9K7WiiivOdBu/E+gar4hibwje30N1q0tzDPFcxANGwUDgnPatRfFGqxO7jwDq6u33mR4Ofx31Mvi/UtuZPBHiFfoIG/wDalR3PjKQwsk3gzxMyMCGBtYyCPThzXMeGf+EL8O6zd6zpHw48Q2N/dEmaaPTCScnJAwxxk+ldQnj+wYkNoXiePH97SJf6Cj/hYWjgfPpviJD6No1x/RKg1f4haCNKuh5OsI5gcANpNwvOD6pWv8OSzeBdGdkdC1pG211KkZUdQeRW/RRXH/FW+ttP0jSrm7cRwrq9sXduigMTk+3FaKeNPCjDjX7A8Z/1opy+MPC7AEa9Yc/9NhUo8UeHDyNasMkf89xUieI9BbprFgf+26/41IuuaM33dVsj9J1/xqRdV0xumo2h/wC2y/409dQsG+7e2x+kq/41g388M/j/AElIpUk22kzHawPdRXT0UUVz/jvwhovjPRRpWtxSvCsgljaKVo3RwCAwI57muU8NfBPwZo+t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' +const SOCKET_CONNECTED = 111 +const SOCKET_DISCONNECTED = -111 +const SOCKET_EVENT = 222 + + +const StaticImg_base64_3 = 'data:image/jpeg;base64,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' + +const StaticImg_base64_2 = 'data:image/png;base64,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' + + +const StaticImg_Base64_1 = 'data:image/jpeg;base64,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AABCbGQgVW50RiNSbHQAAAAAAAAAAAAAAABSc2x0VW50RiNQeGxAUgAAAAAAAAAAAAp2ZWN0b3JEYXRhYm9vbAEAAAAAUGdQc2VudW0AAAAAUGdQcwAAAABQZ1BDAAAAAExlZnRVbnRGI1JsdAAAAAAAAAAAAAAAAFRvcCBVbnRGI1JsdAAAAAAAAAAAAAAAAFNjbCBVbnRGI1ByY0BZAAAAAAAAAAAAEGNyb3BXaGVuUHJpbnRpbmdib29sAAAAAA5jcm9wUmVjdEJvdHRvbWxvbmcAAAAAAAAADGNyb3BSZWN0TGVmdGxvbmcAAAAAAAAADWNyb3BSZWN0UmlnaHRsb25nAAAAAAAAAAtjcm9wUmVjdFRvcGxvbmcAAAAAADhCSU0D7QAAAAAAEABIAAAAAQACAEgAAAABAAI4QklNBCYAAAAAAA4AAAAAAAAAAAAAP4AAADhCSU0EDQAAAAAABAAAAB44QklNBBkAAAAAAAQAAAAeOEJJTQPzAAAAAAAJAAAAAAAAAAABADhCSU0nEAAAAAAACgABAAAAAAAAAAI4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA/gAAAAAAHAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAAzcAAAAGAAAAAAAAAAAAAAZpAAAJHgAAAAEAMQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAJHgAABmkAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAABmkAAAAAUmdodGxvbmcAAAke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Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIGRjOmZvcm1hdD0iaW1hZ2UvanBlZyIgeG1wOkNyZWF0b3JUb29sPSJTY2FuVG9vbCIgeG1wOkNyZWF0ZURhdGU9IjIwMjEtMTAtMzBUMDk6MjQ6MjIrMDg6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIxLTExLTAzVDExOjQ0OjExKzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIxLTExLTAzVDExOjQ0OjExKzA4OjAwIiB4bXBNTTpEb2N1bWVudElEPSJCRTRCMDc0NDIzMUE3REYyMUQzMzlFNzZCN0NCRERCMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyN0ZEN0I0RTU4M0NFQzExQkM4M0E1QTFGMThBMUJENyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJCRTRCMDc0NDIzMUE3REYyMUQzMzlFNzZCN0NCRERCMCIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOkRhdGVDcmVhdGVkPSIyMDIxLTA4LTI1VDExOjI3OjQ3Ij4gPGRjOmNyZWF0b3I+IDxyZGY6U2VxPiA8cmRmOmxpPkhpLTEwNTA8L3JkZjpsaT4gPC9yZGY6U2VxPiA8L2RjOmNyZWF0b3I+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjI2RkQ3QjRFNTgzQ0VDMTFCQzgzQTVBMUYxOEExQkQ3IiBzdEV2dDp3aGVuPSIyMDIxLTExLTAzVDExOjQ0OjExKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjdGRDdCNEU1ODNDRUMxMUJDODNBNUExRjE4QTFCRDciIHN0RXZ0OndoZW49IjIwMjEtMTEtMDNUMTE6NDQ6MTErMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+/+4ADkFkb2JlAGQAAAAAAf/bAIQABgQEBwUHCwYGCw4KCAoOEQ4ODg4RFhMTExMTFhEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEHCQkTDBMiExMiFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgGaQkeAwERAAIRAQMRAf/dAAQBJP/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPBUtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE1OT0ZXWFlaW1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COSg9OSDpmVHFwDYUG4xIFpjhYuxV2KvnT/nKLynxubLzK3qNZqwhuQjEHjXkpHh8PLK+OQNWRf0/wBGf4/nJBPLky3Qv+cffJEsUGoR27zLIodfUldg1RX4kY8W/wCByk4ZHYynL/Sx/wBxGMmHAepJ/H9F6PpflTS9KAWxtYYeIABRADt70yUMEImwN/5yiICb5kMnYq7FXYq8N/KW5Gkeetf0Ijisr+vGPHf4j+OV4+XuZdHuWWMXYq7FXYq7FXYq7FXYq7FXYq7FXYq4CmABXYVdirsVapkaVvCqgkcgkLs9UIFFoNj48vtYBaVfJIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgVoDjsOmAClbwq7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir//1/VOBXYVdirsVdirsVSPzvZm90S+txuXt5AB78SRkJmgoeD/APOH2gTQJqOqOaRuywhaHqvxlq/TxyIO6S9782eVLDzTp8ml6mnqQSfQQR0ZT2ZcckOId382X81BeWeW/OF1+WEv+HPNvqHS1bjZXvHkvDtHO6/ZZf8AVyzHkGT0y9GUfzr/AHv9KP1NgPHz2n/unsdjf29/EtxaSLLC4qHUgg/SMkYkc2BBHNE4EPnLzRqsmj/mHqWqw+n6tpZxSD1Ad0HFZglP2uL5QDR+Pq34WcT8Xtut2EHm7QZbVSDDfW5Cn/XFUP8AwWWTFhiRT5yv/wAwn0nyHqXkvViU1axYWwVti8bGqOnL9lVGI9Y4v9NH+azG+73r8nIGh8paYrd7dCPkRUYw5MCWZ5NDx3/nJyxpoVvq0f8Ae2F3HIpHUAn4v1DKpcwWUXq+lXIurSGcGvqRq1fmK5YghF4UKNxbR3MbQTKGjcFWB6EEUIORItUv8veVtN8uwtbaTbpbRMeRVBQE+OV48Yhyv/OPEoFPMvzJjHlzzno3mZBSK5Jsp2H+V/d1/wBl8OEbS/rR/wByyiLTXzh5ig0Pzpp897IkNq1lMHkc0AAYN1yYjZZRF7Jbf/8AOUflGGb6vZtc3snT9xCT93qGNm/2K5eYRiLlKEf9N/uuHg/2ayiIizKI/wBN/wATwf7J5R+df57aR5wt7Oytre4hMNysrGZADxU78AC3xZTIRO8TGSAY9Df4/rPTrX/nJnQZbdItLtry6nAVAixEVNOIq/xKN8meCP1Sj/vkenqWXyR6l5t8rXcOs2otLi5ikCwg8iBSsfL/AC2yiUxIWLH9Zjd8rH9Z55/zin5xu9Rsrvy/ej/jmsoTahCmq8W8W5JlnECPx6mcjb2C58l6LczteTWNu1ywIMpiTnRhxP7ynLp/lZjHTQ7vv4f9L9LVwjyeJvbzfk7qb6deKbjyhqrlancws+zB/wDJ+L/ZLk4Hi/dz/wA2X85nHf0n/Nkpav5V0/yF5x8vTeXqpb3fKOShrzU1py8R8WOOJx2CbtYDhe7+Z9Gk1iwlsoZ3tpHX4ZYzRlPY5YTIbx2l/sf85IkY8nyz59/5xl1jSoX1w3H6TZX5zooIcrXk7Ly+03HMc5JR+oRET/FH+D/N4YtXGbuVf5r3z8pPPWheYbAad5eV40sY41aNkK8SR9nf7Rr9rMoQEI7ES/H8TbwgcjaX+VNI886X5ilOq3Ud9ok/Mqdg0dD+7ASi8eS/sryXI+OZemUa/pR4eD/i/wDTqchOxA/rRr/ZfiT1HJsXYq7FXYq7FXYq7FUv1HXrDTF531xFAvi7hf8AiRyyOOUuQJZxgTyYZqX5+eTNOkMM2oxlhsfTV5B/wcSuuSOEjnwj+tKPF/pb4k+GfL5sl8sed9G80xevot1HcqOoU0Yf60bcZF/2S5CWMxFn/TR9Uf8ATRQYEJ9kGDsVdirsVdirsVdirsVdiqD1TVrXSoGu7+VIIE6u7BVH0nDGJPJIFvKdS/5yZ0JXa20WC61O5UlQIYzxJHcP8Tcf9hk5iEPrlGP4/wA3/Y8SSIx5kf5v4/4p45+YWu+bPMHmrS7q7tv0LczERWzE1IDEjk5/m+LMcZonfGCa/nfxqJj+Hp/OZn5r/wCcZx+h7vVNV1Ca91KOFpAWPw1Ucj1+KnEZVKeWW8iP6sWJlKXP/Ss//wCcdYraXyjZ3SQRRzcWR2VAGYoSlXIFS22S8KF3Q/rS9X+l4lIAZh5n0TTQk2uT28T3ttBIUmZQXUBWNFc7jGWME3v/AKaXD/pOLg/2KKssQ/5xy0v6r5Wjum+3eSyTH5Mx4/hk4sik+q61o2neVtSudWtoZbm3nmgZWUEtISRHX9r7J5ZV4EZ+oj+lxJMAd2CeTv8AnH7WLfSIPM+iXTWeuPWURdEKE1SJv9j/ADfDjHLOHqG+P+b/ABcLESI5f6VDeb/M3nzU7zTbLzPaGzs4LyFZJUFEkcsOBr9H7LZP8xCe0RU/5sv4f+JZDIDyFM682xjS/wA0tJvHFUvIDGDTuAV/hjHnSh7XqCs9tKifaKMB8yDTLJcmL5g/5x9/KKLWLzUtQ8x2YktuZijWVT9rkeZAb+XMUkZNh0/iiUbSeo6BP5F8t65/g+yto4dQFGHKMEEkcxxkb9rjlkNJEiz66/nFRiFd/wDWeef85X+RrO3tz5mmkke4maOCOPbigALOR/rU+zhjEg9BEfTGMU1fwR35c/8AOR/lvy95XsbG/eWS8gjEbRwxkkU6Elykf/D5ljEKsmMP9N/vYy/2TZw+YDN/KP8Azkd5U8y3aadDJLbXEhCos6BQxPRQyNIvJv8AK45I4trBjL+j6o/7uMV4NtiP6v49P+yRH/OQPmdtH8tyW1vvdag620YHWr/ap9Hw/wCyyi/sYxefW2hwfkb5dkmhJude1SiRgA7GnQD+WPl/weVYv586FfTFjEdZJt+Uv5BwJpM+oeZk9TVNTRuRcVMQcfshv2/2sqMTl9XL+b/xSDul/wCW2mW/5f8AmG8sNf1Mk6dbH6tE4CoYWAlZ4yftP+y6/azJxieQdPR9UY8XF/X/AKrZASn8PxxJv/zjBbSXNtqmuPXhe3bFK9wO/wB+2Rjz9zEvcCK7HJkIeM/kGDp2qeYNDNP9HvS4p4NVen+wyEDsyPJ6l5h8u2PmGzfTtTiE1vIN1P4EeDL/ADYJw4h3f0osSEo8ufl/o/lCymg0S2WIupLH7TMabci27f6uQjiEdzcv6UvxFiI088/5xZsLq10rUZLqNollvXKBgRWgAb7X+V8OThIS5bsgbe03UAnieEmnNSv3imWFXzpD+VXne3jfyZFKiaFNO0rXCmjCNiWeOn2uTfy5THPIDh4f3n87+BIyECq9X85715X8s2nlrT4tK09eMEKhR4k92P8AlNk4Rod7EMX/ACz8mT+XLzWJZFMdvd3rSwqDUcKD4qfs8myGPu7vTuEgs/y9XYq7FXYq8i0wfoP8zbu3PwxarZrMte7Rniae9eeQieYSOT13JoYp+ak5g8r6lIOotn/EUyMkhKfy20K01byLp2nX0Ykt57OMMp7hhX/gv8rIcPEKUsEtHvfym1uPy+ZnPl/VKpayt8RgmbYA1+0qtx+HJwmT6DRkPplL+P8AoyZQN7Hevp/4lES/kh5p0t31DRPMExvHJZllB4MdzSjGVf8AJ+xkBnzDmIT/AKP/ABPFH/fQY+LMdx/o/wDE/iLIfyP/ADNvvOEF1Y6xGq6hpziOV0pxepIDUX4Q3wfs/Dl0pCW49P8AOh/N/wB9/pmUq939F6ngYPLtY/IDy5dQak0EFLvUASJGJbg+7L6dfsDn9rMPwDzuRr6Y/wA3+j/S/wA5hw/8dSD/AJx3/KG98p/WdV1wUvpSYkBNSsanr/z0/wCI8ctjIzNnZkDb1nzVoEPmHTLjSrnaO4QqSOx6q3+xb4ssmCRt/mpTCztvq8EcNa8FC1+QpiB3q3cXCW0TzzELGilmJ6AAVJP+qMmEgPjn88fP035i3JuNOt2bRdJYc5qGp5kIWLfZHL9hchOUYnh/jKSQNuZfXfl70f0dbfVaej6ScKeFBTCBWzHklX5l2Yu/LepQnvbSH/gVL/8AGuCfJISb8h5Wl8m6aX2Ii4jvsCQMkFLPyQNzhQ+WfMfnTTfKX5hajcMDf219b8PTgYMTI3H93VPssrc/8tPhwCPBfETjr1cX8UGdV9WzKPyt/PC5bV18ta9bTW0dw1LN5wedO0UhZV5/ypJk4yjkGxuQ/i/n/wDH1BEveP8AZPfsiwdiqR+c/LUPmbSbnSJwCtxGyivZqfA3+xbKskbH+yir4lvkvre3uYL28mXUdPmjtLeBXIOxYE/6q8OPw/t5ZHPMgG6iGziPPufcfluOeLTbZLs8pxEnMn+am+IN7tZLte8x2GgW5vNUmS3gG3JzQV8B45OMTLkyjG3k+qf85A3GpXDWXkjTZdVYUHrUIjBPc7fY/wApnTIzyY8W0zcv5sf4v8//AImM0nhjz3P82P4/3qr+VWtfmFrOszTeaIvqenRLT0jEFDOenpvX1G4/zcnTK/zAybQA/pS9XFH/AE3p4v6PpY8d8hw/6b/fPZssQ8R/NBF8seeNF8xxfCL1jazeB6AE/wDBp/wOVxFSPmyi9uBrljF2KuxV2KuxV2KuxV2KuxVwwBXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVW8d65Ct1XZNXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq//0PVIwK7CrsVdirsVdiq1lDCh3BwHdXjn/OM0Zt9P1W1ccZYdSmVge1AuQgbZF7LljFB6npVrqkDWl9Es0DijI4BB+g5XPGJjdBFvIb/8l9V8rzNqXkC+a3JNWtJjWIjwWv2f9lkI5cmPY/vsf82X96yjMjb6/wCsmv5Mfmze+dJbzTtStliutPYK8kZqhJJWn+tVG6fs5fKUTyuN/wAMv4WUq6bf0WOfnn+Wevajq0eveVoxNNNA1rcRsQBxYcA/xFfh4t/sGTnmLPJwHcSnGX80Slwy/wA1hxV5vTfLFjN5S8u2djcJJcy2sEcbiIc2JAAJUEqWVf8AJy4S2uR4fhKX/TKM5f530p58/T/pp/7mMpf7F8v/APOUdpYX1/F5is5XjnmVY5baaJ45KoCBIElROScRxf4m/wCGyENyeEwnjP8AFjnGXDL+lDi4of50IpquoI/on1/6SXq/00IvpH8pvOuleYPLlvdWDhI7eNYpVYgGNkADK3+T+0rfy5eMZjsN/wCakwPvRTfm15XF2mnfpGA3MjhFRWrVieIFV+Hdvhy04pJ8MhR/ObSv0p5S1K3Aqwt2cf8APP8Ae/qTMXJsGAU/yR1tta8oabdyGr+l6bHxMZMTfimWBZM6wodirsVeaf8AOQelSXvlWe6t/wDeiweO6jI6gxtuf9ipZsqntR7ikGnh3/OQ19cecbvShpSmdv0YLqRY9yFJYyGn+Sq8sMp8G52/hZS9L1H8rPzI/L610ZWsWt9Pktoh60cqqstQPj+OnK4Zm/32zt/kLhjoY/UKyf7ZL6o/1+L6P9x/MXwRzFS4v4v4v878cP8ANS7yXZH80vM485TQCLRNPBitEdQDK29ZHH2Sq82/2Xw/sZTOMZHhjXCP7yX8/wDosJEch/nSe4W+lWlsawQxxnxVQP1DJDBAcgEUjMvSkGgeStK8v3F1eabAsU16/qTEdz7D9lfZcohi4O8/1v4f6qAKQ3nD8xtC8oRerrV2kLH7Mdau3+rGvxf7L7P+VmXDGZeQ/nS9Mfx/VbIwJ35f0pfj/cvEvP35raj5/wBPm0rSNMSHTZxT6zqDCIEdpIg5UV/yl9XKJmB+njzyH+pj0wl/W/4qUP6q7HkDk/q/T+P87/NeN3et+YNAvbd7nUIJ5dGANsFf1VIY7qhp8XFT+1lnGZVxRqvq4uH/AGXDKTIk9QP9i998tf8AOWWk3toi3trcfX6UeOJOQJHdP8lssqHMyEB/SWone6TRv+cndMiANxpmoRg9D6QO3j9tcqEsZ/jh/sv+Ja+KJ6hHaF/zkL5NuZvRZ3sJpTQieEpU9i8ic1/4JsOPTYxvj8P1fzfRxf6aMWUcQ5xMDf8AN9P+9jH/AGT1GyvoL6Jbi1kWWFhUOjBlPyZdsTEjY7MSCHj/AOYGh+e9K1yTzJ5buPrdo4VfqZ7CgVuKn4T8Xxcsr/MGG0xxQ/o/jiSMh5HeL17TZppbWKS7URzMil1BqAxHxrX/ACTkhuxUr7X9P09DJd3EUSDu7gD8TlkcUpcgWYgS8517/nJTyjpTmCOeS8kG1LdOQr7OSkbf7FmyRxgfVKMf9l/uIyj/AKbhZGFczEf7L/c+n/ZJFN+e3mXViE8u+XbhuX2XuAwUj7olH/I3Mc6nAOUjk/q/w/5sfF/3rWZw85/0o/8AHeP/AHTQX83dUq3K0slatFNCR9Khv+JYPzY/hgf876f9lL/er4vdH/TfiSofyj88auoGseYGRT1WEHb5H4cfzOU/TGGP8f1V8WXThCL0z/nGbSC3ra7dXOpyg/7scgU8KVZv+GyuXiZNpS4f6OP/AI9/xLGRMuZLMtO/J7ynpyenDpdsR4yIJD/wUvM5X+Wj145f58v9zExh/sWPCPwSwDz9+SL6RIfM/kJjYalBV2gQ0jdQKuqp+yzcf7v7D5OJlg5XPH/FGXrlH/On9cf63r/myZRJhy3/AKMvV+Pxws9/KTz5/jfQotUkUJcqWimUdBIv2qezLxbMuVdGch3M1yLF2KuxV2KuxV2KuxV2KoXUdOt9Rga1vI1lgkFGRwCCPcHITgJCigi0LovlrTtEhW1063jgiQUCqoFMqhhjHpv/ADpeqX+mUCmFfnh+X9x5s0lJdLoNUsZBNbnxI+0lf8r7X+xwz9J4hvX1f1U8t135aP5o1vS7tfOMKQNNVIowBUIV4PzH+tkjlGUekV/vkmV9OFIP+cXrojQbrS5K87G8ljofA/EPx5ZOJsJL0bz+vLy9qVOotJz9yMcZcmKB/KWFYvKumKgCg2sbUFBuRU9MENgkvPdY/Iu71fzk+pXUo/QMki3TQgn4pQACpT7PxMOTN/LlBMj6OUT/ABf0f+KQZHk9tSNY1CIKKBQD5ZkgUrAvzusTceW5Z0FWtJYbge3BxzP+xQtlcxXz/wB0kFi//OSGnSQaXYeaLb+/0m5jkJHXgxAb/huOC6IPf6Ug0Xrej6jHqVnDfQmsc8aSKfZhyGXIIRSRqg+EADrtkBEBD488/wCt6Dd/mbc3upXckFjbhR6sFS3qIirRCv8AxZ+1khjlyiYw/i4pfwMqPTYsg82eWdL/ADAiiMfm2OWFW5CK54qVBHgvHk+37S5KWPUHkIZP6UfT/wAX/umUo5Dt6Z/1fT/ueJM/+cYX8v2NleW2oNZjUILl0SRynN0AG6M/xFOX8uVfk/F3MZT/AJ0ZCUoxl/V+jiYeBx9OL4cX+xe7nytotzIl99Ut3lUh0lEaEg9eSvT8crGlhDlEQry4Wvwog8h8nkkMv/K0PPYnhPPQ/L52YH4ZJqncePxD/gEX+bLMn83/ADpfj8fxNshW3+me13elWt28ctxEkjwkmMsASpIoStemMsYlz3pgYgozLEsM88flN5f86skus2/OaMUWRGKtT+Usv2l+eY88XEbBlD+rw/7mcZxYSF9SP6v/AB7iZBoWhWehWkenabEsFtEOKoo2p/En9pvtNk4Q4RX+6+pmBSZ5arxnS2/w5+ad1aNRYdatFmT3eOvIf8JM2Qh1CQHs2TQ7FWlAGw6ZGMQOSt5JXYq7FXYq7FXYq7FXYq8k/OwJo2p6D5qrwFrei3lYdfTmBBr/AJK8WbIDaW3UcP8AxLKPN63k2LB/ztWvk7VN6f6OT9xByMkhMPyu4/4W0niKA2VuafONTjFSk/53eTG81+Wbi2txW7gpcQU68o9+I/ymTkv+tleT0+r+b/uf4v8Aiv8ANYk1v3PObj/nIuCHyXDJCJJNakjNqVA3SZFVDM/7QVufJP5n+D9lsyTXOxv6o/0/6LYa5sw/5x38iT+V/L4n1FaX2oP9YkBHxKrAenG9fi5cfidf2HdlzFgeP1fzvp/pR/H+xaxvv3vVsvS7FXYqlOoeaNL05ed7dwwr0+JwP45bHDKWwBLMY5S5ApFdfnD5SttpdVtaj+WQN/xDlkvAl5R/rSjD/dyiyjiJ7v8AOlGH+6Lxv80fzjtfPN7F5Q0C9S102VgLq8f4VZTT4I6/F8P+Vw5v/Ki83hMGG0eGeT+tHgh/n8XDL/M4v6PFJeEx2FGX9aPDH/O4v9y9IvPyy0mDyJd+XtFpJBLbs6yKQxlkUeokhaP7ZaSNfs/6q5hnGcYN/X9UuL0/9I+lp4aVf+cedel1nydZPOR6luGtz7CI8Er/AJXp8GzI5sizbzNbtc6VeQIKtJbyqB4lkZaZGRoIYP8A845EnyTYEmu83/J2QYQykx/827vzD/pNpqup2GjeX5qoko5vcyLQFgI+5/Zf0+PBf5v2jGczYhDeP+UyTjGH+bwy/wBjOPH/ADVgSeQqv8pI/wC49X+x4Yz/AJjxDzDqfkrRX0m+8rNNNeWFyj3EkikeqoKuzfEfh+IcePFfgfIeCY7ykMnH9UY8Xo/qxlH6f9OkQ4TuYz/nfV/v2Van5muvzU/MDTr3y3C7WWnNDWRloAqt6szv+yOVeKL+38OOSUcZoUSf5v8AF/x3+kxlIDbm9L/P78xr7Qn07QdDm9LUr6dalQCwSvBBxPL+8c/8I2WGXCLZR23eyICAAdzkWC7Cr4W84+YP0h+YU+oaBbfWXW7JiiCkh3jPH1Ci/FxaRPU/4nlREYD1fT/Fv/sf+O/5qZER5vRfy286edvM/naOy1C5Kw2lXuo46ekigbxME+Hny/d/6/L+XLJajagIxEv4a9XD/O/n/T/OZmfTlf8ACleseftK87+dxN5kmMXl+zZliicEK3EcRzC/ZMkn7x+X7HwZKQM/REgD+KXFw8f9X/c/1U1xekV/puF7VZfnF5C0SNbSyu4IYgDQRIeO3jwXr/rYcekEeXB/p48X+mlLiUYSOXD/AKaKa6B+c3lTX7hLLTr9HuJDxRCroSewX1VWpb9j+bJnCQL9O382cP8Ac8XEx4DV7fOLOcqYPE/+cpl9DSNO1H/lmv4zX2IZv+ZeVnmPiyi9mtpVliSSM1VlBB9iKg5YxVsVdirsVdirsVdirsVW8hXj38MaSuxQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq//R9U4q7FXYq7FXYq7FXYq8i/K6AaX5180ac5HKWWC6QeIkDPIf9i0iLlUfuv8AH+lZ9HruWsGK6F+YmmarDeTs31X9HzyQTrOQpUp+31+xIPiRv2slGJlvH1X+Jf6VmIE8t3j3n783r/z/AD/4R/L9XcytxnuxVVCftcG+0ifzs3xP9hMjPJHD/Syfwxj+PVL/AGMU2Iecv9y9a/LD8u7XyJpKaZbn1JmPOaU7F3PU/wCqv2U/ycx4Rl9Uq4pfjhawzHLwrGvN35gaJ5Sg+sa3dx24pspNXb/UiTlI3/A5ZDGZb8v6UvTH/Zf7n6mccZPu/nS/H+59T42/5yA/NyD8xNTtxpiOljaqVQOAGZ2PJ5KKWovEIqrkTER5Uf50q/ElkAOX+m/H8LC7jQta0ya8s4jIi2wVrgISAFagDEfDyX4/+I5XDUcI2NcaBMj4vQ/L/wCRnmqwFp5q0FYNQReFxFRgxqPiAMbfadW/Z/nyiWUg1OM/831f7Jr4jHmP98m3mH85/wAyLSCWw1e29OO4jaNuUBB4sCjEGuzcTlw1ePINuD/TNvjRO1Rv/O/4p67/AM4nT6g3lQwX0XC3incW7k7srHnIOHUcZWb4v2+X+TjGYly/H+cxJt7ZliHYq7FUFrGnpqVnPYzf3c8bxt8nBQ/ryExYQXy//wA4taBev5pv7m+BK6dbm0BYdG5qix/7FI3yviE6Hl/sWZlb3TUfyW8o6jcfXbjTIPWryJVeIJrX40Tirf7IZV+WA5GcP6MZy4P+Of5nC1cAH9sv9zfCzCxsYLGFba1RYoYwAqKAAAOwAzJhAQFBkqyyLEpeQhVG5JyfNkA8685fn75X8rkwy3H1m4/31B8Zr7lfhX/ZNl3g19VQ/rf8Sz4K57PKdV/NX8wPzAla18qWE1jYyAhZQtGPu88vGOLl/k/En8+Y0tXjhtH1y/08v8yEf99xIGWI+n1H/Tf8ch/nJT5e/wCcVvNOoXH6R1q/S1nbcsazS1PU1rxVv8pZWymefJk/hv8A4dL08P8AU/e8X9WcYtZySlz/ANl6v9j6v93F6ZpH/OL2hxn1dbuLnUpj1MrlV+hE/wCNmbGskvqlQH8OMcPp/wA7j/2HCgmUuZ/0vp/49/s2baV+T/lXS1C2unQCncqCfvOR/LRPPin/AFpSkx8Mdd/6zzX80dCX8vfMll59022U6ef3N8iKKAN8AmUdjxb/AIJF/mwxhGJ4ZfRP6f4uGf4/3zONA0ev+6e5WN3BqFvHd2xDwyqHRh0KsKqR9GXSwx5ED5BkUHNZ6VraSRSpBdopKOpCvQjqjD4qH/JyuejgNzEA/wAMuHgl/mz+pjLF/OH+mCRaP5M0XyPLc6jaSGys51HOFpKQKwNfURH+w/H4eK/D/kZdixy+kGU4/wAMZeqUf8/6uH+tJMQeW8v97/nfV/smF69/zkPHc3TaX5Ms5NWuxtzUERg/xH+U3HLJyhi+s/5sfx/uWfpj9XP+bFLh5D/MTziPU13Uhplu3WGD7VP9h0/4PKPzU5fRGMP6UvxKX+cx8U/wgD+smWl/84u+X4XWbVZ7m/kHUSOQrH3C/F/w+Vy8We0pnh/mxH0/50+L/csSZS5kn8f5z0TQPy/0HQFA0uxggYftBAW/5GNyk/4bANNA7kcf/DPX/sZemP8Amxix4R/vv53+6ZGBTMkCmbsKuxV2KvM/zu88635M0+DVtHhjltklAujICSqEgJQKy7M1Vd/2cAyCJoi/97/x7+b/AAsokDn+Px/pXoGl6jDqlpDfW55RTosin2YchhIRyeM/ktE3lfzbrvlJz+5ZxdQA9gx3A/2Eif8AAZVj5V/N9K9Pc9yy1DsVdirsVdirsVdirsVdirsVdirsVeBx6i/5V+eLoXwI0LX3Eiy0qI5qnZqfZXkxX/V4t+zleIjeB6eqP9VlGjty/mvc7+1S+tpLZ90mRkPyYcT+GSkLDFLvJ2hNoOkWmlOwdrWFIiw2rxFK4IXW6E6yaXYqh72yhvoHtrlBJDICrKdwQeoOQIsV/wAdUhLvN3l6LzFpN1pE32LmJo6+BI+Bv9i3xZCcbG3T6f8ANUsA/wCceNfkn0V/L998N/o8jWzqTvxBPpt40/Y/l+HLIniF97I77vV2IUVPQZJi+Tvy7/JDSvzB1nWNTvGeOxgvHSJIiAGqXJ+PwVeGY0hLkDw19X8aJD4PTP8AoVDyby58Lge3qCn/ABHB4U/5x+UWPD5y/HwTH/oWXyRx4myatOvrSA/g9Mj4Ev5+T/pX/wBU0cJ75f7H/iWDfmT5N0r8vYobTypNeRavfv6cFuk7MpBHB3kjblyXi/FP8v8A1WzJjKcI3Kc544/w5BD/AGPDGDbHiA+qRj/N9Pq/2L1z8q/IUXkjRIdLShnP7ydx+1I32z/qr9lP8lchAdTzP44UBmWXK7FXYq7FWPa3590PRQRf3kUbDbjyDN/yLTk//C5YMUvd/W9P+6ZjGf8ApJ8+/mt+c+iXGvaRr2jB5rjTZWEtV4ho26xqf5vt5CUBE8wb/mp4QObNj+fOs6kv+4LQ7iYtsOdRQ9ieKt8OVnPhjzJl/N4eH1f75jxQHff81ZHr35sakoMNha2vIneQgEDeleUjN/ySwDVR/hhM/wBbi/33hf7pAyjmIk/0Zf8ASWJc/lz83LqjyanZQrUVRAK0/wCkf/ma2E6onlj4PjH/AKq5f9inxOoER/R/6T8X/dIm38o/mgGPqa1bUrQfuQainX7K0/1cidRk/mQ/03/HWHiy/mw+z/iUwsvL/wCZFsatqtnKD2eA/rBxGon1xg/1Z8P+9ZeITziP80vRdFa/NuP0oIxcAmvpEladvt/Fkoy4unB/RsS/3KOaYZNXYq7FXYq7FWA/nnon6Y8oahAq8njjEyeNYyJfh9+KsuVT7+4qybyjrA1nSLPUq73EEch+ZUFv+Gy4pkEm/OG3+seUtVjpX/RZG+lRzH/DLlc+ShE/lg3LyvpZrWlnCv3Iq4YhSyjJIYF5a/KHSdA1m+1u3HI35DGJgCiNy9VmQePP4l/kzFGG9pVKA+mMh+Pp+ljws9zKZMT83fmdoPlJCdXu0SUCvpKeUh8P3a/EK/zNxXLI4id/pH86Xp/6S/zeJmIE7/7p5qv50+a/NTtF5Q0dhAfs3FxUCnZ/i4x/F/L8WUHUYomheY/zY/8AHfp/zpMeOA5XP8fj+NFf8qv87+YqSeYdbNsjb+lagih/1hxwfmcp+mMMf9b+KP8AS/pJ8WXThj/xKZaX/wA40+V7Yl75Zr6RgKtNIevcjhx+1/rZTKGSf1zkf6tR/wB1x/71r3PMksnm/KHyrLbGzOmW4jK8aqgDgf5M394rf5StyyP5WPQzB/nccv8AcyMo/wCwQI/j6v8AdJro3krRtFgFtp9lBDEN6LGBU+JNOTH/AFsP5TH1Amf52T97P/Tz4pMRjH/SXql/ppepOYYEhQRxgKgGwG22ZEYCIoNg2eO/lXInljzhrnlJmIjuJBfWynYUepmVB9PH/Vixxg8NfzDw/wCb+OFkOXuexzgFG/1T+rJHdDyz/nGwiPy1JZgUNreXER96EGv/AA3HBHkyKE/5yB/KW786W9tf6SFe+suX7pzQSIxBZK/ZDcl/yeXxfHlM5GJveUP4ox+r+tH/AH38X81hdMP1nS/NXmfQm8tW/ly30tSgEkpKhQEIekIXkyszL/lf6+UA4BvCMzk/nSjKMv68pyjDiQDD+ES/H+bH/fJ5/wA46apYeXPItxqF0Fia1mm+sHoxZAKA/wCVx4qq5mQgCb/nfxf0WwRv/OeXa/F5ik1Gz/NW/tmmtmuhIsIqSkUZHo1/lVl+w38/x/tZWc0ZSo7R+mMv90gzF/0fpfRvlP8AOXy15o9OKyvEW5lApDIeL1P7PFvtN/q5mnCeYqY/oy4v9NH6othx1uKP4/m/UzHUL+DT7d7u7cRwRKWdm2AA3JOUgW1gW+X/ADhfeWtF1V/OHkm6SfUrwNBBbQqRxmkBikuShCsvwv8ACvH4pW5/z5T4JxfVXhD1R3jL/N/qR+v/AGH81kIcO55PZPyT/LkeTdGBugTqd5SW6Ymp5GpCV/yOX/BcsENzxHr/ALGP/Hmvnv3p7rHkPy5dxP8ApCzt/TYlmYqF3PUlxxauQGkjewP+aZI8MF4r55k8l6XL+gfKukxarq04IUR1dEJ2BkKt8TL9rj/wbrk5aeGIfvDP+jG/XP8A0vD/AMUynjA+u/6vFKM/9iyz8l/yCtvJ7Lreq0l1hgSAPsQ8hQqgX4S/E8Xb7P8AJ/O0IxMjZ2iPpx/7+XF6v6sf4P4uKX0xAP8Ax17NmUyee/nx5Ul8y+VLu0tl53EXGaMDqTGeRA92j5rlWTbfuRdLvyS85Q+ZvLdqVb/SrSNYJ07qyDgOX+sq8suPf3tkh1egYGDsVdirsVdirsVdirsFK7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir//S9U4q7FXYq7FXYq7FXYq8g8xEeXfzI0/U3B9DVrdrNiOnqKecdf8AW+BcqiKJHf6v96yiHqmn6jBfoZbVw6qxQ07MuzKfBly6kEUwLzn+RPl3zZf/AKUvEkjnenq+kxUS02Hqju3H4eS/FmKYSH0ylAH6o/w/1vUwo9CQyrQPK+j+UbQw6dDHaW6irEUHTu7nr/ssliwCJ2uUj/FL1STGPcwjzT/zkR5f0lmttN56ndjYR2ylhX3f7OZcoxhvMiH+6buAR+o1/R/iY897+ZvnhQbSOLQbCSnxPvKR9zMu3+Sn+vmMNWP8nEz/AKUvp/rer0/7tgMoH0i/6Uvx/wAUlfnn8rvL/kPQrzX9WkOq620ZEUt23KsjfAhSBiynix5fH6vH/JyJx5Mu8yTEfwx9MY/0eL/pGH9FPCZ7y4pAf6X+j+Pp/oPnjVrK00mwt7Qxv+lrgpcPMWFAjV9OMJT4W/3Y7cv5cMRe9/0Yxr0/1uPi/wB4gDqzzyjfz+QfOoTzc31i11eALNLJuGSUBkdi38rji+EAZwQdvx6Ug8WxeyeT5o/y414aNBMk3lzVX5WzBw3oysK+kaH7Ev7GShxRHDO7j9Mq+uP/AB1IBqj0+mX+8e2vEsgo4BB8chPFGf1AH+sGstRQpCvCNQqjoAKD8MlGAgKiBH+jH0oArkq5Yl2KuxV2KoOy0u1sTI9rEkTTMXkKgDkx6s9PtN75VHEI8uv4/wA3/NUBhvnT86/LHlCseoXavcj/AHRD8clfAhfhQ/8AGR0zKGI8z6P63/E/V/vW3wz19H9b8f8AHWDp+dPm7zSlPKWgyJE5IW4umotOzhTw/wCZmUS1GGOw48v9Uen+r/FH/Zxa+OI5XP8A3P4/zkGv5I+c/NVW83a28cb/AGoLckingPsrT/Y5H8zll9IjjH9L6v8AYfxf5ynLPpUHovk78l/Lnle2it4bWOeWKp9aVQzkk1qa5R+XEt5+uXx4f9K1cAPPf8fzfpZ2ihBRRQDtmTGIiKDYuySuxVokDftirDvPfmHy01hPpmu3cEcM6FGVnFaEdh45KWnlMd39L+az8Ml5V+SX5vaPp2lz+WtSvo0ezkeO2lkPFZIjX06FunH+Vv5sIgZDauL+bf8Auf57Mxvu28/9z/OSP/nFJLw6xrEiyNJGEIO5KtJz+By3832v9jlRmeX+cwJVLP8ALTzl+Z+qzTecZpbPTreQqqBeIYAlf3Ef2ePH/djcuXw/ayuWplP04/T/ADvq4Y/8XP8Az/QxOQnYbD/O/Ema/mH+XOteW9LtT+W/+jPaMTJCgHKatPid2+3x4/ZbIRPgHirjv6pS9cv+kWMfR539SP8Aym/OC8167by15ltms9biQsRSiuB1YD9k/wDC5lCccg4o/wClbNpCx/pXreBg7FWC/mF+bGmeSJ7S0vleSa9fiqx0qoqAXNf9b7P7WSiBW5r/AGTOMQeezIdb836VoUQn1S5jt0I25tQ/Qv2sMcZlyUQJV9C8w2GvW4vdLmS4gJIDoaiowSiY82JFPJPzc80eefLjHX7JYI9KtHo0QPJpEJoJJNvh/wBVW+HKxmANGJ3/AIpH/c8MvSsZ71X+czLzDKnnfyRNPEP97bIuoO9GK8qf7F8jl5e5Tsl//OO2pfXvJtkGNWh5xH5qxP8AxFsmCmSQeY1XS/zU0y7I4re2rxEjuwDKK/emVjmVAe1ZaxdirsVdirsVdirsVW8h3xpNLJZkiUySMFVRuSaAfThAtAFrbe5juUEsDK6HoVII+8YyiY7H/ZJMSOeyvgQ7FULe2FveKEuo0lUEMA6hgCOh+Lvlc8YnzFoIBRXTJpdhV2KuxV2KuxV4friL5H/Ma21UHhY62hhl8PUFKE/Twb/gsrx7Ex7/AFRZRF7PZNVsjfWstqrFDKjJyHUchSoyZvoxYr+Un5fnyLoo0mSQTSmR5XcClS1PH2XK8dneXNDNstSxD8xPzI07yPYm7v25TPUQwr9p27BV8P5myQj1OwZxjbEPym8j3t7dt54801fVLsH0Im6QRH7AQH7Lcf8Ahf8AKbMbi8U3/kx9Mf8Affj+swlLi+H0vXsvVQuruG0T1Lh1jQd2IA+84QCeSQLedeY/+cgfLGjOYEma7nH7EA5VPhz+z/w2WeHw/URD/Z/7GLPg79mLN+b/AJ08zSCPypopjgYbT3INPnUmKIcf9aX/AFMxzqcQNDizS/o/76MeL/ZzxI44dLn+P6P/ABcVQ/lD5x80CvmvW2iiPW3ttx8mKiCL4f8AjFL/AK+D8xll9Ijh/wB1/sJcXD/1sS/qsTll0qH4+n08P+7kyHQf+cevLGlFZbiJ72VBTlcMW/4T4Y/+Fyo4pS+qRP8AV9H+59X+mnNrMb5kn8f0VP8AN/yFpsflG7TTbWKJ7dRMnBACDGefWnLB4MYbhlGIDOfJWpjVNFsr4f7tgjY/Onxf8NmQIgcmRTvJIdirsVdirsVdirsVdirsVdiqjd263MTwOAVkUqQd9iKdMjIWFef/AJIyG00qfQJTWXS7qWCnQ8CTJCT/AKytjA2GRZvrlgmoWNxaSDkk0ToR41BGCQsMWG/kXeiXytbWp/vbNpLeQE1+JHb+uGPK0l6DkkMC87/nP5f8pKyXE4nuxsIISGcnw4j7P+yy0YqFy9A/pf72LZwd+zB0vfzF/MNeVnx8vaW+3JwTMynum3P/AIH0v9fMf80P8lHxP9syfR/vof6WOX/MY+JX0i/6Uvx/vJf12SeTv+cf9B0GRb28D6lqFeRmuDy+L+ZI/sj/AGXNv8rKZY5ZN8hM/wCj/B/xcv8AOlw/0WuVy+o8X4/H1PTYoliXggCqOwy6MRHklbc3MVshlnYIi9WY0A+k5YBfJkBbBNZ/PXyjpJ4y3ySPWlIgXI/4DLThI51H+sWfhkc6DErr/nI8apIbLyjpd1qVydgxUog/yj9pqf63D/WymWTFj3lK/wCjH6v6v/SMZMSYR5ni/ox/i/33+wkhXk/N/XwUKWelRuDuCCwB8GBuWDf8DlY1Y/hhKX9KXp4f60Msof8ATJfF7o/50v8AfR4v96pL+WP5lhWB8wdRXq1ajoinsP8AKwnVZf5kP9j/AMQw8aX82P4/zXnDeeNZ0Tzrp7+aAE1GykEEsw6SQv8ADU+PX7WGEhPcDhv6o/0m0SEvJ9fSyAxM67jiT+GEtbyr8hb2O10C/vJmURLfXLtQGoAPxcv2q7ZCKS9C8sebNN8z2n6Q0eYT25JWoBFCOqlWCsp/1sulEx5plGk3cgAlumRYvkLRdAk8xeeL7ypYTltDluzczBD8LBPjI/4I8cqJlGPD/msjYFPreKziihW2RQIVUKFpsABQCnhh4BVdGNPEPzl/JSwisf015XsimqxTpJ+55VIr8dI15f63wKuY9eCeKzwfzZVwR/3zGI4e96L518sT+cPK0ulSsY7q4gQntSQAPxYeHP4WXL5E1cfx/RZE9z560L/nHDzVolsnmC0ZE1e2lEkdvUEEDuW+zz5fs/YygZZc+G8f82X1/wCl/m/7NHER5s8i/Nn8woUFnc+Xy14woHWvH/WIUsuZI1mA8+MH+bUuH/ZR42Ryw/pX/N/hWxfk/wCbfO0i3PnXUTDbE1NrAabeG3w/8FzyJ1GSe0R4Mf538X+l+pTkkeXoeo+Sfyz0TyZGyaPAEd/tyN8Tt/rOe3+SvHIQxAGzc5fzpfw/1f5rACmWZkMnYqwzzT+bPlvy1yi1G8QTIN40PJt+3Ff2v8lstGEnc0P6344mwQPXb+s+X9O/OC58v+ZtRu/KUPqwam/7uORSPiJBDrGv7XLl/wAFlMTHGN94j/NQCB5/7B9X+QbnWLnSIZ/MapHqDirqgIAB+yGDdH/mwCYnuBX4+pjd+TJMkh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv//T9U4q7FXYq7FXYq7FXYq8x/PnTJTpMOvWiCS50idLpVIqCqn94D/scplsQTy+mSQaYw/5lW2gatp/mSGQ/oPX0AmjAJ9OdR/e9dm/ZmVf2VX4MtiKJj/nR/E+Hhj/ALFsA/h/zoqHmj/nIK91y+Pl78vLdru6J4vcsp9NO3IA9B/lSf8AAZKeSGL6vXI/TGP49f8Am+n+kixDc+v+j+P+kUTYf84/6prnG486azc3TmhaGNiI/dK/y/6vHKDmzZO7DE/wxHq/4lgZyO30/wBV6j5W8g6L5WiEOkWscIH7QFWPzc/FlcdPHmfWf50vUwEaZFmSyfHH/OT1vd+YvPFvo+mD17gwoiohNakksDX4VyBnwiz+P81mdg8q88eVNQ8rasdNv5TJcQrGSxqQtRsvxcuSr9n+TBDIZiytk7n/AIpn/wCbP5deYf0Ja+atX1CO/j4IiKq04Iw5L/zT9nIDJImjGMP6Uf4v63pgsjKXMAf1f+kWD/lpBFrWt22m6jdTW8crhUkjJJV/91mjH9lsyZSmRseX08X0pBJ60+yvI0HmTy1qv+H9YnbU7CWMyQ3bLRkK7GKanw/F+xlUc3FtOo5P4eH6ZxYGfF9VcX9H+J6XliHYq7FUu1fX7DRovX1GeOCPxdgPurkowMuTKMSXkHnL/nKnQNKBg0hWvro7L+xHXxMjfs/5S5YICPM/5sPVJmIgcz/mxSPStG/Mb8zYfr11qcelaXKfhjtiCxXvR4vi/wCCl/2GY51MwahDg/pZRw/7uPH/AKWMP6zGWSUdojg/rfX+P6vA9J8lfkb5Z8pgSW9sLi8P2ri4/eSE+I5fDH/zzVcoOHj3yE5P630f6T+L/P45f0mkxv6vX/W/H/Hv6TPbe2jt4xFCoRFFAAKD7sujER2DIClbJpdirsVdiryf87fznuPy8jjS3sWuHuFPCZjSNWH7DBRyZv8AJ5LhjKF0b/q/8eZxrr/pWIeWvJPnf8xrVdR8y6o1lYXADpBb0BK9VPw/CuVnUzltACA/nS+r/ikHIeQqA/2TOND/AOcd/KumN600LXk3dp2Lb+NMpOKU/rlKf+xayCeZMmJfmB5E0Ty35s0vVWs4P0bfk2s8TICgYj4JAlOKt/lZEYB9Hq4T6o7y+v8ArcXEmMAdu/zk3+X+nxeSPzF1DQIAIbHUIRNAgoFqN6L/AMN8OW4hQr+Z/puH/OZxG1dz3vLmLsVeOedLWG1/MPStTWRIgltKZ2YgDgNlqfpysRPFtvbKMSeXVb5h/PqS+um0fyNaNql6NjKAfSQ+5/a/4JV/y8tyShi+s3L+bH6vx/VSeGHPc/zYpT+Sv5g+cfMvmK8sdceI2lopEqoqgK9aAI6Hk2/2+TPgOYS2ERH/AE3F/spKZg9OH/Tf8UmP55/ktqnnrULTUdJuIoWt1KnnUEb1DoVDVP8Ak/DlEpSB2F/FrJPRgnn38ltJ8keXp9W1y7l1HUmBWLmxC827qnxM3H7XxZI+Jk3meX8Mf+KSBKXM/wClekf84zvpSeV47fTZRLOGL3A7q7diP9UZYIEbne2RFebPPP8AoI13Qr3TT1mhcD50qMhPkxYX/wA496o2qeUEsZhSS0aS2YfIn+uSJsMiln/ONcj20GraTJt9VvX4jwDE/wBMEDYU8lX85YBB5n8t6gOq3Jj+g75Hr8FD2PLWLsVcTTriqUat5q0vRhXUruC326SyKp+hWPI5ZHFKW4Br+d/B/pvpZiBP49P+mYtdfnp5PhV/9ycJZQdhy6/PjxyfgS8vnH/ik+GfL/TRYLpX/OVmmSxPHcW0s14rMAtupKsoOzqW3G37OQ9A3J4P6ySI99KV1+ZH5h+bR/zrGlfUrZvsyz0qR4/HxUZR+axjaIlk+EuD/Y/8Uw8SI5Az/wByg1/Inz1rLi+1nX2huSKgRM5CnwHAxKv+xyP5rMfpEYD+bI8P+4jP/ZMTmydKHx4f9xFgH5m/kj5s8o6dLqn6Rkvrc1M4VnBAP7Tq5+MZIazL9M7AP82cpx/3MOFkM8+RJ/00pf72Kt/zif56j0/VpNKvrto0uV4xxPUqXHSjsfgf/Y/Hl1ykK51/pv8ANZbkPsTINbsVdirsVcTTATSuxBV2Nq7FXYVYn+ZPkK386aU+nTH05R8cMg6o4+ywyqYPOP1R+lDCPy1/NKTTJG8pedHW21O0okcr7LMg2R+Z+Hll2M+MLH1fxR/iba49xz/ii9Ou/NOl2kRnnu4UjAqSZFp+vJjDI9D8kCBLzLzH/wA5Facsh0/ytBJq1+x4oIlPp193/aH+rgnwYt5kf1Y/WpAj9R/zYsd0rTdP0nUP8V/mjqFu2qUBhtSQ3oDqP3KcmZl/yVbhlPhz1G5Hh4f4YyPDx/1uP/c8XFJPCZ/1f4f4U21D/nKPSJ3+q+W7O61S56AIhVf9b9p6f6yLl0/DxD1yj/m/7n18H+x40S4Y8z/pf+P8P+5koJrP5qeaz/ottBots/eSjPQ9D+03L/gco/Nx/gjKf9KXpj/ncXD/ALhj4oH0xv8Arfj/AHiva/8AOPN5q0guPNusXN6x6xoeKEeGCWXNPrHGP5sVM5H+j/Veg+XPyv8AL3l8A2NnGJBQh3HNqjuHflx/2PHKRp4n6rmf6X/E/Sw4fj/WZYBTMkCmTeSV2KobULNL63ktZPsyoyH5MKZCQ4hSsD/JQy2WmT6DcVMul3Dw1PdSecf/AApxjKwk7vRcmhA6rrNnpEJudQmjt4R1aRgo+9slGBly3ZRiZcmHy/mtDdv6Pl6yuNTYftovCL6J5Rxb/YrkJThD6pAn+bj/AHsv87h9Mf8ATINDr/pfV/svo/2Sj+k/POosDBaWljEf9+uZH+kLxXIjOP4Yzn/WlGEf9ivGP5pP9aXD/uVObSPP5YyR39mBTZPSNPvrlZ1E/wDU4/6dlx7cggT5p89eX2aTWLCG/tVFedoSH+fp/vWb/gVyf5mH8cZ4f6X97H/TemMP8+TESifqBh/sv+O/6aSO0X8+fK+oxsbm5+ozJs0dyOBr7Eclb/YvmTDHx7xMZj+tGP8Au+H/AGPFH+k2DHxfSYn4xj/uv97xM60vWbPVYvX0+eO4iP7UbBh96lshKBjz2YGJCOyLF2KuxV5leSjyl5zS4IK2GtoEc/si4T+7JPYyJ8OVw2Jj3+qP+/SN9npuWIee+U/LF95Z8wXsdugfR9RP1hWFB6Uv7aFe4k+18OUwlXpN/wBGX9Fb6Iz82tJ1/VdGaz8sSCK7kYBm5cTw/a4v+zlkshx7gWkSpjf5WfkHp/lQC/1Tjf6q3xGRxUIep4curV/3Y3x5j8ByG5/6X/i/5/8AuWuifqetZks0l8web9K8uxetq11HbrT9s7n/AFUHxN/sVyyOMyFj/TfTH/TSZiBLyvUPzj1vzhM2n/l9aM6A8WvZlpGPdA3w/wDEm/yMrnlhj2/vJ/zYoMhH+nL/AGKlB+RWva+3LzhrMs8XUwwmg9wTlRzZZbenD/V9SPEkf6DPdE/J7ytoyqLawiZ1H25BzJPiefJeX+xyv8uD9Vy/zpf73ha+Ac+f4/0rL7W0htU4QIsajsoAH3DLYYow5AR/qjhSIiPJXy1k7FXiH/OUPkGLV9DOu26hbywIYsBuUPwsCf8AJ+1lBHDLiHX0yRW70H8qtfTzD5Zsb0GvKFUavio4NX7svkzkxL8gbdUtNWtHPILfzBkPQBjy6f5SnK47hBeZajrlx+SPnOeK3RpNE1CkrR/MnkYz/PG3L/iGHDID0S/h/wBh/NTGuRZB5+/OyTzpNF5S8kFne9oss9COKH7YX+Xiv22y2chiHfP+HhZGoNR+S7T8rfOGiPaEiC8ia3mY1PKQ9XP+tmNjBv1b36mEQ+icvQ7FXYq7FXYq7FXYqhr6/gsIWubqRYoUFWdyFUD3Y4REnYJAt81fnZ+aF150RdI8j/WriKAs1xJCpCsAPhWq/EV/a+LjjPMMH8QEj/N/4v8A3X8P9NkZeH13/o/j/jrf5Gfkj5e8y2C67qskt7cBuLxSAqquPtK37UmY04ymb4tv6P1f50/+JapAnr/pf98yHzf5MsdK/MTQX0+BY45FPJVACjhXiaYI4+HbvSAHvmZKXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXDAFdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV//9T1TirsVdirsVdirsVdiqhdWsd3E9vMoaOQFWB7gihGQlHiFFXzm/8AzjhqsHmG3t7ecP5XjuPrQRm3Q/77EZ68vs8l+Hj9vMcSnXARf+2enh4f92gSPLn/AEnvujeV9M0T1P0XaxW3qnk/pIF5HxPEZOGGMOX+mlKUv93xKBSbZkJdirHvPfm+28o6RPrF39iFdh4sfsJ/smxDKIt8S+UPOevX3m2TX9HtvruqyeoyowJVeX+7DxK/DGv8zKuRnkjHeV/1f9zD6ZSl/VikyHM7/j+j6kN+aVtr99q0V/5lkhNzeKKPEVZKKSnEmHkvJW+F/tYBKz9Jx/0ZcUf8/wBUpS9SyJvlwf0fxKaWadp86fFqrSvZQuIpow5Bjr9iQo37GMspmKs7/TL0z/zUAk/FNY/KD2Wn/wCJdLJd9OuQk4G+wIeOUFfsqy/D/r5UJGJ36/7GX8xFcJfbvkDzlZ+btIg1WwcOroA47q4Hxqw7GuZJFJlGmSk03OBiwLzJ+cvl7RLg6f6z3l+K/wCj2iGaTbs3D4V/1Wblk5RGMXMxxD/bDw/7H6mwwr6qh/W/4n/ikonuPO3nKISWHDQbJyKGQF7krX4iV+FYT/Kv28xxqaP7uPif7Zk9Mf8AMh6uL/OYCYH0i/6Uv+ITDR/yT0eELNrJk1W7rUy3Tct612T7K4yEsn1kn+jH0Q/0rGVy5/8AHUz1v8ovK2tsJL/T4XZVCggFdh0HwFcp/LgcuKH9U/8AFcSgAJ9oHl+x0C0TT9MiWC2jrxRa0H375fGHCK3P9YpCZ5YrsVdiqhJdwxMI5HVXboCQCflhAJTVq4NcCHjvnDVvzB1nXn0nyrGun2FuBzurhAyyE/F+75q/Ifs8Y1/13yv8zGPpEfGn/F9UeD/SyjH/AHSTKhsOL+t6fx/pZPMfzqXzno1va6br99b6ol9KAkIgCkOCONCAvw1bj8OInxbzhCNfTKM5cX+8kgSJ+oAAfzZf8TGD6b8s2j2mmW1vKqxyRworKgooIAqF9sMRQ7lTXJq86/Pny5LrXlmdrQf6TaFbiMjrWM8jT/Y/FlUzw79y3Tzb8wtcS4svLf5h21awyRxzHuAfhcOf5uXPCTU/6/4/pMxz973HzHe3T6JPd6OwFz6BkhYjkK05rt8VcnKXDvzpjyeV+Q/z7M/lW71fXSn6RsWMZjFFMjfsBU/m/n4rlm0t+Q/iZkXv/pkh8ofldq35n3P+KvOsjw20v9zbJ8NU7Bv5U/4nmJLKch9Hoh9PF/FL+r/xTWZXy2Cc/mP+ZGk/lDENA0GxCTzQlgy7BSagM7H4nb9rLsOKENzZl/p5f5383/NZQjEd/wCP5zKfyE8nf4f0FbudlkvNRb6zK4Na8/iUcu/FTkIg2Sdv+JY7l6blqvn/APN38p/NX5g+YBF6scGjQBfSYknc/bbh3fKJ5T9Iif638KDM8gHmH5UeZYPy487XNneXNdPUSRSSdmK/ZNP5uS5disijQ/3LbEE7F9D+Tfz20DzdqX6GsTItwylk5pQMB14/RlkoCtiJf0d0mAqwQUt/LPyRr3lPzFqcTiM6DdsZ0YEcuZOyhK8l+H7fL4cxoZP4SDt/F/A1cW1V/nIbyBCdI/MHXNONAtykdwvyPX9eSh9yejf/ADkhOllaaXqEpKpb30bMw7D9o/8AAjE80xZXpv5x+V7+ybUY7+JYIzxYseJB8ODfFmV4Mvf/AEv4Wfhlid/+fj6tMbDyVYy6lN0ExHGIHxLn9nKpzhj2keKX83H6kHhjz9R/mxSbSvKfmL8wQ8mueYFit4mKyW2nsBxP8kkgPw8f8r1cicuX+CIwX9Mvrn/sJf7+P9ReOY5VD+r6pfj/ADv81kWi/wDOOnkyB/Ukje/mX7RnmMhJPd1Xiv8AwuUzw5Jb5JTPF/mf6WX1/wCzk1zhL+Lj3/nen/c8DKIvyg8pw0KaXagruP3a/wBMr/LRH8+X9acpf7qTHhDyP/nIPSJfJd1Z+ZvL0awfA9uwRQFBI+A08f8AmnDjhHGaocJ9XD/SZRACY/8AOL3nrVNY069bXrr1IoJAI2kIBFRUiv8ALmXxGZoD/ShmSZM48z/nd5Z0qKWGHUrb64FIQEl15dufpcmy04pDeh/VlOOKX+zZjER3f1eKMXk2v/nzda/DC1uY20sD0NTjEYZQXqolR3DN6X7SNy/18onX0mvX9Pq9cZfzfTLg/wB6ggD4/wCx/wB6+e/N3l+byvrDwI20bCSGRehU/FGwP+rkYSI8qaxY+D7k/JHzg3mryvaX0z+pcKvpynvyXbfLD3pkz7AxdirsVdirQrkRat4VdhV2KuxVi3nT8uNF84xCLV4A7L9mRfhcfJx8WY88VmxcJfzo/j1IMWCWv/OLnleKYSztcTopqEeQ8fkfbEjIdpTkfgx9R5mRemaB5U0vy/EINKto7dAP2FAJ+bfab/ZYYYYx36/zpeqSREB53qf/ADjR5Z1XVZtZ1AzzNOxcxGSi1PXoPU/4fISxzkfqof0Yx4/9NPij/sFIJ6vRPLvlTS/LsAtNJto7aJeyKBX5n7TH/KbJQwxjvzP86Xql/plEQHnX/OSnm3VvLGgR3ejTG3dpgjMv2qULAKe3TMiM+E9D/WbImvNLPPGt+aYfJOneZrG4aK7to45rpKA+orU5V/5p/wArIDMQbocMk8W71Pyh5nt/MWl2uqQsKXESvSu4JG4+/LTFBiU9yLF2KuxV2KpZctp+ipNqM5S3VyGlkJABoKAsT7YIY99uZTEXyYXN5v1vzY3o+UI1gs+jX9wp4+/1WD7Urf5T/usEskYmo/vZ+/8AdR/rzj9X9WCSRH+n/uP9N/F/mo/SPyo0q1nGo6pz1PUepnujzof+K4v7mJV/YVU+H+bK5xlk/vCZj/U4+jFH/klD6v8AP42Mrlz/ANL/AAf6RmscaxjigAHtk4xEeStSSLEpdyFUbknb8cmkIOx16wvyVtJ45WU0IRwf1HJmBDIwITDIMHm35t/kxp/n22BXjbajHvHOFBJ/yJP2mT/iOYpxcO8K/pR/hl/x7+l/pmJHUPFvJGj6p+THmmMa+zNpt0pjEkdfTYmlGbl+1H/L9r+TLsWUy9J9H9H/AIn+j/SZwJlsfx/uX1bBcR3EazRMGRwCpHQg9MsKkKuKHYqknm/yvb+ZtOk025JUNRkddmR1+KOVD/MjZXIE8tpD1RkqzyjbataWQttdkjnuIiVEsdR6ij7EkiMPglYfbVWZckJGXMcH87fij/m/0f6ybtPskh2KsY82/mPoflROerXSRtTaMHk5+Ua/FlkcZIs7D+dL0sxAvMLr8yfM35jt+jvI9tJYWZNJb+4HGg7iP7XFv9XlL/qfayqeeMDUP32T/YR/pf8ASf8AmwkgzjH6fXL/AGEfx+IsU1zyx5L8i3i2+utd+YtcajtEKkA0qxdFP7X2uLeq3+rlcoyl6s8+CH82P/FTl/suLF/VU7+rJKh+P6X++/zXpn5W/nHoevz/AKBtbVtMukBKQOoAIH8tAvxcfi48csjixiN4yJD8f0pcX+mURFXE8Qeq4WLE9I/MjStS1m58uIxS/tSQUcU5AdWj/mXJ8NiweL+d/RZ8O1ssyDB2KuxVL9e0tdVsLiwkAKzxuhr0+IED8fiyEhYV43/zi9qstta6h5Vu/hn024ainsrGh/5KK2SieIWyPJOvyVYQax5jsACDHflvahFF/VlcApLIfzP/ACp0/wDMG2it753hkgbkksdOQB+2nxDo2QyQJ3iQJf0o8cf91H/dMDfR57N+QV55HVNX8hXLnUYgRIk5BEq7mnTiG9sjEyxnilw5h/FGuHh/q+ri/wBnxKCY7/WP5v8AxLzf8zPzsu9at7S11axa01fTrlZh1CnidxRviHKn+rmQJQn6of6X8f75sEoncPqPyN5utfNukwavZ14SruDsQw2cf7FsmRXmxIZBgQ7FXYqoz3MduhkmZUQdSxAH3nCIk8t1AthPmf8AOryz5ePpz3SzT9BHD8bV8Pgyzwq3lUP6zZwVudmJf8rT83+aVK+VNGaGJ9lubs8QAf2+H2fh+19pv9TMc6jFHaPHmn/NiPRxf0p/8Vwf1mHHAcuKf+44vx/VWWn5Eap5gkW6896tNfKDy+rQkrFXwOy/D/xjjRv8vInJlyCvThj/ADY/V/xP+n8VBnI7fT/V/H/Ff1nrWi+X7HRLdbPTYEggXYIigDIwxRhy6/VKXqlP+tJAjSLtrOK1XhAiopNaKANz32ycMYgKjsoFJZdeVrW61eHXJame3iaKMdhyPIt/rfs4mNm1TrLEuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdir//1fVOBXYVdirsVdirsVdirsVdirsVdirsCpN5s0nTtU02a31iNZbLiXkDVAovx1+Hf4cryQ4xW4/q/UmrfEWp6Dr+k28vnTQIGg0u7M0IMQJCRE8CJNvhRvspJ/w+QhmEDw/5sZS/il/W/nrxcBYVd6hqENnFp9wo9NW+sRM25owFeB/aVqcuP83LLbB+HpSJX8GaXmq+YdZt5PNyWUQsZYxa3LpQoxA4B5EqzK6/a5ccgTCJ4d9/VH+bxf0ZJMvLYqPkuPUdN1G48s3N6mm297ERK70ZGQAulD9niyn4GyQkZD0gT/oy/hn/AMWmJJFCv85f+VP5q6h+Wt/KlvS4sriqlWYhCVJUSh+3H9tl/Yy6Er2P4/0yiXQvp7SPI+s+eLYX3m7UGNncIGjtLFjHFxb4gZJh+8m5L+z9jKDlnLaP7j+l6Z5f9NwyjH/M+pjKR6fu/wCrw8f+n9X+xZ15a8g6H5aWmkWcNu1OJdUHMj/Lk/vH/wBk2VxwRBs3OX87JKU5f7L6P8zhaxEc/wDZMizJZOxV2KuxVDaisrW0q25pMUbgf8qh4f8ADYCaVgv5G+bLnzJ5eWTUXL39tLJBOW+0GRvh5+/plGwk8W/f/NZnveh4sGBfmn+Vdv57giHryWd5bkmOeOtQD9tKArs2VSM47wP+bIyjCX+lUEjls8d8o3vmTy357t/KdvrL6nYxLyuPUoQq0JKMzcmVlbh9l/2su8fIRWQQ4pfTw/7r6Yy/0zbxyqpV+P6XDxPpyKVZV5oQynuMBFNRFPDfz6j5+avK4kFYjdU+nklP15UTvXkkPVPN3njSfKVut1rE4hjduK13JPsB4ZkRhxdw/pSZRjxeX9ZMdD12z1y0TUNOlWa2lFVdTUHAY0xlGkXPAk8bRSCqOCpHsRQ5WRaHzr5P0V9Y8s+ZPI1xRptMnkaBR9obtLHT/WkR15f5WVSNxB7v94yPJ6d+RHmX9P8AlKymc1mgU28nc8ozw392Xi2XkLJ4h558gWfkj8wLDUL0E6LfXAk32VXJ+JH/AGeKseX+pmNEE+g/5v8ASj+PSxiL2fUWo3a2NlLdRAFYYmkA6A8VLDL6AS8y/PnRrXWvJlxqs9ur3kcKNGwAZk5MnPi/8vFmymURfFy/H8TEgX7njHljy75t/Mm30/TraOTTbGwiETXZaRQyjuqVWN2/kVU/13yY1hhtiMzL+KMZ8MI/1+D6P9lKX8MWYzkfQT/S4Zej8f7J9ZaFph0qxgsTI8xgjVPUkNWbiKc3P8zZME9ef8SCb5pF+Z/nSHyfoVzqkrBZQhSEeMjCkYA/1viyYCYi3x3H5B1W006Lz5q0BlsmuVZ42FS6MamQ/wCQ32cxfEE5VyifTxf02HFZ8nsP5LzWXmzz5e+YdOhEVja2yJEoUAAsAgBA/a4o+S4BE8I6epkQI7B9IZeh4b5x84aJ5W/MCDVry6iWN7GSKfi3JldSGRXSPkwZl+yrYxxSvfr6o8XpbBAny/rPNPzr/Or/AB/ZrpmkWxTTxMpE8pAZm3ReKV+Ffi+L7WGfCOVzI/m/R+PxwqQBy3P+xYJ5m8kS/l3eSWerItxNJEkts5r6dSfjBT9rj9nMeE+Mb8Qr+H+ewie//SvYfPNnqlx5T0jzZ5ckWK2tI0luLeAcFJr8UhVPtcfsurNjH90dhUZ/xfxf58/q4JpB4OW1sE/JvyxP+Y/mC+/eS22kOTLcxxOV5cifTi+H4T8X/G2TM5R9MDV/xfxxgpkRsNrTaXVbL8lPzAkgtxM+mNEvNC1WAcBuX+VxbJYiSKnIy9X1f8WmHKief4/ovp+TXo9R0V9W0uZRHJA0sUrbqPhLKzD/ACf2slIGPvCKovmXzh+fC+dPLi+WFtnu9YlIDOgooZDtJGq/E3JcGQRA4pGv6P8ANZSMRvySH/nHz8sIvOdxe2OrzzQxWvEtCjcSxJKnmP8AJp/Llcpzr0Hgv+JhZrbZ715g/KnyT5O0O7v5NPidYYmblLViWpRN3PVm4/Zykabi5mcv86Uf9xwsBjvvPxl/vXgPk3ypL5Zt7fXNUAOja0Ht7hB/uoOT6Ej/ALSr/uxG/kyXFx+nlf8Ady/pxZgXtyv6Ufqn5fz+adBmtLRfU1nQJGiZR9qS3JJjYfzMq/Y/yMjKXD6+/wBMv6MofxLLv/0zKP8AnDnzI0M2oeXZzRhxmRTsQR8Eg/4hmWDYTzD6ixYuxV2KuxV2KuxV2Aq7CrsVdirsVdirsVQV/q1pp4U3k0cIc0X1HC1PgOZFTk445T2iDL+r6kiJPJ80/wDORv5rWvmeyl8vaFEbuK1cSz3K7opWqcUb7PV/tftfsZDIIw2kf3kvpiyNR5pp5V/J7XfOfl+3uta1qY2s8CtFBF9kKR8CP/NlUs2UihwQj7vXLh/4piZy5bBJvyJ/KC28y6TNPc397BNbXMkBSGUqBxow27dcTLL/AAS4P6NcX++iplMcpV+P6z06D8tvNvlomXy5rTXSClLfUAXUjw9YFpE/2HHD42QfWIZv6v7rL/m/wf6eSjJLrU/9jL8f1pM48n6xqWp2rNrNk1hdxPwZC4dGoFPqwyL9qJq/tfErck/ZwicZ7x4h/wAMHDKMv5v9L+v9MkWDyv8Azvx6v6zIsmrF/N3ni08uqkFGub+f4YbaLd3Py/YT+Zmw0AOKW0fx6Y/zpMhHqfx/VSTSPIl5rcq6r5xcTy7NHZr/AHMPcVH+7pF/mb4cpkTl/wBrx/zf45/8Nl/vEGXFtyj/ADf+KegRxrGoVQAo6AZKMREUEL8mrsVfP3/ORnnuQ3dv5OtPVEUoWa8eBSzrGSV9MBfb4vi/4rwSyCAuxAn6ZSZg8Plf8SB8vflF5V8xWf1ryPqU9nqUVCSXIYMO00PwsOTf62Q4cuP1Rl4l/wCkn+P6a+qO4Ng/6SbOPya/MTVNXubzyv5ljKaxpnHm4Gzodg57Bv2v8tW5plnGJix6T/FFBIkL5PV8WLHPPXkqz836XNpV8o+MExvSpR6fBIvup/4JfhyrJC+XT6UEMG/5x31e9fTLvQNTNbjSLhrck9aAmlfpDf7HLBPiFsyb3euYWLsVWSyLEpd9lUEn5DFXnP5WfnLF+YVzeQ2tpJBDaEUlZgwbkSBtxXg3w8uPJslLh5Ak/Dh/30mRACd+ePzQ0PyXGG1ecLIw+GJfic+/DsP8psMcZIvkP50kiF7vL2/MLzt+YjtF5StP0bpu6/WpxRum5Wv/ABquVS1MI7QHjT/2H/E/6ZHiCP0jj/pJt+WP5TeWmdtSuLpNd1ON/wB7K7c1Vv5eHxf8lMryYZy3y3v/AAx+j8f1eGP9ZjKJP1f8desaldx6TYTXQUCO2ieSg2FEUv2+WTjARFDb+qoD5c/Kr80bbTvrd9HYT6t5mv5nY8FJCpX4AX+JlXkeT8U/2WCXhg8WQ/0Yx/4j+t/R45f0GUhG7kf6sfx/x56b+Xf5fazqPmF/O/m2OOC6CcLe3jp8AI48n4/tceS/ab+bKoy4zcR4cP8Ad/j/ADP6rC75bPZsyUvnv819Ct9D896br93yWy1OltI6Eq0cgARJUcfYK/u2/wBVZMpiDxUNuL1Rl/S/q/x/8eTHnX+lZT5U/NB7bzMfJF/MuoMVLQXcVCdhzaK6RPhV1Vftr/wC5kdPUODJ/scv9KH83+ozIrn6Zf7r/iWWfmZ5+TyPpY1aaBrhPVSIqrUpy5fETRvs8f8AgsiKvfb4cX/EsALQvk784/Lnm25NhplxW5AqEcFSwAqeHL7XHLDjoWCJf1f4Wcoe4s5ytrfNdz5jX8uPzSufrg4WGrhWZzsBz3Ev+qs/NX/yeT/s5DELsdfxJnHfZnHkt/qf5j67ZKx4T28FyFA+E7KrvXx5Scf8r/YYI7fNHR65ljF2KpHr/krR/MAC6paRXFOhdRX/AIL7WY8sETvyP86PpYmIKO0fR7XRrWOwsI1ht4lCoi7AAZOEREV/0lJkA3qOr2mmRGe/mjgiHVpGCj72y+MDLkCWQiZcnm+uf85CaFbuLbRVl1a6LceFspIB934szf8APFJcZiOIXOQh/pZ/76MI/wBWc4z/AKKTER+ogf7L/jv+y4v6KULrX5meaWrZW0Oj2pI+KUDnxJ68X9R+Sr+zwgyj83E/RGU/6UuLh/2XhR4f83KgZB/CL/rf7n1cH/TJVtf+ce5dSJn81atdXzuasiMUT2HVmwnLmn1GP+jAfT/uP9jGCDOR68P9X+b/ADWa+XPyk8teXiJLCyjEq/tuOTV8eT/tf5WU/lwd5XP+sWsQHv8A6zMQKdMyAKZt5JXYq7FXYq7FXYqgdV1a10i2e9vpUht4wSzuaAD/AD/4LDGJlsEgW8I8vf8AOScmreb4rAoI9CupDDDI6kMWpxRuf2atLwVl/YV1yfFE+kUZR/i4v97/ADf5vpbNuXX+c94m1W1t50tJZUWeT7CFgGP+qvU5ERJFsBEkWjcixdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgIV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq//9b1TgV2FXYq7FXYq7FXYq7FXYq7FXYq7Arzn8/b3UbbyndppELzXE/GEhASyq5o7UHX4f3f+zyueQQ3lskSEdy8z0XXPPc/l2Hy3pnlpVtxB6Ja5cAMtOJLRymKjNXl9p8o8fDVevJf82Po4/53FGMo/wCyTxw7pn/Yx/3P++eNedPJWvaJEnl3XI7a2ECyXUMjMSSrU520cnxc2Vv91/z/ALeThkE9wJ8Q9MuIx4uD+CcvVw/6X/SLEmQ5bj+cfXw/6bgYx5Y85a3plrc+X9OY+henjJDx5En7Gwb4lbLzIAb1X85InQ/h3TjXPyy1y1e7F4xa70uONzGQSTCekkfLqsdfjX9n/Y5SM4kL6H0y/o/zeP8ArMSSdz/Vem+RP+ccbHzx5fj1W31V3d1bjHwAWOQ7vG4rt8X8q/5eRl4kf5m30/V6o/1v+k0SEh3f8U9i/wCcf9SvLXSn8qa2DHqmkN6TKe8R/uJEP7aU+HkuXxmJix/Vl/RlFkdxf+a9XybF2KuxV2KvMLPz5qGj+dJfK2vFTZ3w9XTp6Bd/2rV+zMu6p+39n/fq8WMuOxVSh/N4vXD+d/W/nfw/UzBEh3Ef7KL0/Fg8l8lKvlrz3rOhsOMWqLHqFv7ndLlf+Rnxf6uV4xsR/NP+xl+OFI5e5W/PnztqflCwsL7TTwhe8jS4elaR9aewbj9rLBPhNc7/AJ34+plA15/1npbBL63PptWOVNnQ9mGzI3y+y2AgsHhdt/ziFovKSW8v7uSSRiSykLsTX4qiTkf8rKBLNdiQh/myl/suOKLlfPn5f8eelflv+WGneQLaWz0uSeRJn5sZnDEECnwUCKo/2OWxlM/XLj/m/wA2P9XeSbPWywX/AJyd/wBDtNI1kCv1HUYnP+r9o79viRcrB9X+xZBK7q90nzf+Z1xYa48U2n2FkogjkICmRjG5+0fif95J/wACv8uWyxnIK3/nen+JJjYpE/kWZPLXmrXPJSHlZQt9agNahQxX4R/rJMn+yRv5sEJGqP8AD6WPSu57xk0PGgn+HPzU+Ha21yyJPYerF392Kx/8lMqgNyP87/TfibIIb8kV/wANeZde8nymgWYXUHaqP9qi/wCq0X2f8rDj3G/8PpXp7noX5j/l7ZeetLbS76qkEPHIvVHH2WH/ABtkckSdxtIfSwISfzboV/pPkG50q1naa8t7IoJf2mCj4/paPkuEyIFn/OZCR5lT/JHVre98k2Et1KJFWNo5TKQdwzAq/L9nj9nl+xxyzg49j678mRBke+2f2d5b3K8rV0dP8kgj8MfD4Nq4P6NcKJRMeey9p0RljZgHevEE7mngPbJUeaKeGefPJWu/mF5zgsNRgaHy7p5Dlq1WUV5E/wCvJT0/8hf+Gxp5b9Ebv+Lb/Zfzf6iDO/SP85mvnzzzo/lsSaNrUKpZvZtJDyAKSFKhranZ1+DjlgxRnHh7v9z/ADo/1GQgJbfjheff84n6hpFvpt2gniTULmcs0NQCI1H7riD2+J8nHEfq/wA1Jgeb0Pzz+c3ljyxHJBf3Szz0I9CH43NdqHieKf7Nly7wiBv6P9jL/N/i/wA7/ZMhjPX0f7r/ADf4vx9T5T8x+Vx57S517ynpRs7CyDvMzTlyTTmdnPw/D9hY14f5eYcpCEueTJx/xZBH/df8VlnNrlQ5cZ/pS/H+/lJDaV5RN5pwutN0+9vWEYcTDaNHBq4SNeXPjQr8Tf7BchLKIGpSr+jGMuH/ADp/770MeIR5k/6X0PY/zA8waF+a3l50hP1PXNMX1FhnorUApJGC32uS/wDD8csni/jh6x9MuH+a2GF7x3d/zjv+YOgR+VZvL+tXMdtIHkBEzABkkH7PL4fh/ly8YTkG2/8AvV4eLzSz8nvMmhfll5hv9IuNQgn0y7jWSK6U7c0O0TceVDxd/wDhf5sjihI7SoZB/S9PD/WmmMCdtv8ATR4Ug/NnzhoE/nttVZ0vtNls/TcxkMORRoxQfzK3BsjLDex2/i4r/wCIRKHQ/wCxPF/uXof/ADi7rEGs+VrzQr6QNFHI8YRiAfTlXcD9r7XP/VyRiZDr/WTwkjay8x/L/wAnr5O/M6HTL+QwxLKTA/USA19EV/lk+z/r5TG5iu76oy/o/Wwjv8GcIr/l5+Z9wYYyYNVidokGwZ3BdI6/ZX9+nHHHsCD/AAf7n/pFMWH/AJmfmTrmr6vY23nezl0/RBKGeBQQXUEc2JP2+OWjNHKOGB4L+qSRIHYehNPzfubO01WC406Rf8Na7bpHI6UZA0dUjdFP908P7tvh4/tZWIGPo7vVj4v4f6vD/DNaI9P+l/44jvyA8y08zRpJIrSzW7Wc5BqHeI87aVWU8T6kQ4/7Fsn/AL71cP8AT/iU/j+slv5kaZL+WH5jW2u6bVLS9kEhUbAhiEuIv9Xfl/wOQwnhuPd/uP4f9Kxg+uFYMOQ3By5DeKuxV2KuxV2BXYVdirsVdirsVdirsVeKf85QeU73zDo9omlWcl3eLccQ0ZNY1dTzJReqsyIvJvsZTOYhueIf1fpl/W+r/NQZV3/5qQeTf+cXbnTtOMN1qUkRvIyt3AgBRqg8Fr3Mch5csqvJL+YL+niHHOP+d/SY3Lyeo/k/5S1HyjoKaJqkiTNbySCJlrQxk80rX9rkz5fAkjcV/smYJPNjH5O236E8z+ZdCNVBuUu417cZQSSPvRccfL+r6U9HsGWIdirDfzD88f4dhjs7BBcaxen07WDxY9ZX8Io/tO2NiI4pch/spfzYsgOp/wCkl/k3yJHopbUdQf63rE4Hr3L7mv8AvuL/AH3Ev7KrlPCZHilz/hj/AAYv6v8AvpMOe5/6RZflyXYq7FXYq+a/L/5jaV5Q8zeZdR19vUvWukihXq/o82WiV+HjEnps/wDkKuQGIZTcqoDh5cUf9KzEeLn0ZX+aH5aLqNuPOPkmT6tqkSesDAfhmT7Z2XZn4/8AB/YysCWA3H6f4sf++/47/pWAvHy/zopT/wA4u6x/iSfWfMWoSK+q3UsSyKNiERTwovZGLcf+eeXEEni6fTFlLfd7/hYtEgCpxV5L+R0YuNQ8x6tEP9HutScRt15cC1T/AMlMrHP8f0kl63liHYq7AQrwv8mNPXyn508weWSAqSlLqHsOFWIVR/krPx/55ZDHy/q+lPT3MpT8i9Hn8xXHmfUme9lmbmkUtCkZ/wAlf2uP7HL7OVShKe0zcP4Yx9Pp/my/47wsCCeaD/O3zdc6XZweVvLwA1fVT6MSptwjO0km32OvFG/1m/Zy8ViF/wClj/SbBsL/ANKmP5O/lFB+XttJxmea6ulT1idlqnI/AP8AnpxyrGJc5df4f5v+d/EwF9WSeetAufMOiXekWkiwy3UZjEjAkAN9rYb/AGfhyyZIHp+/g/2XDP8A3KbI/HD/AMU8d/I7Wofy9urryP5lVLS6EplguG+FJlYAUWRv9Tkn+yT4XXhkcMY5dwP3o9Mo/wAf4/3X1RZRAly+r+KL3/102JYb7jfLqKAC1FdRSqWjYMB1oa/qxII57KQRzfN/5lT+YfzZW5tdJtxBouml3Esgo0skYYfAT8X2fsKv83x5RkzRG0fXw+qUv5n4/wBMsiBsN/50mZ/844eVNEh8v2+u2MA+vzqyTSseTVVirqv8itQNxX7X7eAYt+ImUv5vF9Mf6kf99Li/ooqi1/zlVPbp5QMczUka4i9IV3LAmu3f4OeWkHn3MgHimjaXFZeSrHzppAEeqaRelZXHVkZqpzH7XxSIv+pyTK4+ifF3+mUVGxvv+p9g6HqaarYW+oR/ZuIklHydQ/8AHLixLwH/AJy98uJcQaZqqgK6ytbs3ejjmg+Ssj/8HlJ2Pw/3KQx/8uvN95onnu3h83MLSdLI2LSvQJKEPOCR3PFfiUIvqft/D/NlmKQym4/Ufqj/AEmYPHy/zo/0me/nd5oudL1/y3caVOxL3DK8UcnwyKxjFHRTurDmvLjk+KWO7vhr1fzf+kv9ykXEb2I/xfj+i9vwNTEPOf5p6D5PUDVblVlPSJPic/7Fen+yyyOMnc7D+k2CBO/L+s89j/Mfzp57f0/Klh9QsW2+tXXWnii/8088pOohE1AeNL/Yf53/AEkw8SI5ev8A3KM0/wD5x4gv5Rd+cb641abrwLFYwT1AANeP+r6eVyOXJ9R4B/Nx/wDHo8P+w/zmJnKXM/5sfx/vf856boflXS9BiMOk2sNqh6+mgWvuxUVY/wCtghgjDcCz/OkTOf8Ap58UmMYgfj1f6b6k4y9m7FXYq7FXYq7FXYq7FXYqknmnzdpvlizfUNWmWGFB3PxMf5Y0+07H+VcnGBl8Pql/DH+syjEy/wCKfKfnn82rb8xtXii1aSSy8u2rlvTQFpJPdxXjzZRxT4uMX+X8XIS39MaF/Vkl/wATGM5/1Y8P9abOr2Hp/pS/47xfj6kl/Nj8zrDzDDaaF5Ts/q2m2LB4jxAlL7/ECvJl68vtNzb43/Zyrw4YtxvL+LJ+Pr/zv9iwNR/4pjGl6z5hub+PzU3r3k2nypLI7VbjwYOA/wDKu3/EslPUCxxHn9P4+hTk336vtP8AK78z9P8AzB09r+xBjeJgksbdVJFR0/Zb9nLJxA5bplEDluzXIMHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWmUMKHpkSLW28krsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir//1/VOBXYVdirsVdirsVdirsVdirsVdirsCqU0yQoZJCFRepOwH04K4vNIDyrV/wA1tS8w3Umj/l/brdSx1Et7NUW8Z8EK/wB6/wDn8WDJOOPY3kyf6nH+H+uyNR/py/mx/h/rpLe/84/XN9E2r65fPq2upxki9XaFWUhzEkP8jceP/Gq5iylknvKhH/U4/wA3+v8Azvx6mJkTz/0sfpSzzh5KXyjrtp+YWkW9LViFv4FQmldpJUSn7LD4/wDg8jjr6TvjP0yl/BL8f8SoqJ9/+xZ15x8nf4yk07zJoE0YZRxctXjNbyD95E/HLJgxOw4r9Mo+n/TLy8/4WF/l35a1H8pdYkivjTQtRmaNTyqsbVrbyN/JyU+m/LJ4svF6TY/m8X8X85Md9v8ASrfzb8/Xfk3znZaq2nlLJEEct2tW9WJz8cRoOKtE3xJ8XP8A2GTxzhxVymfqjI8Mf6M4x/jUSiNj1/H0/wBF7hoGv2WvWaajpcy3FtKKq6mv0HuGX9pW+LL5RMdigxpM8ih2KuxV5n+fflCTXdAN5Y7ajpri6gYbGqbugPX4l/4bjlMjwESH8P8AuUg1uyX8uvNyebtCtNZSnKZB6gHaRfhkX/gv+Fy8rIMU/NiBdJ1nQ/NQ+EW1z9WlP/Fc44En/VbKa9X9b0/6X1xTE/azfzh5ZtvM+lXOkXihorhCvyNPgcf5St8S45I2Pd6o/wBZgd3nv/OO/mS5n0248s6ma3ujSmCp6mOpEZ/2PHj/AKvHLePjHF/pmw77pl+ZX526f5NnXTYoJb/UmXl6EPVV8ZG+Lj/wLZP0xHFM8Ef9l/uo/wC6XaIuR4Uf+WH5t6X+YMEjWQeG6t6CWCQUZa9CD+2n+V/wS4JRHOJ4h+PqWQA3G4Sv/nJHSW1HyXe8AS8HCYD/AFGBP/C5RPvYvA/yZ8j2X5izarrvmMvFHAiH1IiVKsB9sU+1xRMEuK/SfDP85ZEnl6F35Z3Ou6b5h1DVvJanV7a3URuZ9pHjqCKb8uXJPg/yMlLKIH956/6WP6I/0mRlXP1/1X0F5J/OrTteuP0VqMcmmap09C4HHkf+K3Pwt/q/ay+PDkHFjPGP9l/pVoS+nf8A3SV/85B2ctnaWHmm0/vdIuklJoT8DEK/T9npz/ycxyeGQPf6WMdilPn2/g0vzXoPnizINnfAW0rjoVkH7tz/ALF/+FXCBUqP8X+6ikCjT3LLGLE/P/nPSdA06cancxxM8bqqMdySDQcR8WS8MyDOMCXxx5XvW1XRJtDs7a/vLppS6pCx9EDbcxqGZm/5tymWTgHqlwR/m8MfX/Wl9a8fnL+rHh/3X1qg/J7zz6RurPS7iCMLUhXox7j4Gf1Gb/Y5GOvGP6TmH+bk4P8ATxxwi1Rz8HLj+Uv97GD1f/nGuAavqJutWv7x9Y01Xj+qXBJCK44F05/F/rL8P7OWmc8lS4hPH7vX/nT4vV/pWwylLcnjB/03+m4n0LrnmKw0OA3WpzpbxD9pzT7h1P8AscnGBlyURJeG+ffzV0vz0n6J0bR5NaZSeLupVFbpUFfi/wCGzHzjGPqkeIf6n9SyERzN/wBV4d56/JjzD5Ntl128jEUMjUIiapjJJ4g06L+zkcOoIO1w/myl/EwjMg9Q9D8q+dfyx8v6HH6tq97qVxFSYGPm4Ygq4EkvGNOv+6/iy06QS9U5XxfTvL/cw/6es/DB3J/H+5/0zANIu/NHlG4roMM1lZawTHCLkL8ak/ACZQsfL4vtcUyEM0Dcf76v6Mv9zGUv93NYz6fX/Wj+IMw8ieRfNVrrMfk/VNQl0qG4Q3ASJqh6/bVOJ4q+Mc8pD0AAj+dH1Rh/xP8AnLHLKtvSjPzY/KPTdC8x6NY2XqTNfSUn5sSz7qpLH/KrkY8YB4juf4vpR596j5k/LjR/Jnn62ttStxJoV8QFDEgKWHHqpX7MnxZGETIcJMtv4ooAvZ69+b/5TafdaF9Z0O0iivdPIniMaAFwg3jc0+NWX+blkDiGPf8A039KP9X6WNAPnr81tLufMcUfnOygQadJEkbpHQCCRfheJ0Xi3xN8SfDlkQMZ4QKv1RlEemf+fH+JnwiOwFf1Xu35Ffk7pNr5agudUtlmu7sGVmdaMoOyKP2l+H4v9lgEePeyP5vDKUGNID/nIP8ALMW+i2+r+XoglxpTmWq15cK8jxP+S3xccI/dmzxTv08UvX/VW63SrztqB88+RrDzpbkfpTS3V3K9QVIEo/4hJlkxwy4u9nyNsi/M3TYvPflKx81wxCWe04XBQgEFOlxGQR8S/tcchkAB/wBjL+rL/ORIAF5N5h8sxaJy0oln8t67GJrNuohmpzRAWHFfi+F+PHmmCJMvQfqx/TL+fH/TfxLX8Pd9LD/yS1ePy95vtodSqkYmCt0FHBIQn/JVv+Ey8Di8mUd30j/zlH5YTVPLB1NP7+xcOpHXixCuPu+L/Y5VLaQP+awDPPyu1xdb8t6feg1ZoEVt67qOBr7/AA5kFlIUyvAxdgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWIv5Nkj80p5lt5Asb2pt507tQ842H+q2Uiwf6J/2MkBKtX863115stfLOi8fThHrXzstaJ+zEv8rt/Nlxlw7VfH/sf6TZyHvZ/NMsKNK5oqgk/ICpxYPmrQPzm8v2et3vmrX5XmvJXa3tIo15elAhp4qqtK3xfzfaw+HxmyQIQ+ni/nfxSbDG+ewH44mbw/8AOU3lJ15SfWYwe5iNPvByYiDylFhseRtmPlH82PLvm1vR0m7R5qV9NvhensjYZYjHfaX9U8TMwI/46zHKmt2KuxV8bf8AOTXlCe083Ne2yFkvIRNQDug4Tf8ACjllHEI7Hv8A92oNKvkv86b7yT5fm0u5je5tLmN/qMtQQhIIeN+X7Kt+z/zVmRGYltL+H/ZxbBIHn/D/ALKKP/5xZ0KeHzLJc2svqW6WvKcqDx5SH4Yq/ZZlPBv9i38uVcRBr8cP85hb61yxDFfzJ81L5Z0O5vlIFxwKQKdy0jfDGoHf4jhG2/cmIUfyo8rN5a8vWtjMP9IZTLNXr6kh5vX3X7OU4+V9/qRdswy1XYq7FXiH5zJN5T8x6V54tFrGHFrdU7o5otf9izry/m45XE1Lf+Mf7L8f7lMedd72uKRZVEiGqsAR8j0yxDxK8/JXWtb84y+YtUvBFZA8Y1hJ5mOlFjB/3X/lt/lNmOZzJ2HBX8Xplw/1Y/zl4j7kwlu7jy/5+sdD0yeV7O6t3aeF2LheIPCRS/J1O3+rl/HKqkeP+bxCPF/sIwZ2a33ew9MLB45+cnmvyLeWxsNbK312pIiS2PKVX8BJGfgP8ys3+wbIz038RPg1/F/F/pP4v8/0s/D6n0f7r/S/8U+frv8ALzzUmmz+YGE9rptuCUWaQhyhOwCf6vH+XIDWSlsDKdeni/h/H9ViMhPLiP8ASe3+SfNeh/ln5Shvri4N3PdcJZEDhnqwAoErsseX48cjvMn/AEsm0QMt5PX9E1C11nTo720Xjb3KcwCOJo3Wo8cpEABQr/NaQO54R+VP5l6P+X6avoWszCJbW8d4VAJLKx40QL+18KZZijxDpGv5xbBG0LfeXtY/OuWfXL2NrPRLaKQWUTEhnehpKV/a+JRzb7H7Cc/jzHy5L2h/B9Uv4f6v4+hrlO9o9P4kL+Rvk6bXPJGt6ROpUSvSMkEfvEBP+y4sExkbG3lJJZX+UH5zaPpHldLLX7hYLzTuULRtXkwUnhwH7X8uZkIcYsMxHi3YF5wt9b/NWzv/ADXKzW2i6ejNaQkH4yv7VO7fzt/sMx55rPDH6R9UmMpdB0Rn5tldf8jaD5ouIvWeArHKAaErQxsC6/EvJo0/4LIyrivlf8UfqQefdbAvKOux6HdJreiaDc3M8Bqsk7vNGhI2KiKGD4l/Y5M2QObFE/vJ8f8ANjxQxf7rxZz/ANgx48Y5nl/Dxw/4njepWdh+Z35lBJ76UaRpctKqlUYqepCfFI3/AD0bLhrP9Sj/AMlP4f8ATS9X+khwsxm/m7f0vx6v969K8o/kP5f8vSfW5Ua+u/8AftyeZr/kqfhXKZYzk3yHj/o/TBronnu9EjjWNQqABQNgNhl8YgbBkqZJXYq7FXYq7FXYq7FVG5uY7ZGlndY0UVLMQAB7k7YQCeW6gWwzWPzo8qaSjNPqETFf2YzyJ9l4/Cf+Cy3wDzND+sY/9JNvhkc6HxYLq/8Azlj5fhTjpkM91MdgvHjv2r/zbg4Yj6j/AKVFRHMpXF+Zv5kecR/zrulraQt0klFPpDylV/2PBso/NY47REsn+ml/puD6f9Mw8SI5Dj/H+x/0yWt/zjd5p823AvfOOqgN/KtZWA7hB+6hT/Y8v9XKpZ8uTkBAD+cf9zDFxcX+dOM/6TE5JS/o/j+ZH0/7JkD/APON/kjyrbnUtcmuJoI6Fnmc8fpFuitTIDFOexkI/wBXhxRn/R/eyn/sZoESev8AuYx/4r/ZvRPJXl7yi8IvPLdvaNGducSAn6duX/BZOWjjDaXq/rHxf9lxSZHHw8/+K/2TznzRpqflz5vi1OJANC1s+jdx0+AO23Mj7I68v+C/mxxxAvGfpl9KYj+HvS/8ubaHyF+ZN75etjw07UohJChO1ac04fzftqn+TlmKwOE78KxG1dz6LyaHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXZHdXZJXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/9D1TgV2FXYq7FXYq7FXYq7FXYq7ArsVY35x8/aT5Ts3vdTnVQn7AILE+ATrkxC/L+kzjAl4lN51T8yZjJruow6R5eUgrbCUCaYD/fzV+FP8nBIZDtjEoj+LNL/eMyCPpFf0pPTPLn5geRNHt1sNN1Cygij2A5qvX3bjy/1shj0pjy3v+lxS/wB0x8Iju/00f1s00nX9P1hDJplxFcopoTE6uAfAlC2TnAx5iv6zExMUXLAk6NFKAyMKEHcEHxGUmIIpi62torWNYYFCRqKKoFAB8sMYiIoIpBeYtEh1uxl0+4HwyqQD4H9hx7q3xYJxsf7lLVrphmsEstUVJz6YSSoqrUHEmjD9rBKAmPUFO7yPRLI/lR5qGnJVfLussTHU/DDP/JU9Fb/P7OHFIj0HmPVGX86LKO44f9Kn+vf85GeUtFvH06eeSSWI8XMSclB8Odcy/CvmYR/oy4v+JZcFcyAkf5ffn0PNPm+bQ4ikmnSRlrZwCGqoBZXr3yBoCu7+K+LiSQK938X857bkGpSuIFnjeFvsuCp+RFMjIWFeMf8AOPM50a61jyhMd7K6MkS9+D9/+IYIGwyPJm/5xaMdW8r30KCskcfqp/rRnmP1YJ7C2INJx5H1caxollfj/dsEZPzpRv8AhssTIUXjn5jRa35A82SeadDtWvLfUofRkRAdpOiE0/ygGyiOSOMkT2ifVFRIDmyj8k/yzuNESXzF5g/ea5qBLOW3Man4hGD2b+f/AIHH+9PFL/Nj/vmN8W5/zWK6C50X84b234hY7+2BHAbHYNV/8rkmShQFDvZB71eWUV7A9rcKHhlUqynoQRQg5KUeIUhJvKfkfS/KtidM0uER27MWYdaluvInrlcMXCN/Xf1Skjhd5V8j6V5W9b9EwrCbhzI5HUk9v9Vf2Vxhj4fx/CoFLfNvkPSfNcHoanCGYbpIvwuh/mSQfEpxOIXxR9E/50fq/wA7+cx4evI/zovnz8zPzO1jyQt35M1WD9JadJGUhuJqrIVYbcnXksvp/wA3FWyyOSOQVL+9/ilE8P8ApocP+/bxIH6t5f0Twf7Dhm81n/Ou6vvKsPlOe2Dm2IaKcMeY4nmvw/5P2cslw1e4kP4v4f8Ac/75bj52PP8A47/v3rHkb8xvO35mwjTtHmt9OS2RVmkNTKRSnqLy/m/ycE8/D9MeP+lIx4Px/moM65C/6z0Dy/8A8496Pbu17rryarfvUtJOSQCe6JmNKM8n1n/Nj6YtZuX1b/7lN/yj/LQ+RYLu3Z1cXE5kTiKUX9lT74MQPMj+j/D/ANJKGWa75k07QYDd6pcR20I7uwH3D7TH/JXMyMDLl+P85nGJL5P/ADN8/NqWunzd5GgngFmvCe8ApG9dhVGHH/gvjb+TKhKOGVA3x/VH+BbEDtvf+kTbzH+UHmTzP5eXzRc376neuqypCpqoQ7mnL7TL/KvHIZNRP+IVjH8Mf916VlM9eX82KdflJ+fWl+X9AmtNfVYLyyYqI0QKzjsOI/bU/wA2X48UT6hQ/nSZCIluKDBtQ/MPzJ+c+sDy9bFoNNnfeNBUKg/bmb/JyObKIihX9Hi+qbGU9qCJ/JbS9O8n+dZ9C8ywxNKvJIZJQCFYfEGXn8PxL+1xykYxmG/q/o/w/wCdD+JiIcf/ABL3n819A0rzr5bmltrmI/UqzRTxMrBHjFack5L/AJPHJZMMsZFDgr+GQ4fT/sU8JHl/NfPF/wDmH5j872UWoWyRRTaCvJ7oNRj+yPtdS38uTlMA3EHiP1fzGzio7Biy/mLqd9r9pqt7ftJJAy8ZnFeIrV6Jk5SJ6Q/q/wAC3v8Aw/7x9Ofm5oVt+YflEanpMqzzWw9eGRO5UfGPb/VyjJEwN931f1WuQILIvyY86J5s8tQXUpHrwr6MwP8AMo41P+suXy3+LKQ+18xedLmRfNdx5e8qut9Z3Nys31cbIZQTyjLMVVlVv8rhlVeHHhlyH831S4P9kv0iuf8AVem235ieffLGtabpevpaiG/YIsEaiqIDx6p04/6zYY54yFcBiP4ZXLi/3U1EwenD+P6z6HurWO7ie3mAaOQFWB7gimJHEN2BD508konkjzHqnkS+306/R5Leuw3B+Acvh+z8OQA4ocPUMojiFdySflr+duneRrG88r+ZIrgpHNIsQVQ1EavwNyK5bGAyDeQh/WEv97GbIAS61/WEv+JYjrn5xaZqPlufymlrLOscxeymJClFJ5ICi8viWvH4f2MTjjzJ9UP4ox9M/wDTcEof6RSBzvl/pJf6aX+9Yx5z8nX+nWFj5jnt5LY3AAblQVdeko/l9Rf5sohkBO2/4/2TVxbvrHyNqsX5j+RPRlNZJIGgk9nUUH8MtyCx/smcgkX/ADixqajRrrQ3/v7C5dW+ROx/DCDYvvQXt2SQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqx/wA8+aYvK2j3OrTU/cISoPdv2F+/CAyiLYh+Rnlq6tdPl8wavvqerP60hPUIf7uP2FP2cpieM8X+bH+qxJtlX5lTvb+XNQli+2tu5H3ZYdkhiH5NflfoWl6JZ6iLWKS9mhDPKyhiS3xbFumY3gCW8uI/0ZH0/wCk+ljw7vQZvLemTp6ctrCynsY1p+rJHTwIqloPE/z8/LrTfL2nr5t0FBY6jaSxkGL4eQJ6UX9rHHDwjcb4f4o/wohHh5PcNDupLuwtribaSSKN2+bKCfxy8G2ZXavq1tpFrLf3riK3hUs7kGgA77b5IC9lAtA+VvN+l+abQX+jTrcQVKkrWoPg6t8Sn/WwyiYqY0mF5pltdkNcRJIQCAWANAdiBX+bMeeKMtyLpiQ8O8yf84qWupXLtY3z2tlJIZDb8QyqT19Pf4cqrJHYcBj/AA8V8X3MSZDYVT1byH5C03yVp66bpaUXq7t9p2/mc/58cthDh5+qR+qTICmQXNzHaxtNMwSNASzHYADqScuG7KreQaH6v5n+YhrkgI0DSnItQQQJpRsZt+qr+xleQ8R4B0/vP+IWXd/pnsuWIdirsVdirB/zo8uPr/le8tIgWlRRLGB15RnmMqnsL7lRH5TeYl1/y3ZXYNXEQjcHqGT4GB+7LWUgyySVYlMjmigEknsB1xYvl7Tvzj0628+XvmHUIpZLML9WhmjXkqKDQu/+S3+TgoGVEiNfzmZA5cn0zpep22r2sd7ZuJbeZQyMOhBwyjWzEinmPmP/AJxq8razM93Gs1rcSMWLRSGlSeRPB+Srv/LmJ4U4/TI/0YyEZx/3MZf7NhR7z/sf+J4nl35s/lJL5dtIbSLVLq8lu5BDb2zkUJ7l/wDJX/Vy/wAbNXrIMR/NjL/imwTmR6jdI/8AIX8stEv2vdN1+3Emr2EnFldiRQjZlT/JbKjDxRdyr+axIsXu1+ZPkLzH5anS6n1a7bQS3F2gqGhX9kGNCvwKvw8lyyOpyR9Hoh/NlXp/3PFGTPxZcjwj+lSF/LvyHoVt54W3nddTtJ7X6xBLMeVWpViR9l2/yW5ZAwlLbJzH1cPo4/8Ajv8AnIMD/Fu9a0T8/PKV7dSaWs5tZIX9ICZOKsQeH7tkLLx/1uGZkcG1Q4D/AEY+n/dcP+x4k+H3V+P6z0OytLe2SlqipG5LfAAAS25bb+b+bKI4xHYbNdU+S/zT1HSLPzfNHoGlJfyxVa5VgzKXG7kIn2VX9tsrOOEB6id/6XDwMqjHnZ+LN4f+clvKtxpK6Te28tussRilREHCMkFSFX7RX/YZkjDDhoGI/mx9X+6bBCNbGv8ATMR/LLzDa+YfLWpeRlctPFzuLEtWhCHmo9mXjy45XOPpvnwfVH+gxIse59F/lr5hTzD5ftL9RRjGEkB7OnwOD78hkRjiBtQ/qjhRJlQAG2TYuwq7FXYq7FXYFdhVazBRyOwxCsQ80fmv5b8sxs+o3sQdf91owZyfAInxZcMMuZ9I/nSbRjPXb+s8V/ML/nLiGS0EPlJJI7tj8Uk8a0C/8Vrzbk3+suGow7sn+mjH/eoFD+l/pv8Ajry/RrLzz+bM7BLia6iDDmZJeMSE/wDFan4V/wAlVzHyaox29W/8OOPDH/T+mP8Ap5sJZTy3/wA30R/4l7N5Q/5xF0y2US+Ybh7qX+SMlFH0/aOYtZJ8z4f9X1S/08muiXr2g/lv5f0FQmnWMMZFN+AJqO9W74Rp49fX/WPEogAyYADbMgCuTNvJKhb+O3kgdbwKYOJ5h6cad+XLamRlAT2O68N7PDv+ce4Fl1/Xb7S14aM0gSFRXjyBrVP2fs5CPp9HPhSdvTzp6j+Znk+PzboVzpbD94yloj3Dr8SEfTgyDa+71MS+WPMHm2X0dG1qWseqaNOLW4PchCGRif2vh+HJg2eL+fFtA6977F0nU4dUtIr62YPDMgdSDUUIr1yZFMCKRmKHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsKv/9H1SMiFdkldirsVdirsVdiqnLMkQ5SMFHiSBjSQLYN5q/O3yp5aql7fRvMv+6of3j/SE+Ff9my5aMJHOof1v+J+v/YtgxnrUf63/E/X/sWFP+d3mTzStPJOjStCxoLm6+FKVpyA+z/w0mY09Riga9WSf82I/wCJ/wB9wMeKA75/7GP4/wA6CIg/LLzt5if1PNGtGCFhQwWfwin+vRV/4TANRkP0COH+lL1T/H+fJfFl0qH+6STy1/zjFC+r3c/mSWW8s42H1YO5PIH4iX/1fs8cpMsmT0kyhX1S/n/1Wsky5k7PVbL8pPK1mQ0Wm29VFByQN+D8hiNLHrZ+Mv8AimHAB/bJMm8k6CKKdPtN/wDihP8AmnCdNA9PvZcA7h8gmljpttYJwtYkiXwRQo+5cnjwxh9IEf6qiIHJFZaydhV2FXYFeB/nVe3mseZLPyXfiOPStQjrDKFBdZQDSTl9peLDjxXjyXK5SvkP3kPVGVy/H+xmzBFef856NoP5e6D5U0oxG3gAWP8AfSlFHIgfE7F/5v8AKbKBpRLc+qR/nSM/9K1xhZ77/wA58m+TtT07TPMVvrdm4VhqRT0Rt+6Y8Q38vHkcyIxI/q/S2iNPudWDAEdDljW3ir5r/Pu51P8AL/zFH5s0Okf1+L0XbiG+NSOqN8PxL+1lUJcEu/i9Xq+llCVPf9LeTVNLia7HGS4hHMeBdfi/Xk/qDFiX5I/6Poj6Y7VeyuZ4SPABzwH/AAOCJsMi9Cpkqti7CqV/4a0/9I/pr0V+v+n6fq/tcf5cp8MXxf8ASK0mmXK7FWO+avPmjeVovV1a5SHwUmrH/VQfEcnGBl/R/pS9MWYgS8U8/f8AOVEtnH/zrtkxjb7M9yCqn/Ui+Fj/ALJkxEsY/wBsI/m/RH/OZDh/r/7l5zZeXvzA/OuVZr2Rk08God/ghUf8Voo/et/wX+vmLl1AJqMYmQ/mj6f62WX/ABf+Y1yy3sP9j/vpf9JM2sv+cNfSSMy6lylB+OkVFp/kfHyr/rZVeU71Af0eKXp/z+H1/wCli17+X4/H81lX/OPkSeXdR1XyfOB9YtJeaORuyHLYRB3P1fTJt6Pb5ZViUvIQqqKknb8cvpAfO35p/wDOTzWE8+i+V4vVuEJX6waMop1MaDr/AKzZZ6Ybnn/Nl9LZQhz5/wA3+FU/Lf8AJn/GsEPmnzlfSak845JCHPBRX7Llf+TcfDh/lZi5JZMux/d4/wCj9cv97D/ZS/qNczI89v6v4/H857VceTdMk0mTQooI4rORGTgqgAVHh4/tZDwQBQ5/zv4uL+t9TDhp59/zjzqclraXvlO9JFzpU7IAevpsTwPyy+J4o3/pmyrFsF/5yM/Kq3srtfN9tFytSwF3Gg3B/Zl/1a/bzGA4DX8M/p/oy/msAK+KJ/5xBk0z0L/iU/SDSA0P2vTptT/J5fy5eMdni7vSzMeqn/zlb5DMbW/myxVg6kRzla/883J/Z/lyu+CX9f8A3bEGmLfkjeRfp2TyykjNpOsWpLxswqHpvT/LVq5YQeHh/wBLJn0pU82/kDb+UNVsobi8lOiahL6UhHwlTX4A5X4SG/m4ZVCWT6bA4v4v4Zf5jGNnbvRHmDyj5e8iWesaRf28cl2qCSxmevJlkNAAf5o8EMfHubuH1b+j+uohfweg/kF5h8v6B5Vgs72/gS4m5SSJJIARyPSjHbbM2GnnMciQfp/qtnhyPmwSfz8fyc8wajZWkK31hqNLiACQKtGqWNQH5fy5VjFDhnfp9PpigCtpcWzD/Mf5nadf2gu9G0I6dexXAuPrMbFl5A7gn014q38qtlIhihLaUpT/AJuTh+n/AE3+8YXCJ5+r+bKXF/vv96pyfmnfec/MtrrV5cW+nNaKBG0qsyAj9rgOXJm+18WXyN/QOP8Aoynwf7L0Mye4f6YvZNAjHmjkLzzeZWI3jtyIlp8n4tlhGfuhj/q8OWbI8fMcI/qiKRfm7+TWmW2l/pvR7qW9vLRg8iyT+oWjB+OnE8l/2OY8vEgeKZl/W4eDha97s25vImhwXOi+ddOtYn0i5CRXMUlXo0nwiQiXkvwt8OVShvwyJnx/xSP/ABPDJHDZo73/ADnvWn+RdBsJfrNlYW0MpFOccSqaH/VGD8rDqOL+sZT/AN3xNfAEB+ZvkmLzdoNxpLAeoy8oj4Ou6U/4jk8kNtv4WRD5y/I381LD8uLXUbDXGf1BKAkCrVi4qrlfBdsyMYEhZoR/nf8AHWwC/JK/y1/MW/07z1IdKtzFBq84DwSA1CMefIeDcfi5ZGMoxH8/+bJRXvfZ4whg7CqV6v5k07R0Mmo3MVuoFf3jhfuqan/Y5KMDLl/x3/TfSzECXmvmL/nJXy7YVg0n1NSuj9hIVND9J+L/AIXJSgIbzMR8fV/xKeED6ikCeZPzQ84/HplrHpVow2aTZqeI5/F/wmY/5uI+iJyf0pfT/vYsPEA+kX/WYdoPl38yvNl/eaRdatJaSWJAbkSoYNXiUeJPiXb+bD+dl/CI3/F6Yej/AEzLxj04f9LH/iVmueTPzW8ipJd2WoT3tvxJdo5PVoO59G4HIcf5lXB+dkNpj/O4Izh/po/T/n8CBlI5/wC5jNN/yzk88ebrFtS0rzCrTpUSW8yVKt4PXkoVv5lXJT1GQfw4pw/nR4YS/wBjjj/umcssu6B/zYw/3rMl8z/mbohEd/ptvqS93hbiT9Hwr/wuRGrh/HGeP+r6v+KYCcTsRIf0oqx/P66tv3N5oN+k42IUAivsckM2I78Vf1oyYccO/wCxZL+e+rNVLfy7fNIKUBFB9JXlkBqsA5yP+l/4uUWXiYj1l8o/8UoXf50+ZdBYXnmPQJYdMcfbhfmyD/iwU4/8F6WSjqcMtvXA/wAMsg4Yy/q8UYf7GU2QnA/zof0pf9Ix/wB1J6l5U812HmmwTVNJkEtvJ0PcHurD9ll/lyyUeFEo0nWBi8N8o+ftZ8tecbnyv5vn9SC7JktJW2WlSVQE/s8fh/1sYZPE2oRnH+GLMHi+CB1zV5fzZ82p5fsaHQdKkEty43Ejqdlr9kryHwf7LI5TXoH1S+r+oiR4du977HEsSiNBRVAAHsOmECmKQ/mDp51Hy/f2qmhe3k3+QLYJclS78obuK68q6c0FeKwKvxdars1fs98R80lmWSQ8H/NjX088a7Z+RtLkV4Y5VmvXB2UIa+mx+z/zdgyAgV/FJmRQ97220mt0jWGF1KoAoowOwFBkuEhjS+8s4b2F7a5RZIZAVZWAKkHqGB7ZXKIkKLF5x5a/JuPyjrzav5duPq9jcAie0YFkPcGI1X0yrfZ+1kIcUPT9cP6X1Q/4r/df0ljY/H0vT8uS7FUJqWpW+m273d5IsUEYJZ2NAAPfCIk8kgW8fvNW1D83Zzp2lCS08sRtSe5PwvcUP91CrfEsX+V/1zlc8lemHqn/ABS/hxf8VL8fT9ZMq2juf4pfzXr+kaTbaTax2Nkgjt4VCoo6ADBCAiKDCkZliXYq7FXYqseMOCjCoNQR7HAQrxT8qpX8neatS8mXJpDcObq0J7g7sg/2OQxmxX8xlzHue0XNulzG8EoqkgKsPEEUOTItixj/AJV3pNlolzoWn26xwTxuKAVqzA0Yk9TyzG8CIHef50vXJiIsR/5xqvpJfLTWMpq1lcSQjxAB5Cv35kRlbYS9byTF8v8A5p/mVZWP5h2d1cyCew00Coj+KjEHn/k8lY4DG9js210Oyzyv+ZujN+YF1r9jIV0+e1Z5uYoeSgEgL+03L7OIhwmhvf8ANXhrbmjp/wAwfO35oSyweVbdLfShVC8oBDDpR2f4fi/lXI5c0I+kR8Y/j+lDh/07GUxHYDjeX21prn5eeYrddWiMBBaNSd0pICpMb/Z48jy+Fsrx5RPYcx/DL6oojO/+JZh+S35TaD5003UbrW2ZJ4LkqJUk40FOVTy+Fl5HlybBLHOZ9JI/o8MZ8f8AseL/AEs2JgTy4h/V/wCkUZ5P/O65/Ly6utD1+Y6nZwALavEwYfD0Hqd1Zf8AgMy4yM9p+iQ/ox4v9jL/AI82nf6vT8I/7JJ/yptfOetXeoa/5WhhRb2VlaaahIBPIrGT/LXMaWSIP0nJ/uP89hx0eV/7lm2h/wDOJ0V1M175mvDLNKSzpCAoqdz8bD/jTKanLlw4/wDZ/wDHWrc+TNPJn/OO2g+UtWTWbJpJDGhCpKQ1GP8AuwMoX9n4ePHJRhL+I3/VHB/vvpTRS3zB+T/mO01c3vk7U/qOn3EqzT25ZlXlWshjVEZeLL+z8PLLIZJ4vSBGcf4eLh9H+m4v9j/pWYmY7Dhl/W/6Rk9miVlQBjVgBU+/fLkL8VdirsVdiqC1TV7TSoDdX8qQQLsXchQK+7ZIRMuSYxvk868zf85G+UdDFBdfW5N/hgBbp/Mx4qMt8Ej6iI/Hi/3DZwVz2/2X+5fP/wCZv/OTGr+aUex0tDZWD7Gm8jD3f9n/AFVyPGI/Tz/nI4gOX+mUvyp/5x11LzzGNU1GU2dgTVWK8nk8Sgb9n/KbMGWWUzUd/wCdKX0/8fn+ONpMjLl/pns9l/ziP5ThA9aS7lIG/wC8VR/wsfL/AIbIjHM85f6SHD/u5ZWJiT1Mf6vD/voyY3deU/y88n6smj2uoXtvqLuEPoSn4HY0QSMoVa8m+z8X+XmVjxZIixk4OL+GQj6/82Ef91wtsMcwPqkP6Pp/3sHvHlbQrnR4DDcXs18v7LTceQHhzUKW/wBlgEpH6qv+iOFSbTzJIePaz+cd35U84nQ/MSLFpNyF+rTgHYnvI5P2eXwt/JhhIT9PKY/2TMVLZ616vqw+pbkMWUlT1BNPh3yJ2YvjLXfzAk1TTL2z1i6vLvWZLkxxW4kcRIg/a9NTxLcvhRcJySI4uLgh/NjHHDi/rS4eL/ZM5Sve6/oxEY8f+xeyf84nX93deXJ0umrHBcGOIU3ACqSK9/iOQv3D/ff1mJL3DJsXyN/zlD+X7aLqH6asVK2d9QycegkWtflyX4v+CzHieE8Pf6orHbZmv/OKvnSe4t5vLt6d4VWeDlsSj9QP8ldm/wBll4Nj+r6WZNh9CYWDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVcMiFdklf/S9U4FdhV2KuxV2KuxV2KsH/Nr8vIPO2ktaTzSQmHlIhjPUgGgcftLlcpSG8Twfzv6Uf8ATRU302eE/wDOL3kLQdea9udWgW6vbKZQgkrxCkHixj/u3bkH+1zyrJi8TmT/AEoxl9X9f+L/AGSZR/6RfU0CwxD0IQqhB9haCg7bDLo4xAUBwx93pQI0ERk1dirsVSfXvK+n68iJqMXqGIkxsCVZCf2o5EKujf6rZAg9DKH9UmP/AB2X+fGSPmP6plH/AHLzG9/J7zNoshuvKnmC6rUt6F4xlQnf4ant+z8SNkRnzR+rgz/Dgnw/1pyl/sJ4mXiz61P+t9X+nlx/7HgTn8s/zMvtUvpvK/miBbTXbUcqL9iZP9+w/wDG2WicZjijcf50ZfVGSdpCxt/R/mpt52/ODy75OHHU7kGY1Aij+N9utVX7P+yywYjzPp/rf71Ih37PKfM//OTesSWst/5c0iQ2MIHK5uAQoqQobiv7PJv5sgM2IHhvxJf0fT/xSeKANfX/ALF6z+UXmfUvM/ly11fWESO5uAW/dghStTwahLU5L/lZHiB5bMCWE/nTaM/m/wAruNla4kWvuoDU/wCGys80h5N+d/5j6z568wN5R8v+p9USQwiOOoMjj4XaT/JVv5vsrlxzCEff/F/O/oxTx8I2YNd/lpPpM2qXETF4tDaMSv2MhdUIB/yWzF4ztfViC+3dA81abfWsDQ3MTM8SNTmtdwOormXwEBkYEJ/kWCX6rotlqyLFqEEdxGjh1EihgGX7Ljl+0v8ANlM8Ynz++Uf9z/uVIt5V+cn5z3/krWLDRtItkunnXnJHQl6VKBI1T9qi8svEoxHq/wBMzjQ5p3+WtyIdf12wIKO80N3wbqPWjDFaf5LLlOPcbd6Oj0rLWLsVUnlRFLsQFHUk7Y0tPP8AzT+enlrQZRaJOb69Y0WC0HqsT4fB8P8Aw3L/ACctlj4BcyMY/pfV/pf+K4Ww46+r0/7r/S/8Uxv9L+fvPvw6fCNA08/7sl+KZgf5V/Z/4XMY6mI/uh4n9KXpj+PxxMBkH8O/9KX/ABKD1P8ALny55HRL3VhLretzsFgSYlmd60XjH9lU5H42b4crlGU/VlkeEfwx9EP6n9JIBlvI8vxwo7y/+Ro1a6XX/OxE9z1jtEoIYl/Yjov2uP8Ak/DkOE5Nv7vF/Djj6ZS/ry/EmErltyj/ADYoj84PzmsPJGmNa6HLA2qAqiRIAwjHi6p8KfCOKq3HM2GIYhuBEfww+ni/zfTL/ObYx4ef+l/nf6X1MR8if85Lve3SW/m1hp/p8VISIn1Gb9qQv8UKL9r92v8As8kDHJ9HAP6xlL/NxcPp/wBPxtg4Z8qj/WMv9h/x7i/rJ757nTyX53sPNlP9A1JPq07joCacJCf9X4v+CzGgPVw/zvVH+s1R7npX5hWVpqehXNjeXAtYbpREJa0ozkCPf/Kb4csMZHaP1IAPR4H/AM4r+SbH9IatJeos1xasIFDgGgblzPE9OXHjmOYDJz3YkJ0l7N+UXm+LTBI/+HdTeqK9SsZY0bgexjk48/8AI+3l2KR+iW9fT/O/os4mxw/6V9DggioybB4rr6Hyp+ZtlqK7W2twmB+w9RBt822T/g8rhsSO/wBTKJ6PU/N9nDeaReQXCh4mgk5A96KTjONhi+GvIl7daS8ms6U/p3umOJStSDJCTxdKftKv7f8AkP8A5OIlw79D6Zf71sBr/fPtCJ7D8xvLFRRrbUIPnxJH/Eo3xyx2/wBlH/esJCnxx5R0fVdF87W1hbQs97aXQVk36A0dvh+yvp1bllccoA4j/wAf/qJBfW/5svo99oNzYarcw27mMsnNxyV13QqPtfa+H4Vy04pTHEAf6P8AD/skiBL5w89+c7bz/omniG1mudR0xCLqRFITgBQ1f/Kpy/4LIZDGBu64/Tw/UsiB8f4ULrX5JzW+hza5dzW9oYIFnFujF5CjnhCXP2fib9rIRMzuBLhvh4sh/wB6xo+7+t9as35WiDyLYedRE0txBL6k8chJDw8+KUH7Kbf8A+GUzI+okxPp/qf1Fuzvuz3zH+emnatow8v+RLGRr27QIUWEKsYYcXoo+0/7PLjwX7fLDPFixDcxP9H1fV/nx/2PqZnhh1B/mx/6S/3vGhvyf/LfRdJutQ8t+dYLd72EJOry0A9NwK8JG4/Zb7eQjhOff1iv4YmUf9wwEDMbXt/NZLq35V/lvrLpbWR9OcsFBtCxqfcoGT/hsJ08sO4mYf1pxnL/AEvFxsfDMetf1jxJ35d/5xt0DRLsX0E1yzKCvFpPhIYFGDim67/Zw1lNiU+MfzeH/jygy6m0i8gaPHpV1q/5aaw5FtT6zaPWh9NiDyQ/ZVo5ODf6/LDEHJH+nA8P/EMxuPcnHmX/AJyD0Dy3EmmafI+sakgEYSAV5MBT45B8NW/4qWTMoxEBeQxh/O4fx6f8+X+bJnKAG8qj/R/Hph/ner+ixC88yeefNCmTUtQs/LliQTxMiiWn+pVpT/qsyf6mAZZy/uscj/tmQej/AE0o/wCzjCP9ZIJH0x5/xS/49/xx5tbN5U8mebrO/S7/AExZEE3TuleLkn4kDBeXxfF/wWUnFKXpy8O/80+n/PYcF/VXqVvzA/MC11zznZ675ShleaNVCLwpydCdgvdWi+HHhhi6x4R/NRtHzeow+afzb1sBLXT4bJWoObgAgeP71/8AjRsH5uH8MZT/ANNOH+njw/7tPii9o/6bi/3XpXyflD+YutfDrHmL0YzUkQc+/bigtlP/AAXw4/mcp+mMYf1jGMv9NCOWX+z/AM5fGn04f9zL/Yx/3yY6N/zixokTetrNzc6jKevN+K18eK/F/wAEzZCXi5Prl/pR/vpcX+9ayZHmb/H+c9K8ufl5oXlz/jlWcULHqwUFv+CPxZGOniNzc/6x4/8AdIEQGSZk0yWKiqSwAqeuR4QDariAdjhItXzx+bXk6b8uL+Pz75UHox+oBdwL9ghj14AcVRv2/wCV+PDKsROE8PPHP6eL+H+j/wAQmB4TX8Je76BrMGtWEGpWjB4bhA6keBFaf7HMg7LIUUwpkOEIbySqckSyqUcBlYEEHcEHrkZREhRV4HrdhJ+TOvxaxYs58s6lIUuYOqwu24kT225L+1x5J/LkMUjH93Lr/dyZQ/mnl/D/AEXvNrdR3USXELBo5AGVh0IIqCPoy0hBFMN/M78qNN8/28cd8WinhNY5UpyAP2l/1WymcTfFH0yDFGfl3+W+m+RLA2GmAkueUkj7szeJwwgRuTxSP8SgUy3LUrWUOCrbg4CLV5r+S93JZpqHla4VhLpNy6qzftRyFpYGUfy8MjA2PP6Zf5rI8kR+cOgeZ9cs4bTypcLbFi4nYniSpA48W/4LphOWWP6Rx/71HGY8hbyryz/ziTdxs1xq2qskr7n6uDv483YrlMcmUmxWP+lfFP8A2P8AxbETnzB4L/0zMrT/AJxa8u27CX6zfeoNwyzAEH+aoTlyyyM84/yh/wA0Sj/v5JEpDqf830/8UzXyz5K1Dy/Ovp6tc3dgAQYLoJI3twuAqTDj/K3JcPHkP1cE/wClGBxTj/pZcEv86PEplI86I/q+r/TRl6v86LMsmq1mCjkdgMVDBvMf5u6Rpcv1CyY6hqTHittbfG1f8sr8KD/WywxGMXM8H9b6pf1YtnBXPb/df6VAnyRe+dTFd+cV9K3jNUsInJSv81y44+q3/Ff2F/4LMWUpT2jePH/0tn/xMf8AZNZN8tv91L/ifx6noVpZxWkS29uixxIAFRRQADoABk4wERQ2Qr5NLsVdirsVdirsVfOf/OQ+qz+XPNuia8vwwxgBmA6gOfUUt/xjfK47S97KL36LWLSSGO59VBHMAUJYCoIqONeuXcJXhKNqKVyBYvkLyV578zw3d75a8mwhrme8klaUgMFFeO/P92q7fabIeLHGNxx8X0x/476P+JbOIDpZTj8y/wA0PP3lvTTouvwJFLPt9dhGzKa8lBT92G/1VV/8jJw1MZdPDyfzZf7uP1/7qcURyDu4Zfj+t/u3ov5Y/k35Vk0WK8eNNQku4gZJn+LdhVgn8nFv9lmNLASbmZcX9E8PCwlDvSb8w/8AnHHQrXQbufQoWS9jBmQ8idl+J4/9XjkeCUN7Mv6P9FiBXeu/J383PL2i+T7eO+kS3ntqxvEoqzMN+aoPibl/NmbDEKsbD+KUm7g+ASbzzrusfm/bDTdG0l/qIfmtxLQGoqKq7FY06/Z5S/6mYuXJjB9PFPJH+aP97GMv9nKDCUojlZ/H4+qUGF/lb+TN5e69e+WNYuHghswJJY4m3YtQIRyHErxP95x/lwjLOUfT6L+ri/h/rQjL/ioJBNbbfj+t/wAU9+l/IbysdMl0qO1VTKtPWJ5SAj7LCQ/F8Jys4OtyM/4ZSP8AvfpajG0u/wCcc9IGi6Ld6Ua+taX00L17lSKH/gcyIbi2wvWMsQ7FXYq7FWM61+ZHl7RAfr99BEQaEcwTXw4rXLRil3f6b0tgxliOqf8AOSXk6wFEujOfCNCcPhVzMR8eJl4XeY/7pi8//OWulJJWPTrtreg+OgBrX+WvT/ZZG8Y24r/qx9P+z4J/7BFQ6k/5sf8Aj0WWflz+fmg+dpjYRF7W+JISGalXA+KsbrVWbj/uv7f+t9rCcYq4niH+ll/pf5v9X/O4UGI/hNj/AEsvvkgP+co9Em1LydLNCxAtJEmdR+0tfSNf9X1OWYxJH++YB8pfll5Cn88a3b6RbBlhNGnfrxRaeo3/ABqn+XxyM5UNvqP0/j+gxJfR+tf841QXPmDTfqoVdBtIVEqGnIshJof2n9ZuLOzf5WUcMh6f531ZP91/nfzUEbU9e8x+ZNO8n6eLu9rFZRlY6opIQH4RUIPhRf5sy4QA22H83iZgBC+YvOtpaeWrjzJZSLLAtu0sTruGJFIv+CfiuWGNGiy4aNF8jazcWnl7zJYRanHM5tWjubsgEvJM4Fwacj9lf3cf8j/E/wC1mNH17k8/qlw/TH+Z/B/0lNGx5/50nv8AZf8AOUnlSbis31iEk0+KPYe5IOZgxg/xR/HwSIg9Xqmj61a6zax39hIstvKOSsu4IyuQpEo0XjH/ADlpY2Fx5djnlkjW+t5Q0akjmyn4ZFQfabjVGys4zfF0+mUv9yoieaB/5xP846hqdpc6LchpLOz4tDKxNQHr+53+0q05L/L/AMDkzk4tj9X+9TKV/BkH5o+UfLXkvTNU82Q2yJqdyjIrkkn1JfgrErHijfE0nwcfh5ZjDT73ZlXqjGXDwQ/2Pq/z+Ph/haxEE+7/AGLCPyL/ADo0Ly3pdn5enjn+sXEzB5eI4c5G27/ZXki5kwjHfePF9XC2gA9fV/N/48+mxvi1sR/NTyknmry7eaay1kMZeLxEigslP9b+7/1XbKcg2vu9X/Ff7FD5o8ka5+hbTSfOUA+HTpTYXwB3KMT6MhC8m4+kePxcU5wrkh6ZeWT/AHUfxxf6Ztjt8fx/x99gQzJOiyxkFGAII7g9DljWVXFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYFdhV//T9U4q7FXYq7FXYq7FXYq7FXyv5E5fl9+ZdxYBv9xuozyW6sCCvMlZYkbiW4vG0gj+L+f7CcsoxyP0nmPL6vq9Xq4f9h/F/OZxPR52/nu/8iedr2+0+aV4oryVZVcmkkYkKujirL48G/n4vmRDITtLfi/H8X4/zUiVc97/AB/pn215f1y112wg1SxbnbXCB0I8D2P+Up+Fv8rEimBFJlgQ7FXYqxXzDBrq3a3Nne29rpkaFphLFyYUoSRJzRQvH9pvs/5X7MOOV0Iwnf0ykZxlH/Mj9X+w/wCKIJ5VE/0vVxf6Xi4Zf7F85eatX1z80PMsVz5IWRhYExfXuIjWjniSG+1wVTyRWZn4/HwXIHIMJ6TyH+aP93/D/nen/O4WcpiHLeX8XD9P4/pMu1f/AJxh0XTPLt7qGpTzXWqxQSzm4LEDmitL9j+XkP2sifEl6pH/ADf4OH+a1bk7qmr6nNffkn9aujWVreNSaUqFuFjQ/D/MqLkwAOVDf+H0MyXsH5bWQsfLWl2wFOFnAKe/BSf+GyUOTF53+flxHputeWNVnYrDFflH7gB+HxU+SNjVn8f7pnHdl3nO+8vfl9a3fmqa3hju3B+JVAeWQg8I+X2mLftN/LyfIY9PG7/zv6v9X+sxjC3gH5cflp5t88aHeercfUdL1CV5yHWr3EhoyEs3xelzVPib/K4ZGWYm+ACf86Uv6P8ADFTkJ5cP9b/epFp/5OXGi+Uta1jzHDJa3ti8ItXLUJPIJJ/rI3NODfzf6mCGYzNxMhwfV9Uf83+tFjE3uLFPq78r57mfyxpc98xe4ktIWdm6ksoIY+5GXiXFv7/vZFlOSQ8C86Q21n+bml3+ousNv9SZlkkYBeSrMlKt8Ib/AJtysR4jXNNWym48y6Tp/nqG7F3CItQ050ZhItOcMgdObBv2opH48v5MmMUomqO/q5fX/VZCBKZ69+enlPRm9Ka9WWT+SEGQ/wDCZecJH1VD+sU+HXOo0xy6/Pm51VGi8q6NfXsxqFdk9OMVrRmc8mH+yRcx55sMNjLjl/NxxlOX+9/2PExuAPPj4f4YxP4/2MnzF5f8r+YPMfmX/CtzPLZ3d4zGRJ2dRVFaYCRPtN8I+D4csOsnONxkZ/w8PHLh/wCO8KTlkRsZH+jxS/2f9T+q+tvyx/IrQ/Ig+sxKbrUSKNcSgVHiIU+zEv8Aw/8AO7ZhjESbmeL+j/BH/i5f0pf5vC1Ad+7L/M/m3TvLds93qMyRhVLBSQGYgcuKL9pmbMuMCRf+ybRAl4Jq/wCZuoWFpe+cYNPlnvnCKlzKhENvGSiC3jR/idvUY85F+2+Y/HjlLcidfTjj6o/15T+nj/3K8Q99fwx+n/On/STPyhqeseadXXR/P9zJatcQrPa21ufSinRhzasyH1HZV+1Dz/my0ZZZPo/dcP1cI/e/14zl9Mf6UWXESPT6OH6uH6v63FLi/wA7gRf/ADkf5JsdM8nKNItUhgtrqKSQRoAeNHi5O/2vtOi8m5ZjjGIG+v08UrlL/OlJpiAGNf8AOS/l/R73RNM8xaco+vXZiijKf7sjKFxyUdSvwL/N+xkhi4DY2/nR/pfzmRjRZt5AS3/NTyGNG1WourX/AEaRj9pJYh+7l335cac/8r1EyeQcYsf1o/j+kmW+/e8s/MnzT5u0vQW8ia5ZNO/JBDeJViyo4MZHEfE3wqv8+EamEhv+7yj+H6f8/wD6QR4gPlL8epk+gvcflN5ji1XVlcaTrlvD67kE+lcEBnEnH+WQyf7B/wDJyOCfGeE7E+rH/DxR/Hp/0jKMhLbv9UWQf85SSW95oumi3Alu5rxBAUIJKsrc+Hirfu/+FyU41uduFQK8qe0aTBJb2cMNw3OVI0V28WAAY/fkgdt2JeYf85JadINAh1y22uNKuop1PsWCMP8AgmRv9jkJbEH/ADVBovTLG4i1axjmIBiuYlanYq61p/wJywjopeOfmt+Tlrpeh/pHynAsN5Yeo5UDkZYnFJ435f3nw/EqtmJweFv6pxl6ZcR/0sv8xjH0+f8AO4vx/C8A8o+avOPlO/tNH0a+EUd+UaASENCfVPEEhwyp8fwvx+w/LM2OYgVw8dfw16v8yXFGXq/h9bdGZ5Vf9GX/ABf1/wCyZP8Amd5O87+X76PzdrtxFFPM6wvcWdQVqOPIhUi/Y5L/AJWY8M9y2j4JP0xl6oSl/wArMv49TEZN9hwfj+tN7FoH5PeTdJjXVdbuV1GaReZmu5QVbl8fJY2PH/iTYTgy5d5mcv6MfTD/AE3/ABU+FZY5y+riP+5Y/a+f/Knk/wA06hZQOk2k6pCjMsC8wsy1ieIBftCSM8vhwx0wiDGXDD+bKR/g/rf0ZLwV6TUf+Jec+ZfL/mLzSyWOhWV1JZW6NAJWQr6kAk9a3V+f2WjU8cqGoiNruX8XDxT+j+P/ADmBzD3/AM7h9b2+HRvOeoaQugLaWGm2HoC3Imdpn4U4fCsXGPlx/mbJcYMeGMJz/pZJRxR/zoevKni6CJJH8Upemf8ApPXF575B0gaHPe+V/M+uTadDp0g9JIpFiSaNwXVxNT1j0/u+XwfYw44TlvAQxy/ykvCjPLxfz45Z/wC7lD6f9hKIkRtUP53pjxcf86OWf1fj/NJvPGu+QdE1jTNT0ZzqKRyMt6jtJJyjYUU1uPtNE3xIq5ecUwf3kjkv0/VHi/6VengZkHnI3fp58X+d/MZBc/8AOWmk6fH6GhaUQF2WpCin+qg5YY4MUP7OD/dcTAQhH/e+nhSOT88vzD831h0K0aJW3UwxEmn/ABkf4af7HIy1WOHLh/m+o8X4kpyxHIf79LT+Rv5jebp/resPwkKhec8oBCnfjwTk3H/J45R+ckTcYz/m+mMcXo/ry4OL/ZMDmJ3o/wA3lGH/ABPEzfy9/wA4eQW4D6rqchcjdbdAtD3HqPz5L/zyXIA5SbHBj/02WX/Trh/2TG5eQ/H870/7lmdn/wA4v+ULdQJo57hxvykmap+YTgv/AAuHw5nnOf8AVqPD/ueP/ZKAepJ/H9HhTXXfyI8sXWlT2FlYwwzvGwjkC/Er0+B+X2vhbIHBwiwZGv50pT/zUCNKWl+So9X0zRdQtYI7O+sJY5JaxhT8CtBdRbCvxN9hv9V8lGERvAWD5/zv+IZ7cw9OzLV2KuxV2KuxV2KuxVBaxpNtq9pLp96gkt5lKOp6EHITjxCkU8W/Ji/m8j67ffl5q0vKNWE9g7ftI+7RrX9r9rj/AD+phxSM47/VD0y/H+y/z2weoe57tkmDsVdiqS+cPLFt5m0q40i8AMdxGVr/ACtT4JB/lI3xZVkjxDz+qP8AWUh57/zjrr88mlT+WNRr9f0SVrd6nqlW9MivZfij/wBRUyyMuIWyJsW9cwsXYq7FXYqwLznYx6DqMPnKDmvp0gvVQVDwN0ldV+JntpODK37EXqZWPSdzUJ/VxfTxfwy/o/zVH3/jiZvb3EdxGs8LBo5AGVhuCCKgj5jLFIVsVdiqE1DU7bTojcXsscEK9XkYKo+bOVXDGBlsLl/VSATyed6n+dCXUjWnlKxn1iYEr6kY4wA79Z3+FxUfsfC37D4Jyhj2md/9Tx+uf+dw/T/sv6STwxNE2f5sfV/ppfTBcPIev+ZnaTzXfmK0dafU7MlF/wBnN/ePTIHLM/TWL+l9WX/T/wAH9WLETPT0f7v/AEzLPLPkTRvLCkaVapCzdWAqx+bn4srjhANm5y/nT9UmIiyHL2TsVdirsVdiq1mCip2GIVjmt/mH5f0R/S1K/ggk/lZxy/4AfFlscUj/AMeMYf7vhbBjJ8v61R/3TDdb/wCclfKWnK5gmku3XtChof8AZvwWn+Vj4YHMxHx4v9z6f9kvABzIH+y/47/s2F+bPNmmfnV5XvI7GJ4dR04euqPuaDrxdf5lzGzARqQN/wCwlwsZAdN3zbBq+o3JWCeaYwQbgAkhAO4H7PHLTmPfTIzPfT3H8tf+ciJm0+Ty1rbn1GieOC7JoQSpCepy/lb9rJE8Y/2z/YyZfV/W/wB0yP8A5xEsIo7fUrsyBrl5VRl7gCrcv9kzZjgG78msh67+ZeiaXreh3FjrMkcNu6mkjkDiw3RwT+0rYZ4jP6fqHqigRMuT5p/Jj81E8hPfaQed+ZJAtusZPEkEryHL4l5Lx+HjlgO3r9Nfw/U2Dz6PVBonnrz5X9JyjSNOfb0k+2wPjT4v+CbKTqTLbHH/ADpMPE/miv6SX/lf+TGn6D5g1DTtXtxdhBHNayyCqlakSfB9ksshX7WUiPibS6fVGPp4v9+wO/N7zDCkCCOJQqKKAAUAHsBmTGIiKCvLvNNougefdM11UpDqMbWUzD+f7UBb7uOVjaVd/q/4pmO56tl7FC2mnW9q8skCBHnfnIR+01AnI+/FQuQjADl1RSzUdXtNNj9W9mSFPF2Cj8cujAy5M4wMuW7C/Mf54+VdBUGa9SaQ/sQfvG+nh8K/7Ljk/CI+qof1v+J+pmMffUP6344mE6p+f+o+Z2Om/l7p81zOwHK4mSipUfyE8a/5Ujcf8h8onlx4uZ8SX8MI3/0nP/NjH+uxJhDn6/6MeL/pL/cf1lKT8r/zB82qIfNOrpb2oAPC2FCT/l8BEvJf5viysarIfoj4P9KX/HZSn/m8cGPiS6VD8fj+JkGi/wDOMnlSxCveJJezDdmmc0Y/5SD4cqOOUvqlL/N9P/HmBBPMll2mflR5X02v1bTrcV8UDf8AE+WR/LRPO5f1jL/e8KOAJ7Do9h6foxwQ+kP2Qi0qP8kCmTOlh1jH/OjFBxjuH+leQ/nV+RtlqdnJr3luL6prNp+9X0BxEnH4ivBeKrL+0ki/Fy+FuX7IA8E8Ufp/ij/N/pQ/m/1fo4f4WQ9O42r8elfa/mjpfmjyO+ua9btPHaAR3cCmtZK+kC6H9huSyfF9j/K45dkgJGrMIy/m/wC5/n/7ni/ibiAfK/xwsO/5xX8zWmnajfeV2oBMTcWjsAGKEBmiJ/m9PhJx+zySTJRgDv8Axj0yl/RRw7e7/cvonVfMmnaRJDDqFxHBJcNxiDsAWO2y1+eWxgZct6QIkqutaXDq1jPY3Kh4po2RlPQgimUTjYpi+PtE84SweXj+Wt2G+tNqkcTJQ7RBw8y1X/i+P7K/ztkjK4X5MxRFvr3VTYWMEl/fLGsUCF3dlHwqoqT0/ZGU/l4TNmMeL+dIR/3TDh3eG/mr+b3lS90p9P0OOG/vr1GijAjpwL0UOzsF4sv7C/z8f5cmdHCHqIjt9PD9X+x/6SbDjHXf+bwvRfya0OLy55ZtNGM8b3iozyBXDEO5MjCgP+6+XH/Y5OMJVZBH9Yf6VhRYboX/ADjzbOtzqXna4e/u3LkMXPFE3o/+t+1x+wmUS8TL9RlCvpjHh/HB/R+pjcp8/wDSsS/5xWsje6hdBpRJbaUXFuq7AtMSjzEftfu4+Kcvs+q2Xb/1f53D/F/MjKX8cYepmdv99/Se++dPI+m+cLRLDV0MkEciygBiPiWo/Z/yWZchOHEOco/1f+PMC8O/5yftbfy9FoYsLURWdtMzkxqFUFfT4R1X9plTIQxxgaGxP+y/pf0psoAB9DaRqKalZwX0QIjuI0lUHrRwHFfehzIQjcKvkzQtBg0/zbr3kC9JitdVB+r9gJA31myI/l4qeP8Al/CmY4HFH+p/vf8Aiof7FmNx7ntf5F+ZH1PQV067HG+0pjZzKeo9P4Yz/wAB+7/ymjZsvEuIX3oO+/e9IwsXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK7CrsVf/U9U4FdhV2KuxV2KuxV2KuO2KvEvzW/Lkan5XutRtkMeo293NfxtTi2z7itFarRRoyf5ax/wAuYcTR4x3/ANL6f9NP/Y/6VldMk0HSNE/MnywL+e2i9XUrcJNJwXnzUcCedOXJJF5LkpaaI3iK/ijL+l+Pq/nMJwAKX/8AOPtrdaJp935XvyS+mXTxxk9Cj/vVZPZqlqf83ZdCfEGV2HrOWIQGqXz2cXrJE01CAVSlQCfiajFeXEfsr8WRMhHcpCKadVQyVqqgk09uuG0PlLzL+Ynmf85dUk8seXI2tdJDcZCaglVJ/eXElPgVv98/z8U+J8OTPHGKh65H+L+KX87g/mQ/p/Vw/wBfgbDMR2G/9L8fTH/Z/wC5fSfkryfZ+UdKg0fT1CxwqATShZv25G/ynb4sphDh/rH6pNQFPDv+cnvzRvYZV8laHUy3Kf6QV3Yh/hEK/wCsv2/8nL+IRFn/AKRbOQtB+SL2780/lNcaOIzJcW8y2yqoqxUSRTA0X9peT/8AA5TkmIi+X/SSCa3fStlbi2gjgFSEUKK9dhTfJRFBioalpFpqaLHfRJMiOsih1DAMpqjDl+0rZCeIT5/j8fxfzlIt5l58/Ke/88+Z7a41aVf8P2aBlgBPJ3J+MOPsjlRfi/k+DIzlKXoAr+dk/wCJ/pf9JKSeT1SKBLWERQKFRFoqjYUA2Ay0ARG3RQHzt+bf5lQeddJt/KtmPS1O6vo7e5gPWPgx7/tKzojcv5MlOuHiG4P0/wA7/O/pNhAAscj/AKb/ADn0RYWaWVvFaw7RxIqKPZRxH4ZGIoU1ojJq8L/P3yraax5i8u/X42ktp5ntZACR9viyfGvxL0dsonfQ1skJd5u/5xz8taE1pqUayNbJdRJOkkhI9Jz6RpXpxZ0b/V5ZWI5ORlKd+n+GMo/6X/SsBEnYkm3rGkfl55X0LeysraI+JUE/e/LJjSgncSn/AFrl/wAdT4V9E8vNa0/TYTPczxQwKN2Zgqj6SeOZOPAeUR/mxDMQJ5Pl78zPzE0mf8wNK8w+XB+kZYKQOFqiO4LKgSdhxb4ZPtKrL9nAYCB3P9KUcZ45f8R/N/j/AKEuBPDW3P8Aox+r/iXrX1Pzh5jkb9IanbaTbE09GzIeWnvcvwKn/UX/AIHESyH6cfh/0s3rn/yqh+6/qy4uJmYzraJh/SkDOX/Ef1ZRT/yt+VGi6SxupOWoXTEsZ7lvUavtX4V/2OUTxymf3hM/6P0wj/mtJif4rP8AWY9rnmm081arf/lnqcPoySxFoZE3UqAJUYj9l1YcuP2fhyZgJR9O0gfp/h/2LLh29yZfmt5FbWPLitbsY9U0tBNbSxihEka7qnfjLTjx/wBXIH0VIfwfV/U/iixBINtfl55gtvzQ8oelqPxvLG1tdL0PIDizf5LMOMi8fst/q5bkjxD+t6o/0f8ApFlMfaxPyt+Q2r22pWS69qC3ui6Q7PZw8SGqTVPU2/Ybi32n/kTijZQTOYEZAAfxSifr/H44mPETseH/ADfx/wAUmHl1B5P/ADFvdLA4WeuxC5jp0EyV9Qf6zfG3+zXLMYoGP836f6skx3HuewvCklC6g03FR0xljEuYB/rBiRaWeZvLVl5lsJdL1OMSW0wow7jwZT2ZT8StjOHEO7+bL+anm858o/8AOO+l6BqcOqTXVxeLaNytopjVYz2P+Vxb4l48PiyJ8SVCcuOI/hqX++lPhivFKX1Hir6fxxSZR5x/Nzy55QJTVLtROP8AdMfxv9KL9j/noy5mRxE7mof0pfjil/mxbBAnfl/W/HE8b83/AJy6z+Y1ndaJ5U0l5bKZSjTyA1p1Lj/daN/k8nbKMuXFHbecv6P/ABP1/wCm4GBnGP8AS/H4+p5b+W2o+fhqC3Xl9bi5e2HplWJaIADhwcE8fhwnWAbS3/opOX4/0XvFvJ+b2pqFlSxtVcUJNCQCOpALf8RyuWpBHpxyP9GX/HuBAy1yjf8AW/6Si8sT8i/MEnmKDQNRvbe2l4vdW8iIWBPLnIsK0X4lYep6bMqJ+xlIySI2jUh/DKXD6P4fXDj/AOK/nKCeYAFf7n/ZvV9Z/ICbUbKQeY/MN9dqAW+NwkQIHwl0cyDip/yly0nNP+Z/VjD1f6ePD/uU8U5bd/8ADGPD/vv968s/LubyFo1rIPNvO61K3meLgCZUZQfgkjRT6bLt/wARyXgyybykce393I8Hq/zY8aeG+ZoD+GXoT7zd5uXX7aNPKHl+aE2MqXEVwYgoAj+L7NPiVl/Z5NmPWDGdjx39X8UZfz4T+tiOCJ23v/Sql/8AnF5p1C0W9uNRsNItpRVQn7yWld/gXkyt/ksuZwmf4Ibfzssoxh/vW6j0iB/SlJh95Nq/m+Uw2U+q67QipjBgiBPf4gy8f9aJcqlrJQ5zhjl/DHBHjlL/AD4eFP8A6asDmMev9aOOP1f58OCX+xkot+RPmS2i+s3thBZQ1VWmmlMrKGIWpRJJVbjX4/3S/tZjnNxm/wB5Pi/1T916v9Liy/7pqvi7zf08UuH/AHHDL/Txep+Xv+cQ9JgXlrV1JdS06Rj00r8hyb/hsjw5JdRj/ox9cv8ATz/4iKNz5f1fx/xKd/k75E0bRWufL9/ZQnVLFyRK6gmaJyTDKOXXiv7tskMMcgs3Y+qNy9Ev6P8ARkngB3ew21rFaoIoEWNB0CgAfQBl0cYjyAChXy1LsVdirsVcBTAAq1mCjkTQDCq2GZJlDxkMp7g1xqlIpUxV2KuxVKtV8y6bpU0Ntf3EcE1yeMSuwBY+CV65KMTLkyEbWeafMUHlzTptVuld4IF5OIwC1O5AYr9n/WyFjr/pkBX0LWbXW7OLUrFudvOoZD02PYjxX7OSIpSKYD+eH5dS+ZdPTUdKAXV9PYSwuNmYLu0Vf8r7X+tmNL0HjH+d/V/46gGjaa/lH+Ya+dtJ+syr6V7bsYrhPB16kf5LZkmjuORZSHUM6wMXYq7FXiWvAeTfzJtNUB4WetxGCbfb1F2Qnw/3X/w2Vw2Jj/O9X4/H8SYjo9tyxDsVdirsVWSRrIpVwCp6g5Ei1SfWLy60iOI2FsJrVK+oqmjKoG3pJ+3/AKuC4wG9/wBaP0x/rf0UxAQsX5haI1mdQluUhhUGvq/Awp1BR/iy6OMy+mp/0oniizGMnkwL/lbOsedJHs/IFpyjU8Xvrr4Yl940+1If8+DZCeSOM1vmn/Nh9H+fP0/7qH9GSCRH+n/uP86X4/oo6w/I6C/nXUfOd5NrV4u4SQ8LdP8AjHbJ8P8AwXwt/JlUjky7SPhw/wBTw+j/AE2X65f1o8Ev6UmuRlLma/ox9Mf+K/zvT/Segg6d5ftljrDZ2qABR8KIPYfZXJ4sNbRH+l/3Ukxh3JW/5jaCs4tReRySnakZL/jGGGWnGRzqN/zpRjL/AEsiyr3fNkVvOlwgljNUYVB/28gxVcVdiriQNzirD/MX5r+XNAqt5eRmUbenGebV8OKd8t8Ijc+j+t6WzgI57f1mKx/mX5m8yjj5Y0l4oW+zcXh4rT+YJ9pv9XMc58cdo8Wb+qOGH+mY8Uelz/2MXXf5S6lq8Zn81a1cMu5ZLc+lGF8K/wDGzYjJmn9PDh/oxHHP/TcSiczyqH9GI/3ybeX/AMjvKGmoJI7JLtm39Sc+qTXv8f7v/gVymWAyPrM5/wCdKP8AuOH/AGXE1SjvvxH+sf8ApFlSeUNIjge1is4I4pFKsqxqAQRSnwjB+Vh3D+t/F/p/qXgHk8L/AC00JPIP5gXvlxxSy1CImHl0I+0FHj3XJwHEKO/D6WyPJKNP0fTfyz/MGa01YJ+itQiYoZACoDno3L9lW+HIwx+J6Zb0sY3sx38zPLXkWfUJLjQNQaOWlfRiiMicvZ1+yrZM4Z4+sOH+lL1rwGPUf5zGvL+t+bvK00muabDLawTARyS+ifTp05lGHFW/axx6iAPCOE/0bWOYDb0/7x7z5X/Je283W8WteZNWn1kSgOoVysQ/yafa+H+X4cMzlntIjH/Rx/8AFfT/ALD/ADlkZHY+n+jF6JB+VHlu3jiigsooxA6yIUFGDL0PP7WUjTgb73/OtgIgMvzLZLeIrypvkaHNV2SVIfOOgW+t6e9vcuIgpDrLtVGU8hICenHK5QMvp+r+FIB6MZ1z89PK2h/uZbwXEwFCsA5kke6/D8X+tmT4JA9RjD+sfx/smfh1uaDEv8a+ePPhY+WbcaZp9aCecUdh4qp/41zHOpiNoDxj/O/gY8YHIcaI0/8A5x0TUCJ/Nuo3GpSbnhyKoCetMrlPLk+oiA/mx/H/ABTGUpS5mv6rONA/KXyxoIpZafDy/mdQ7f8ABScv+FysaaP8XFP+sf8Aex4Yf7Fr4R13/rfjhZRZafb2UfpWsaRIP2UUKPuXLseOMPpAj/VZCIHJE5aydirTLUUPfFXzj+U3nmbQ/POo+U7uR2tLieT0fUYkq9SyUJ/34vw/8DjGZkN/Vw/xNhPEN9yH0cyhhQ9DgIa3zX5R8urBrPmjyBc7DUUaaA/8EyU/1fU/4TMf+Dzgkbj3PImvLjQo7TWLf91qmi3Bt516EqGJjb/KXl6kb/7HLYSo8XSf+6/6Q/3LKPe+kvOflqy/Obytbanp7iO7QerC3Xi9P3kL/wCy/wCNWwZYmJ4o9P8AZQ/4pjIUdkR+QX5hTeYtOk0jVT/uU01vRkqd2UbK58WX7L/7H+bL74xxDr9TI77qerfk1pVj5qbz/dzCO2gX13h47eog/vuYPsrcePxP/rZiDHK624L4ufq/q8PD9H+f/mtYBtAtr3mv80bWb9ApFpeiS8oxNcKXlmX7LFI/sojf5u2WZMo+mEfGP8UpHgxf5n1f7KEv81kZgbAcf9KX0f5v/Hku8rf84l6JZw8tZmlubo/tRsY1H+oF+L/gmzH4ch3vw/6Mal/spf8AHWAtGeY/+cdNL06xlvPL9zc2d9AhdX9UmvEcqN/rZdx5Yb8Up1/DL+JmJSHIpO35gahq/wCUt1qNy5a8UNbPJ3YVALH34Pxy8z3vkyJ3Yv8Ak+y+T9f0Se3qbXW7Mxye8nNt/wDYt6f+wyuBqwf6ygcx/nPq/LGD52/5y6130bfTdJdSYZJjNJx6kJ8HD/Zc8iaSNkDoXmfzj+Zl1DaeX1bSNCtAi+pTchKKAX/bbiPsr8GA6gQ9OP1y/il+Po/3TLxK+nf+k+koEMSKjMXKgAk9SQOp92yQYPmj/nJ6yfy95h0rzdafDICqsR4xtzQnx+Et/wACuVxNS97KJ3Zjp1yNG85Weu2Vf0X5kgAcLuomoGQnw6fa/wCMn82MPQTHv9Ufx+PqUDp/nPT9a86aPoaM+p3kMHHqGccv+AHxf8LmSMUiLr/O+mP+mkkQJYLqn/OSnlOziZ4JnuZAaKkamrH/ACeWS8MDcmMWRx1zMUgn/wCcnk40tdGvGkPQMtAT23yrxMQ5yv8Aq/8AHmI4RzJSy/8A+cnNYijaaHQZRHD/AHzOzAL47rH8P+s2Dx8ANXKV/T9Mf99LiRHJj9/+dGH/ABb1b8s/zMsPP+nHULANG6NwlienJGpXt1Vv2Wyco1y3WUa82ZZBi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX//1fVOKuxV2KuxV2KuxV2KuxVSngWeNonFVcFT8iKZGQsUrx78kZB5b1XVvJMpP+jzGeCvT03pUL/q/D/w2Rxmx/V9LPmPcy2eeXR/N0dUH1PVIeBbwmi5Mn+ykjfj/sciOdf50f8AfsR/x5nOXIdiryPRdWuvLXn650K8dm0/Vo/XteTHijr/AHkcYb4V5N+yv7XHIxlY4T/B/uZMweIV3PT7HSbSw5mzhjhMjFn4KF5Mf2n4j4myuGKMPpADWIgckblyXk6+VPLuoec7/VQrvqlpbrz5U9NSwIVk/wAvjmPLHZ3Nj6uH/jzIw2/3rwT8uLu51DVNP0DRp5IrlNSnnmKEhfTBX7YX4W+FMsEjAbdfTwsuKvi+08sa3Yq7FVpIUVPTFXh+t6B5M8t+bH843d4puiOQtoxzPqU4+oqR8mPw/s/zZV+WkN5VDFfF6vR/mshjI57R/pMmH5oa1q1P8PaFczI3SW5ZbdKeI58nYf7HJHPiHIyyf8LhKUf86cuCMEcUOnFP+qPTL/Pk4aX+Yuq1a5v7HS0PRLeEztT/AC3uCq1/1Vx8eR+nHH/kvklxf5vgemX+dwp8TbaI/rSlKU4/5sfRJgf5w/lnrNroUmt3+s3d9PYyJMq0WNFoaPIiIPhdVb4GVsicuSxfhjh/1OHBL/TfxKJyJ34dv5seBj/mu/8AKV1pYt4LzUdT1OeEMIo5Xk4uQG/ecfh+FsnI5Ij15Kh/NkI/731NspS/jl+P81C+Tfyv1zz5aI6iTTbPiFaaWV5JHI2cpHXivxD9rK5Z536DMn+dKXBi/wBjH1tPikfSZ/5x9L1Ly/8A84zeXLJVOqmfUpl6maRuH+xjU7f8E2CXi5B65yr+bE+n/TT4p/7ljMyn9RlL4/iTH/z2/KDQtM8v/pbR7FIZbGWORggJ5Rg0dWqfs0+LIRx+GdjP/Onkl/pfV6P81EY0ev8AnSlP/dSk9G8t+RPK2oWFvqFtp1sEniVwRGP2h0r/AJP2ckMAHWf+dPJL/dSZEUzDTtMt9OiFvaRrFEvRV2GWiACAKeG/nPH/AIW856L5xIAtiwt5m9qnr/zzZ8EdpV/OZx7u97ZfapbxWMl+zr9XWIvzqOPGla18Ms4eiAN6eN/84sRyS2eq6gBxtrm8ZoqbClWZqf8ABjK493cpPTue6ZYh4/8A85A276cumearYUl027Tke/BzRh8uWVk8Jvv9KY83qTaxax2y3k8ixQuofk5AFCOXfLREy5JESXmPnP8A5yQ8v6E4ttPLalckbLAQVB8C/wDzTyy04xD6zw/0f4v+J/00mXCB9W3+6Yhc6x+Zn5khYtNt/wBCae53lZijEH/L/vXX/jHEn+vmN+cj/kgZn+d9Uf8ATSj4Uf8AZy/msfFA+gf50v8AiuH/AHHFKKfeT/8AnFzRNKlF7rssmq3f2j6m0dev938TP/z0duX8uUGM8m8zX9HHxf7LLL1T/wA2MGBuXP8AH+f9T1/0rXSbVuCLFbxISQoAAVR4D/Jy6OMR2FBQHzL+WH5+aF5W1HVLW7aQaZcXLTW7BKkFieYKL9kNluPGOW238X/Hm2hVdzP9Z/5yt8p2kBksTNdy9AixlfvZ/hy04wOZH+b6kCI6vMPMP5l+dfzCEV9o2lm2isXMsdwikslAa1kl4xsvH7a8fizFnqMUD6frH+f6P6cYx9Mf85ByxB9N/wC7/wBzH0/56vqEGhzWcOoedPMt1qrzAOLO2O6k9VKc2VOLfDx/df5GWnxpD1GGCP8AR/jj/mxh/ssU/wCuzPH1Mcf9X8f73/OS+GW70/VoNT8m6E1naSqLYNeLyVmY/BKTKPgb/K+LMISxDbfU/wAXq/nf0eH0/wCbxNIlC9uLJ/W/3v8A0m9Pg/JnzT5h/eeaNZeJD/ui0HFQO67cVy0ZclVAQwx/2bPxJdKh/VTDyL+Quh+Xr+5jurQXa1V4Jpvi2Io8ZX7NVb4vi/mykY+PaZJ/q+iM4/zvT/xTXw3zetWllDZoIrdFjQdFRQB9wzJjjjD6QAkADk3dWsd3E0Eyho3BDA9CDhkLFFV0ECwRrFHsqAKO+wFB1ySWO+ZfKP6RuYdWspPQ1K1rwkpUMp+1FKv7SN/wuVmweIf50f58f+K/moFjl/nf0mRQepwX1qepQcuPSvele2WAsiq4UOxV2KuwEK7CqV+ZdEj13TrjS5XaNLmNoyyGjAMKVGRN9Nv5slfOXk8a3+S3mWLRNVmMnl+/crHI32a9nABZon/nX9vDjzGfpl9Q/Hpl/NZxN+kvQ9S/5yd8r2d09jEt1cSxsUPpxAgkGh48nVj/AMDlhjECzKI/03/E8P8AslMQOZH4/wBKiPK//ORGga7efUHSe0kLBAZkovI/ZVyPsM38rYgRl9MhL/Y8X9T+cyMQfpN/7H9L1bINTz/84vy3j856X+4Pp6jaVktpR1DDfj/qtlE7HqHOP+yitkcln5Ueak87eXfR1Ec7qIG2u0alSw+BuQ/yly6YEx5TZS7+9jf5SyS+UPMeoeRriQtbj/SbMGp+BvtID/k5HHImNH+D0rzHuezkA7HJsXz/AKvYSfll56ttQsKppGtP6cy/siQndvZq/FleI8NwP9aKYdz6AyxDsVdirA/zi8jN5s0V47ba+tiJrdu4dd6D/W+zlOTb1Dp/uUct1b8pfPA83aKlxKON5bn0bhD1EifCa/632svJB3HVnIM2wMXYq7FXYqkfnHzRb+VtKuNYvP7uBS1B1J/ZUf6xwgWmIt4X5Y/Lq9/OJ28y+bXaGwaq2tvF8JC1+1yp9n/iWYsiZGsdY4j+Lh+tjI3sNqZlB/zjjp2nimj6nqVj4elPQf8AAqFyUTmjylGv5ssfH/v0mc6oH/TeuP8ApfSiE/I67cj615j1eQKfhCz8fv2blkzkzn+LF/m4eD/c5ExnMdR/mx4P99JMtN/JDy/bSG4vVl1CZty13IZTXxo3w1/2OQlGc/rlOYH8N8Mf9hw+n+jJgbP1Ez/H9DhZvaaNZ2gpbQxxgUHwqB0+jEYIDkAoiAjcvZJD5l87aP5bj9TVrqO3BGwY/Ef9VB8TZOOMyH++l6YsxAl59J+d1/rspt/JekXGoL0FzLWKEHxq4+Jf9krZXLLigaJOSf8AqeKPF/s/4f8AScH9JjxRH9P+jH/i/wDjv+cuT8ufNfmkFvN2qGCBv+Paw+Bfk8rDk3/Df62Q8fJL6BHAP6Xry/77h/08o/0VGQ9PR/uvx/pmVeV/yk8ueXKPZWiGbvLJ8bk+7vyynwL3mTk/rf8AE/S18N7n1f1mYhQooNgMyQKZoDzBo8OtWE+nXArHOhRvpGRkLGyvKv8AnHi8udOXUPK2pTPJc6fMQiua0jP2eFf2cImZiz/VZk2LezZJg8f/AD/0hrRLHzba1Fxpsyliv8jH4q5UdpX3+lIO6h+dH5UL+Y+mw61YSN9bjgDRIKEOGAfj/rZDJcTY3/nfzv8AMYysMj/KT8urHy9o1sZrKOHUGQGYlQW5fM9P9jkI4oz9R9XF/O/4lHCP+kmfSQJKhidQyHYgiop8suOOJFUK/m0yKXaB5a0/QEki0yEQRyuZGVa8eR60X7K/7HGEeHbf/O/hWqTfLVdiqV6z5k0/RIjPqM8cCKKkuwH4ZOMDLkzjAnk8tvvzv1HzA7WXkXTpbuSvH6zKOMS/5Xv/ALJkyqWaGPY+uX82P4/H85SYx/p/0Yqdv+Rep+YaXfnbVri5kY1NvA3GJf8AJH/NqrlZy5Z8uHDH+bEcUv8Aif8ATcbEzkf6H9GP4/H85n/lz8sfL3l5Amn2USECnMqGY/6zt8Ryr8vE7yuf9c8X/HYtfCFmp/mRo+j6zD5buWMd1OoMfw/Bv0HLtmXGArahX8LcI2GXYsHYq7FUs8x3V3aadcXGmxia7SMtHGduTAbDImQjueiQ8f8Ay6/5yGnv70aT5rtfqMzsUSUAhC46xty+y2WRlDJ9H1fzWQMZctv6L3IGu46ZFg+Qf+cgNJk8oedIdctj/vUyTqehDIQHAP0ZVA0WUdn1rpl39ctYbkinqxq9P9YBstYl4f8AmZIfK/5iaNroqIbpfq8jb9yVoT/s8qhsSO/1MosU/wCcl/Iv6H1AeYbQf6LqI9K4XsH/AGJP9lkB6Tw9/qj/AF2Me7vQf/OMXnmXy/qL+XdRPG1vGIiY7BZV/Y/56LmTCXEK7mfMV1eleePyOurjXovNHlS5FjdtIrXCklVYD7TDh1Zv21b4WzGjKeE+n1xl/D/N/wBN/D/smsSMeW/9F6B5t1HSVS30jW6SDUHESx0PxMPi3CmvHbLuGxueH/Tf6XiZiN+X+m/0vpedfn3qPmryxFb6t5YmMenwDjLEiAhfBmFP7v8AZ/ychHKMXpqPD/Dt/sf6P+asZ8O3p/zh+OFhWt/85QDUfKjQxfudckBibjUAAj++jPb/AFf2cybA9Q2/o/zZf79soDcf6V6InmuXy/8AlvHf61MfrslqVHqbszvVUUD9r4TlQJnuwviNpP8AknoVjqvlJvJ+rIWkmQ3EqdOKyECPf+f4eWUmPENtr+n/AItgd2E+YP8AnGvzRo1zE/l26F1ZwSrJCjvxaM9zRvh4/wA/ptyf+TIeNOH1Az/pR9X/AB+P+l4Y/wA5AnIc9/x+PpfUOnCcW8YvCpuAo9Qr9nlT4uNf2a5kA35f0Ulu70+3u6fWIkkp05KD+vITxRnzFqgdU1nTPLdo1xePHbW8YJPRR9CjLceLpEMhAyeLax/zlC9zfNa+VNPbUYIxV5PiBPjRFRuK/wCU2HJLHi+o/wClMeH/AI8spRjzeffnH+eV15p0o6PqOjvZhyrLJI5qGBrVFMa1Vl/ysrMsU94Hjr+r/vJSYxnCX07sa0S783+edBj0LRoxPaaWeZClBIK1YEFysnH9njHjPMIUaNj/ACkeKXD/AKT6Wwyr/insX5T/AJI+VvMGmw61ema8uDVZUmc0WRTR1ZB1+L+bllc4znzkSD6vT/xX1NcgT1O71/Tfy48vaYQ9nYQRsooDwFfxyv8ALQ67/wBYlhwDmreZvNWm+Wrf6xfMFOyrGoq7E9FSMfEzNl4wR51EcP8AFQ9LYI9eQ/nMLh/Oe0lvotJ1vTrqwivTwhe5QBHr8PFxXblhAxZAREg/ztuHi/qsiIyG2/8AWHp/zWGebtDH5Q+Y4PM+jxuuiXjeneRL9lST8JC/sr+0v8v7GRxHgPAT6T9P4/EmEdtu97/aXUd3ClxCeUcihlPsRUZbSnZXxV2KuxV2KuxV2KuxV2KtVFad8UN4pdirsVdirsVdirsVdirsVdirsVdgAV2FXYq7FXYCLV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq/wD/1vVOKuxV2KuxV2KuxV2KuGKuxV41+btu3ljzBpfnW3FI1kFtdMP5H2UtlI9Mv6/+6ZR5+9mv5j6S2q6R9csqm5tCt1Bx6kp8ZUf8ZI/hwzPDv3f7n+JANJ75c1pNbsINRiBVZ0D8T1Fexy1SmeKHz/8A85Pz6ho91o3mG34m1s56vRTyDVru46Iycl48vtZWJAH3/wAV/wCxZRlT3PSNSi1O0hvoCDHMiupHSjDllpFIIpQ8z6j+jdLur3lxMMMjg+BCnj/w2RJUPnn8tvyv8w63of8AiPTdXktNQ1Ms83IcldanhU/ayo5cgJIEJ/0ZfV/mqZG+il5S/KPzn+WOoSa3p1vbatJIpVgGKtQnk/Dl8XJsrjmo+uM/808XD/peJiJ19QJ/qln2g/8AOR+lGX9H+aIJtFvQaETqSlf+MgH/ABJVzOhwZN4SEv6MvRL/AIj/AGTZECXIj+rL0/8AHf8AZMo1f86PKOkoHuNTgbkOQETeqSPYQ88n4Ehz9H9f0f6Xi9Uv8ziZeGeu39b8f7li9t+dWo+arqXT/Jmneq0QBaa7b0lAb7Dej/eMrfstlByQjy4s3/C/o/08v+OsfSP6f9X6U3H5bavrwD+adTlZGHxW9r+6jB/1x+8bKvEyS5VhH9H1z/zpSRxnpUP6v1f6dk/l/wAhaL5fWmnWkcbfzlQzk+8jcmysYIneV5D/ADsh4/8AjrXV89/6yez3EduhllYJGoJLE0AA8TmSB0DMC3luvfnzaPcHSfKFtLreog0/cg+ip/4suPs8f9X4f8vJTMMX1n/klH1ZZfj/ADpfzosiBH6v9LH6vx/pv6SCvvy08zecLaZ/N99xheMlLG0+FA1DRZJPtSfF/wBd5RLNOQ9IGKP+nyy/ren0seMn+bD/AGUv86SL/wCcdtM0yPy8jW9osF3C7wzNxHJnQkFuX2sgMUSeLnf871I4QN+9l/kiJbGS/wBLU/3FyzgeCygSoPxy2GwSQyvJoQeqadFqVrLZXADRTIyMDvsw45GQ4hSKeX/kDqr2cN75PvCfrOkzsqg9TExJjI/yV+zjE8Ub/wA2TM7h65kmKQ+dPJ9l5u0yXSdQXlHIDQ91b9l1/wApcpyQ4h/uUHd4Tc+RfzHTTX8jKI5tKdgi3bMAwir9k78uP+Tx5YDqtqMZ+L/OiPR/puHg/wA7iZeL0o8f87+F7p5F8pW/lLSLfRrbdYFALfzMftv/ALJsnCND/dMRsx7zb+eflXyvK1rf3fK5QfFHEpcj2JHwBv8AJ5ZlRxHqYw/rf8THim3DH31H+s8S87fnBrf5pW9xo/lix/3HopMjvTmQtWrv9j7P2V+PKM04QFbz/pcMv+kf9Og0OVn+ku/LL8o9W/MSwi1PXdSkOngmMRAksPTPDj8XwrlWTLkl6Y+mP87/AI5H/fMZTkduT3byd+UHl3ykOenWqmf/AH7J8b/QzfZ/2OVDTg/X+8/rfT/pf+kmrgvnv/WZtmUAzdhVTliWZTG4qrAgjxB2OAi1fKH/ADkR5R8meV4Eg0pAmrtKHMakkcDVmDj9lf5FyqOnMd7NfzZf71Rjrf8A2Mkb5f8AOekapbWkHlnywt3qSRgFig9JGp8RLHlz+L4viyuePBDeRmb/AIYmXHP8f0V4YR7yf5rMIvyl84ebgH816obGzO31Ky+EBf8AfbFf3f8AwXq5ZHNOqxxhgj/SHq/0sfV/s4f1U+IRtGoD8fj6v81nfk78mPLXlL49PtFeYb+rKA7jxo7D4a/5OVflwfqJyf1vp/0kfR/seL+k1cHfv/W/HCzO4s4rhPSmQMlQaEVFQajMgwBZojJpdirsVdirsVdirsVU5JkjoXIFdhU98UhUxQ7FXYqlM/mfToNQj0eWdFvpVLpET8RHiMlw2L7mQjtaaI6t9kg0yKHnX57+SP8AFXlyUQD/AEyz/wBIhYbkFPiIH+soyme3q/m/7lBNMS8m+efJemaVB5r1MQW+qXMQjlAHKRmj+B6R/stUfG/FeX82Tjo4yPFtw/0voj/V/wCO8TYMN7+kf0vx/vXlfmbzfpF95nlHl+RTZ6y0SzGVOJicMP3qcvs/5DYPC4NvTP8Aix8J+n/Yrw13H+bwvsG0j9KFI+XLioFfGg6/7LJtavhV4x5Yg/w7+ZV/p0RC22pW4uAg6cxTkRT7OVQ2282Q5Jn+aNiul+YdE8zRijif6rKe3GQHhX/ZY8pe8IAeqZah5b/zkXoJ1LyrNdQj9/YstwhHUcTvTKpbUe5WW/l1rn6d8v2Oolg7SwoWI6VAoctKZbMlxQ7FXYq8T8ux/wCCPzCutNYcLDWk9aE9F9QfbQf5WVYzzj3Mo7iu57ZlrF2KuxV2Koa+0+C/ia2uo1liYfErAEH5g5XOAkKO6CLWiS209EhqkKfZRahRt2UZOEKFDoyEe5Fg1wodirsVYD5w/OnQPLMhtJJTc3o2EEA5vXwPH7OWHHQuVQ/rMzCufpYsmpeffPQH1WJdB05/92P8UxB8E/ZbKPzI/wAnHj/2zJ6YMfEH8I/zpMi8s/kjomlMLvUQ2qX3UzXRL7/5EbclUf8ABZVKEsm+Qmf9GPoh/sf+kf6LA2fq3/3P+lZPrXmrRvLaKupXUFmtPhV2VTQfyJ9r/gVzJxYNvSPT/mwh/vYNkMZPL9EY/wCyYzL+f3ktGEf6SRie6q5H38Mt8Ej+b/po/wC9LLw/d8/+JZN5e88aN5jB/RN3FcECpCH4v+Abi3/C5CeOURv/AMV/uUGBCfZBg7FXgfnrzJD5K/Mez1CRVjt76ARzOxotCaeox+z8LD7WQxjcjvZxH2p9+afn3SrO2+uaLrMFtqKUYBGEiygf7rmSLkv+ozZccWSG9bfxRycP+mjx+qP+YyEJDu/qy/HEt/Lrzhffmn5cvrfV7YRclMayKCFckbMgb+VsoyyjLaPT/OYSIPJN/wAh9Xmu9B/R92SbnT5Xt3B6gKfgr/scnGXELUvScLF2KqcjrGpdyAoFSTimnm/mn8+tB0eY2VkX1C93AjtxyFfAv/zTyycoiG8yIf7pmYgfVsxex82+f/O5f9ER22m26txZmYNIvzHxfFlR1AH0xlP+lL6UGXDyj/nSTvQvyDshOdQ8z3EmrXZ3/en4Af8AJTKZCeT6zX9HG1kmXP8A0sXqFjYQWMS29rGsUSigVQAB9AyyGMR5bKBSJyxLsVfLn/OTNnd2/mqwvrUfF6QdPnGSxH4ZVxUWQNPoryfr0ev6TbanF0njVj86fF+OXIkKTnAhCanqMOm20t7dMEhhUuzHsAKnCBaQHhGk/mL5/wBdWfzNpMMMmiRu3CBgA7ohPLg1ORbj/lZA6mMTXCTH+LJH+H/Zf7xJmB0v+kzkQaH+bnl2saiMsdyAA8Mo6/5XJW/4LK54AN4bfxRl/wAUiUeo/wA2STa7+bf/ACrXT7TR9ZBv9Y404w9SgPFJH/lZl/Zy+EgRxT9H9FkKO8tnnP51+fNC/MTy6L21ZrfUtPkVjDKOL8X+FgD+0tf5chKG4lE8f8KeHqN30V5Dulu9CsZkNVa3jII8OIwjZgQ88/5yf0/1fLaaggrJZ3EcgPcCvxUOVy5gqGTeZfL8Pn7yh9UXf6zbo8TH+cLyQ/8ABY5Aa8/qUh8kw2pjhlt72U2t1bk1Z9uNxF9g1/Z9ZBx/18YknePP6o/76H+/ZA934/nPrL8l/wAwY/OmgQ3TtW8hHpTj/KH7X+yX4svkOvesh1YZ+d4Oh+adC81Xi89Ngf0ZD/KzElWI/l/a/wBi2U3cuHlbGO+z2kiC/goeMsEq/MMrD9TDJShexQQ+bfzZ/wCcYpJLtdQ8nooEjEyQM1Ap61j9v8nMSzi29WSP9H1T/wA5hfD3ySS+/I38x9ceF9UnjkENAgeUEKB0+CnH4ctOpMxXCQP5tcLM5DXL/Ne9flN+W58l2Ui3Uxur+5YPPKfECgVK/srkocR3l/mx/mQ/mosnmzS7u4bOJp7h1iiQVZmICge7NsMvAJ2G7IC+TyzXf+cjdEtrg2GhxTavdDbjbKStf9ejM3+siMn+Vhnw4/rkIf7L/fRj/spf1WfCB9Rr+r6/x/m8SQP5j/NDzf8AurGzj0e3b/dj/ap/sizBv9iuUfm4/wAEZT/rf8f4I8P+bNj4g/hF/wBb8f71MdL/AOcc4ryUXnm2/n1K42LJyIjr8vtEZEnLk+o8A/mxYmUjzNf0YvSfKnkbR/KkTw6LbJbLIeTca1J9y3xYIYRDvmf50/VJACr5l8naT5ljWHWbWO6RDVRIK0P+SeowzwifOxX82Uof7iUWM4iXP7zH/cvKrDytaflv56thpcYg0vWYmi4Amiyp8dF5Ftv2uOOMcPp3I+qPF6mcRtSM1HzDZ/lTr8314suj6t++XitRFMDxkFP5G+1ksQ34CQP4o8X83+ayj3f6V6h5f8yaf5gthe6VOlxAduSGu/gR1U/62XyiY81lGnz1/wA5J6g3lrzPpms6bIFv2QkiSrIACY0k4ZWL6+uH82X0cTKJ+I/mpZrvmHzBrHmXR/LHmp4HVbiO4SaCg5AiqCtfh+JeP7D4JT4x9Phy/wB7+P6amV9OB9I+cPLMHmXS7jSLr7E6FQfA/ssP9VshkjY2/wA1rYR+Q/mG4nsLjy5qRrfaPKYGr1Kb+m34MuWxlxC2R73qIr3xQ3hQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYFdhV/9f1TirsVdirsVdirsVdirsVdirGfzE8rr5n0K70qlXljPD2dfiSn+yFMqyDb3epUi/I/wA1nzB5dijuBxu7Em2nU7Hkm1SP8pfiyywd+9nIde9ryxcT+WtduPL94D9Su2M9lIelNvUtv9aNjyRf5Mrxy24T9UP9lD+GSLse7/cvRMtYpX5g8t2HmG0fT9TiWaCQEEMBtXup/Zb/AClyE4CQQRaG8neVofK2mRaPaySSwwAhDKQWCk1CVUL8K/ZX4cY3W5/0o4f+KZc13nXTv0lot9Z71lt5FFOteJpT6cZckPPfyB81WUPkm2e9njhW0aSFy5C04MQK8v8AJy2MCeTPgJ5InU/zrN8Wt/J1hNq0w2MijjCD7zH7S/6uQnkhj2kbl/Mx+uaDUee/9GPqSe//ACg1/wA/Uk883scVtXkltZoKrUdGnlVm5f8ABLmMSZ7xjDD/AEpDjyy/2UeH/Y/1USN8hEfDin/p/wCFmPln8k/Kfltll0/TovWUD95JWRqjuDKW4n/V44/l4y+rin/WPp/0kfR/sWrgB5/7Iy/3P0ofzvp6eWLwedbOIuYkEN3GiirQ1/vRQcucH2v9Tlk4gQO+0D6f6k/4Zf1f5zaKZ1Y38N/bx3duweGVQ6t2IIqDmQQtPPfOH55aXo1wdK0pH1TVa8RBbjlQ+DuPhXJSEcYvIeD/AHX+lZcIj9W39H+JIU/LjzN59lF352ujZ6cdxp1qxFR2E8g6/wCV9r/Y5jnNOe0B4OP+dL+9n/xP+d/pJMTMnl6P91+PxwvUvLvlfTvLlqtjpNulvAo+ygpX3c/adv8AKb4sjjxCHLcn6pS9U5f534ixApN8vS8q8lSf4b836t5caohveN9bnanx/BMij/Jf/jbKomhX8z/ffSyG49zPrPQxa6nPqKGi3Ecasv8AlIWHL/gOC/7HGMaKCU3y1DsVePfmr5R1PR9Vh8+eV1L3cAC3kA/3dCOtP5mRf2cpE/CNn+7n9X9D+n+P9yolw/1T9X/FPQvJnnOw83aemp6a/KNtmU/aRv2o3HZlzIlGvd/DJlKNJ1NMkKGSQhVUbk7fjkatADyfzf8A85DaXYS/o/y9FJq2oE8QkIJQH/KcB6/7FWyc+HELyER/o/x/8d/HpZECH1f6X8fSkMXkv8w/P6mTzBf/AKG0+StLeAH1KH9hwpX4WX/fkrf8YspGqkf7qPB/tkvr/rQ/i/0vhcX85fFP8A4P6Uvq/wCK/wBnBievfkfo7+YrLyZpId3Ef1m9uZGrJwrQKF/u15V/ZX9v/JzHMZDcnjyT/wBJH/M/4qU2vh2s73+Pp/4pk8X/ADiRYW0pey1K5hQnoKA08KqFxj40eRh8pf8AFMQZDuTn/nH+2k8v3mteUpiaWNyHjLHcpIPhNPBuHLL4Ssef8Tb0ez5YxdiqVa55l0/QYDdarcR20Q7uwH3Dqx/yVyUYGXL8f5zKMTLk8pvvzz1DzFK1h5D0+S7apX6zKCsQ/wAoV/42b/YZCeXHj2P7yX82P4/4hkTCHP1n+bH8f8Sg9C/5xx/Sl+2vedrj63eTMHaKPZK/yk9x/q5jS48p3/dx/mx+r/jrUSZeX9V7TpOjWekwi2sIUghXoqKAPwyyGKMOX/Hv9MoFI7LkuxV2KuxV2KuxV2KuxV2KuxV5t+fHkp/NHlyYWzsl1Z1uIipIqUFSvw/5P2f8rK5TlDeO3878f0VsjkjvyT81v5n8rWd9OSbhVMUpPXnGeDE/632stJtlJneBihtQvo7C2lvJjSKFGkY+ygu3/C4q+OPM35+pd+coPNFja/BaKYgjH7Y+JQSf2T8WSqIPWX4/hbaHvTby/wCe/OHkG8l1/ULK4bRbti7RuxZBz3QxzNyVW/4nlcNTGR4ZGX9Hij6/97/ukDJxbS4v84ep9Cflf+Z1h+YenvfWKPEYn9OSN6Eg0DdR8LKwOTmB0N/7GX+ciQA5bvJ/LX5PaI/nPUdI1JCTbul7agUoY3NXjcfZZFai8WzD8MyHPl6ZR/nwYVYYx+atnpGpebNVSYCJbS0SG3SMfE09AyBET7Tch/wGSGPh+n0V6pS+mP4knhod1Mt8s+evOd/5UOt2s1rDBpsZSRJVLSO0WxD/AMjMo+z/AJWXnNR2jd/xcX+4iz4vLn/Fb2T8vPMsnmfQrTWJ09KS4jDMvavcj2OSsHkwNdGG+c1XTvP+h35FBdxT2xNKiqj1R8j+zlQq/wAf1VDJPza0wX3l64YD95bcLhD4NEwkr/wNcZ9/cVGzLLVi0SFupUfqyy0IPzHZ/XdNurbjz9SGRQviSpAH35GfJXmX/OMF36vlY2p+1bXMqFfDfmBTt9rDHkyL1/JMXYq7FXk3/OQ+muuk2/mK2XlcaTcxzVHXhWkg/wCC4ZUfSQf81I2L0zR9Ti1Szhv7duUU8aupHcMK5cdlIRuBDsVdirsVfNX/ADmBpl0n6M1aJ2FujNEwBICtXmH+H9pl5L/sMiMhiaG1/wA1IkR5PYvNH5h6X5K0aDU9TdjE6qqBAWZzx5AL/wA1M3HJxHea/rLz57PPofz08zeYwP8ACXl6aRSTSa5PGOnbf91H/wAl/wDgsBz4I7XPIR9UYx+mX+b4v+yjBPFDpc/9jwy/2cf9NKDaeS/zC87/APKS3yaTZVNbe0HxMPd6/wDEmfKxqpH+7j4f9LJ9f+l/6Q/qo8U/wjg/3X4/z/8ANZ55F/KTQ/Jys1nF61yxJaeWjSH/AGZysYuI3P1n+l/xLDh6ndm+XslrAsCK0Jwq8yt/yF0e41CTV/MEkur3MhBX6yRxUDoqxpxUj/Jb4P8AIzHnGeT65bfzcY8L/fTl/pZR/wA5ibl9R/0vo/3MkZ5w03yX5M0p73UrG1jtl2CLEtXbsiLTdsY6SB/4qUpSl/p5S4ljiB7v6zzn8k/Js+seY5fOy2n6K00KVtoFHHmCOPNh/Lx+L/KbBGQB4YWYfxSl6mQI/h5PbPN3nDT/ACpZNqGpyBI12C/tMf5UXu2ZUY3/AMUyjG3mdv5+8++aTz8v6ZHZWb/Ymuyakdm4fD/xtlf5nHyiJ5j/AKSP/E/7OKOOI5Az/wBz+P8AOeNfnp5X8zjUbSDX7pdQvJondEhWgRVJqBstenLIeMZbyiMdfzfV/p/q/wB1JTInnQ/qp75S/J9pNJtPOflcJeSKhM1ldKGDMppIIzT7XJfg/wCJ5VOx9f7zF/R4oTj/AKX6/wAelidufri9w/LD8z9J8zRGxhjFlfQ/DJasApBHXgv7S5lRxxEbh9H9FmIirjySHyHy0Tz7rOkyGkd4q3Ufga/ap9+Vw7u4qOXuev5axeAf85C+dNc8kaxp+r6ZM5tnQq0JJ9Jip3DqO7K32sEMnCeE7x+r+l/pmcZVz5JLpsHn384WWa8kOlaG/VY6qGX2Rv3kvL+Zm4ZA6r+HEP8AO/m/15f72CDl6R2/pf8AHv8AiHtfk38sND8pRBNOt19WnxSt8Tse9XbKY4Bzl65f0v8AexaxF4PL54sPIX5kSW2m810+dxFcoTVQ7dXQfyqx/wCJZk4xwirv/etw7v5z6kRg4DLuDha12KuxV2KvE/8AnJeye3g0zXlFY7O5Cy/6sm2/+T+z/sspI3/rDhZRKJ/IDVpYPJ09yEMyW805iVdywX4+Cf7I8cnxAc9q+pJSjzb/AM5GfWdGt28tRldXvJzAIpACY2BCnkPsszM6Kn+yy4yjH1fXBkQBvz/msf8AzQ1vz75f0B7PzSsF5YXfBXng+Fk35tDJQKvxKvHlw4f5eUDOJ7GJxS/h/my/2U/UxEx1Ff0o/j8f03qn5K/mBpPm3SBDpELWosgsTwsKhdtuL/ZcNT/WyXBGAoG/91/nRQYgct3h35j67qn5f+c7+Ty07RWy+jczxD7DB+HNmHhzfjkcUxj9PMXw+plGVBln5fXdp50/Mm41mb4ljsopoFNCAWSNSf8AY8/+CwThxbHeixkPsSX87fIFjr3nqz0nS3K3l8A10qgcY1A/vKD9po0LfF/k/wA2V8Phjbh9X0x+n8RY8PCPf/C9J/IbVpLGC68k6m3+n6PIVUHq8JP7uRf8nfj/AKvH+bL4S4o3/my/rMzuL/zZMp/OLTf0j5S1OAjlS3Z6f6n73/jTIzFhgEH+Q9+b7yZpspNSsXp/8ATF/wAaZNMniH/OVvkc6XeJ5gswRb3543AHQSIPgf8A1mX/AI2yiPpNd/qj/v1iU71Hyxe/l5a2vn3yeTLYywxPeW2/FlZQ3qqP9l/sG/yOeShM4jwy3xz/ANhL8fT/AKRQeHY+qJep61YaZ+bPlQi2celdoHicjeORfs1Hirckf/JyWbGRy6eqP82X/SSyDx78vPOfmnQ/N1h5V1kTt6KNayIKsjRipguQKcfh+FXm/aTDHPGQ7r9PDXqjP/j3836f4/pZcYI/H1/j/in08pVqONx2OSIYJfrXmPT9DhNzqVxHbxqKkuwH4dcnGBlyZRiS8b8zf85C3OqzHSfIFm9/dMP74oeK+6p+1x/mfiuM5wxfUeM/zY/j1/1YpPDDn6j/ADY/j1f5qSzfkj5589KJPOGrfV49iIUHID/WjiMUPL/K5M2Y8tTkntGIhH+keH/qrKX9WfAw8WR2A4Px/sv86SeaKmj/AJKotpqOrwyox5GAWyCY1rxPOJvU/wBlNy/ycni05PqkMf8AwyXHx/5vqlxR/q4mUMZO54AP50hKMv8AdS4v9Inun/8AOTXky9mW3+sSRFyBykjooJ/mYFqZlHD3Sgf6Pq/38Ytnh+YP+m/4l6la3UV1GJoHWSNhUMpBBHsRlJBHNpIpS1LVLXTYTc3sqQwr1d2CgfScMYGRobpjEy5JR5p8yS6bpD6npUDahKVBhjiBbny+y1U5fBT4uWQlIQ+ravqWq5/j/dPm6686eePPrTXEtrClvokv1ktGpAWSH4zCsnNmcsv21+LK8meAIoV/puPhn/P/AIY/6WEmZyDlVf6b6f6f8P8AuH0Rea5pOpeXBr9+iS2BtvXPMBhxK8iP9b9n/Ww5MInsWBjvTBf+cavLLaPo897PSOS+l9ZYq/YjI/c1T9jkvxf6vHBCz38P0x/pcP1Lv/xLAv8AnLrypeTXVpr9urSW3peixG/FgWcf6qsp/wCJZEzqVH/NRdc2A/kd5fbUfOemqXF0I1+sSbn4eIOx5/aaOQp8K5ZOUpc7Px4/T/vWRJ67vuDJsXhX5jer+XvnG285xA/oy/pb3gGwB6eof9iPU/2Mn82VYzwy4ek/VH+v+P8AdMo93e9utLuK8iW4t3EkTgFWU1BB6EHLSKQRSvih2ABXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiriK7Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/9D1TirsVdirsVdirsVdirsVdirsVeM6RH/gr8xZ7FiV0/zBH60X8onT+8X/AFm+P/knleLa493qj/V/H+5ZjcV3ep6nrGhwatGqzijxsHjcbMjDoyt/wrfzLglG9xtX0y/H8LAbMWs7zzh+m47C4hgGlIzNJdA7unErHEsdfgl9T4nb+XCMwPp4ZcX87/Jf1oy/3ieIHav+J/H9FnmWIS7W9esdDtnvtTmS3t0FWdzQf2n/ACV+LJRiZbBlGJlyeZp+aer+duVv5Hs2W32/066UrHQniTBH/u1l/wBb/gcrnlhD0/32T+bH6Y/1pfj/ADk2I/0/9z/pkk8nf84t2Om3Jutdunv0Y8zBusXMmpdkB3+WY9ZJDhJ4Mf8ANx8XF/V42q5Hn/sXt9jYW9jEILSNYo16KgAH3DLoYxDYbMkTliuJpirCfNv5reWfL8Ev6RvYWZVNYUYOzbfY4Jy3b7PxZb+XJHq2j/Fxen/Y/VJt8E9dv53F/wAT9T5Yl8+eatQiu4PLEd5beXpWaUAAkxx0PNI5mHFU/wAlco/MjH6bBI9MZS+v+ix8QR2/zYy/ierflNpuq2tuI/LMOn27yKHeWaX1Zn/mdxH+8X4v2crA4TxGE8hl/FkMcXB/V+v0f7JJAq+GR4v8pKQ/3Pqes/4f8xXHpfWNVWIIauILdQW9uUzS8R/sclxzIqscD/OueX/Y/uv90x4tuQB/zpf8Swz8ybe18m2Uep6zrOpmGWcIeM4U7hnPpxwpFX7HHjyVUX4/2eLyicstuLHH+l4WOMP8705csv8AZf0vRxM+Iz2uMP8ANjH/AHvF/umG335+6HNH/uLGtTbHiwdgKrQU+1JXr8bZOR4NpZYf8qsX/VPEgziOcogj+hj/AOOf7lgfmDztfLr2n+ZLtdSsY4XMTT3Kh+KGpCJ8C8urs6t9vIxyiZ9MoT/zOCP9aXD+IIjOzsQf83hh/sX0n5a1XXLyzi1O0nttUs5lDIwBiciv+yj5fsty4/FiZGO0o/52KXF/nfveD0/1WJNfUP8AlWf+K4Ys0tJpJYUklQxOyglCQSp/l5L8J4+2C7VEZJCDvNQgtOCztxMrcEHXkaFqAD/JXl/q4KtIjb5+/NzXvL3kq6lvPLF69rrk5o9va0aN2r/u9P7tG5fy/Hywwxywi7Ecf1eHkHH/AKT+KH+5ZRiYdwH82Xq/6QQOj+U/P/5qrHL5juX0/RyAeCjg0gI6iNevJT+18GVnVmW2MAfzsn/Hv4v81Byk/T6f6T3LyP8Al1pHky1FppUQU9Xkahdj/lv1yqOEA3L1y/nS/h/qfzWADKcyUvJfyiQ6p5j8x69L8R+ufVI2PXjDVaDwWnDKucvcP91/0iyk9ay1i8auz+g/zXhflxi1axII7cowfx4wf8PlceZDIdzPfOv5h6P5PtWu9VnVKbLGN3Y/yog35ZfHGTvyH86SRC/IfznlP/Kw/On5lsYPJlsdKsF2ku7gCpqOibNx2/32rv8A5aZVLUxgagPGl7vTD/ZcP+n+v+GK8Yj9PrP9L6Y/73/d/wBVPvLf/OOOkWsgvvMM02sX2zM07Hhy70iq3L/nq0mUy8TL/eSP9XH9P9Xi+v0/0PC/qtcjKX1H8f7r/e/0Xq9lYwWUYgtY1ijUbKoAA+gZZDGIctlApE5Yl2KuxV2KuxVIfNHnXSvK8K3GsXCW8ch4qW7nvT/Vr8WTjDi5Mow4v+PJpp2o2+pW6Xlm6ywSqGR1NQQe4ORMa5oIpiPmD85fKugXRsdRv0SdftKqs9D/ACuY1YK3+S2WxwyP80f1pRj/ALosuA/ghOfK/njRvNCNJot1HdLHTnwO616c1PFl5U/lyM8Zhzr/ADTGf+4MllAx51/mmM/9yn+VsHYqhU1C3eZrVJFM6U5ICOQqOQqvX7O+S4TVsjE1atJGsilGAKsCCD4HrkCLYvFfyWP+F/NGueSTtAkgu7YE/sPTkBt/I8P/AALZHGbjX8z0/j8fxM+Y934/H9Z7dk2D58v/AMnvP0U13JYa16lvM8lIZSSGR67Scvh+JTxdcoOpynaUYzFcP1R/2MeH/Sp8WXIix73zjP5B11YdQk+qNJHp8piuWUV9NkJ5/Z/Z2weLEV0v6f8AiZo4mb6V5y1DTfL8lrZXi6rpE8Jhns5dpYCV/vEDfFwjb4kkXlF8P7D5fORIrIAY+nhzR/hnxeiMv6X9Gf1fwTbdyPVvH+dH+D+t+P6r3X/nFW6sJfKCR2QCzxzSfWBtyLE1RiB8XFouHHl/Lg4OHfv/AN7/AA/j+c11170Z+b/mGDyLqNn5veIyuYZrMqu3IsBNAp/56I/+x5fy/EI0Jb7WP9ymIHVJvyW/Ls/WG87eaVUarqchkhjfrHy5P8Kt+2yDkn7SJlAj4pv/ACY+mP8AO/pS/q/w/wCnYn1b9zF/znivfKlxeeW9HRXtvMzpIiKfjSQECcKn8k5Cf8Nk4nwwQb9P0y/o/wA3/NZxNDf/ADX0B5M0P9A6NZ6UTVraBIyfEqAHP/BZZDkwRt5pNpeyxT3MSSSW7FomYAlGIoWT+VqZEwBN77f0pR/3J9X+cpRTxrICrCqnYjJkXsVO68CmSV2KvEfyEkXTde8yaBKeMsV4ZkU90YsvMf7H0/8Ag1yvGNr/AM1PR7dliHYq7FUHqmmQ6naS2NyOUM6NG48Qw4nIyHEKRTy38k76fQ7zUfId+/OTTXD2zN1a3f4l/wCA+H/g/wDJxhLijv8AVH0y/H4/hZk2P9i9eyTF2KuxV2KsL/N7yinmryze6fx5TCJpYdqkSIC8dP8AW/u/9V2yrJyvu9X/ABX+xQUt/Ka6s/OXk/TpdQiS5MKBGWVQ9JIT6Xqbj7TcfU/2eOTGJ8/6383/AHP8P9H6ZJlG3oiqFFBsB2yUYiIoKuyasZ/Mizubvy7qEVhK0NyIHaN1NCGQcx/wXHjkeIx3HRMZEbhLfyW8yXHmTynp+pXrc7l4ysjHqWRmi5H3bhyyRlayZxih2Kvmr88rnUdb862mjWFodQFnbiRYGrw9Ryf3su/Hgq8PtZTkyACpXz+mP1T/AKPpZGQA3ZQPzT81eTOB85aYg08nibi03Cb0FU+zx/4HLIZscvTRw/zeL6f99/ulEoy6GH4/znpzado3myC11SSKO7iA9SBmFQA1G5L92RyYgdj08/SxlHvT4AKKDpkwKV41qUC6v+asMMoDxWWnsaEbAvUf8b5TKN7d/wDxKSNm/wAi2fQdU1vyhMfgtLj14an/AHXJ4D+X7GTxmxv/AA+lPRE/mb5D0TXpl1DTr6HT9cjNY5VkVSxHaRQd/wDWx/L5MZ4sYP8ASjXpmohKO4sF5N5l/MTXND1zTNQ1+ALeWLCN7mEhknhY0NSvw8urYYzjKXKUJH6scvR/nRZCQv8AmX9UX1bZ3cV5ClzAweKRQysOhBFQcmWFU8y/5yO8sfpjyvLeRj/SNPYTp8gaSD/gfi/2OUzFEH/N/wBMhmP5da6Nd8vWOpceJmhUkDxHwP8A8MuWAAbBMhTJCabnJIfK35f/AJZWf5i3fmHU7sn1DK8cBPVWLM4lr+10C5iTBPLp6v6yZfc9f/IfzTLq+hfUL8n9IaZIbWYN1+D7DH/WXb/Y5liXEL72Ut9+96USBucWCQeV/O2leaFmbSJxMLdzHJsVIb5OFbCRXd/mniZSjSZaxqkWlWc+oXB/c28bSt8lBY/qwIG75e83f85GJ5t0y50q/wBOMNhdqyRS1JIZSGRj+yeLceXHGfBLYXxR9X4/rMyInlb0b/nFLUILjymbeMUlguJFk3rXlR0anb4Tx/2GRApiQ83/ADz8qJ5H846f5nt0pYXFwkzquwEkbK8w/wAn1Foy/wCy/lymEaPD/pf6v/HP9zwsY7Ponzt5Zg87aBPpfqBYryMFJAOVNxJHIB/wOWTia25j6VLzX/nF4ppWnan5fuiFvNPvZBL0Hw0CB/lyjfGAv1fzmXRKPJdiPzH17zPrzKGsJbc2EFRs1AOEg/1fRST/AGa5XlF7fzfV/nIl3dzy/wDJryt5wM8uteVlUT2bG2YS7Ah6kpRuNfTb7X8vw4fzHCeRyCv4fV/VUTrzD3z8tvIM/li5uvNnnK6ifWLv7TkgLEgAqAx4r24/D8Koq/5WShGWWXFX9WP4/wBikCUzy/zYsG/OXz/5Y+vQ675d1Dh5itPsvboXSRejQzv8EbLx/aVm+H4HX7HC3wTjlxXDf6scyfX/AKTi4J/0ZcH9eLMQMd7j/Vl/FH/N4vV/WeeS/wDOTHmqVp4dS9K4s7lHjaBowoCuChCOnGT7J/aZssM4zFV/pTLjQJDuH/E/j+m9a/5xL83m+0ify/MrB7KQyISPh4SGpSv8yy824/5X+TlVj8f7pBoh6V+b/lpPMPle/sSoaQQtJHXs6DmhHvtxyrINr7vV/wAV/sWDxn8mvz+0i20BfL3mdjzhpbx/CWV4mPphWp/vsH4/8jMjwxkFGh/O4vx/0j9TbwiXk9U0LQ/LX5SwXczXYtbS6l9URzSAhSB9iBP7xv8Ah3bK8OKZ2J44j6f4OCH9KXFw/wCd6P6rXCEj51/sWGa1/wA5YeVrWQyWVtPdSLVRJxVBT/Jdiz8W/wBRct8DHxcRI4v50Y8Uv9lwM+CI5n/Sj/i+B5f5k/5yZ8y+Ybz0vL6NaRvRUij+Nz7k0+1/qquJnHHy4a/nS/4n+FPiCPd/nMz8h/kNq3mx11vz7PKwYhhbsxLNT7PqH9gf5K5iSyzzcvRj/nf8RH/fSaZTM/J7/wCX/K+m+X4Ba6TbpbxdSEFKmlKserH/AFsYYYx36/zpeqSAAE3JpvmQyfIOv6XoX5sebb6xs0uNP1guyxtI3OKUxfBJ6kYXlbt6ack4ysn7GU5AR6oS4/8Aa8g4fq/1KfF/uoJl3xP+bL/e/wDHv9imGp/lNrfkOxkuL7T9P1nTYRVv3fGUA/aeqhZPh/1mzHBB2yRnD/bMc5fj/YsQQfqFX/FGX0f7l6x+XXnPQdM8lP5h06IwWcIkkkg5Fisi0X0gW/m+Dgv+XmcI11Mv6Ujxy4WYj0uUv63qkwjyp+Xerfm4reY/OF1LHps5LW1rE1BxBZQSPs/DT4WZWZsqyZZz9MfREfxVxcaJSJ2G0R/snof5gaLrWjeWo9I8lGO3SFPTeSV6GOFVNWRj+1/M37P7H+SiZx9Dll/m/wCy+n/iURNdOP5MO/5xL07UY9BvJb5g1hPORApH2iAVnlr9pkk+Bfi/kwXxEj/Tf538H+b/AL5JP2Mf80axJpVm35WySCL1b8RrNJsBaSMLhDX/ACXPp/6mGNmO28h6eH+l/wAei2RFj/Yqn5OXU7/mBrNtGxktBHMjMrVTirKICn7Pwp8K/wCs2CUyBwmx/R/mcMUE9Hr35T3i675Us2uwJqK0TcwGr6btCC3Lr8KcslICf1bsJi+e7xDW/O9h5E/MTVL62tBNKsEcFvBEAo5usbOfgHw9Pj+HnkYQjHn6YwuX44vxFIAHPZ7N+T/5nSeetMmvLu3+q3NrK0UqVJFQK8lr8Q/1Wy+Rid4/T/pv9lH6v9Ksq6fj/ORXmDTtN/M7yxJDA3K3ulPpt0KyISFqOzLIvFlyrLHbbmPVH+l/0kiUaYJ/zjH50Euny+UNQf8A3I6bJIFU/wC+gRsD+16crOv+rxyweocX/STI7i3ueLB2KuxV2KuxV2KuxV2KuxV2KuxV2KuwAq7CrsVdirsVdirsVdirsVdgtXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir//R9U4q7FXYq7FXYq7FXYq7FXYq7FXl35/6LLLosevWI/07R5luoyOvEEesPlx+L/YZTI8JEv8ANl/nMomiz3yzrceuaZbapCQUuIlfbpUj4h/sW+HLygiimmBDzb83PPOv+XVtrPyzp5vby9LKslCyRkU+2i+I5HkzKi8f2sgc0Mf18/4Y/wA7/ff5sf8ATxSJxjz/AM2P87/ff6VJ9D/JW61i4TVvzCvDqt2u6Ww2t4/b01CrJ/wKo38jZXKc8ux/c4/9Tx/V/nz/AOPSl/TQZGWx9P8ARj/vvx/nyet2trFaxrBAgSNRQKoAAHsBlkICAoIViQNzk0sR80/mp5d8r0GqXkayHpGnxv8A8AnJstGInc+n+t6WwQPXb+swl/za8yeaGEPkjSH9Jh/vZfApF80T4Wf/AILl/kZjyz44GhxZ5/zcf0x/rzl/vuD+sx4ox78n9X0x/H+lWRfk35j8w1fzrr080bAVtbP91EPZmULzX/nkr/5eDx8p+ngwD+j68vq/h4/4f9PlijxJ9Kx8/p+rh/r/APFcf9Z5L51/JbSNH84pbapI+n+W3RCkzAsHYD44TN8TK7N+037GVQE5egG8n87J6fT/ADo/TD/N9Ef98ACdh/svxwvrHTNNsrWyisrNE+qLGFRQAVKUoP8AJKsv/BZZHEIiv9MtU8i/Nv8ALOLT5v8AGPlq4TTdYtQHKlgkcqqN0ZPhXk1OP8rY44zxm4Azgfqx/V/pP+J/0qYAj6d/6Klo3/OVOh3OnxNNDPJqZWj20EZY8xt8DfZKs32PizKIgBxGQhH+l9X4/rM6iNyeEf0vqWax5g89+doONj5ftrWyWrqdSo7MQCPhgP2HZWZfiib7X28wZ58UvpjPPX8VcMP91Hi/zMsv6rWZQ/mnJ/W9Mf63DxR/2M5KP5W+Y9d8727XyqlnqGkSNBNbcOMEwb4uLx/7pnVkdfUX7H8mS4YD6Iw8P+LHwx9P9PFP6v8AMnxfR/SSZD+ER4f5v83+pL64/wCcyv8ANGC188eUtSs7TjJdWo5NHUFkliPqcD/lMq8Vb9pWwziAOIf1v97JZCmT/ljfWl95csLnT0EcDQJRVFACBxkH/B8ssjAR2CkUySadIVLysFUdSTQfjkgLQBb55/Pf/nJJdFWPT/Jt1HLecj68qqHVABQIjOGiZnb9pefHj/lZfw+H9QEj/Nkfp/rRhKPr/oy/0rbXDz/H4/EXjN1+YnnH827+y0cSVuVqqekPTFWHGSWQp9n4ft/sfyJlWTOIbxHD/V+qUv5vrkxOShtt/vn0d+Un/OPOn+U40v8AWQt7q9SxkapVCeyBvtMv+/GzD4Dk3n/pb/3X8/8A3LTXFzexAU2HTMkBm3hVphUUxV4D+VnmEeRvNWo+TNZPAXczT28zGgctuKk/D+8j+Hl/v1GT9rI4vWP6Ufqj+P8ATMx6nuGt65Z6HaSahqMiw20Qqzt0AycY2xAt8Yfn1+bdv511i2m0QSRJaK0Syk8S3I/aXj8SrhIETsbLP6eXN7h5A/I3SdItY/MfmuY6hfCMTPJOxaNBQONn+3wX9pvh/wAjMYwnmPqJ/o44/wC+/wCJjwtW8jv/AKV6f5Y84aN5ihL6LcxXCR0DCMj4fCqfaX/JzJ8HwxWwH9Hh4f8AY+lsnAx5/wCx9X+5T/IsHYq7FXYq7FXYq7FUk80eUdN80WhsdWhWeI7jkN1P8yHqpymeMS8v5sggi3gXlrzNqvkAX/5ePy+tySBdMkPTjM/p8h/q19bj/N6mWQyXGz9cP9n/ADfx/NbISsWeil+aX/OOdzZwW+oaCpvhboPrUBJDysDykmQ/aLS/trz5r8PDlmKZGP1XIS9UpR+qM5f5v0/zfR6P4mu+/f8Aq/Uzn/nHvV/KclpLZ+X4DYajUG5t5WLSErsH5v8AbTf9lV4ty+BcyY4REcQl4oP8Xp9H9Hhj9P8AW9XF/O/hZ8G1jf8AH49T2TJsXYq8G/O/RJfKWs2X5iaZyUxzRpeKCaMn92CR/lJ+7f8A2OVwkYyrfw5/w/0vx6v6zKMq273uNlexXsEd1bsGilUOpHcMKr+GWVTEinjv5jx/oD8wdB8wiixXIazlPQfFUJzP/PTl/sMrjtL3/j/iWUR9rJNQ/PvylYakdJmvP3qkqzhSY1YfstIP2v8AV5ZlDFY5x4v5t+r/AIn/AE0mQx31H9X8eln1neQ3kS3Fs6yROKqykEEeII65SRTAingGtflNq3mDzJqlvpWqpbaXcv6s8cbBmLuAkivGP9X9r4cp4skAQB9X8Uvp4f8AZMyZxHv/AJzGvy9/5x10vzFY6ha3k00GrWV1JBUEcQAAYZDHTlRvi/byupn1RMR/R4f9NDi4v961EE7h5vrPl7Xfyl12C5uYvjgkV45BUwzBDyFd1+L/ACftp/k5dp9Rzjco/wCqY7lH/c/XFlDJXl/Oi+x/JvmbTPzB0W31ZI0kjcgmNwG9ORTuD9r4lb4kb+Xi+Sy4Yy5+r+bxInAclX8wPK03mHTfQsZfq97BIk9vJ/LJGeSV/wAlh8Df5OQlcd49P4f50f5qgkcmFeQ/y01efX5PNnnV45r6NRFbJHuiAV/eAdm3PH/WZsgScp3HBGP8P9L/AIlSeLyetSypGKuQB7mmZFJCTXfnXRLMN9Zv7aLh15yoKfOrZd+XnV1Kv51elsOGQ6FLdD/NPy3r15+jdKv4ri6NaIlTWgq1Gpwbb+VsEsMoizw/6eEv9jGXEiWMju/00Zf7mTLsqa3Yq8Nu4xoH5uQ3FeEWrWhRj2ZlBAX744srhzKQ9yyxDsVdirsVeO/nHB/hvWdJ862o4mKcW10R+1FJt8X+r9n/AIHK4+mXlP6v634/3KY8/e9gVg4DKag9MsQuxV2KuxVogEUPQ4FeY/kxGmkzaz5cA4/U795FHYRzASRgf6tMrgKH4/hTWz0/LUMX80/mBpnla6tLTVWaP68xSOTjVAwptI9fg5V+H4cMY8W1i/5v8Uv6qQLTfX5Ixp1w8n2PRcn5UOQkNledf842ssHkm0aQgKXlIJ22LnxxiL800mnmf88vK/l6QwT3XrTjqkCmQj58PgX/AGTZkeFX1GMP63/E/UyGPvIh/W/476k48hfmLpXne1e70d2ZYm4yK6lWUmtOSn+bK5x4TsRP+lH/AI96kSjXKpf1Xl2p+ddM8pfmVfX2syNFFJZRxK3EsKkq2/H7K/BlcI8R5gf1liL6gf1nqSa3oXnXTZoLWeK7tpo2DKGBNCO6H4l/4HJZcBrf/Tf8eRKBHNh3/ONN0z+XJLJ2LC0u5olr2UEFR/wXLIg2gvWskh8zebJ/Nb/mNqCeTEX6y0EcUkkgBVFop5Vf4R8Q/lf/AFMq8UQ3I4/5sfV+P9N6WXHw9LSDXPyk16z8y2UXmHVXMusExvPDWtR0iJJWqt/q8P8AIwRz5DdCOOX+9/zOH8fxoE5H+bH8f5r12w/5xn8q2wBmWaeQDdnlbc+NB8OQ4Mkuc5f5vDH/AI8wo9TJKPMn/OPtvaWeofo6eRrWW2bhbyEtxkX40aNz8S9ME+P+I8Yj6uKX1Js9d/8AdJt/zjFrL3/lVbadi0tpK8Rr1A2KDMq7ZyepanYR6hay2cwrHMjIw9mFDkJx4hTF5R/zj7qT6fHfeTrskXGmTv6YPUxsagj/ACeXxf7PGEuIWyO4t63dtxidvBSfwwy5MXkH/ON1rFp+gXV9LIAJ7uQsWNAOJp1PzyEASWZCS6t530j8v/PEl966Np2qw1nEZ5cJV6OQn83/ADVlkMZj6TtfqjxMhGtjtbPPLX5oXnmedP0VpVwdPY0a5mKxrT+ZEPJnyJy474QTOX9GPo/zpS4Wu4/0pf1Y+n/TSlF86/nU2reQPN1xJoc8tpDfUuAsLFQTX4gyod/jrgwTMLHd/OH8P+cyjOtn0H5d8yL+Y3kaWaPe4mtpIJV6fvAvF/8AgvtZLINv9kiTwmfUdFk/L+10x7dJNdWZ7WNerqWfk8lF/wAn4crOMfXuP9zP+uvCBv0eiaN5UuPyentdWtw8ulXMMcV+i1JSXtOB/Lybjkcc6NT5T9UZfzZfzERPQ9f92yb8+dEt/OHk2e4sWWZrcC5idaHZd34n/KjyeUGO/d/vlIpG/wDOPnmY695StGlblNbAwPvU/B9iv+w4rlxTJi/5l/k/KNRufMGkaqukx3ycLwPsrA/bINV+Jl/Z/myiHiRJ4AJ8X87+H/Yz/wB7wrEzH07/AO9S/wAu/mfpHk+wj8teSbSbVp468nVSFZyd5HP+V/sfh45MCGIfvJDiP1cP4/h/zk1GP1H/AEqvZeVvzG8xPJK9xFoNnKSwhiUFiW+0XoOXqf5WVQzcO2KHD/SyMfEI+kAf1kws/wDnGy3vJFn8z6ld6mVNQjMVX3G5Zqf6vDDKWbJ9UhAfzcY/6Rj/ALCSDKR2uv6v4/3r0HQvyz8uaEgXT9Pt4yo2coGf6ZH5SH/gsqGlifqvJ/ww8f8Asfoj/mxiwMAefq/rer/dMd/Mn8obXzld2UvCKJIZA1xIFHqOi7pCjU+yz/a5YnCIfQOG/wCb6Yx/pcH08f8ASSR3fj/NZxpPl3TtH9Q6fBHbmZucnBQvI+Jpl8MQhySBSprVrJd2U9vbsFkkjZVJFaEggGmTlyS/PLUbLUdFupbEqQ1pK3xen+0pI5AsOXbK4zB32+aiTKPIf5beZvzOne5icyRoQHuLl2IB8AfiZ2/yVw5c5O2+T+j/AAx/03pjH8cDKUye8vefKf8AziXomn8Zdcnk1CQfsD93H9ynmf8Ag/8AY5QIZJcyIf0cfql/p5/8TFqonn/sf+K/6Rer+Xfy70Hy4eelWUMDn9pVFf8AguuSjp4jfeX9eUp/7pRABhH5wfmT5g0Gc6Z5dsTLJ6Jma5YVRVFedO3JaftZf40IbHeX81tEgOe6ZfkH5i1bzF5bXU9ck9WeWZ+LUA+AcQuw/wArnkjPjPID+qsjfk9BgvYJ2aOJ1dk2YAgkfPJGJCmJD50/MKBPyx8+w+Z7dQlnqqOkhVQeEjCjuASq8mbjJ/l/FlEBR4fT/OjxcX+8/HqREJp5k0f8zNPt5NWt9Rhv7dFZ/SCAc4yK/wB3Tizcf2eWJ1B5ThHh/i4fV/vYzZeKeRjH8f5rFvyEnXVTqflLVYTFBrERuIl3AH2lfgD/AML/AMY1wVxRqPT6UHcbdHpX5Ea7NYJc+SdVYC+0pysY/nhJ5Iw8ePLLYHjjfL+d/WW7Fp3+d2ha9rugtp3luhlmYCUFgpMdDVFclftNx5fF9jISycG9GX9X6ooBpjf5Q+d72wvY/IWuacmm3FvbhoBG/JXUV5d2qzfb5K382TgYSHo4xX1eJ9X9b6cX+5/zk7EbXt9XF/0jD/fIb80tB0PVPOmn2usQh1u4GhY1INSf3LKR9llf4eX+XlJx2djIf1f5yiNpHZQ2H5PeY9QsgCmn31kZIGcknmgNY+bdeTf8a4ccOLaW8h/F/QTAW9I/IKymtPJ9ktwCHkDyAHsGdmH/ADVlkSxJtvUo/JPlXV5NV1Bre21Scc2eVviIPw1UMaLyp+zkI6bjNn1/0ZGPDH8f0lGLi7v84x/3zwjzN5ri8ua3eX3kTWIWh1QkzRurARsxq0iF19E/FyZGX405cOGWxjPH6SITj/Dwzx/7ni/4qH85tAMdtp/50fR/smZ+Rfzk8teQdDh0UXMmp3i8nb0IzxLueRSr8W+1+1xbJRhQuZhD+jfH6f8AN9H+yYGNbyIH4/0rB/yZ1aR/zJOqXkTWa6ibhkVwVrzBZUHLjy+I/wDBZVCUZfT6gP5rEES+nd9f5Yh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVaXAIB6nFV2KuxV2KuxV2KuxV2BXDEK7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirRIG5xVvFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq//0vVAIP0Yq3irsVdirsVdirsVdirsVdiqF1CxjvreS0mAaOVGRgelGFMhKNileW/kVqMmlm+8k3hPr6VMxjJ6GFzySn/BYYnij5x9MmZ3FvXMkwdiqW635hsNDgN1qc8dtCP2pGCj6K9T/krkowMtgyjEl5Rf/wDOSFtqMrWPk+yn1S5BKh+JWL/WL/y/63DBKUMX1n/Nj6pS/H9HiSeGPM3/AEYoe38j+efOv73zBqqWNk+xgsqEkeBlH7X7PLKznycox8H+lk+v/SoM5DkPD/rfWzjy1+Tflry/R4LRZrgbmWf945PjyfbKDg4jczLJ/WPp/wBL/wBJNZjfPf8ArM2VAg4qKAdsvEREUP8AYsg8Z89/nN5j8k31dT0Xlo/P/emKQv8AB0q1E4xSftcW/wBXl+3hhnxk8MuPHk/h4+Hhn/V4eKMv6kcvF/OZicORE4n+dIx4P9z/ALHj4kP58/M3yl55046HaRS6vcXCco44EPJGI+FjI/wxOv8Assc+OMBcpCFfTw+uf+kj9X9X/YolEDmQP6vqkwryJr3nZLiPyJe3f6IcRcrZpow0jJXaMTL8PqKuMNRxi4CM5D6uLij/AJ3AkTvlRP8AS/4h6ZZf849adcTC78yXdzq03WkzkJ/wC5XLxcn1Sr+jj9H+y/461kylzP8ApfSkvn3yhB+W2p2nnby7AI7SIiC9gQbGJjT1R/Ky/wA3+rlcMcYGj6on6eL1yhP+hxLACO34i9qgmi1G2WaJuUUyBlYGmzCoII9sySGR2eKflzNP5V8/X3k+MmPTZYvrMKOxZncgF5mkfkzO3x8/i/lyMCSKPrIPqlLh4pf6SMP9ymyRv6v6UvqVdYYflz50N3Lvo3mH4JanZJgKBmJ+FVb/AI2bIw3uB6+qP/ErAXt/pXkWqfnHrf5eajP5d0GSJ7GGSQx86MtJCHABU/7rb4Uy7HPhjUhdf5sv6P8Ax9mDWxFlU0fX4vPU3r/mJrcsVsKUtoUdUIr+06J6a9f8p/8AVwynkybQOPDD+vHin/mcXF/p5f5ikylyqA/oyj6v9l+P5r6V0/8AK3yxFpD6PZ2UIsblByooLNX4kcyNykZl+0jcvh/ZzB/LR63Kf+qS+v8AzZfwf1YcMXHMB/x7+L/TJF+W35A6P5A1KTVdNmnkeSMxhZWUgAmpPwKnI/62WRjO/URL+b6eH/fT/wBjwshYeo5kJdirsVdirzz83PyntfPlkOJEGowbwTAbg/yP34N/wuY0okHij9Y/2X4/hkgitw+f9W/MvzF5e0+XyZ53sTd2lDHzaqvQH4DHMvwvx+FkZvjy7xYZhvYyf0frjP8Apxl+JM+MT57f1fqeSLo8t99YudMif6nZfvWZ6EhSQBzK/DkeKtjvbEGn3hodvB5q8pQW0jEw3lksbleu6cHp/ssnKJruTIU+cfK/5f65+XX5h2ekabcGRJ6MzhTxaE19QSJ9n4VX/YfC/PK8eYgVKv5vDxen+jL+f/pooEyPj/C9e80/84/p5i1e41a41W7jiuCD6MZA4kAD4Xbl8O32eOWeNnjtGfDD+b6v9zGcYf7FkMk+V+j+b+JcP+wYv+WPlO68refpdH06+nvNOt7YtcCQ1AdgeEZp8PJW4Nh8bIRwzMZ/1f8Aj0p8P+mWzVHd7dr3mvTNAjM2p3EcCgE/EwBIHgvU5MQJ5JjAlgUn/OQWmMrS2VjfXcCmgkjhPEn25ccBnijsZw4/5vql/sojhYyMI85R/wBk15I/5yA07zZq/wCgoLK6huKE1kVaCm59Ti7MmG4VtK/5u0vX/V/49wp2I2L1bIsXYq+RtW89eYvKnnK7uLq6Y8btVa3Ykq8LmiFF+z8K/D8OSjnMhR+kenh/mNwne3Rlv55ahLqOu2uoaBGZL3Q4lu5mFPsMQVj/ANZePLi2USqBBP8AH6Zf8U1Vw/F7p5T8yW/mTTLfVrQ/u7hA1PA/tKf9Vvhy4ilIp49+dGiRWvmvQr7RQIdYubgK7LUckXr6ir9r+Xl/LlER4RuPX+H+H/Spjtu9j8w+ZdP8u2rX2qTLBAu9WPX2UfaZv8lcyIxMuSxiS8aH/OUsT3PrR6ZcHSQ3E3FD4059ONP9lh48d8N+r4f7n6mYEOW9/wCxeo+c9KtvN/lq5t0o0V1blozSvVeaNTxyjINmohjv/OPOvPqvlS3in/vrNmt3B6/Adq/7H4cndspLvz/8ov5j8sTi2UtdWhE8VNjVPt0/2HLK5nh9X81iDSUfl95B8n+bfKsMkNlCTcRcZnpWQSgUkJkb4+fP4srlpxd3I8Xq4rl/xX+xYyxi/wDfJL/zjVq89ne6r5Qkl9W306QmEnqF5cCP9XMiMiRvzbTySzzj5H84aF5yn13yRaqIrhBzLEcWJPKTmrFf2sojn8KwROY90p/6Rq8Tg6E35cSVaN5r/MfSdWvbmHQ63V8U9WqN6ZaMFBICpVfiX/Kww1eEHr/wu/X/ALmUv9g2jJDnUv6v8X+5eseVdI8w+adPubL8x7G09CQj044zU0/yqNJxZf2WV+WCfBm/hlj/AJsvol/xX9b+H+iwkRLpw/H8f73+qyjyV5E0rybaNYaLEYYWbmwLFqmlK1ctk4RMeZlP+tw/7yMIoiK80L5s/NDQPKyH9JXSCXp6SEM5PhwXp/suOZIxGrPpj/Ol6W0YyfL+swa4/NfzN5oDQ+TtJkSNtlubr4FH+UEOUHUY4crzT/mx+lbiP6f+5atvyK1HXWW585avcXTkVaGE8Ix/kg/y/wCxyPi5ZciMI/o/V+P86TE5JH+h/V/H/FJxYf8AOOPky1bm1mZ2/wCLJHP/AAqsq/8AC5V4BveUyP5vpj/soRjP/ZNXD3kn/Y/7jhZJoH5ZeXvL93+kNJsYra4KcOSAjY9dvs1/yvtZKGARPX/OlKf+7lJYwEeV/wCdKUv91JleZDN2KvBv+cj4/wBH6roOuRErLDchK9qEhv4ZXe7KL3dHDqGHQ0OWMV2KuxV2Ksa/MLyzH5l0O70xxvJGSlOoZfiQ/wDBDKsg293qQUl/JLzK+t+XIFuK/WrMm2mB6ho/hFf9jlt3v3s5d/ez/Fi7FXYq7FXm1+seheere7O0er25gPYepGeaV8WZfhyERRI7/UkPScmhjvnnybZ+b9Ll0q9FVcVRu6uPsOp8VbKZwvcfUPpkgvNvJWuarqnl7VfJ14wbXtNjeBa7F0K0hk/4H4f+Byw5OKPFW/8AFH+kzuxf+mY75D/5x11meyjt/NGoTRWaD4LWByKVPIhyPh/4llUc2SQqP7mP87+OX4/rMROfT0PYPKn5X6B5XiEem2iBh1kcBnPzdh/xHIeAD9X7z+v6v9j9LDgHX1f1vUnOkeW9P0f1Tp0CQGducnAAcm/mbJwxiHLr5n8RTGIjyeafU4ZPzLubW5jSaK509CyuoIqpJHXGWOM9pC2RiCN0d5m/InRbgPe6Lz0u+ALCS3JUV6/FGPhauCMJYvoJ/qy9UURuPL/jryX8ofPeseRoLqW6s3vNGe6cS3MYJZXUkO/D+VvtZbDLC+GXol/O/g/qtnEOUvT/AEv4X0L5M/MPR/OMTS6NOJfTpzWhDLX+YHLpwrul/VKDGmG/l3Ilx538wy0/eJ6SV9gBtT6MoiEFV/P+3MOmWutIKvp11HL9BPE/RjLmExeladepe28d1GarKiuD7MK5YxOy+5kjijLTMFShqSdqfTjV7JAt4H+UfmjTfLPmrU/LQnjeC9m9W3dGBUsa/u+X82CECBR2r/cs+E17n0Fha3i/noHyd53sPMiClpqI+q3BHSv7BOVR2Nd/qZR7u969qJraykf77b9WTPJAfNP5a/lPqPnCzU6hfPHoiSyEQRGjM3L4udMq8Sf0w9H87ImUjyG39Jm3nv8AIPQbXQbh9GtxFewKJUkJLMSm/E8uzUyo4zH1WZ/zuL+a1iPx/rM8/KrzL/iTy7aagVCOUCMB0DJ8DUzKAA5bM5DueY/85JeVbu+1HR9TsoTMI5hG4AJ6kMOX+TtlE5CJ36hjxAc2feRvy6fyrqd5c2kirpt6qyG2ptHL+2U/Z4thhY9J+n+GX8X9VR3Jdp/5BaHZeYj5ljLl+RkWFqFA535j/ZfFxyIxy5X+7/m/xIAeiahdWtvEz3rokNDyLkAU965knHx7VbMR4nj95+bXkjy/9YsdFha7kumPqRWyEoxIp1P7sL/xjwnDGAqcqj/N4uPh/q+r0f504suAR+o18eL/AH3DD/Ypb5Vbzp9UGn+U9Kh0bTwzMGuCSx5HqPUHL/kh/s8xseaEB6Izz/0pcP8AuoyxQ/0ssrETiOQlP+lL8Q/6ep3YfkTPqsovfOWoS6hNWpjUlY/9X+bj/krwT/IyUpZMnOscf5sfxGP+w4v6aDKUue39GP4/3sXpuheWdO0GL6vpkEcEfgigfecYYYx8/wClL1S/0yAKTN3VByYgAd8vpIYrrX5peWtF5C+1CCN16rzBb/gF+LLhgl7v63p/3TZ4R939b0sI1j/nKDyzBSLSUuNRuH2VIoytT2BaXi3/AAKNkSIxFzlGP+y/47/s0VEbkiP4/wA2P+ySeb80vzE15wuh6H9TjJ3Nwfip4/vfS+H/AFYsoGrxD6Qc3+m4f9h6Y/8AK1eOI6Gf+m/2P0f7pBa/+Wv5nebIWbU9TitgBVYYSVBPgWQLx/1viwfnJ/wQ4P8AOjxf7/i/07HxpD6Rw/7tG/8AOPnm/UtMvLjyJ5nqL63JeJnYksNqqrN1X9pMtGTxRxdR9TK+IX3PYPMOjQz2F0I4YzM8T0JQGpoeNdt8xJ4IHfhifhFp4B3D5PC/+cSdajthqPl2UcbiOQS9eoHwOtP5lb+XMiO4ttrZ9H5Ji7FXk/5w33nC45aP5bske0uIyJLhj0BB5px/Z/1splmhDmJGX87+FPEB0J/3LwWxtfOGg+Szq1jqRi06GdoXgj2ZSDwc8qfZ5f5eThnMTyj/AFvTP/YshMju/wBjNk/lLy+vkrzboN3Z3M00Gsw8pTI3VnHxAj4ary/m5YIZJbiR4v8AN4f99NRfI7vX/wA//JA80+WphEP9JtP38R/1R8Y/2S5DJt6u7/ctbHPIP/OQHliPQ7K01W59O6SIRSKVZgCvwbv4UzK8Pi6jf+c3jHe9j/O+r/cqX5ly2ml32h+d9DZGs4pRbu0f2TG5p/wOY4x+FKvptgI8JpE/nv5dk0+OHz9oZ4X9iVLlf92RH+fj9r/mnBG8cr/hn6ZRYxNF6b5J80weadJt9XtiCs6AkDs37a/7FsvIpSKed+doktvzI0O6lFBLDJGpH837IOUjmmkp84Rr5j84X8aAn9F2SMrL2k5h/v2yOTvHep2ej+a/y90jz5bWsmsRlzFSROJ4n4gCVP8Ak/5OCePiNg1/vosSGVWdpFZwpbQKEijUKoHQACgGXRFBUFrVlplxHXVY4HjXf98qkD/g8gcAyHlxH/Zf7H1KIcR2HF8OJgfmbzV+XGnwcdQbTpgnSKNI5Wr4KkQbi3/A4T2eBzHh/wBK/Cl/vZS/2TKOnrpGH+lh/wAeY75I1rUfMGq276HokVl5fjJ5SzxqrMK7SQhRyVv+CX/LzFEMINRiM0v9U/mf530/79rAx/wgH+l+P+PJLNp7fmX+YKXNonp6bob8HkBALMp5fDx/mbMiXoIEOZ+qVfSyI4dg+jMtV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVqqF6YAFXYVdirsCrJVLLRTxPjgN9FakkEMZdzQKKk4lKBsNYS82jSTj05FaD8Ty/4XKxkHv/q2khMiK5cxdgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/9P1TgV2FXYq7FXYq7FXYq7FXYq7FXYq8f8AzAh/wr5w0zzSh4212fqlzTpv/du+VxNSrpP/AHTKPd3vX1IYVHQ5YxbxV4Prf/OP+q+bvM0uq+ab/wBfSUasEEZNeP8AvshhxiX+fjy55RLLkn6a4Ij+L+d/V4fVxf1kmRO3If0Xr+meU9N0qyOm2ECQW5UpxjABoRxPxDfl/lYxwxjy5/zv4/8ATMIx4eT5kiGu/k55vhiuZZX8v3M/BeTEqVY0HKv2WXll2LOZeiXT+d/u4NsZk7F9IedvNT+XtIl1i1ga89JQ3BCASp/ar4Y8UY/VYH9EIFddmGaB/wA5E+Xr3Q11m+kFvOWZDbA8pea/soi7tX+b4VzIOIHcH0fzpen8f5rPg6j6f50ksGkeaPzTJl1Uvo3l1j8NstRPOvjOf2Eb+X/hP2swpZvEFY/87NIcX/KqMv8Adf7KX0sDOx6f9N/F/m/j/TJBo3l+H8nPOkNrbA/oPWFEas5qUlHT4z/n8WDEP4ZeqQ9UZcPq/wBiiG+x/wA16N+cn5fDzXpf1iz+DVLL99bSLseS/Fwr/K2GVxPHHp9X9KKLrcc2N+WP+cjNFj0GK616XhqSVilgRSXLpsaIP5sy+ASHFtGP9ItpiDv0Y55r/NjzV5q0u6OiaJw0r029Sa82DJQ14isS8v8AVZ8xpZcX0i8h/o/TH/df7LgYGUeQuf8AuPx/nI//AJx0/MRLXy3NZeYmFn+jGHxTEr+7f402f4v9Xj9vLY/vPp9f9K/T6f6TIDj3G7AfzT/Ns6n5m03zB5SjdRBW2W7lQiKRnPGm43Va/tf8BgJjCXMTlXqjFQBE19f85nGufkT5j832Ulx5o1dricKXggiUCNXpVftf8D8PHMeeXJLcCGPh/wA6Uv8AOYHJI9w/qsItfJ2naRoWk+cIrZBLp9wYdQSQcwfi4vI6f5OAxs73OOT+dL+L+svCL77en/nd5s0aLyPLLpjQkXyCOAIFFeZ6qB/Lk/ykIm+GG38XD/voKMQj0Gz0vyLaSWmhWME5rIlvGGqa78R3yyJtSn2SQ7FXYq7FXYq7FUHfaVa368LuJJV8HUH9eUzwxn9QEkEW861T8m9PsrXW5NOHAanblfRAAVSo5VT/ACmbKxj4R7vpUCnf8446yb/ylBbybS2bPAw7jidq/fmSGRUvPH57aX5b1B9LtbO41DUo9isKCgJ/YMjfF/wKvgMcUfVMxh/SqMpx/wBNKH+7WogXIiP4/wA1LF/MT8xdbUHSfL6WUbjZ7uXcV78P3TL/ALKJsh+axH6Rly/DgjL/AE0eGX+ZlXxIgbCUz/pI/wCy4P8AYzY15V/xR5B81W1nqjW91Lr0hedYx8SUr8QkorEL/wADhhkuzKPBf078c/6n4lNIlxcxX817veeVdMvLo391bRy3BUJydQ3wjtRtsjPEJc7P9G/SxXavKmk6ZcTW6hFghkZQooPhUsKAZKMRAbVEKHjX5Q/ldZ655a/Sd7LcR3WpyPNLJDIUdlJNIi4DN6f7XH9rIVIy4geA/wAMoiPFD+pxfSkkg2Lj/Sj9SprP5Ran5Btm1ryXqN0724Ly2ty/NJEG7gBVReVP5l/2aZb+Zyj+8Pjw/pcXHD+lHilP/Y8LI5ZdfXH+bJ6T+Wnnu387aPHqsI4Ofhlj6lHH2h8v5cskB0WQrk8v/wCcn/y4fUbWLzNpkZa8tSFkCAkslaq3FevBsxZeg3yB+pr5Jf8A84zyWV3b6k2sTqdVvG9OSORqP6YHHjwfLuA5Bxc4n0/zmwgnf6mNXX5tXf5T2uoeTrGMSXEVw5t5W+ysbjlWndv5P2MnjIA9X1R9PCyFdejLP+cbvJOp38snnfzIzzTzgi39YksAT8coD/ZVvspx/ZyiWQ5Zd8Y/Tv6OL+jH+i1ynx/BKdb9PVfP72X5jOYrJK/UkqVgYV+Crf5X7fL9r7eSs5/TH0cP1R/il/0l/wBIMvrFDav4f57PPzlvrAaJbeWdI9LnqUiRRLGRxCA/HJVfh4qv7WJwDGOXDX07eriWOPh6f1dnpGgtZ2dtBpUM0bvDEqcQwJPEBSeNeWWCBA3YmJ6vNPymjby15p1ryzKCsckn1uCvQq5+Kn35VjO1fzTwrzHuewPGrqUcVU7EfPLCLQ8AvjrH5Qale/o+ylv9D1El41gqWhlIO1AG+HKMeaGP05DwV9MpfTL/AE3CkTA2lt/Nkm3/ADjZ5BvdGt7vzBqyNHd6k5YI+zKleXxj+Zm+LDCXGbH0/wAP9JF29sy9UBqmuWWkxNcX88cEaCpZ2AA+/JRgZct2QiS8r1j/AJyDivJxpvkqzl1m9YH4lBWJfcuw5Ef8Cv8Al4zlDF9Zv+jj9cv9jxf7GM0nhj9W/wDRj+Jf7HiQ8X5d+ePN49bzTqrafA//AB6WdAVH8jyD4T/yV/18p/MZD/diOEfzperL/wAV/s4f1UeLL+Gof7v8f5/+aynyp+R3lvy7ILpYDdXex9W4PNq+3L4RlJxGW8zLJ/R/g/0v/FNZF892foioOKgADtl8YgDbZkvyauxV2KuxV2KvI/8AnJ3TDdeU3uUHx2sscgPcCtDQ/s5XLmCkPQPJN+dQ0Syum6yQRn/hRll2pR93yuYJYrOVUmoVDijcWpsSP8n+XBIEf73iUgj/AI88j8j+ffMWjeYj5Q86FZXnq1rcgBQ4Hy48uX/BLjDKMg5cGQfVGLK+Id0v6L2nCwdiryX8rl/RPmzX9G+wrSrcxofBx9pf8nK8fKu4p6PWssQ7FXYq7FXnn522Mv6FGs2gP1rS5Uuo6daKaSD/AGSZWTRB7v8AfJBpm+k6guoWkN4lKTRq4puPiHLLFOyMxQ8Z/MGMeU/Oul+Zovhhv62dx4En+7P+tlcdjX85lEfa9F8weftD8vTx2uq3cVvLLuqu1CR4/LMiOMy5JjAlO4J0uEWWJgyMKgjcEHwOVkUxpWxQ8I/NPzGvkrzvaa9KAyS2jR71A+0EO/jx+LIR3kzju9g1fWIYtKn1AMOCwNIDt04lhkyGIDCfyD0zh5Vje4QVu5JZSD3DnbY/5OUgCXPdSznR/LenaNz/AEbbx2/qmr+moFT70xx4ow5ffKX+6YRiI8ks0DyJaaLqt9rVuzGXUCC6noCP5cMYkHc3/NTupfmlp9vqPly+trqVYUaI/GxAAI+Jev8AM3w5MxJ5blkATyeFeXP+cmY9D8v2+lRwNc6jAnp8mICUBoh/mb4cuHDVn/SxbKH/AB1imoefdQ8/TGPzLqosbIMP3UAJJ9gifa/2WRlkn/BWP+lKXD/x9ST04Yf1i9m/Lv8A5x98tabLb6/bSTXRoJIvU2FezFKcuWYYxzJ3kJf1f+LaAD1NvZsymTAvzr8ux615auakLLbD142PZk369sqmOo6KEV+V3mZPNXlq2uy3J2j9OQj+YDi2WyZSCSfkQi29hfWQ6wXsykfM1GVwOylr86Pzag8kRwWRtfrs14CPSrQcfs7+PJvh45YBGvVf+aoA6sZ8sfn/AGmlxR2uraPPpNoNg6oTGvzFFb/hWyGKWE+mEv8ATf8AF8U0RMDsDX9Z7DofmDT9etlvNMnS5gboyEHf3H2lb/Jb4ssnjrYplEhLvM/5haH5ZiMmq3UcZH7FQXPyRfiyccRO/IfzpelkMZP/AB55pcfm35i87k2nkWyaKEmhu7gUAHig+z/xLKZZ4Y9h++n/ADY/Sx44x5ev/coyx/IafVpBd+c9Rmv5DuYVYrHXKzkyz2JGOP8ANj9X4/0yDOUvIfzYvSdB8naT5fjEel2sUAUUqqjl9Ln4j/wWQjgjHerP86Xql+P6rARC/wAwebNL8uwm51a5jt4wK/GwBP8Aqr9p/wDYrmZGBluP9N/D/pmyMCXlWof85N2FzN9U8s2Fzqc3QFVKr7HozU/1uGCZx4/ql/mx/wCPf8TJMuGPM3/V/H+9UDqf5qeZwTbQQaTCT+2QWp/wzZT+bj/BAz/pS/49w/7hiMo/hF/1lq/kt5w1v935k192tiatHDUE/wCTy+H4cfzGWXIRx/j+gviy8oMt0P8A5x/8o6VGoNmLmRdy85LEn3/Z/wCFyg4OL65Tn8eH/c+r/ZNZjfOz8f8AiWZaX5W0rSDy060gtyR1jjVSfmVFcMdPCO9Wf50rnL/TT4mXCHj355203lrzDpPnKB3WBJVhnAY0pWi/B9mnFsyIyMTW/Cf9Kziej2m+1u0sbJtSuZAlsqcyx6AUrkxG1At4j+ano69Y2X5l+V6vJp8lX+EqzxqeL1/1d/8AY5TL91O9jfplwoHpL2Tyl5kg8yaXb6va/wB3cIHA8CftD/YnLiKUh8u+ep5/y1/MdtTsaR287LI23wmOQj1hT/J3/wBnlWE8O3P+H/iUxe/fmd+aNh5O0NtRMg+sXEZ+rJ1LMRs1P5V5cmbLxHr3JEfsYh/zjBrOra5pV5qmrXLziWciMOSeNB8XGv2RX9nIGZkfcspGXN7WRUUOAhg8M8l6Rb6jYa/5Kuh8RupwnhUj1AQf9Y5j1cfd/vWR3DxnRPN73N7ommTxT3E+jTyIfRUMzqpJCwhivJlUfZy2RAHESB/O+r0/0/Skl9N+Xvzc8t+a43sUuPq1ywMbW90BFKC3wceDnizf5Ks2XnFxC4EZAR9WP1/7H6/9jwoEbFipf1Xgv5S+VtLtPMmo+XPM1ms0EkzQwyutQsgJZUD/ALLMn2MwuGOQVdSj/NPCjYvYrv8AJuOw8n33lm0laRXaSaDl+wa80jH3ccJEgN9+D/csQSOe6bflbqsHnLynDDfqJPgNtcI3cp8Dg5dICQ97KQZN5T8o6f5VshpulR+nbhi3EkndjU9cjCHCKsz/AKzEPJPz8vtU07XtH1HSrOW7lthIyhELLyNQqsVH+y45CWWET6jX9H+d/VZCQHNkX5R+T7rRbS81/wA0sq6jqZ9ScMQFRe0ZJ+HGAOU3XP6Y/j1JBMkIf+cmvKVs0lszSq0JKABKg8dhwIPHjmZHEK5x/wA76mfAO9L5/wA3/NXmSEt5Q0hhGa8ZbioB9x9lf+GzHlqMcdt8hH81hxwHfN5XPrVrq9g3mX8wbi5vXjuDbrYwEKFK/ES/2VReP+zf+fJSlLJtxeDi4f4R6pfj+nxsyeLrwR/opP5p80+RLqzSfy5pl1p+owSLJG7/ABIxU14SVll8P2VyvwQP4uP+dHJ/HH/Niw4Yjkf9N/0lN7p5b/PhL/Tjq9/amw0eKIr9YkO8koFPTgjUfzftfF/scuAjfDDp9UvphD/dcbKgdhf9b6YR/wCKSP8A5xNvWvE1eZR+6kuuYY9anelfkch1YF9B5NDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgBV2FVrOq9SBirlkVvskGmKrsVWuoYUO4yMgDzUKTozLSL4D8hlYH82kqwFBQ75ahvCrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf//U9U4q7FXYq7FXYq7FXYq7FXYq7FXYqxT8zPKq+Z9ButPp++484iOokT40p9I45TkG193qW0H+UPmweZPL9vcSGtzCPRnB6h0+Bq/ry8m9+9lIdWb4GLsVdirAfzn8hw+cdAmtZGCTQgyxOaAB1Hcns32cpnE848x/sl36PLPIf5n+Y/N+kQeV/LcCpe20Yiu7uUgogBKBkH7bMoy3JljEcjklP+H/AItmSB/Sv8epZpv5T/8AKsfNGm6tOy39pesYZ5ZUAEcz1ZJE/ZTk3wo3+tmNGPEeGYG/qjGP0/1f6TXEXsd/5vC+lB7ZlJed/nro9hqfle6W/lW3aIerDIxAIkT4kCn+Zvs/DkJQJ3jzh6kiJPLo858rfm95m856Vb6P5XtG+tpGsVxfS/3aEAByn8zZKeaEe+eT+bH6f85mZxHn/R/hSzQ/JVl+VXm62bzGUvYNVQhbmRBSOevx/a+FeTN9r/KXMeGPxPTOtvVGMfpYRjxc/wDNey+YPL2q6fHdaj5VlD3U4BFtcHlCW2+KPdPSan+Vw/yMnvAUR4mL/U69cf8AO/ij/QlH/OUSI86/h/49/NeKav8AlRqVv5i03zB+YM0N5FfTiCaONSqI1D9WVyOCurN8P2f+CyAmZ+mvAjP6Yxl6/R/O4eLh/wA2cv8AMRZnt9HF/DE/j/dSejf85BeV4k8ntJpsKR/o6WOdFRQAApoQqge+IhHHVCt/90gAB6P5V1WPVtKtb+A1jnhRx8iBmUWRFPP30a00/wAx3vl69XlpvmGJpUU9BKo4zp/rMv7xcxxDiBj3eqP4/oyTViu5iOi/84j6fY6ul9cXjz6fC3NLdl6kGoVzXjx/1V+LInxZemRHB/OuXH/pfpj/AKZquXI8vx/C+gY4ljUIgoqgAAeA6ZkAUzX4VdirsVdirsVdirsVY75n886T5Zkt4dWmELXb8IqitTUDfw+0MlGHF3f538X9VnGHF3PNfyeaPQfN2veWo/hhaRbqFfEN1I/yeLJlOMUK50itvc9kjtIo3aVEVXenIgAE06VODwo3xUOL+dXqYhS1XVbfSraS+vHEdvCpd2PQADLgLZRFvnby1+begXWvXXnPWpSZhW3srWNS8ixjrIR9nlJ/rYmFmyYwxw/ilL6pMpR76ER/OZlH/wA5MaUrg3tjeW1uWC+s8Z4ippVttsMTiltGcZS/m/iSeGJ5S+x6ldrFremyJAwaK7hYKw6EOtAf+GyuQa3l35T6zcWHkK5EJH1zSxcx8aVKmLkyBk+HfjgBoX+Jf6X1MmY/lV5tl84eXLXV7oD1pVKyUFAWQlHotW25LkpVL/if+kkT57fj/dMF/I+3/QfmfzF5fQkQRTLLGp8HLb/8DkYfTXcjo9rIB64SLQwTzn+TPl/zY/1m6hMF2N/XgPB/pZftZUMZgbxk4z/R+n/SsQKNj0/1XjHlj8o9Lg/MefQtVMl9bw2wniM7EljRD8e/xqvMr/LgMZT2kb/nSj6OP/df7tkbkPUeJ9PRQpCgjjAVFAAA2AA6bZdEACgimH/mjo/ly80mS581Ro1tACQzbMD2WNx8XNv5Vys4OM2PTIfxR/3387/OTwcReMfl1/zjnB5ggGtanNPbWsp52sCOeSxn7Bd2+JWZf5cr4py5Slt9OSX1S/zUGRPIkV/E9o8l/lLoflGVrqwjd7phQyysXangC3TLQJH6pSn/AFvp/wBKu53LKzYQGcXTRoZ1BUPxHIA9VD/a4/5OS4BdpROTVawBHxdMBFqwDzZ+d/lry2xt5bgXF0NvRgHNq+Hw/CMu8HhHqqH9b/if+kWzw65+hh8vm7z15+Ii8u2p0fTn63Nx/eU8UH/NK5jnUxG2MeLL+d/Ax4wPp9X9L+BM9L/5x10t5BdeY7m41W4O7eo5CV/1R8X/AA2Vy8XJtKVR/m4/T/x3/YsDKR5n/Nj+P+Jen6TotnpEC22nwpBCo2VFAA+7GGGMOQ/zv4pf1pfUoiAj8vS7FXYq7FUi1/zlo/l4AateQWrMPhErhSR7KTyycMZly/030x/00mccZly/2RjH/ZSQ+k/mL5d1eQQafqNtNK3RVlUsfktanJHFIb/7mpf7niZHER/x2UZ/7kyZLlTUo3N1HaxNPOwSOMFmY7AAbknEbqHmf5geZ9G87+WNV07RLqK6njgLsqNUgIeZP/ApgywMRZ6FmYkI/wDJLWYbvyZYXDMAsMJRydgDGSj7+C8ftYgdApG7yHyT+Y+k/lx5r1awvL1bnSro+tFNEfVo9a+mzJ+3xbi/7PPJxjL6Z7SH878f7Flwk7S/H+lQX5vfnfoPmeO0vtGW5j1LTpxJG7xgKVr8YLBmp0yMoiJsEH+GUfUx2Hm+kvJvme38z6Tb6xaEmKdAd9iCPhcH/VbCRTGQpPMCHknmy4/w15/03VZNrXVIms3Y9BIDWPl/wirkI867xxMovW8mxdirsVdiqHvrOO9gktZhyjlVkYezDifwyMhYpXmP5FX1xZ2995XvSTJpVy0UbMdzG1XiorfEFp9j4ePHDE8Qvu+r/pJmdxb1bCwea/8AOQGgNqvlS5lhB9ezK3MdOtUO/wDwpZsqntR7j/ulBp47+VWmj84fMN9quvwhrWG1jhC70DEcFZD/ADLwZsGb1GhxD+JM92ReVPzGk/LmK98pX5M81hdRRW5Y05Ryt3LfZCJ/xrl0J8QuXT0ybI+rn0fREbclDeIBxankX/OQf5V33nm3s30vj69vIVYMafA9OTV/yKVyjITE2N0XSJ1z8jU1MxtFqFxbhoo4blEaqyqgA3B6FqYeLKBQIo/wyH0/1E8UhyZ/FLp3l20jtGljgggQKoZgKAD3y7HiNbWWUYE8mGa5+f3lrTX9C2le+nH7Fspc/wDBfZ/4bLJQEfqIh/W/46nhA+ogJRN+ZvnXWqDy7oDRI3SW8fiKePCsf/EmzH/M4hy4839Uej/T+qP+zix44jlxT/2Mfx/nRSLVvyT83+d5PU836tHHCDUQWykqPkG4r/sviyJz5J7RjHHH+kfX/sOPi/5WqckjyqH4/H8Tym0/KWw0/wDMFPKOqvI1kx+BqgFgV5pUr9nl9nIASkKupD+KIYgEvqzQ/wAt9A0WJYbKyhUJ0JUMfpLd8iNNHr6/6xRwhkyqFHFRQDMoCmS7CqF1Gxi1C3ks5xWKZCjD2YUOQkLFK+a/Kmvz/kx5ql8uaqxOiXZ5xSEbLX7Dj/iL4cMuIcJ2lH8f7JnHfY83oGgX/wDhrzldQuGbT9bCTW8kalk5n7QLj4V5ZXAiJMTUa+ni/i/qoutjtTAfP2pxaT+Yo1XzgSNNtoy9qo+IEgfAOK/Zbl8Xxft5KvE9P0AfVxfx/wDFJA4tuShrv/OSA18yRBTBpxPH0UjEk0o93flDErf6rNk5wgRVQ/4Zk9X+lh/xcos/T5f1per/AEsfp/07vKP5ceZvMlw2qaEn+GtJuVAZUkZmkX+f06/ab/nlmPDMYenFxzH87Jw8EJf0fTxf6Tj/AKzUMnDtG/8AO/3n4/z3q3lz/nH/AMtaSFluoTfXXVpbgliT48D8IwHFLJ9cpH+jH0w/H9ZgQTzsvRrW0itUEUCLGg6KooPwy+EBEUEhu5uI7aJ7iU8UjUsx8ABUn7smEvFLz80/M/nqSSz8g2oitFPFr6cUFe/pqfh/4k3+RkZ5oY9gDmyfzY/TH8f0pQj/AFmZmI8vXL/YIjy3/wA442jyfpPzlcyavqDGp5sRGPbj9p/9l8P+RlJ8TL9R4P6OP/iv+I4f6zXImXP/AEsfx/ueB61pmh2OlxiKxgjgQdAihf8AiOMMEIbgD+t/F/pkCICPzIZJJpHm/TdVvbrTLSUNdWTcZk6EHx+X+VkjGhbIx2tC+ZPP+j+W7q1stVnEMt43GIEGhNabsPhQcjx+LGMeLu+aiNpvqetWWlRfWdQnjt4enOVwi/8ABOVXGMTLluoiSwX81/0X5s8n6gLW4gnWKEzK6OrBWT41+JeXHlTjkMuKUeYI/m7f6ZTEh4p5Zj8xfnNHZ6S5a10OwjRJ5BWkjqBy/wBd2/ZX7CZHJmI9MfqP1f0fx/NWU+g/zn0zp3lWx0/SRoNugFmIjDx9iOJr7tkBD01/smFPMf8AnHW6l0z9KeULskTaZcsUB/325PHj7cl5f7LLIS4o3/msuiC/5yo8qxXmlW2tlDytJgkrL19J68v+Bb/hnyqQo91+n/iUDmwnyJ+Xdp51nl0XXrqRtS05IfqrcgyG2qHDRj7L8l+F/wDYv/NjPjnvdcPplGQl9X9L8f5zKdn4fwpV5c1TWfLk97+Wmlo7XcuoIVlWoCRoys8g/lX4Ebl/JyyUcgjG/wCL6eH+molQfXkKsqKrmrAAE+/fLWL5285tc+XvzPsmHw2moSxyDqBUI0L/AD+L4v8AgcpjKrH49bKJYZ+Svk3U9d82prUMZ/RUF1PM0tPh5j4PTX/KaqN/qZHi34fxwf1kGVbfj/TPqXUvJ+k6ldRX95aQy3UBDRysgLKR0o/2sBwRu+X9Uyhxf1ox+v8AzmHCOf4/zv5yh5w1CPQtNn1VLQ3ckNHEUagszVCAjbqtftfy5Lw8cd5VHfilL+kzAHV5J/jv8w9aiN+kFro2nHb1Lo7gH/dgV/iP+rlg1MZbY4yyf0v4P86X0MwQfpF/1mDeT/znt/y01PULS7k/SdpcOJVe2AVfUP8AecA5XiuTgNqlUK/zlHdL/Ys70f8AP3zJ5s5f4W0T1owSBKzErt2c0ijVv8n1cjPPixmjxz/ox+r/AGMcsv8AYqZQjz4j+P6MZpD+Yfmb80NKtRqWp0tNPc/vBaqjNEKjdyOUg/5H/a/bTIDVxJrh4P5sskeLj/00pRh/n4oT/oojl3qq/pVx8f8Asp8P+xQPpeVZIor3zX5lnvzMocQoWrQivGQVlZG/ZdeS5aY5p8zDHH+ifx/0yZ8M5bWBH8f1v9zFIPNdx5c1/T5dL8laHO8ysGW7oTsu7E/5PH9nlmLKOPEd5ynL+b9Uf+kGioR5myz7yNL+YnnLS7e60+7tdOsVTghVQSePwHmlG4srD7OXeNw7QhH+tL6f68fpbDOthEf5zGbj8nb/AE/zGmi69qRW11ZWm9ZY14PMm7xMH4qr8TyRv9XKomUvSBCMh6o/xR4f6H++ixiZHbb/AEvEzHV/Mlt5EjHljytLNrut3NFSKRlkSGlf3nBAqod/s/Z/bfgn2jPBGI4swx/0Yxw48XFP/Mj4s/8AOnKcv4GRjwj11/RjGMYf7GMeL/dKfk3/AJxulmEVz5tu2nQMZjZptErvu4P+y+1w45C8kxX93j/m/wAf/Hf9n/WazKUtuUf5v4/H9J7boXl3T9Bg+q6XAlvDWvFAAK+Jy6GMQ2H/AB5REBNMtS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq1kVWRypISFIPE0NOxwqqYql1xolvcNzkry8QSDlPhm7tlxIi2sYrapiFC1K/RkowrvUm0QK5axbxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2BXYVf/V9U4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXkflhB5R8+XuifYs9YjF3bj9n1Fr66j/K+03H+TjlWMVcf5v+5ZDl7nrmWsVjuqAsxAA3JOKvNdV/5yJ8oaaHDXfqSIzJxjUsSVNKqV+Eq37LcsuGLvMY/wBYtvh95AY7b2vmP82ys1+G0ry3yqIdxNOoP7Z/ZRsxJZ+L04v87N/xDWZ9I/6b+d/VbutBh/K/zbZahpy+jomrcbOZFHwpKB+4cn/ixv8AjbI4o8J4TvfqjKX1f0oph3d/0vTPPnlWLzTo1zpMmxlQ8G/ldfijceHFxk5g1tzHqixeY6L/AM5B6fYaFb21wr3XmFQYDZwhmcyoTF8ZblxDcVb7TP8AF9nLSRw8ciIQ/pH1f6X/AIptIH1HYf7L8f1v9kiNG/K7V/Otyut/mE9Y1PKDT4z+7j3qPW4/C7f5u75jSnLNsP3eL/Zz/wCJ/wB1/Va5TMth6I/7KX9dS/J1P8HeZ9X8kz0CSN9ctD2KMAGUf6vw/wDDZPFuP6npkt7e5X/5ybn0W48tyWl9OiagjB7ZK1cuOqqF+IckyZxH6+XD/F9PpZCB59zzr8uvze85XFnZaJZJF6d1I0VrfX1QpEf2oTw+F5VpxT4+T/6+TOccq8TKP4YmMeP+n6uH/OTxg9Ll/pOKP9X/AImb3zz75Wm8yeW59Om4m+9ISRslQBOg5xmOvxAeovH/AFcpmdr7vVw/X/m/0mtU8k61B5x8twXNwoZbmExzof5hWGeM/wCzV1yc4iQ8imQefflvqureR9UTyDf2cs9m0rm0vF3QRkGULJ/Lx+zx+HIQzRI4ZGssfTw/zv6iiQI32kP9kzj80dDnvNOTU9PFdQ0uQXUIHVuH99B/z2i5L/rccZHhPF3fV/Ul9X+l+pF0yLQNag1uxg1K1NYrhFkX2qK8T/lL9lsuIpJCZYEOxV2KuxV2KuxV2KuxV57+dv5dL540F7WLa+t6y27d+QG6f89F+H/W45TOx6hzj/uUHveCaL5w+ppoXnMlluNPmGmanWpPAD93I4+03KLn9r9uL/Jy0H1X0yR/2X44ZNw5/wBf/dvUPzeu/wAxr2+Wz8mRBNNaNT9YjZOTFhU/HKf3XE/Y4/63P4sgdWMRrhJl/O4MmWP+xjLF/W4+JrGXhNV6v50o8cP+J/07CLr8s4dHjt9T/NrVrqRrmUosSSPIgoOVJ5gGZf8AVj/2Dt8WSGXLn9PF4EJf5OXDGU/6kY8WKP8AnR/0jISlPrwf0f8ApHihH8et7X5R8veTdPtVutDjsxCFH71OBNAOryH4uXH7XL4siNFR3Epn+GUrn/pf+O+lj4J51f8AS+r/AGTz384vPVr5uRfIflUC8vLuVVmkQVjiRWDEl+n2h8bL+xy/mxyY44hZri/hjH60mIgN/wDNi9s0PS00qxg0+L7FvGkY+SgLko7BiwLyHp0drrHmTQWB9KS4S56CnG6j+JRtx+FkdeLZCI2r3pO4SH/nHvWIdG8saguoSiO20u9uI2dz8IVeLk/8E/7P2m+xlkN9v+Opq2/yevIvMnmvX/NFjVtOlMMEUlCAxRfjIDfF/K3+zXI8pV/N/wB8mW2z2nJsHYq8Q/PSC58r6vpn5gWEbSLaN6F0q9TGx2r9DOvJvsN6eViQjLflP0/534/3KYmj70Zff85Q+VUhX9Hm4vbqSgSGOJgSxGyEuFX7Xw/B6n+yzIMIx3lKIj/pvT/uf9NOLMxAFmQ+3/jsf9ko+XPKus/mLfReY/OKNaafA/K100g0qKMk89ercv2WXl/qp8GYksnjemG2H+KX8WX/AI5/S/0v8+UDK9htH/ZS/H4/pdmjjWNQiABR0A8MuApCndXUVnC9xOwSKJS7segVRyYn2UYQkPHNd/5yo8t2bGLTI7jUJBQfukota0+0/wDxqjZcYRj9UgP6vr/47/smzhA5n/S+v/jv+ySdPM35redJfV0e1j0SxqeLTgciO3P1keRv9aOBVzEOrgf7uJzf0v8Aj3FHF/m8UpRYeIP4Rf8AS/Hp4f6sZ/10S/5HebvMPEeafMEjQk1eKCoFf8hm4qv/ACKw/mcx2Ahj/pfx/wCdGEYf9NZKcsz3Q/q/xf6WMHoHk78nPLvlVQ1pbLJcDrNL8bk+NW+z/scp8DiNzJyf1vp/0rVw3z3ZwAB0zJApm3hV2KpHf+cNK0/UYdGu7hIr65XlFG1QWFafC1PT5VDLx5csMYGQ26eY4v8AS/UyESU8wMXYqxaf8xNLg8wx+U5GYahNGZFHE8SAC/2/s8uKPhoEc/8ANZiO1/7FBebPyk8vebL+PU9agM80ScAObKpANRyVCtePJsxp4uI85D+jHh/4mU4/5kotJF9/9X8er/SyYv5l/wCccPKlzZMunwtp08VXSaJ2JBG/xhy/Jf8Ahv5cj4coeqEjxf0vVGX/ABP+b/ncSRGuXF85S/3SO/5x01rUtZ8qRXerStO/qyJHI+5aNDwViftH4g6/FmSZ8RZyNvSbu0iu4Xtp1DxSKVZT0IIoQcEo2KQ+f/zE/KVvKeoW2q+TLZlhnguba7RCSOLRsUkPLl/10i/zZig+DsTI8f08Xr9f838f0kRPD3m2Sf8AOPui2mq/l5FYTDlFdC4SYA7/ABO6Nv2bjl/CSDzF/SyYF+a/5PaH+Xx0fWtNgL20N2kV2JmLh1Yhg0gb4R8KSL8CqnxL8GVRxm6kTPj/AM3/AEvB/wAe+lAHfvbPvzE8+eQYdIudJlmt29WJowtugcgkfARw+H4W+L7eXfkIxFgQx/xcX0y4v831sxhodIfj+iwj/nGP8xtSmW38qw2bS2EDS+pc9k5VmjVv2ftc1/4H+XJeJEbH6j9KCRy6vpnJMXlH/OSVrXyx+kUH72wuYJ1PcfFw/wCN8rlzBSOb07T7lbm3jnX7MiKw+TCoyxSicUOxV2KuxV8zeeNci8ifmouu65FXTruFfSkUV4fAIXloPtPG6Orr9r0pef8ALkMfqJj9O/F/Rl/N4t/p+v8Az2UTe34/zn0B5T80WfmjTINZ05i1tcLyWuxBBKsrD9llYcWywikEUmk9ulxG0MoDRuCrA9CCKEHISjYooSnyt5Q03yvbfUtJhWGIsWIHUk71J75XDGI+Z/nSQBTy78wvyWXWfONr5plmjjsE4Pcq5oaxU4U/mWRVRf8AJ45HhmTwxF8f8X83+d/x1IBOw3tkmvfn95R0QmJ70XEy7enbqZCT/KGH7uv+tJmd4PD9RjD+sf8AeR4pf7Fs8MjnUf63/HeLh/zmI6h/zkPqdyD+idKEKMfgkvZ0j28TESjL/wAE2VicOniZv+Fwlw/6f1Q/2UUgD+nP/N4Y/wCn+j/ZJBc+edc1SThq/mK00+JhvHZgu2/YOo/42bEzyfwxhj/pZDGXD/m8UkkkchCH9KR4v+KRWjeU/Jt3cB7+TUdamYgcnjkKVJ8B8P2sxpmUvryx/q45cDTMk85Xf80vcNC8r6TpcaNp1pFb/CKcYwGAI7mnLIxwQG9X/Sl6v90xEQE7zJZOxVgvm/8AKTS/M2rWmvTs8d3ZspDIacgp5Kj/AE98oMJXcTw/zv8AjqGdAUy9LsVdirsVeY/85BeW9M1Tytd3moR1ltIy8MgFWVyQq0/yXJ4tlE4b3yP+6/o/8StW8P8Ay38/+e9R0mDy15dtSxiJpdup+FCdhzf4Rxr9pcnLUYxzHiZR/nsjkA6XL/TM38vf84w3Gp3R1PzvetdzNuUQnr4NIf2f8lcqlPJl5/u/9lL/ADf4YMDIy57PX/Lf5beX/LgH6MsoomApz48m/wCDfk2RGmj/ABXP/hnr/wBj9H+xY8A9/wDWZOABsMyYxA2DNvJKxb8y9ev9B8v3eqaTEJru3QOqHpSo5n/YpybAZiO55JBA5pB+U/nlfzO8tyz6hGsbs0lvMiHsQPu5K+GYB5MpDuZp5c8u2fl6xi0vTkEdvCKKO/iST3Zj9rKoR4R/vv5zClDzd5qtfK2mTaxqHP6vAAW4Dk3xEIKLVf2m/my2NE0fT/W/47xJARWha3ba3ZQ6lYtzt7hBIjexHfwZfssv7LYSKUimO69+YK6f5hsvLVrD9YnuY5ZpaH+7RFZkJ95HXj8WAmMRZv8Ao/75lQp5HfeaRrdvP+YvleB7PU9JmMV7bNQ+tESGk58f2lq3xf5Dfy5WCMZ4h6seT6v97OKNo8uv1M0/MjStO/NHyU2rWADzLCbm2cU5K6jlJDXxbi0bL/P8X7ODJHhPEOn+5/HqYyFPK/yfM/5t6zHH5nY3NhpFogSJieLSVVOcnE/GzUdn5fa+FfsYcpM/Ty4vVLh9Mpfj+j9P8HCynKx3fzntesfkh5dvNNutMsofqK3nAyNBsaoSyfC3JOPxfZ45UMZiPST/AJ8pZY/7KTWBXK/84yl/unh35SeT/MsT32l6Bq4srqxuniktpBVWA+FZkFfi6fH8P8v82WxzZALjGOSP8XF/BJt4pRF0J/0ZfwvXvJ/mrzZpGp2+hecoEmW85LBdwD4eSgvwmA+zyUfC2SGeM9iDjyf7Cf8AURxiXP0S/wBjJBeYl/wx+ZenajEAsGt272sp7eohDIf9ZqQrkIiiR3+r/ivx/SRF6V5x8vR+YtHu9Il6XMTxg+DEfA3+xfi2GYsIfLHlrzHcoltd6cjDzH5eV47mHcma3R29YOWPxemp48VXmnxf5PCIkIesf3cxGMo/7ifDw8MI/wBPj/mcX0+uywPVzv0y/HDwvp7yrfaT5igi8x6akbPcxj94AOY/mic/aDK3wsuS8CMZcVb/AM7+d/SazCjf+yZHlisa81+QtN8zzWl1fq3rWMglhdDxIO1R7q3HKpws2DSKR1raaZ5atWWIQ2dqGLsahEqxqzEnivxNksOCvTASPznJMIXtG5f7JgPnf/nIby75djYWUg1G6XpHCfh60NZ6NH8P+TzzIOMR+o8P9H6p/wCl/h/zuFt4O/8A0v1S/wBj9P8AnMQ0787/ADZ59SQeTtNWOJSEaWRgxUkdy3GP/hWynLlhDapZPh/vP+KmxMox6Sl+P83/AHUmIeeNA1PRZ4Lz8wXvL+2Ycm+rtWNPioFd2+HlxH7K/trlXjHJ6CRgH82v+I9H+ajxDLYngH82npsv5D+T/OVtp2qWCmKyVOYWI/3oahpI5+LkrDi3+yTKzgMdgTv9UpeqX+b/AAtcoV1SDyTc2P5S+b9R0C/k+q6Pfqs9pJI1I1Kj40Jb4Qfi4cv8hf5svw3McPOcP9l/S/H9JsiLFd385k/m389/IV7Y3Gm3V2bqKdGjeOGNySCN+LsqR1/lbll2TT2KJjD+lxRl/uOP/ZMvD7yP91/ueOL5z8r6hpmiXt0LbS0u453/ANEm1D4RGgBYmRP7tm40+Jf8r7WYghGfMyyV/DjlwwnL+n/xM5sYxEu+f+xhL+t/D/smfWX5hqjGC81C4uyAOVtpUISKlAvD1FHL4f5uOTrg5+Hph/yty/6f6P8Adsht3Y/5vCOKf+nTPyDeecorW507ydpz2lhcXDTRSXZ/ulcKrKlftfF+8/4L7WRjqIx2HFn4fTy9P+ewGSI5XOv5zKo/+cervzDS487atcXk1eQjiIVFP+RyDL0/liTGWTLOvowgfTGMeKX+mjwf7qaDKR/o/wBGP4/4pn/kn8q9B8l820e34TSCjSuSzkeHJvsr/krxXBHFRsmU/wCtw+n+rGEYx/zvq/pMBGt+f9ZmGZDN2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVTknSKnI0J6YCUgLBI71CigpsT/AEyAnfJaVVBpQ75Ku9DUcaxjioAA7DECkr8kh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV//9b1TirsVdirsVdirsVdirsVdirsVdirsVeX/nto8wsLbzNYAm90aYTrTvGSFmU+K0+L/V5ZUTwkS/zZf1Px/ukxNF6BoerwaxYw6jatyiuEEin2YVp/sfs5aRSkUjJYlmQxuKqwII8QRQjARaGBeX/yJ8paDdtf2lipmJqPUJcKa1qiyFguYngfzjKY/my/479X+cx4bZ9TgAFG3hmVVMnkvnrzj5e846TrWiTzpbmwIUTSMAPVUF0eHfl+7kTjkpYjL6d5D1f1f87+q2CB6f8ASLAvKf5o+b/zRhi8v6FwsfQjVb295Vam45wj7SmQL+z8fP8AbT7WGeUQ+kceQ/zh6Ifj+l/pZIM65C+L/SxTnyB5Ms/y18/PpbMZ49VtA8E81C/qIazJz8ZN2+H/AIrzGhHi+upyh6oyr+d/NixAvn6v4uJ7X5h8z6b5dtzearOlvEoO7kCvso+0zf5K5lRgZckxgS+ZPzT/ADB1PzHeRecPKdtNa2emqYGvmHEushCEBG+0i1+D/WbKvEjCVRPHM/Vt6P6KbETt6v538x7L5C/J7RNORNYuSdUv51Dm5uPjryHIemp+FV+LKZY5ZN8p4/6P8MWuVyPq3/3LFtM8lxXFvrnkB2EL2s/1/T5OnpiU+rCyHqqwTho3/wAl8QDW395jP+m/6Th+PSyHLbmEw0f/AJyGsbiygtI7ee/8wcTHLa26E/vE+CRzJ/drEzL6nJefFMzJcMRxSPAP5v15f6vhR/i/rcLOQA3Jr+jUpT/0v9FjHlfUvPdvrlzpFjZwaTDqckl+q3Dep6YPFJ/T4HizNJ++aP4f2vsZjQ1EYioxlk4fp8TixcMZfzvpnGP+m4f6aBkHdx/1vQ9Dg/LrzBd8ZdU1+5MlQSsCrGtfBduQGHxMkumKH830ccof50vqYmciP4R/VH+6TMflkrD99qWoOf8AjMOvj9jCJZR/EP8ASRZRyyHX7I/8SreSvJUnlWa7gt5zJpszLJDE+7RuQfX+IBQySt+84/stywQ4gOE0QPpl/F/V4fp9P8LWCeX+y/i+5mGWpdirsVSXXvOGk6AOWq3cVsD/ADsAfu65ZHFKXIMxAl5rrP8Azk5oMDmDSIbjUpen7lDxr/rt1/2PLGQhD65RH9X1/wDHf9kkiMPqPL6uH1f8d/2SQXv/ADlXcaeiyXmg3MQr8RZyoAr+yWi3bj+y3DIQy4J7Ccv9LH/qqwE8cuUr/wBL/wAU9j8mecdO83afHqulSepDINx+0jU+KORf2XX/AK5+HDKPD/xSZRpkGRYuxV8z+ZPJq6f5s1bys6j6j5lgeeAsacbiMNMhQ0+16/NeP8jqmYoj6SP9T9Uf6v8A0j6EjlXd6no//OPXmuXXPLSWl4a3umubWUH7VE/uyw/1f3f+V6bZlcXEL70y3370x/PHyQPN/lm5s0r9ZgH1iCn+/Iw1E/56Kzx/7Ll+zlOTbfu/3P8AEwYx+WXlPyn550K21VrKNbkDhcKhK/vUosnqhOKt6lPU4t+xJxx8CvpMwD/NnLg/zY8XpQcdciR/VlLhem6B5R0ry+nDSrWO3FACUUA0Hbl9rBDDGO/X+dL1SWMQE6y9k8z85aHrOl+YrfzV5ctluy8P1W7haTgTHy5xyox+HlF8X83w/s5T4nhncTlCf+p+rhl9PFwf9Ix/pxSJVzs/1f534/EUt/LjylB5m8pX9lqvP0tUvrqVwh40Prbenx+yqyQ8uPxL/sGyNWNvR/VEf+PcX83+r/plPl+P90g0/wCcabPTJvW8vane6f8AFy4o4IB29uXQfzYYzzQFRkDH+lH6v9JKMf8AYsRKcRQPP+d/x3hZf5F0HzVo108Gt6gmo6fxJjYpxlDVFA5/aXjl3iylsYxj/Sif96kzJ2IH9aP/ABLK9T12x0tDLfTxwIoqS7AfryyOMy5C2QiSwTUfz38tBzaWhl1KdjxEVtEZCx8FP923/BZDLjgB+8lijE/zpcf+mjHi4f8AOSYAD1ED/Z/5vo4v9kk+jahrs7mXy35VttM9QmtxdlIjSv7cEKLcf8NmGBgBBjHJnI+n08HD/ShlyynCUf6vCx9AOwlKvTxcMcXB/puLih/UT+28uedb48tS1aG1Q9Y7SAEj/Vmn5N/wuZJyzP0xx4/5spSll4v60PTFfEPQQjX9bJxf6f8AiTXT/I1xCP8AStVvp3JrX1Ao/wCBQccJnOXMw/qxhGP/AB5BJJ/4kRiyWewiubdrO4HqQuhRw2/JSOLB/Hkv2sSLFISHyr+XGg+VOZ0e0SFpDVm3ZvlyfkwX/JzGjp4/xfvP+GVLh/q+nhQBTKMy2TzvUPz38q6ZqEuk6jctbXMB4uHjagP+sgbtvlkcfELBG/8AD6oy/wClkYNvAKu4/wBX1Rl/soxZloev2Ou2y3umTLcW7bBkNRUdQfA/5LZGcDE0WEokc0yyLF2KuxV5v+df5Zr500v1bX93qtn+8tpehqN2jJ/lan+xfi2Y87ieIf539KH/AB3+H/jy8twifya8/wD+L9EWW6+HULU+hcq3XmopzP8Axk+1/rcsybB3HIspDqOrP8DF4T51thd/m3oiKKelatISP8n1mocqP6mXR675i806Z5ct2vdXuEt4VFaudz7In2nb/JVWbL4wMuX+m/hj/WkkQJeM6p+b/mbz0ktn5D0tzZsrRtd3AABBHE+nyKxjr/NK/wDkLlc8+PH6d8k/5seL/e+v/Olwf1UcUY/0z+Px6pf5iF8oeT/zD8nXWlRG4FzYtIIprZD+7ij/AG2NeK/Z+Lkq/b/myqGqIHDKIgJfTtHj4v6XBH0/6f1MRk6UBf8AR9X+x+n/AEz6Jy9UNeugidGIqykAeO2RkLCQHz1+UOt6to/5fX76Bbm41G3vJFSMgvsTGGPpqVY8V5NxX9rIeLGHql9P+x/6RZEjrutvvyf88eebA3PnHVeCiMyR2iKAOYHKP1kQRQoyt9r4ZW/y1yMtROY9MYwh9X9OX9X658P83jn6f5jE5JHYVEf7L8fzeKX+amX/ADjn5I8tanoa3lxZxS6pbyvHM0g5EOpPEjl9n4f5cjLAJ7niN/w8UuD/AErCUAd+d+f+9ZB+WmmpoXnjzDpkC8IJ1gukUCiioKvQdv3jvk8Yrbu9LPo9ey5DGPzM0M655b1DTk3eWBwv+sBzT/hlyufJUD+TWsHV/KWm3L/aEAiau5rGTDv/AKwTlkwUlmuFDsVdirsVee/nT+VsP5g6MbMER30FXtpD2am8b/8AFcvw8/8AYt+zlE4n6h0/h/nx/m/8SgvKPyi/N7R/y30iTyx5lSe21G0mfmvEtyLH/df2fh2/1G+3y+PMrFEZBxcUR/Rl/B/R9EZf9JNkQJC7r+jJmH/Q0mhsGaKzvXjAqGERoR/w2DixDYzj+P8AOSDA/wAX2f8AHmN3X/OS+seZmay8k6TJLMRQSSfEB70X4f8AgmxnlxYuZ4/9j/x5BlGPmgJfyH87eeCLzzZqQh5CvpVLcflGnGNf+C5ZjnVZJ/QOCP8ASPhf7GHHL/TsDlkeW3+x/H+cyrSP+cTfL9oP9JurqU/5LKn6lZv+Gyrw8nWUf82Hq/085T/3LAX3/wClHD/uuNmGmfkT5R06jJYLK4XjWZmkr78ZWZa/7HJeCT9Upz/zuH/ccKa9/wA/xFlGn+T9H09QlpZwRqu4CxqP4YBp4cyLP86S8ATaOFIhxjUKPYUy4QEeVMgFTLFdirsVdirsVdirsVdiqjdWsV1G0E6h43FCrCoI9xkJREhR3QWrSzhtEEVuixoOiqAB9wwQxiPIUtUsvtStrFDLdypEiipLMAPxy4RJ5bsxEl5j5g/5yP8ALmmu1vp/q6jcDYLbqSpPh6h+H/geWSlGMPqkIf7KX4/rSiy4QPqIH4/0v+ySEebfzN83uJdEsY9HtVA3uQCzE/8AGVOXGn8sX+zzG/Nw/gjLN/S/49xQh/spMDkjyAJ/pfjg/wB8hbr8h/N2uyfXNc11lnatViDFQPBN1UD/AGC5IanN/CI4/wDO/wB7GP8Av0+LP+iB+P6qWeYvyx86eR7R9W0nVnvYYFJlhevxIPtDi3JWXj+zidVkO2QRnFPjS/iohLv+cbfOltYa/c6Wn7u01UCWJeyyrWsX3c1/5F5KI2r+b/uVrb3PpmTUraKZbaSRFmcVVCwDH5L1yYiSLXgJFpd520ZdZ0W905xUTwSJ9JB4n/Yt8WU5BswfPH5C/nXp3lXy/c6TrkhSWyZngXerhusSe6yf8SbL4x4xf836v6v++beG2cfkNpN7rd5f+ftYUrPqDGO2U/swg12H8uyKv+q382Y3Fxy2+mHpj/W/H+6azKz7kokWP8ufO13Z3JEei+YkZlLbqs2/Kv7I+N2/2D/5OCEeIGB/zf6v4/3qYi9v9Kq/84p6lKbDU/L855JZXHwdxR+SOPlWPl/smy0bhF7JV/zjrZpoXnPXtGPwFSwRP8lXqlP+eb5HGLC9H0lliHl9r+URsPPTedLeYJbSRv6kNP22X0ya9OLf3n+tlEeIGh9MvVz/ANjw/wBZAvky298+eX7QO9zfW6CE0Ylx8J/rmX+Xkejb4Uu55X+dHm3RvMekw6n5fvoZ7/SrhLpVjcF+KmklB/k/a/2OV5McoVIjb6Zf56BEjfnT2bQNYi1qwg1K3NYriNZB7chWn+xPw4SKYkPiDztrV75Z8+X+p6XKI7iO6kYN1BDks6uPssrKeLrkYGul36ZR/nxZg0928kef/JHlhpdTg1MRNeRI81lGGMSzUBkaAFdm5VXjyyePBMbXHw/4eKUZSj/nxl9KBHpyH8PF/Cxf81f+cihd3Nnc+T5Zv9FZjMCtI3DUoGHf7LL/ALLJEjGauJ4v4WfFwbek2mj+bfzW85Is+i2iabaN8SueNSpHwnlN9pf2vhXKfzcBtGJn/SkJS/4iEWrxQOQ4vx/mxYDrvljWtO8xadp/5k3zPY3bFmcyllUA8SAW/dxfs82VfgTB40844f7v/Sw/zvT6Jf5/EkTM+fo/0v8A0g9a8rX3kaK4EXlLSZtUmT4frCxF1Xsa3V6V4/7H/YZRLT44bZJ+JL/U78X/AD/CxCOn/wA5gYR/iN/0Y8WXg/zfoj/Wis8pQQ/l75+u9LZvQ0zWIfXhViAiyg1da/ZBX41/2a5bhBPo58P0/wA/g/H+5Zx3FfzWa+ePzL8o21jLa6tdRTRSqUaNCHLdiAq98vlp+Ieqo/0pMjiPXZ89+W/M/nLRtPm0vywrwaKXeSG6ulCFEJ3AeX92P5uOUw1MR6R++yD+bGX+5RHIPpHrIYbqOhz61eRg3c2varISPSjDso9jM/2l/wCMfwf5aY5MxG+Qxh/NjExnP/SQ9Ef9nP8AoolIn6tv5sY+v/jsf83jev8Al3/nHvzPeqj6hdWukIFFI7OIep/qyyIE5Gn7TSy5jA8X0wA/pZjLLL+tCM5ZZR/q/uv6rAyvkIj+t6pf7Pjl/s2Z6L/zjB5aswH1Fpr+avItK5AJ/wBROI/4LlkvDnL6pf5sRwf8VP8A2SDZ5n/e/wDHv9k9M0Xynpehp6WmW0Vungigfjko6eA6Wf50vV/ulEQE3ApmQBTJvCrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVcTTFUKb3lyWIFmUfIH/ZfZyrjHv/oxZU0ElkUGZuFNyFP4E47ny/3SFdIUTcDfCIhSVTLEOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV//1/VOKuxV2KuxV2KuxV2KuxV2KuxV2KuxVD3tnHeQSW0w5RyqVYHwIochKNileY/kjenSpNQ8lXDVl0uZjFXvDIeaU/1Wb/hsYEkb9PSyO4erZNi7FUo806ddalplxZafN9WuZYysco34k/tZEkjcf7JPJ4t5P/5xP06ykF95ine/uASxjX4UY/5ZPxPy/wBhmMfEn9R4Af4Y+qX+nYG5c0x1BLD8uPMMXmLT4lj0rUAtndolAIHBHpycV+FV24v/AM3ZPFERNb8J/u/+Jlx+tnCPTv8ApYx+f35kWF1e2b+WWe71jSJDOZIV5xIn7Ykcf6q8uPwfztl84jEQZGIv0+HL6pfj/TMiOHn/AKVkf5f/AJV2/nWCHzh5vuDqtxdKHijNVijFfsCPo3H/AIH/AIllWTjyGieDGPpjj/30vx/WYTs7Hb+jF65qXlmwv9Nk0aaJRZyIYygAAp7D2weEAOEbIp4XpX5tXv5eXUnkh7c6q9vVbN4G5OQd0imH7PGvHll4nGMby3A/xfzZf1G2x/HY/wB8lnnHyL5s8x3UHmXzRKum2kzxW0sNuTzWB35fvip+JeR+NWb/AGC5QNQb9AOPj9PFL65S/H4mx4zfp9H9L+J6r5d8kweUNfht/L1q0GmzWzi5IFULoR6DtI55er8Tr8PLkv2/s/DGMBE19cz/ABSHFOP87116YS/memH81hEAfH+tL/Zf71KPzg/MfQdFe1vUukk1SwmEiwxHk5Q/BPE5TkEDRn9r9vjmWcUo+o+gfTLi/ijL+j9TcImPP0/1v+JQun/mz5r85UHlXSPq9s1KXN2TSh/aRPh5ZVLPjjtETzS/o+mH+dL/AI818cRyuf8AsYpqn5a+bNTUyax5glikr9i1jCoB/sviwDNlPIQx/wCzn/xLLxJdKh8OP/dIy3/JeNKNNq+qO47i5Kj7lGS8TMech/m4of8AHmJlKXM/6URj+iTK7Czs/KtiRPdP9XQljLdzFiNqbyynpkoRnPvyS90Y/wCxxRhH8fUsIyO28/l/vRF59r3/ADkt5ftpPqehpNq96dgluh41rT7bDl/wKMv+Vlk4xx7zkIf7L/jv+y/zWRAj9REWA/mP57/M5tOOtRW/6L0/kKRoA0wH87/tcf5v+IZVHWQB9Mf+SmQeiX+m+n/SMfFiOQ/zpIf8ifyuh8+28+v+cop7mQyfunlkPFxvz+D7XwtlWWZzH6pAD+bw8P8AmyYylx9Zfj+a+jtB8q6ZoMQt9Lto7dFFPgUA/S32m/2WRjhiN6s/zpeqX+mQIgI+7tIbyJre4RZInBVlYAgg9QQcsnjEhR3ZPA9V0ab8k9b/AE5pSNJ5av2VLmGpJhYnaRK9v5OX+UmDDLhPBKzE/wB3L+n/AE/x6/6yYfzT/pnvtpdxXcKXEBDRSKGUjoQRUH7stIpSFfFDyT/nIbQp20618zaeP9N0aYTjx4VHqD8FbKSeEg/5slumHeSdcTQfPMNxaHhpXmeATBBWgmINVHusvJeX+W2WQ2uHd6o/1WYHR9FkA7YSLYPDNKdPy088z2MzCLRtcBljZiAqTA/EtT8I+I/8P/k5DD/M/m/T/V/H+9ZR3Fd3qi9wjlWVQ6EFWFQR3B6UyxiqYq4iu2KpZd3un6Ba+pcPFaWqV3YhFqTyP8q1Zjy/ymxhj6RZRBlyecax/wA5FaMkv1Ty/DPq12duECEL9LsOX/C5KXBj+uQH9GPrl/xP+l4mREY/Uf8ANj6pfj+rxLUh8/eb4C07xaFbtT4FBaYjuedfgyn8xf8Adx/5KZD/ALxjx19I/wA6SaaV+Reg28wutR9XUbkD7Vy5YV8Qn2VyMozyfXKUv6MfRH/YsJXL6iZf7GP+xZxpuh2WlxiKxgjgUDpGgX/iORhghHcAX/O+qX+nl6mIgBy/49/pkwzIZuxV2KuxV2KuJpirB/NWp+S1V/07JYkuDz9QozEdDUDlJkD2eJG+Hhkf4v7qX+nlwqdNZsjf+l6Zf7J4d5D/ADP8reQ/M+pJYzyHQZ41MSxqWUSVHIoG4sF41y2ECPQSNv5x/wB8yEdqvk9t8nfnX5a823P1HTbg/WOySKVLf6nL7WTljoXcZf1Snh2Z5lTB2KsN8+/mpoXkiEvqs49ciqwJRpG/2H7I/wApuK5ZHFYs+mP86X+9/nMxC/J8nah5u1y51m6fRIJNMtvMDgKr1UEkj40kYKvJmq3Jf8rKMeWMLEPXX0/zljOvp3fZPlxJdMsLOw1OcS3vpqrMSKuyj4yPHJRuQssdzu8I8xedbTRvzcjuNRPGJYVtwx2Clww5N/k/HgEeIsgLesebfyk0LzhqFvq+rK8xgTiqByEYE8hzA+L/AIFl5ft8sqnCRNWYx/ij/wATL+H+l6eL+lFrN8v9i8E87/mvr/lzzBdzeU1uF0eypC8MkZ9BCPg+CNfhiX9pPss+WY8sMfo9E7+mNRhP/T/XL+lOTZGcY7bH+jX++h6mVaB+cHnTSbiwuPMsMFxpuquqwtDQMvLwVPtf7Llk/HjIkGMsdfxfw/7KUl4genB+P6030ViweS/85CeR9a8yabBP5cZxf2khYBHKkqw4tShX4srlllj3F1/FGP8AxP8AEvGYcr/zXnn/ADis2r6Rrep+X9WJRlQSyRtQt6lR8XPx4t8eMcnGLH++jL/SpErD6cYBhQ9MsQxjyj5A07ypcXtxpYZFv5BK6V+FWFa8B+zy58sqxwMev9VAFL4/LbxeZW1yMARy2noPvuWVw6bf6vL4sAFS96bZLlyqc8QlRoz0YEH6RTAQryv/AJx9drSz1LQzuun30iIT14seSinbBDkyL1jJMXYq7FXYq7FUqufLGmXdyL64tYZLlRQSMgLU/wBYjlmPLBCRsgMTAFEvpVq8ZhaJODAqRxFKHrkvBjVUE0EH5a8p6b5atvqekwLBDUkhR1J7k9TghiEPP+lL1S/0yIik4y9k7FXYq7FXYq7FXYq7FXYq7FXYq7FUJf6pa6fH617KkMY/akYKPvbCImXLdkIk8nm+vfn7pFrMbPRopdWuQNxbKSo/1nphnw4x6yIf0fqZGIj9Rr+j9SUfp/8AMbzYDHY2cWkW7GnqymrgeIX+bKfzUT9ETP8ApS9MGPiAfSL/AKzAfMPkuHQtft7Tz7dXV5ZXQBFwHIjD/wArj9lcAnPL6TLw5fzY/TOCRKU9ia/oxfRHlfypomjW6foS3hjiIqroASQe/qfab/gsrjp4xNneX86Xqn/x3/Na+CmQZkpdiqlPCkyNFIKowIIPQg9ciRYV8fN5cfy9repRWikXekXAvLdfGOtZEH8y+mcojKqPd6ZMomvg9L/OPRrjzjpGned/LhLT2a+qQho3HZ2IP2maJl+zlk5HEb/H9H/NU+kvSfKPna181eXBq8Dgn0W9Ud1dV/eAjtvlsh9qSHlX5K/lf5d84aHHqeqWnqzw3MwVySKqCCocD4XX/WzFOLiPMj+dw/xfj+iwMQX0Fb28dtGsMKhI0ACqNgAOlMyIxERQVjXn7yRpPm+x/R+sAAE1jeoDK3YoTkJYjLeNiQ/ij/vl4SeSSflP+Vtt+W1pdK1x6zXDh2kcBfhUHiD97YMcZE+rn/RREE+ZeNav+Z2l+T/zKutZeNbizuYwhkgkDkGgDSKFPHl8PF0ZsvjjANSuH9b/AKR4uFt4a2NhlWv/AJ6a/wCY7aW28naRdLyQ0uZBx4+DJUen/wAlGyuWpxQ5S45/zYjj/wBNCPFL/TcDEThHl6/x/F9X+9Y55DttY/NOCSXzTrbWsdm5ia3jIjao/akNVVuXxLyy3xMs/wC7ERE/xRjx/wCxbCZy+nb+rF5z5l8l+XNF84Ppl5fH9ELR/UX96enIxsU6t/lZSIZCOEkCX86Xo/z/AOu1cJ/6SZrqnmH8oDbPa2tnMHCkLIgcNXsfib+bEaTh/wAoR/sv+nbIYRX1V/pv+J4GWf8AOM35oactgnlW6mk+tiVxAGQ8Sp3WPmBxVv2uLfzZdzHONj+H6Zf7L6/90pojmP6v8X/Es186f849+WvMLXd+bcpf3CEh1YgB6GjiOvHkx+1mEcRG4J/q+nh/3PH/ALNp4WE/kh+XHljXdPktNWsopNT06Z4pajcivwlx3wnCJ+q5i/5s5M5Q67/NOfOvmb8vfL9lceWUjQPKrIyW0fJlPiT+yytln5WIFkgf0pHimnwwNzUGFfl5+bPm2+s08o+XrQTXcAIW4nqvGKvGN2RuP2VyzxoRF75D9Pp+lnxj+uf9inXnX/nHfUtQ0x9Xu72XVPMMZEio5AiIBq8MaN/zan+RlE8sz6pcPCP8nGP0x/H9H/Ok1mZO5/0sXq35Va7eavoySX+mtpMsR9L0WAUEKAPUROMfBGP7PH/VZsnj8Mj919Pu/i/rfx/1vq/nIFdNnhf5teWdR1nU5ZfOetW1ja27MbWKOrPxNeH7tArKzLTmzZIHJP6YjHw/5SRjH/S+qU5R/wBz/NbBxS5CMB/Ol+OJgdtrGmW5tdO0aGCCepLajdg0Yg/bjR+Sqv8AwWRMATfqzZP4sfF+6ggAdPX8fQ9z0H8hjr1vFeeY9Xm1GCQBxHEeMXsU9v8AY4CcpHCawx/mxHr/AB/pkSlI7cv6r1Xy15N0ry1CLfSrdIFpuQPiP+u5+Jv9lghhjE3zl/Ol9X4/qsRGk9zIS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq4+2RKqZhBNT4ZHh8ym3RsSSONAMYV0VeyhhQ9MkRaFnoA/a3I3FciIJVMsQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq4GuKuxV2Kv/0PVOKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvF/zOWTyZ5osPOduKWlwRaXlB2Y/A52/4bK4+mVdJ/wC6ZR7u97LHIsih0NVYAg+x6ZYxX4q7FUq8zX15YadPdadELi6jQskZNORH7NciZCO5SCBzfLvnHWvOP5pW92+nWL2WlQCtxGaVdk+0fjC8nWn2V/2eVTzY4/SLv1SlXFw/0v6P+7U5B/D6mUf84o6rpdzp175fmWL63zJPwgPLEw4nmftNx+zx/YyRwiXqO/8ADKX/ABKTDa07tNR1/wDKqR9IjsGv9CefnBMjf3MbGsiS/wAqr9pWb4cceaI9M+ISHpjKP0y/mojIHY3/AEeFCa3+aGs/mRfv5b8iAw2a7XF+QaAdxGf2f+JNls8oxbD15T9Mf5rKREOXqk9H/L38qNK8mQh4U9a/YfvLl93Ynr8R6DMcY+I8U/XP/Yx/qtdXudylX5zfmB5f0nSbjStRl9W5uEKJBDRpSx+weP7PFv2mzKOLaz6B/Ok2CHU+gfznn/lP/HH5rWKQ3c40fRoaRSemCJ5igAcHfkvL9v7Cf5DZUdSTtjH9bJKX+49P+5/06nJ/N2/pf8T+P856h5X/ACX8teXIWis7VXlkUq00vxuQwofjf7P+xyjwOLeRlOX9L/ifpaeHv9X9ZPPI2ny6XpqaZMCPqrNEhP7SKfgf/gfhyzGdv902J9LKsSl3IVR1J2y4KHj/AOYP/OQdppBmsPLcLalqEIJcqD6UYH2jJIvXj/k/8Fk5cOP6z9X0x/i/46zoR+r/AEv8TGfJHklvzfRfMXm3U1vrdGollakpHGf2lm/ar/w7f79yrMck9v7iH9ExnKf+f6of7r+rBhMy5fR/V9X+y9X4/mvb9B8o6T5fiEGlWkNsg/32gFfckDkx92ymGnjHfmf50vVP/TSYCICbSwpKvCQBlPUEVy0gHYpIat7eO3QRwqEQdAoAH3DGMREUNkquTV2KpV5m0CDzBp0+l3YrDcIUP0jY/wCxyuceIIq3lv5BeYp7CS88i6q/K80uQiIn9qKvb/VyyJ4431Hpk2E8Qv8A0z2fFghNUsI9RtZbOUApMjIQfBhTISjYpXys+lXMvlu4tbf4dV8qXpkTryMJPL/W45ASqp/5smV1u+lPIvmqHzTo9tq9uQRNGC1KbMNnQ06Mrfs5kEUshRQn5g/l1pnnmyFjqqtRDyR0NGU+KnKJwvcHhI/iayL8k80TSk0myh0+JmZIECKW3JCigqcmGTG/Ov5saD5PXjqM4ac9IY/ikP8AsF6f7LLxj6n0D+dJsGPv2/rMPt/N3njzuBL5eto9J01z8NxdUaRh/MkPxcf9krL/AJeYx1ERtCJzH+dL04v91H/Y8f8AVY8cRyHH/Sl9P4/0yKh/ICy1C5F95ovbnVpx2cmOP6EQsy/6qy8P8nIyOWf1SqP83GOH/jn+dHFCf9JiZSPM/wCl9P8Avpf7Hhei6L5a07RIhBptvFbxjsigfqwQwxj7/wCdL1S/00kAJpl6XYq7FXYq7FUg0bzrpmsX9zpVlMJLmyp6qjoK7de+SlGu7f8Ah/iZGNBP8ixdirHfPXlyfzJo9xpNtcG1kuF4+oBWg77Ar9r/AFsgZSiLj9X9I8P+y4Z8P+lTZHJ5xp3/ADjh5O8v2Zuta53JhXnJNM5VQB1+BOK8f9bm2UeDPJ9Ujv8Awx9Ef9N9f+dxsRElIx+cH5ZaK7QadYiThUco7ccT/qlv+actOix/xGJ/rGU5MvBje/Dae/lpr/kz8wNR/SWn2Itb/T2HAkKpNejAJ9rD+VjDfGT/AEuHi4f87iQcQG4svaMsV2KsB1D8lfLupa8fMt/C092eJCu1YwV6N6fdv9bkuY0sZkdzLh/m/j1cLExv/iUg/wCck9GtpvKzXlUiuLGRJYWNAag7onu2T8OiDH+H+b/NZxHd0S/8iDqfnAnznrzlqD0bSMH4VAHGWTj/ADsf2snKZmf6MP8AZSZSlflTDfzO/JzVvNXnW8eKJvqsltzSYg8eYHwID/Ny+HMaeWjX8UfVw/0Wsyeq/kJ5rfW/LyWt2CL3TmNtMD1qnQ/8DmZxcQvvZy3370B+cP5p+WdEtbjQL4G7u7lCrW8QqasPh9R/sr/wz/5GROCNWax36uL+P+t/0nKK8Aqzs8R8ga95u1e2XQNHs4jNo5Z0muVrLCrVKoA/2W/1V55XPJChKjk/q/T/AF5R+j/dqZjuv+l/C97/ACK1zzJrOkSz+alpKspWJmXizKOrMv8ArfZbLPFGTcV/m/Sgy4uTLPOvnTT/ACfp76pqr8Yl2AG7MeyovdssjHiTGNvlXyP+ZvmG38xah5p0fSJb+K/YhgqOaKDVQHQMqtxH+VlEs+KBqR/q+qMf91FeOF0d/jGP/FvQ5v8AnKHWbU8bry1cxEeLOKH35QLko6rTn+Mf6aH/ABTDxcff9sUVJ/zllYpEA2l3YugPijNNj/rU5f8ACLl4liO/H/sf+PNl4yL4vs/33Exnyt/zldrWpSy2g0z63OWJjWImoWvRwP5f5sMsmIC5cQ/q+r/dMjKAG/EP6rLF/M/8xtXf0tL0Fbcno0xPGnuTxX/hsxhq8P8ACJ5P91/uWsZIEbCR/pMn8geX/O76j+mPNl8ixcSosoFBTfuz9uP+s2EZpT24RDH/AEvr/H+l/qJ8QnahX+y/H+d/moL8lUdda8x8iWX66BXqKge37WCCC9dyxDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqGvL+3skMlzIsSDqWIA/HCImXLdIiS8113/AJyH8vWUjW2nCXULldgtuhYE+HP7OSlGMN5kQ/3TPhEfqNJMnmX8yPNw46ZZxaNav0mn3kA8Qjf9Uv8AZ5R+ah/k4nJ/Sl9H/Ef7KX9Vh4gH0i/6Uvp/H+nVdP8A+cdIr2YXnm7UbnVbitSCxSP5cas1P9kv+rkJSy5PqIgP5uP/AIrhhH/Yf5yDKUuZ4R/Nj+P97F6foHlPS9Aj9HS7aO3Q0+woBPzPfBHBGPmf50vVL/ZMREBOMyGTHfPflK1806TPpl0gbmh4E9VenwMD2+LKckLF930oIeP/AJKfmTF5Z8v3Flr7Px0659Ev14qx2Lcjy4q38vLLoy4/i21xMu80/wDOQehaaFg0YnVr6SgSK3qev8zqG/4FVZsnKIgLmYw+MeL/AI7/AJymHD9W3xigvJPm/wA/eYtZjfUNPXTtGoSwdQWI/ZFWPqBv9gq5SNTCW0AT/Slxf8TGLAzB2A/03F/x17Dk0PB/z7sv0FreleaoVHBpPq1x/lI23x+K8Wyit6/nhMe7vTX8oANE1PU/Jtxvb1+sWymu8Ug+IL/k5OG8aP8AD6V6e5gus+VvNHkS51TQvLdg91p+sGkUyV/dcvtBig+Hip4/EyJlUc4x+mXFxD6f6f8AV/nLGdc7/ovcvyz8pL5Q8v22lPT1Ik5SHtzO7nLcYNe9DBLz/nJjR9O1a80e9idWtm4xtGQ4lNaUXj9nMkRBG54K+ribeEe6vq4nnf5pa15g/MSKK9sbOXTrazqwllk4Anrvy4qzfD8HHMYakA1j45/zuH/jrETr6bLB7fzyusWfLzTqV5O8Z4G2hIAYD4QS7n0/+STPl0pzl1jjj7vX/sOD/ZZWZkT14P8AN9f+9j/p5pTq+oR60iad5b0oRsGDI685rglf8tvsr/krEqZiEQx7kk/0skuCH/KqH7r/AHc2qRjH+d/nH/e+mP8AsZo3y7c6t5xnltdb1s2MduAHFw712+HjHCv2uNPs/D/qZkjJkr91w0f5so4o/wC9/wBz/nNgnKX09f6UYxW6npHlPRNWithqE1/Y3EZWaWOqFJCdpAG481/a4tgEcg2MhCR/ij64/wBWX/FMYxI5mr/m/wC/U9efyRpDWr6Gbi/nglDTmdaJIndAP2cicch9chO/qjH+H+rNHCBzN/0f+PPRL38wvyr1OxaKTTJbeUCo9JaOG7cHrx5cv5sTo4DcTr/TS/2M4zggYIDcGv8ATf8ASCQfk9+cek+U/MU6lJYdJvAFLTfE6MOkr8B+1+3xyUMUT/NmY/TLhjH/AEv1cP8Ap2QAOw/030/8U+vtJ1mz1e3W80+ZLi3f7LxsGU/SuTlEx2OzEinj/m91/Lzzrb+YacdM1YejcU6LJ2c/8SyjF6SY/wA71RTHu73qkXlXSGnOorawmeUCsnAEkdetMh+Xjd01mAYn+YPlCa3uoPNeggLqFjtJGKKJof24vDkq/YxEfCNxHpP1Rj/uv+KZR2/3yB8xfnloOlwQap9fjKNGSbNE5ys1NkqHX0WVvh/eLxzM8OQ3NCB/il9X+Z/O/HqbeCufDX87+L/N9X+9YnZ6p+Yn5nD1bOnl/STur0IlcdiP92N/sfST/WzHOqHLFHj/ANskfR/puHh/0sZyj/FJr8UfwC/6Uvx/uY/57KvK3/OPOg6Y5u9X56rfMatLcnkK/wCSn2f+C5NlMoSyb5JE/wBGPFGP/FSYEGW8t2R+afyl8u+ZrdLa/tEAiUrGyfCUB/kK4/lwPpuFfzf99/ORw/D+qjPIXlB/Klh+i/rL3UCMfS5gVRO0dR9rjl0TL+Kv83/fM9+rJ8sV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVrfIm1bphpXAUxV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX//R9U4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqxL80vKC+bPL13pNKyOhaPenxr8Sfj8OVT5WOnqVif/ADjp5yn1vQTpupODqWmuYJUIowVfhjLr/q/Dyy6+IcQ6szvv3vWcDB2KuxVSZUCmoAXevh71ysYwNgB8leNL+UGim4n13yLdoutRTmUFZQ8YJ+3ayJF9iKT/ACvjyBxZMBv1H/a5Dh4of8V/S9KeEw/4mTBvzw/MvX9WsoPLT2M+mzTSKl07AmM1IUCOZfhaJq8ssGoh/CfUf4ZDhyx/zf8AfMhOI5df4ZfUzbRfPvlD8rNHh0SzlF3eKo5x2w5u8hHxklfh+1/rZOGDgHFOofzpS+pRjrc7KRvfzB/MI0tUGg6S9fjfeZlPgP2fhyv80OWKPH/tkvo/H+mY+IP4Bf8ASkzLyN+TOieVW+tqpu9RO7XM/wAb18Ur9j/Y/F/lZUcRyG8h8Q/zf4I/5v8AxTEi95bss0fy/baQ1w1qCPrMpmcE1HJvtcR+yMsjGv8Ae/0WVo+edIEMsrBEUVJYgAfOuWgWoFvL/M3/ADkDo1lI1hoavquodFjt1LLXweQZKQjj3mRD+j/GyMRH6jX9H+JjzeR/N/5iyLceb5/0VpQoRZwN8TV7SP8A81ZT48pbYhwf7ZL6/wDNR4hO0fR/S/jelWH5ZaHp+ky6DZ24itZ0KSFftsD3aT7XLKvBA334z/lPqm1iNe/+d/E8h/LvQJ/yo88N5ai5S6PrClrdzQlXQFqOaruqgq/7T/C/DLcc7BjL6o+X1/0mUT050+issV2KuxV2KuxV2KvEfzw06Tyxqmn+ftPXj9WkEV2FG7RsftGn2vh5L8X+TlUfRLyn/ukxNH3vZ7K7jvIEuYTyjkUMp9iKjLSKWqV8UPHdQsI9C/MVea1s9ftWidabGRAahv8AWT4spiOce/1MgxTRtSuPyU8ySaRf8v8ADGoSc4ZSCViZu1f2eP2XX/Z5PDO/3cvqH0f0vx/sZLA36T/mvRfOH59+WfLsRAuFvLk04w255kk9PiX4R/xL/JzJ8Lh3n6P91/pf+K4WXBXPZh41b8wPzGNLCMaHpL/7sfeRlPdf2v8AiGYx1IG2McZ/nS+lgMoH0i/6UmW+SfyJ0Xy5ML+55X9+R8Us/wAQrWvJUblxb/Kyk4zkN5Dx/wBH+H/jzE2ee70pQFFB0y8Ckt5JXYq7FWiQBU4qxryh5/07zZJdx6aWYWUphdiPhJHdD+0uSlER63/O/ospRpk2RYtEgbnFXzp+Tfnfy75audcutUuY4JZLxuLMasyDcAU+18WMMUpb/wC6bOAl7x5c8xWfmKxj1TTX9S2mBKNSlaHifxGGQ4TX+5YEUmmBDsVYZ+cKofKepGWP1lEBJSpFaEd13+H7WQkNuo/qqHzh+XH5naHpOj2+gXRjt/hkmuLgRB33YlII+Q+3x/ab7GR/LxlvQ8Q/xZPpjD+d/W/mtgiPL/O/H1on8i/Jiea/Nc3mSyRrbSLSQso5mrN+wDT/AIJ8NmJ4Y3/Skxuthb6pn12wtxWa4iT5uP65eMcj0KY45S5Aoe3826RczC1hvbd5z0jEqFvoSvLJnBOIsxlX87hLI4pDmD8k4ylqfP8A50Qfmz5vXyzBITo2lKXuWU7NIduAK+/w/wCxbK8pMfSPql/sWZ2Fd6c/847Xkum/pPyfcGr6VcsFI/kcmn/DBsYSuKDyez5YxeLWJ/wj+ZklmPhtNdg9VR29VK1+XKj/APC5XjNXHuZjk9G/5V/of6UfXTZxHUHpWUip27gH4Vb/ACl+LKjgEjZs/wBG/R/pWoxDyjzLEnk78zbTUzIILLVYmEprRSyg15/s/aRWy3HEgmI6+ptgL2TjQPzXPmXz0NM0ORrjSY7ZxMQKIJAdpEb9r+XLZEQ9O1n+ap22Z355/L7S/OttHZ6ujPHE4deJoa9x8myicDLkTBrITjR9GtNGtY7CwjWG3iHFVXYAZKEBEUP+kkgK91cQwJ6lwyog7uQB95yfBx7VxfDiSIk8t2I6/wDmF5P0yJpr+8tCDseLK7H/AGMXNsP5PviI/wBb0M/DP/ST4og81p5d8zyaroM0kduJn4uoAYxsT2b4f9jhgOHb0n+t6oKPT3f71luo/wDOSHnCaX0IbsxROQA3pANQnrT4viywZtuUP63q/wCKZHJ5D5Pa4fya843iJK/me4RHHP4VIarCtPhdfh/2WY35nP3Yfx/ySk1eNPrwfj/Neh/lj+XyeSNOax9drqeVzJLMwoXY96Vb/iWCHEd5VxH+b9P+9/3MUWerMstV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KoTUNRttPiNxeSJDCvVnYKo+bNtkhEy2G6REy5bvP9d/5yB8q6YfSguTe3FNktlL7/wCv9n/gWbJnGI7yMYfHi/3P++4WZhX1ER/2X+5/4pjkWqfmH55ZpLBF0TTmNFaQVlI8aH4q/wDAZi/mh/k48f8ASl9P4/HEx8QD6Rf9KSIsv+cdY7z955l1K6v5Ca05lVp4ccEp5Z85cA/mxCDOcuZ/0r0ry55M0ny5CLfS7aOFQKVCjkfm/wBo5COCI3PrP86XqYiICeZkpUPrcJl9AOvq0rxqK0/1cPCav/ZMuE1avgYoHV9atNHt2vNQlWGBBVmY0AyUYk8kgW8N1j/nJG91i+OleR7A3koqPVcGlP5wi/s/6zLjOePF9Xq/q/j1Mzwx57vMLz8uNb1PzTBYebGGnjV5DI3AgqxH7ACll5/spyzFjkMgRAcH9GXFH/PYCXFy2fUfk/8ALPQfKSAaVaJHKBQykcnPzdvi/wBivw5GOAA2bnP+dL/ex+mLDhZZmUydirB/zn8tpr3le9gIrJFGZkPcNH8dR/sQ2VZB17leVXGsTx6DoP5i29WlsVEF5x3LR19J6/6rD9r/ACcIPDL+v6Zf7xsvf3pjL/zl75f+rSyR2tz9aUfu42CgN4VkVm4L/scy+CH87b+rLi/zf4f9NOCeGPf9nq/3zDobjXPzLtj5m82akNJ8uqxCRxMQWINKRp+237PJub5Qcs5HhxDgA+rJL/ffzv8AcIsnaOw/il+Px/ReY69q+j+Xdei1Xyh6jwwUq1zRqvv8dG/Z/a+L9vKxCtpnxr8uFiI8J39aeg+bfzJm5H1rhRv4RAe5bjCirkZ6gR9I2/oxj/vIf79lLJe3+xikOtaHaeT9Ztmmli1FTQzwwsaA1P7r1lH/ABHERJFT9F/1ZS/0v8LHhI+ra/5svW9z0LyR518xR8bZIfLOlOK8IFAlYH+fgfWduP7UksX+plMJRif3Uf8Akpk9Uv8AT5Yyn/pY/wCexE+H6RX9KX1/6aXr/wBx/WYh5s/KjT/yy8xafqurc9Q0W4YpcvKtQHNfthf2fsycW5cvi+1lkeKZ4ZmuL+KPFD/Z8UprHf6j9X8Xqj/xTIP+cg4fJkvly3m0aW2ju4mV4FgpVlPUEJ0/m+LJ/lPDNjb+dxfx/wDFJGHh35f75INI/NfQtQ039Gad5c+sXs0XCV0QEFyOJYUHJfi+LITw4I7yJH+8/wBkvDjjz2Y3pnlrXPMFqND0/QI1vLM8JbhwVYH7aBzVYwyqf2uXPKjkxjcccr9Xp9X+w4Zf5zDjiNwDv/Wl/sWaD/nFPXtbia61u/hju+ICoicgadBI4C0/1lWTCJzO8YxgP5vphL/NjD0f6aUUAnujH/Y/7j0vfvy88g2XkbS00iwLMikszOalmPU7BV/4XMmAIG7JD/mr5JPnPQZ9IiZUnejRMwqA6mo+XL7PLIzHUK8y0b8ifOFnCsbeYJIxTdVqQCOgUt+zkvzOY8uH/O9f+9Z+Pkrp/nIn/oXvWr/ims+YLqWD9tEJFR4fawHPnlt6If0o/XH/AGMf92x8XIf5sf6UfxFmXlH8i/K3lgK8FotxcLv60/xsT/Nv8Cn/AFUyjwOL6ycn+xj/AKWP++lJhw3z3/H816EBTYZlAUzbxV2FXYq7FUuutcsLOZLW5uIop5PsRu6qzdvhRjybfJxxykLAJ+DIQJ5WmOQYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2RV2SV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVpTUV7YrTeKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV/9L1TirsVdirsVdirsVdirsVdirsVdirsVdirsVeB+d0X8svPFt5pjBXS9XrDd+CyEj95/zM/wCRmVYvSeHv9Uf+J/H85lDfbve9I4cBl3B6ZaxXYq7FUFrGnLqVnNZOSqzxtGSpoQGHGopgN9FunyVo3/OPv5g6RqUv6JkW0QOeNx64UMAdjxTlJ8X+UmUQ1Uo8ozP86NR4P9nKMJf5nEmOUjv3/q/8U9Et/wDnHjXtfo3nTXZ7lOXIwxE8a+zP9n/YquGWXLP+ZiH9EcU/9jGEY/7NiZzPdD+r+If7l6b5R/Kfy75UUfoyzQSj/djjk5Pu7/FkBgBNyvIf6X/E/Sx4WY5ks0p17zTpmgQ/WNVuYraPpWRwu/gOXVssjjMuTOMDJ5dffnpeeYZX078vdOl1GUVBupAY7dD41fjz/wBVmi/yVfIZMmPHsT4k/wDU8Xq/00v5v9KPo/22KCYx5+uX82P++l+I/wBNdF+Tuu+aylx5+1R5kUgiztf3cQ9ncBWf/W4q3+XlRzZJ8uHBH+bH15f9PxS4f9Pl/oyQZk7fR/V+v/T/APSX9Z6R5a8l6R5ahFvpNtHAg7qoqT4lvtHIRwxib5n+dL1SYAUitc0WDWrR7G6r6b91JDAjoysvRlOWmzy9P82UWd1yYp5N83zRapN5O1dueo2sYlimpQTwmirJ7Sq3wyr/ADZKMuMWfqHplH/f/wBWTLmL/wBN/wAU1+c3k+bzDohm0/bU7BxdWrDrzT4jGP8AjIvw8f2m45XM8PqH8P1f1P4mu637k/8AI3miHzPotrrMHSeMFgN6OPhkT5rJyXLpMiEj/L783dL86XNzp9qskF3aMQ0UooxUHjzUf5LfC6/s4TEEXE8Y/H+x/pMjEcxuzzIsEi83ebLPytYvqN8TxFFRF3Z2P2Io1/adsIF89h/FL+amIt5xcan+aL/7l7a2s1t/tLYk1l4+DuSq8+P8sqfF+xlQ1ceXhyOP/VP4/wDNjGXF/wBKJs/FA24f86/X/uv97KX9Bl3kH8y7bzUHt5YzZalAeMttKRzB8QPhYr/scsFSHFD1x/3P+6QY7WN/96n3mzy9D5i0q50m4/u7mMpXrQn7Df7FviyucbH+5a2B/wDOP2uzzaRL5e1En6/o0ptpAevEE+i3y4jj/sMnGXELbDuLeqYWDy7/AJyA0yY6LFr9mvK70edLpf8AVBAkH+r9ln/yFbKieEiX+bL/ADvxw/5yQaRXn7yZpn5oeX7aW4uWgteK3KyoRTiVq3Kvw8eP7X7OHJGR+kgf1o8cf91H/dIkDyH4/H9Z89fl3L5Y8heZZJNQePVdNaiwXiqT6R33kjYbM32eX+zTAcHiHhy+n48WLL/pZT/45L/TMvDv6uf+wfXujatZatbJd6dKk1uwHFkIIp9GXygY7ckGNI/IodirsVdirsVSvzJcxW2mXc9wSsUcErOR1ChGLEe/HFIeW/8AOOMun6T5btYJ5Yor7UHlmCMwEjjmyI3E/E3wJghilK5USP539Vlwk7vXruR4onkhQySKpKoCByIFQgJ+FeX2eTY2wDxP/lW/nHz5LJd+atQl0uyZ2EdlbsCQoJ4c3QtG3w/tfEzfz5D8zM/3Yjjh/OkJeLL+d6fTP/Z8P82PCy8Qj6fT/upMP/KL8q9Fbzdreg6xALtbKhh9Xf4ORXm3+UytHlPAcg3J2+rh9HFJgRb6Z0zTLbTLdLOyjWKCIUVFFAB7ZfCAiKCgUimIAqckTSWP+SfOlj5w08appvL0i7xkMKMGQ8WDD/hv9XJEfFlIUlnnn8wvLGi281lrt3EokRkeEHk5DChX005MCy/Z5ccl4BmN/T/Sl6P86P8AO/zeJkMZP/HvxxPjrS/y+vvMupSS+W9Nnn04OTGZdgVJPAvJ8Kt/qrmDLLGPpsz/AKv1f8dajIDb1F7H5R/5xq8xW8Lpc6n+j4525PFak9e244Lk45soHpAh/wAMPHL/AI6onLkNmXWn/OLPlhSr3j3Vy43blJsx9xTl/wAPiRln9Uz/AJo/3PEZ/wC5U2eZlf8AO/HEqa7/AM4weUbq2cWUctnOoJWVJWNCAaF1l5rx/m48f9bKxinDeM5k/wBLh/3kYS/2TERI5E/7H/iWMfkv+Y2rSeS9ZnvpWuW0pZFgkY1YjgWHI/aZVP2P8jM2WTi5/wCd/S/483mVnf8A6SZn/wA42eX4bDyrDqPH/SdQd5pXPU/GyJ9HFcpjGyZd7A80BFCvl781iqtwi1iy507GRCf+G4xu3+zwQ2JHnxf6b/jyQNns+XMXjX/OR9o+n22nebrZay6Tdozkf77YjlX/ACeS8f8AZ5SdpDz9P4/2TKJosS/Pz813gn05PL+rTWouIFmPpJVCkhPCV5Ayyctv7vi3H/IflmTCcocvD/q5PVL/AHOX0/j+azEjHlwf53/FcMnl3niOTV9Pi1XU/MUerGB0HojmHVXP7wp6vH4vs/s5CZyyNyjCH9LHLH/s4RjFBE6s8I/qyj/xz/cPZtH/ADi/L38v7FbLQuUxKhj6SksxP88j/tYcemEN5Eb/AFS+uX+lj/CgYwOZ/wB8x7zX/wA5gswEfluzPIfaa43H0Ihy70Q78n+wZ1GP9P8A2LG9d/5y58w3sCw6dBDaScAHkoZG5d2jDfCi/wCS6vg4oDkL/rH0/wCx/wB1/sUEgdP9N+IsDg03zf8AmFP68cN7qE7mgkJPpr4gu/7lP9Xkv+pmLPW16TL/AJJx/wCIj/xH+e1yzX/Sr+GP8P8AmR+n/Ys+8sf84i69qCiXWbmKzU0JRayN7g8eKg/7Jso8Wc+Q2/nZDw/7D1/7xhZPl+Px/ExT89fygj/L27s4rV3mt7iMt6j0HxqT6i7f5JRsnjMuUqP9VMUN+aHll9IvrHXY1LaZqUUNxEey1AaSGv7Ppn9n+TjhhzMe7/cM+Rp92WUkcsEbxENGygqRuCCPhI+jL6piQiMVdirsVdirsVdirsVdirsVdirsVdiqC1LVrTTIjcX0qQxDqzsFH45KMDLluyjEnk811j/nI7y3asYdP9W/nHRYEJqf9bJGMY/XKMWRiI8yAksPn78xfMjV0bSY7GA/t3Va07Hcp/wvLMf81j/gE83+5/4n/ZsPEj0Bn+Px/Eq2/wCRWp+ZbgXvn3UnvAOltASsY+n4f+FTl/l5CWTJk22ww/mx9Uv99H/Tcf8AVQZyl/Q/ox/H/FPStC8g6HoP/HMsoIDQDkqDlQeL/aOVjTRG5uX9aUp/7r6f81iIgMiApmUAydhV2KsO/MvTde1PTlsfLUgt7iaQLJOWoY46HmV/a5H/ACfiyByGHIcf+l/2XEkSp455W/L7/Cf5k2Ngt1LdSm1knmlkNCxIdfs1+zt/M+RE5n6jdn+H6U8RPPd9KZaxeZfmX+Tx89ahbT3V5JFYwrR4F6Ma1r7cvs5TMz5RoR/2SCTyDL/LPknSfLMfp6TbpCSoVmUfEQooOR75GGER35n+dJRGnzj/AM5IedbeLzTp8+mzepJYUaQK1QrK/Lh/ktxHx5fwkHfq3cn01oOtW+t2MOo2bh4Z0DqQR3FaH/KXo2SIprlGkywIdiqheWqXcMlvKKxyqUYezDifwyMhYV4p+TmnxyWOtfl3qYo9rLIorvWOWvCRf9Vvj/2S5VXHH8fVFkdw8y/NT8lZPJuiQ61dmO5u4LkRUijISSEgshuV+Hi68OLsvLl8Px8/jyuNg+rhhfp4bl6p/wA6Mv4OL+b/ALlgDXOh8Xn2nvrn5g6lb6HpleJ2SIfDFEn7bhFHFEX9v9v/AFsvlMY41/pYx/il/spSl/TkzlKhQ/H4/nvc0/5x38q+UNJlu/Nd4zsYzUlgqhqf7pQfE7L+x9rKo4smTqIf1f8AfyYCMpPPPyjbWfOJHkqzvvqunwGR6/ZZoyf2R9qVt/s/YRMtMpRHpA4j9Uv+Kl+JtokQNv8ATPWfzC/JbytpHlS6tY2jhvYozKk8jAOzoCwXk3RZPs8VyqOCf1DinL+L+bw/xcMf999TXHGTuLlTFPy3/wCcqbfS9Ij0/wAwW8013bARo0IU80UUBk5stHX/ACefPM30y3J4P5231f0otpIludv538f+d/Cv8x+cfOH5wWsmk6Ro6QaXIwHrT7kEdG9R+Kqy/wDFcTv+xmLkz4uURLJIfzf+O+mP9Wc2o5IdPX+P6Poj/VnKTN/y+/5xm0LQYIptZT69fijMWrwU/wAqJ3C+LZUccsn1E/1Y/wC+l+IsOG+b1bSvL2n6SCthbxwBiSeCgVJ+WWQwRjyCYxEeSFt9Ga11ibUIQBFdQqJfH1Izxjan+VE7K3/GNckBR8j6v85laeZarsVdirsVdirsVQ19fQ2NvJd3LCOGFGd2PQKo5Ox/1VGISA8S83/85S6Tpz2cmjUvLd5HW5BDK6qAvBo+Xw/FV/tfyZbwgc+v8Uf4f81tMAOoP9V7TpOqQaraRX9o3OCdFkRh3DDkuVkU1EU8T896x5t1Tzw/lrRb0afHHarPACBSUgfH1DVb1Oa/6iZDxjEekCf85lxEDbf+czH8rPzMl8yPPoesxG112wH7+OmzAEL60f8AkszfZ/yv2lydxmOKPX+H+KMvx/x5TR3H+l/mq3nz8mNF84Ge6ukdNQlVQk6uaoUFEKJXjx/nXj8X+t8WYsoyu4mW30x/g/q8v4v63p/2LWQe95Afzp8x+UdPl8n38TSeY45lht5W+ING/wBiSv8Aux1+FUb9rn8fxrmTHMJDjP8AD9Uf6f4/0/1+ribhIH1Hp/D+PxJP/JVl5s0Lznp2lapfy3YuLSS6u0Y1RR8aKAf2uMnp/F/NlUdRKQ36n0x/ihH6kHISN+X8P9F9BZa1uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv//T9U4q7FVKWeOKnqMFrsKkD7saSFXFDsVdirsVdirsVdirsVdirsVdirFvzI8lwec9DudGn6yLWNv5ZF3jb/gvhb/I5ZRkFixzHqj+P6SlhP5AfmE2q2J8r6tWPWdKHourdXRDwWT5r9l/9i/7eXiQmOIf534/HqZnff8A0z1/Fg7FUs8x6wui6bdamwBFtDJLQmleCl6V/wAqmISAw/8AJDz5qfnjQf0zq8McDtM6R+kGCsi0+P4yzV581+1jKQJ2Bj/W9X6IJlTJPMvnjRvLMfq6xdx247Bj8R/1Y15SH/gcsjikRdf530x/0yRAn/innl9/zkEl+RB5T0y71KZjQMYykfz5t9pchLJih9UhIj+HH65IuA5m/wCH0+ptE/MvzP8ADKbbQ7dupX95LQj9n+Vv9bKvzP8AMhf9LMeGP+k/4lAyfzY/50v+IYj5H0Dynfeb7ny/rJudY1m2BJnuyDEzJRnSOJT+zX7Lc1+1jOEso9cr/wBrx8UIw/zv+J4EyBluTf8AR+mP4/2L6HtLOG0jWG3RY41FAqAKoHso2GMMYh9IA/qsQKVZYlkUxuKqwII9jkyrzK41mfyT5lsNCEjTaZrBkESuamB4/jZY3PWKTmipH+xx+DGMidpev+bL+P8A5K/zuH+f/pmy+Lnv/Nl/F/nfznqGFreUfm9px0jU9K89xA002X0rrj1NvLVGP+UsTPy4/wCX/k5VfDLuE/TL+t/B+P6qY867/S9ShmSdFljIZGAII7g7gjLSEPL/ACLcQ+TfMOo+UJ3EdpcH6/Y8jT4ZTxuLdKn/AHVKOSL9rjyfI4okjhG/B/uP4f8AiWcYmQodP9y8/wDPXlPVrHzfqXnHy8jCXThbT8FWiTRshW6j5D7b/AzP/kcv8nKI5PClX8P+Uj/NjL+L/Tf8WxB4fd/FF755R8z23mfTINXsjWKdA1O6n9tD7q3w5lyFLIUqXnl6zvruK/u4xLNAP3XPdUNa80Q/CJPs/vPtfD8PHMeUOLny/m/w8X86X87/AHKE1y5Xl35xeRZbqEeadCrFrenjmGTYyxr8Twv/ADfD8Sf8B+1mMf3Z4hy/ykf9/wD1o/xfzof1IqDwm/8ATMp/LvztbectHg1a2ILMAsqjqsgA5of+Jf6uZchTKQp555wVvInnu08yR7adrQFpdDoFk29KX+WvwBuX/GT+bKcfpJj/AD/VH+t/F+P6SI9z2vLEIPVtNi1OznsLgVhuI3iceKuCjD/gTkJCxSvLPyCvXGl3nkzVVH1jSJZIGQ/tQuWZCQftK1X/ANhwwxPHG/8ANl/W/Hp/zWRFi/8ANef/AJp/84vSwc9S8mlmBILWjN+Mbt1/m4v/ALB/2cxQZY9j+8h/O/jj/W/n/j6msEjzTu1/KbzR5HtodZ8pXH7/ANGNrqxfdGk4j1vS/Z+19gZbDNPGPUOPF/N/jh+P6DIZCPOH83+KLOPy+/O/S/Mp+o3/APuP1WOgkgm+GrdD6Zb7S8sy4xGQcUPWP9lFs4QRcfV/vXpSMHHJdwcra12KuxV2KsI/OnVP0b5R1OWgPOBogPeX9z/xvkZJi8480/lNBf8AkjTtY08GDW9MsIJopUJDEogmeM078mdkb7XPKBcDxD/Oj/Bw8X+9/wBkgbG3qH5WecV83+X7TVuQaZ0CzAbUkUcZNu3Jvi/1WzKkykKZdgYvFfzD/L/zDpXmRvPPk5lknkjWO5t225hQB8PjyWOP4f5/jygZDiO444H/AGP4/nKJcPmlup/85Gazpo+r3WhSx3YpUO1Fr48v5a5kRz4ZcjP/AErMSgf53yTvyL+cYg0+S588Xllb3DvyijicFghFeLopb4lPw5MROTfh8P8ArHh4v9N+JM+Anpwf1jw8X+meaaL+bej+UPMOr2OnXbHQ9VV5oZYYyTBcOONUjf0+SqeXwr8P93/K+QhDhHCTD0/TK+OPD/Nl4XH+P6yBGtjUa+mX1Q/2HEjvI+qfl/5fjN1d2l9f3ZPN7y6tiwJrUMgZmWJf+G/ndsxzCGWX7zJjnI/w8UoR/q8PDxT/AM7i/wA1pqMz6pQPxlw/6VPvzH/5yL0m30T0fKUoW9mYRiqFfSUg1lp9nl+ymZIxRx/Twn+bw/R/vW4QEe4/1WGa5r2ueTILTzDpfmAaqskipNETUVb4iODfFw/Z/nxGTKP7wR4ZfTw/w/8AHmXFP+OiH1dbTieJJl6Oob7xXINBeV/n1+ZI0DTToOm/vdZ1IGGKNd2VX+B5SB7fCn+X/q5LaI4jyH4/2LMChaYfll+Utv5a8pt5bvaPJeI5umXu0g4Mqn+WOPjH/seX7WYoiZAk85/7H+b/AMU1sM8ledpPyokfyh5tV006ORvqV5xJQoxL8ZCPs8eXL/J+L/Jy/DMZBR9GUfVGX8f9RsBEv6w/2SC/OLzVpl9rXl7zBoN1HdXEF0IysZqxRiD0+1x2df8AZ4cmOWM3Lbb+iy4THm931XX7DSuH6Qnjg9VuKeowXkfAVwwiZ8gxjAy5MC/NH83PK+iadPbag0Wol1KNao6MWr0Divwr/lcWZftYTh4hU7hA/wAXq4v8z6fX/N9cf6yTi/nen/df5rxfVP8AnILyhqNnDEfLUctxbp6MUchQokYrRUcR8uPL9ngn7Xx5VLS4u/Jt5yxTl/XlDJP/AE8uJBjDz/3H+z4pMYOmSebLcTaJ5W9OSYnhNG7+nTcVAY+n8LZRKWLHyOXb+GUvF/2XDxMDLHH+ff8ASMp/7LhTfQ/+cTfM19CHvJobTluUYlj8jwxOWR+mJP8AWlGLASPcyvy7/wA4evHJy1bUfgrUrApBI8Ob/Z/4bATklyEYf1vXL/S/R/soqb8h/unr/lT8kvKvlllmsrJGnUCkstZGrSlfj+EH/VVcP5cH6icn9GVcH+k/4riQcYPP1f1v+J+lnMcSQrxQBVHYbZdCAgKiAP6vpbAKY75V8/aX5onu7bS5DI9hIIpaqQORLD4SftfYbLjGuoP9X+FlKNdzDP8AnJbyjFr/AJUmuCQtxYH142JArTaRKn+dP+GVcpkDdjp9X9X8epjTyk3UfmL8l5BckGbS5QkZO5HF14D/AJFTenhkLIPcyL2j/nH7zOPMHk+xkP8AeWyfVn77xfAn/BRem2WlZPR8DF2KuxV2KuxV2KuxV2KuxVAavrtjo8JuNRnS3iHVnYKPxyUYGXLdlGJPJ5XqP/OSemSTNZ+XbK61acbD0kIUn/Wo0n/JLGZx4vrkB/V9f/Ex/wBLxKeGPM/6X8f7njUk8yfmhrwK2unWulxP9l5m5OB7rVvi/wBaJMp/NQ/hjOf9b0R/2Xhf75HiDoJH+t+If7lW0/8AIL9JzfX/ADpfzancbHgCViHtw/aGRlLJl2J8OP8ANx/8V/x1BlKXPb+jF6Rovk7SNEUJp1rFCF6FVFf+C+1kI6eMfP8ArepiIgJ1mSydirsVdirzb87vO9/5P0+11HTyBW5RJAVqChBqC37OATo9/wCP4WUXoNldLdwR3KfZlRXHyYchhYojFXkUqg/mtGxpX9GkCvXq3TKuv4/msuj13LWLsVccVfN2pfltovmH8wptLtbdRa29sz3FK09VwSHJr9rk6ZiSx0KBlv6uaSK+LGPy51HzH+XUlzdWyyXulW1w8N5arUlCPsTBfi4cl/3Yv+o+XR1IFCe0T9Mv5sv5n/HP98y4/wCd/pv5r3LSvz88pX9ot296tuTsY5QQ6nwZQGzL8Enlw/OMf90nw+6pJP5h/wCcgtPkP6P8pRvqmoybIEU8AT0Z2P7OVy4cW8yP6sfqkggR5/6WL0zy8969hA2qBVvTGpmC/ZD0+Pj9OQB4t+X9FgTby/XE/wAN/mVZamTwt9XtzbOexkX+7B+6PK4CiR3+pkN9nrdzbR3UTQTqHjcFWUioIOxByU4CQo7sXy7rNyv5Da5cyW1jHdx3452crVDRivGSAsPiK/Z+H/VyvDw36+Lih/NP1w/nfzUxrr0SC1ebzfdP5s/Mm4e30qM1gt9wZDXaKCP7XD+dv+Hy0zOb0w9GMfVL+CP/ABUmQJny2iP4v4f+k0n8xm583eZYdQ8hWNxZBkWNWUFRUAp6gdfhVfT+3lQyQwbQlf4+nhYCQh9Jt7NoX/OMUN9xvfON9PfXrAclDkKP8jm3Jiv+rwxlLLl5ngH82P1f8RH/AEsmJMpczt/N/H/EvTvK/wCWHl3ywK6VZRxSH9sjk/8Awb8m+7Kxpo/xXk/4Z6/9j9P+xRwD3/1vx/uWVKoUUAoPbMmMQOTNdkldirsVdirsVdirsVdirsVSjzbpZ1bSLzT163EEkf8AwSlchPkr498xT6FL5Fgs7mJIfMen3BtiFUK5WrOxk8V4/D/r/wCtlccYPrj1+r+myMb9T2H/AJxZ87G60xvLF4aXFn+8hB6tC/x7f6rP/wAC/wDk5eDY26elJ3CN/wCchbZ9FuNK852lRPYXCxyEd4nrs/8Ak8vh/wBm2VfTK+8cLGPNLfKGuQ+ZvzVuNR0hw1pDYhJHTo9QKV8WV+H/AAGEjhNd/wBTIinqltrrjzTcaOd0NlFOvsQ7xv8A8EHT/gcmEVs8r/5yj0eOyXTfNcFFu7S5RCfFa80r48XH/DZVw1L3/UiPN7RpQs9Q9LXIEUyzwIFkG59M/vQlf5eR/wCCyfAAb6/SpG6a5NDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVWs1MiSq7JK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/9T1TirsVfLH/OYeqyR3+m20ErI8aO5CkihJHB9u+2GE5ROx4f6rZEkcl/5Cf85ERWlvNpvnC7kbjRoZXVnIHR0coGbj9llZv8rLL4+dD+tUOL/epPq3PCP9jxPdLD82vKt8qtBqduQ3Tk/E/wDAycWw+DLpX+bKMv8AcyXwz5fOP62Q2Wt2N9/vJcRTf6jq3/ETkJY5R5g/JgYEd6j5g8zad5ftzd6rOkEI7safcO+CMDLksYkvFNf/AOcu9Gs5/R061luYwwBkJCildyB9rplnDAcz/pQ2cMep/wBK9G/Lv84tC8+epHpUjLPF9qKUBXp/MFq1VyEoVuCJf1WBjW43Z1kGDsVdirsVdirsVfNn56W03kjzlpfnLTBx+sMI5wu3Ij4SHp9r1IzxyrH6CR/O9X/FJia+L6PhlEqLIvRgCPpFctQvYhRU9MVeP/nz+aOhadod/oclyr6hcQmNYUqxq4oC3H4QP9bJHGavYfH1f6X6mwQ2vk8m/KS687ebNGt/Kuhg6ZpEJf1b4KQzBiXMaP8AD8XJuPGP4v534ZT+YEPTACeX+l9MP+J/zuKX81j4lbR+r+d/N/4n/dfzHt/lT8hPLeglLiaE316tCZrljIeXdlRvgTf+VcrlCWTfJKWT+jfo/wBL/F/n8TWRxfVZeiwW0duvCFFRfBRQfhk44xHkAEhWy1L5j/LfT5IPzg1T1lClRK49w4BUj/Yn/iWVA382T6cy1i7FXm355+UZdc0Zb+w+HUdMkFzAw61Td0/2S/8ADccqmeE8Xd9X9VQa3Zl5U1yPXdLttTiIIniVjTpWnxj/AGLVXLiEkUitX0qDVbSawul5Qzo0bj2YUOVyjxCmJYb+U2oGC1n8sXHL6zo8no1c1LxH47aX/kX+7/yeGGJ4hfX6Zf1oszvu8J/OiG680edboXPM6doqQ+oENGEblfUKH+b4+WQlOuXov08S3/m/0mS6n5Q1r8qpk8w6HcvfaHJx+swymrCM/wDCn4T9pfjXEZZfTk9cf50Y/wC6/HCgSPKW6L8g+dLT8vb7UrK/DQaVcxnUbNWG9GHKSFK/tfsouTw1IcP8w/V/Q/nMgARX83/cpR5+/wCcq7HVNEuLXQ0uLW/koqO1NgT8ZDIdm45kUI7giXw/4v0shQ3+p6n+T35oaZ5n0Szja7jbUliCSxs49Qsvw8uLHk3L7XLInHIji5j+d/0j9KmBO4/2LP8AUbiO3tpZpjSJEYtXwA3yqmvm8l/5xjtQNHvbyIcba4vZGiH+QOn68hHbZSyf87vK48xeV7qFBWeACeEjqHj+MU/1l5Lgntv3Iukw/KzzSPM/l2z1ImsrRhJO5Dp8D192pyy4spBluBi8X/NjSb7yhrEf5h6InqBFEd/CDTnH09T/AGC/8DxV/wBnKoy4JUfpn/sZfj8epMdj73pnk/zbZea9Oi1XTX5wyjp3U/tI/gy5fKNJlGk8yLFhnnX8pfL/AJw+PUrcfWKUE0fwuP8AZDr/ALLMY4t7iTjP9H6f86P/AEixMXnX/Kt/PnkiX1fKmojUbFR/vLdHeg6RqXPECn7SyxZcNTOO04+J/Sj9f/FcX/K1mMkuRHH/ALr8f6ZGxfn9qelM0Pmjy/e2rps0kIMiH3BIReP+rK+AanBLYS4Jf6nk4eP/ADt4z/6VLx4+dmH82Mv+PcH+4TnSf+ckfJ+oErLcPaMO08ZU/wDCepmX4V/SYT/qn/ixFlw2LBBTYfnl5OIBGpw0P+sPvquR8GXl/porwsF/PX80vLeq+WLjT7C+innkaMhENSQrq5Ht0yGTEY89vikRTLyt/wA5EeTX0e3ju7g2zJEsTROjMRxHCnwBuQ/ysn4FjnE/1pRhL/Szkph7vm8v/Ln86dH8iavqtjaLLeaZdyiW1EKEHka/u1STgyrvx+z/AC5XCIiKma4P4vq/3yBVbmq/z3o8n51ebLsB9N8s3AVhUGZjuPlSPKzqcI6zmP50Y/8AEjL/ALpj4mP+mfh/x2X+6eefmV5i/MNLy11XVC+j2M7rbhInqELdWcKW+Jv5uWSjqgdoAj+b4kfrZRy1tHb+s9HsP+ccLC843GvahdaizfEavRTXpRfi+HKZeLPnLh/qhgZSPM/5sWX6R+T3lDSUMcFhA3LqZAHJ/wCRnLIflAfq45/1pSj/ALjhYjH72F/n1+W9pDoaaz5ftIre70yVZwYUCEoD8f2Bvx+18WDw44z7/TLi9X+m4kgUXpHkXzJaebtFttUgCss0Y5ggbMBR1I/1svlijyoV7mco0oecfy00fzPp8un3FvGnqjZ1UBlbswIGY50sRvERhL+c1GIfI/n3ytJ5Vki8s6pYq06yh0u4a85YRXkOC/tf5WTjIHf1Y5D6oyl+6/rtgI93+5ZXD5z1e3mjtPIs+oqSBVL3iY1Hu8vxKq/7FMyBnMOco6n+bGOOUZf7D1TbRKtr8T+jwf7/AOtU0fzNYeQ9WuNW80zw6vr80ZaGeOT1UhahpHIgCsnxUXlGz8U+xxwGEshvIJYq+nHLhjGX+llOX+nhwf0uJBiSbl6f6Pp/4rih/pOFmWjf85b2N3ZRiawnm1M7PFAPgrXbgzFpPiH7PFsuJxx3MuAf6aX+9igiA5mvx/Wikv5hfmT5x1nSpL2fQY4dJQVP1leTUNQHKv8AEvH/AFFzElmwTNUZ/wBL1R/0k48P++Y8UDtRP9KXF/xxJPJ//OPPmHV1t9ftLi1slcCWIxAmld1IAHwsuV8UgfTGRH9Kf/FMATE/tZj5w/5xuludLuL7UdUutQvYYmeMN9kOAW2DFtv+Byc8mU7yMQB/DEf9IspTkeZ2/m0rfkx+TnlbzB5etNXu7US3LgiTkzULKSDVa8cqnhlI3xS38/8AjvExMd+r1rSfy08uaQGNjp9vEzg1IjWtD1HKnKn+TiNLHrc/60pS/wBLxIMAWFfljcx+UNW1byldSLHZwOLq1LkKBHKfjTkfh4rJ9jMnEDIVzr0/0pNgBkPciPOf/ORPl3y+fq9m51C7NQI4PiFfd/s/8DmScfDvMiH+6ZmFfVs83i/OX8y/MMpGiaSI4pDxRnjJC+5diq/8FmOdXhjsPWf63FKX+bCP++YeLAchaA078xfPPkXzNbN56eQ2F2QrrRTGA237sp8IMdOX2uWThqRl9NRh/RrhlH/ff6ZmMnF6dh/N2/E/9M+p4pUnQPGQyOAQfEHGmovC/J9uv5ffmFeaGxpYa4vrwk9BICzcOXf4mdeP+WuV4t7B5j/cpHc9T/MDyNa+ddLk0i9d443IIZDQgjp8/wDVxlf8J4fx9KN+j5v8kaa2mweZ/wAt7qpcxySQFupKAsCo/wApOLZG+KF9yQbHuRH/ADh75t+qX155dnNBOoljqT9pNnAX7K8kPL/Yrl43HuZdPc+rsiwdhV2KuxV2KuxV2KqNxcR28bTTMEjQEsx2AA8Til5FqP5132v3LaV5Fsmu5AxU3Um0Ip1IP7WM8kMfP1y/1OLIkR5+r+jFdp35ENq9yuq+d7yTUbmvIQglYV/yQvdf9Xh/ssx5HJl2P7uP82P1f6f/AKSYSkZeX9GL1LS9FstKiEGnwRwRDosahR/wuGGGMOQ/zv4v9NL1IEQEfl6XYq7FWiQOuNK3irsVQerXb2dpLcRLzeNCwXxIFaYLpQ8Z/NfzRa+cPy9bVoRQ+olUPVZFahTIzA6MyGVX/wCZ+n+TvL9jJqJ53klvEEgj3djxAFB/L/lZZAWLPpioj1Oye/l75g1fXbFr3WrP6iztWKMmrcD9kv8AytlYyRn9N1/Ol/F/VYkg8r/zmA+c/MkPljztLqlwoNNNPAdywJon+ywCr36Moi0kuvMHnXyqlr5u1m69awupVEtpSgjRz8HH/K44Y6gyNGMRjl9Mv41E72of7979a3KXUSTx7pIoZfkdxk2HJq6uktYnuJTxSNSzE+AFcVG7548m+cJtDbUvOwsp75dTuTHEsQqQqHbmftKrU/lbKPEhGXrPAB/F+OGDIyiPq2SCy81ecbzzRKNItP0M+tgbXSkiqDj6ic0Xk3H/ACcYZoUeD9/+P63Bw/6ZIyDp6/634/4t6H5S/wCca9PtLt9T8wyjUriUEsrIFTmTUuFGVeHKW0uGEf5uPij/ALL0/wC5aSDLnt/Rj6XqWi+U9L0MFdMtYrcH+RQD9+WQwRhv1/nS9UkiICcZkMnmP5/aO1xoQ1WDa502VLhGHUBT8f8AwuVT2IKRsWeeXNWj1jTrfUYjVZ41evzG/wDw2WqRTG/zU8hr5t0zjDRb61YTW7kVo678f9Vvs5Rkj151/D/Pj/NYkPIvy+/Jq785akfM/nCYTxK5C2w2AZDx9ORPsoq/yr9rIylLJsPRi/o/73/fLImXlH+i+i7SyhtIxFboscagABQAAB8ssjjjHkAFApEZal2KuxV2KqEl5DFIIndVkbopYVPyHU4aKaV8CHYq7FXYqoXd3FaRme4dY413LMQAB7k4QLSBfJgf5hfnDYeUbK21NFF5bTzekzRODxFCSfdv8nJcIialcf5rZwUal6Ud5l/NPTNF0OLzGoe6trjj6SxULPy8FYr9n9rAQI/V6a/iYiIvfYD+L8cKWaf+d+janoya1YpNLJLL6CWwUeq0n++wvLj/AJXLl9nGQiNyfSPVxVL/AHP878cSeEDe/R/O/wCO/wA58/8A5n6v5X1a9vLy/sLzT9fKlRbGhjaSlElc0Vq/6vwtmOMcT6oS9H1cMo8EuP8A3n9LjYAR5gn+rSfnSJvy3tvLfm6clJOPo3aHYlHJYVH+SjY4rJv+GaYG/i9e8++XU/NTy8g0a9MVtIS9QtVlC14q3L4lXl+1hy8Q+nhP87i/3skSJjyosQ/5xZsrDTbK+sZIxHrFvO0c5P2ioPwdf2eQb/hcYQv19/p/qrXVkNxr1tb/AJkMssqRpHpwDMzBRVm5KCWPtlkcZkdgZf1RxM4xJG1oH/nIu90rW/Kc6W93byTwskqKsqMSQdwArcvs5LJgnHciQr+jJBgR0I+DLfyQuTceT9MZyC4hoaezNT/hciEFnWFi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq/wD/1fVOKuxVi3m/8udF82ANqtsk0qKVRzWoqPbr/ssx54uLf1D+qWJi+NRDffk/50Vp1+CGTv8AZkhY8f8AiOHGRkFSF/wyjJsgX2Yvl3QPNFhFcPaQT20qh0qikUYdV22OQOlgOQ4P6vo/3LWcYD5+/PTQvKfkqL1PL08lprSsCsUMhoN9y614pmTCGTHuJS4f5svX/wAfbYxMd7IH815jaxecPzUu44nMt80QC1OyKPFz9lchl1Nbf7GP8ayyf9Ixeh/l/wD84rXeozXS+Zme2jiIWMx0+L+Yiv7P+VmMJyn9Po/ncUf9i07nye6/l7+TGheRJnu9KWQ3EiBGaRgxpWu2y0rlsIGO8jx/CMY/j/OSAz7Mhk7FXYq7FXYq7FUt1nQLDWo1h1KFJ0Rg6hwCAw6MPfKp4xPmpFpiAAMsVj/njyw/mfTJNLS5ks/VIrJF9qgPxL/ssBMhvHn/AEk2Ry2Y5oH5E+VtIInW1+sXQXiZZ2LsdqcqOeIP+xzGlhM95ylk/rH0/wCx9X+mlJhV87l/WSr8greXSYtV8vyigsL1wngFk+NePenHjl8DY/H+6bOj1nLGLsVdir53/NaO68q+eoNb0thHPqFo6KTTj6iA/b5fCeS5TE8JPX+Lh/nJi940DUG1Cwt7x6Bpo0YgdASByA/2WXKdkwxQtdA4KsKg7HAQryryRq8HkzVNT8talKsNrETd2zOQFEUhrIoY/wAkn7OOIGQr+Z6f83+FnEcQ9zNvLPn3RPMxcaPdxXLRmjBGBI9+P2stljMeaygQxjztI/lrzFYeYo9rW6IsrvrQBjWCQ0/lf4cxo7Sr+f8A7qLGPcwPzTFH5W/MCZ9UIGk+YrcwM7dA9OIBP2V+IDBGPETH/OimO+zFfNP5sML/AEvyzfGun20iw3UYJ+LgwSJy/wC0vDg2Wj1CuXF/F/F/SbOld/8Ap2cf85M+U7bUbCx1105QWkqrLx2rC5FfiHRcpMaNcr9LTTC/L35E6T+YF7c6jpXKw0SMCK3Zas0jD7cnx9VyoxlH0xN19Uper/N9LEith0/il6nl/n/8pdT8k6yumyNWGYj0LhiEVv8AZseKMv8AlNl2LMbof3v82P1f5n0sgS9Y1HXNY8s+SB5d1G8+s6tqkgit0EglZImPE/vEMvJG/Y+LLzklK5TFV/OHDKX9bibTxDeVj+t9T3vyL5et/KGgWunEhFgjHNmNByPxOWJ/yjleOJ97UAlHnX85fLPliN4726SWfj/cxkMzV7bfD8WZHgmvV6P63/EtnB37PGf+cffzHu4fMkvl30xb6devJcRxuCGUtugT/JbKomJjQ3/mytAII26PqTFgxL8yvIEHnnSX0meV4KkMroe46cl/bX/JyufFXpPCf9jL+jJG/R89eUdR1z8h9Vaw12MzaJdN/eIKjbZZU/lbj9uNsOHKJ+iXol+P9NFlCQOx9L6i0TW7XWrSPULCQS28yhlYdwcslGlIpMMCHYq0yhtjuMBFqkuo+TtH1I8r2zgmY92jBP6sxvy0B0Ef6vpa/DiTdBLP+VS+VQSRptuCRQ0QdMP5ePn/AKaSTAFDwfk35St25x6ZByPiCf1nB+WHXil/Wkf96pgJfgoibyR5Ttf3s1lZJx7tGg/WMMdFHoJ/6fJ/xTKOK+QJ/wBNJJdY0v8AL2zeC9vV02BoXDROpRCG7f3RXkP8lvgy4aAjpOH+dKEf9kW38vLu4f637r/iYyeVf85Bed7CK5i1by9rzrfxqFFvbsWQiv2+aH01/wAr7WXgZcX83gP8Mvq/0vq4v87hZgziOYr+a8z8y/nf5g80aAdJ1VIpo1dW9fYSVBquyn/huOQnOMulS/nR+hiSO7/O/wCOM/8Ayx0vVvP+mpNe+ZXtvTHpi3RgGUL8K13X9nDLJm/gEBH+dX1f7GSmU+lcLOJP+cZ1mjZpNavpJCCUJcgcqbE7ttlByZx/EI/0Yxl/xUWvxMg/i/3X/FM6/LXyfqHl3QjpPmK6F89XqzEsojPROThW48f5slxSyfVzPp/HCpJlz3fO+m+c7L8pPOV4ljc/WtGkDEQwsGFTukdfsq0bftL+xlmMSiOCe3D/ADvx9X9ZnEECpM2sv+cu4bpH9LSZ3lXdQjchTxfinw5KRxx5y4f638X2qeHrf/FMRt/zI80/mJrB1Ty3pkYvLeMxB2owQE1r8fwq/wDlZjZpY4myDk/mxri/2MfqYylGPQljGu/lx5v1HzLbaT5ilAvNRFVLPVKL2KxfD8P8uCOcgekGH9GP7pPiEju/o/S9d0H8o4PJXCTXxoi2LECR543d2HcRvcSLGrf6qf7DIDAcv8Mz/S8aXo/zMWOEP9N/pmuMDLar/pcUv+JjBV/InUtF0PUta0Y3FuqLdCSBi6AMjVoIzXiQv2eK5dDSmX8PFOHp+nilH/fNvhnuO3k9g1n9Ha7Yz6c0sUiTxshAdT1BHY5ZkwyrkR8EeHLuPyYP/wA4738h0OXR7lqzabcSQEHsoNY/+FyMZcQQd3oWta1p+nQsdSnjgjKkEuwXYjfrkxjM+W6YwMuT5k8gfnc/lNLzQNGsJNW/0uSSExMacXPgiSsf+ByHHDHH94ar+rw/6eUluMfq/wB7/uv+Opp5w/PL8wrTT3vX0pdKtwQPVlU8qt0CCYryb/VifDHU4pH0CU/63FKP+mhGEf8AZKJxPIS/zuL/AImCzyJ+R9/+YMCeZ/OF9c+rcA0j+ySn7G7dI2+0q8FyiWWeQ+gxhH6eKI/3H8LXKcpcjX9X8cKYeb7zQ/yZ1G0h03TLeeKQAzSs3KZd9zQ/Z+H4kwwwQJ9fHO/4pfR/pUxgOvEf6T3Xyv5n0/zLZJqOlyCWCQA1HUezDscvOPg2/wByylGmIfn75QXzL5VukROdzbL60W24Kbmn+xyqYrfuYFF/kh5mHmLypY3TGsscfovX+ZPg/wCI0y1nJKvz78my6xpK6zpx46lpLfWIiOpC7uv/AAPxZTL0ni7vq/qsLrd5PdfmDqk/mry/5ja4kXTr9EjeMEhOQPCaMqvw8mf4svjlIuPT6m7i6M4/NLSYPL/nbR/NDLSG7Y2lxTuWHFCf9ieOUCO9fzmuIfOl3eSeQPPMtxGOIs7tm49KpWtP+BOTxHb/AGLKL7v0fVIdVtIb+2PKKdA6n2YcssOzEikbgQ7FXYq7FXm3mz83Bofmax8qwWrXMt3QyOpPwKejBArcv8r7OG4gb2zAAG9/j/df7Fl/mvzbp/layfUtVlEUCePUn+VR+02GMOLkiMbeM6fNrH52XXqyGTT/ACtESOKkhp6H9o/y5XPN/Bj/AM7J/wAQgzraP+dJ7doPl+y0G0TT9OiWGCMUVVH6/E5XDGI/8V/FJiBSZZcl2KuxV5zqX5rPYec4PJ8lv+7uIwyy1NakE9OnHbCDGuvF/sWYAp6NgYPNvzT/AC81bzUyTafqUllHAhIjiqCz7kVdWXKjkyQ+jh/pcX1f7lImY8tkJ/zj35tvdd0aW21aQy3llM0LsxqxA6cst4uPfvZS33eqYsFrqHBVtwcBCvkD81dL1PSdYuPJOkAyW19MtzEg7Mfi4j/ZZTGfDGj0SJUHsn5Y/khHpPpat5kc32qqo48zVYwB8Kop7rkCJZd57R/hx/8AFMSTLm9dzJS+ZP8AnJ+N012yaNuDSxcVNKgHl1OVHmzip/m3ZedtL8tenq91Be6bJ6dSiBWQ9UA2+Lpg8W9pREP5soyUTvmAP6r0T8ovzl0PWLG30mWQ2t9DGsZSbblxFKox+HMoQ4hcTx/7pPDe49SP/PzzhDonle4VHHr3Y9GMA7nl1p/schVIESE8/KfTF07yxYW6xmE+krMp61O5J/1spgAR33/OYpL+dVk9va2nmK3H77TJ0kJHXgTSQfLjjLYg/wCasTu9Ds7pbmGOdPsyKGHyIrlyDsr4q7FUu8waaup6fcWLCvrRMn3jb8chMWFYF/zj/qTS6AdMnJ9fTpnt3B3IAPwf8LhibFsi9OyTFSigSEERqFqSTTxPU5AREeSquTV2KuxV2KuxV4h/zkfpRsm03zTByWS0uUSRgaDgTy3/AByHEYnr/V/hZRO72m0uFuYUnT7Mihh9Irk2KtirsVdiryf/AJybSV/J0/olhSWMtx8K/FX/ACcgZV5JGz58vPJyXWoWXlXQruO6tNR4TEKSxifhxfmfsrkJccB6v83+n/mJIIG/+azb8rLjW013T/JGo29ItIlmkZip3UghSSfh4/F8GDxIzFdT6Zf9IqJgjzZx5c/ICbRPOB1yG4X9Do7TxwVPISt/kU9PivxfFy55CJkPSfpH8X9H+r9X+9YgkbM88/eZtA8t2j6prAhd4h8KkKXZv2VUH4stOkjM8Uoj+tIJ8Li3I/zny55h822/nprrUfMUkzzMhWys4FNIzX4Hf+b4f8nJTlfUY8Y/2bOXv4Is6/K/zx548xaVBo3ly2ht4LMei9zJ0BHT4W6N/kqj4PGjDYRlOX+w/H+cvGB0v/cL9f8A+cc/NV562spqcb6tOf3ipWNXHhzUKvL/AF04/wCVlcc2SJsR4L/hxz9X4/5KsPElHlt/VPD+P9Mm/wCW3/OL9raxNeecD9bu5OkSuwVPm6FTI3/C4DLJmNyMof53HOf9aUuPh/zJMSTLn/x7/TM/j/Ijycilf0dGQetSxP4nAcF/xZP9PL9bWcY75f6eX/FJloH5Y6PoEqTaSklvwP2Uc8T/AJJQ7EZbGJgKEpkfzZS44/7JnEGPWUv6x4mX5aydirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf/9b1TirsVdirwn/nKf8AL2LWtF/TkIAu7Ib9PijJ+IeNVyiUalY/zlAeEeWP+cgfMGhaCvluxdUKsQs53ZEP7CV+Ef62ZgmALq20S+JZH+U35FX/AJ/nOua7I62TNyLtXnKa1PDl9lf8rMGeSWQ1H/Ol/N/qNUpEvrTy75Y0/wAuWq2OlQrBCo6KOvuT3OThiEP+K/iQBSbZcl2KuxV2KuxV2KuxV2KuxV2KuxV2KvNEtx5f8+NKV/c61b7Me0sJ3Qf6yHllUBuQf60WQ5PS8tYuxV2KvHv+cl9LD6Lbauu0lhdRsCBU8WNHyqXO/wDNSHpPlaFbfT4okAWNVHDj4MOQ7t44w+5Cj5psNYvIUXQ7xLOZWqxeISBh/LRvs/6y5YZGPIRn/RkZQ/2UVB9x+bzr8v8A83dWuPM0/kzzXBHBeovKF46gOB7Mf21+JeOSjOOQWBwfzosyRLls87/PzSrzzN5qZpY2Gk6VHCtwyGjcJTydv8pd/wDY5QclbDYz9PF/xSB9/wDEl/5o/ljB+Vzaf5t8pzyiEyoGVmrUn4l3XjVGWquuOMzxmibv/M/0yxJiX0pq+jr5r0JrS7HFrqEGv8rkckcf6r/FhmOIbf1osWJ6Roth+ZflkaX5hjLXNoxglO4dJYjw9RD9pWZeLYJx4wJDb+KMopkL35PGPPH5CQeXfrsccz3E5t/rVs79f3bfvozT4Wbi3LKuKd+qjX83+OMmIs8+jKL3zxd/mhpVn5N0Ffimt0N9OR8MQA2j/wBZmXMnJIQHfI/TFsnQ87eh/kETbeWk02YcJrCWSCQHY1VjufDkvxYIbix1YrPzR81+RprN9O803EMyg/3SNylDeKCL94jf5Xwr/Nlk9KZbn93/ADZfR/uvr/q8MmXhE8/T/S/H/EvFPKg0q21QXvkDQ7zU5F/u5bxqRRnxTiOP/BS88xZHHA1OZzEfTjxjh/0/p4/9hCDAmA5mWSv4Y8P/ABP+64Geal+WHnvz+OPmm/Swsya/V7fffsDT4W/2Tvlh1M5bQj4f9Kf1f7H1f7JTkP8ACBD8fj+JlXlD/nHjyv5d4zzxG9uhQmW4PLcdwv2VyrwpTNzJn/R/h/48x4b57sU/PvQB5f1jS/PFmOCW80cU5UdFB2O3+RyXLIx4JVyEmcRR7re7Wd3HeQpcQkNHIoZSO4IqMuql5IjFCW67oFlr1q9hqMSzW8goysK/d4ZVPGJc/wDTfxRQRbwpTqf5Iam6pHJd+Vblw21WaA9/+B/4fDjygeif+bJnGXSX+bJ6/oH5leX9eRHsL2Fy4BClgGFf5kOZRwSAvmP50WXhy5pvea9YWMfrXdzFFGP2ndQPvJyMccpcgfkiMCeVsB8y/wDOQ/lPRG9Jbk3sx/YtQJKf7Oqx/wDAuzYTir6jGHx9X+ljxcP+fwp4K5kR/wBl+P8AO4Ugh/Ojzbrb10Hy9J6J+y9wSv0nl6Xw/wCryyj8zh6ceT+lj+n/AHMo/wCzY8cKocRP+x/H+cikl/NDWnoyWmmQnbY8mHvvyb/hsidT0hA/1sn44EDJ3R/0y+b8ofMuqMJNV16UbbiIED6N1xOfN04Ifj+rJfEly2A/H4+pXj/5xw0ORhLqFxd3UncvIP6M3/DZAjLLYzP+aP8AijOP+xYkyPM/j/P4mAfmP/zj2LzVbPSPLVmYLR1L3F47u4Wh4lKMePLj9lVXk3+plO+Pa55JH6eIR4P9jGCBsOsv63/HYst07/nE3yjbwqlyJ7iQbs5kK1P+qnFRkjimeciD/REeH/ZxnL/ZsaJ6/cj0/wCcXPJiNyEEvyMrUx8GX84/KKTH3vJ7b8ktGh85X/ly5mltIhELi0kDADjsXBrx5ca5ZDj/AIZcMh/smcQehqmUaj/zkJZ/l7w0C3lGtLAhUSJVeJGyK7sZFl/ymVsyogj+82l/RPFxf1uLh4P9m3Efzv8AY/75hH6Z/MH86bk2tozWum1JYrWOFR4O4+KZv8n4v9jlU9XwemH1fzY/X/nz/hj/AKT/ADmBy1tHb8fxS/H9R6H5Q/5xG0fTyJteuHvpRvwSsafTu0jf8H/scxeHJPmRj/qeuf8Ap5x/3Mf85p3PP0/1f+K/6Rev6T5B0XR7JtN0+2jhgdSp4gVow4t8X2skNPEecv50vVJIiHiP5F6Snkzzzq/luQsodeUPLbkqmoP+V8LZbiPEPd9TOO49zO/zo0i7iutJ8y6fC80unXIMoQVb0m2c8R8RC/ayMpCBuW1+lQQOae+f/wArtI/MKK3/AEv6oEHxJ6b8T8Q3DAhv+asM4yl9J4PhGX4/HpYke8PNvMv/ADjZ5G0hEvbu8lsYIh8fKUfGfH4xyr+zxjyMMOU/TLb+LijH0/50eCMf8/iWOOR5X/W9P+69MXmPmGXyMrG08qw6jd3Q2DRyNxJrsf2mZf8AgMmYnHvLLL/Sx/3fDH/fNlcPOR/zeFAeXfKPnqDUV/QUV3p6XbgF3JIBp9uQt/xtkI60DYHjJ/nR+uf+l4GEc9cjxf1ovTdP/wCceNa1DWI7jznOdVtnFGdJSpQ/a+JHHxL+z+7xllnk2PFj/q8M4/7r0/6SamZlz2/q8P4/2L27yx5B0TyuS2j2qW7MoVmWtSB05E4wwCO+5/repiI1/a8o8+27fmX5yi8rxuBpWlATXRFCGev92ff/AHX/AMFk8hP0jnP/AHLaeVd70PXvzW8reVU+r3V7ErRKAIozyYAbBaJ8IP8Aksy5lRwEDf0D+l6f9j9X+xZeEevp/rfjifNf55/mB5Y833lvq2htL9eRgknNOKsg6Emv2l+z/q5TLHwnmJ/0Y/71hVef9Fnn5VRSeRfOn6CQsNN1a3E0APQNTnt9zrleKdij/Co3Fdz6KngWeNoZBVXBUj2Iocmd2LxP/nHu6bR9R1ryhMfis7hpIx/ksSp4jw5Dl8OCG49zPo9sngS4jaGQVRwVI9iKHCRbB8l3/k+5/Ruu+Xoq/WdBuheWp6HgxJfgP5eI9TKOIgCX8w8Mk3t7nsn1ZPzW8iwSRkLeMiujfyzx/wDN3w5dlH8Q6epZB84fmlpU3mLW/rLRmG8ltOTJuCZIAY5x0+L+7duWViXUf1v9Ot3yfQP/ADi/5qXV/KkVkSTPYuYW6bD7UfflTicuJH4EmRHV7HhYOxV2KuxV4f5utm0r80tJ1B+PpX0LRVYbAqDsp/n2/wCGyoDf/ZJG6t53/JfUvO/m1L/WZ1Pl+BVKQqxqSB8ScKcRyb4mblkZznL0CxH+f6f+kuL/ADWPEeXR7Bp2nwadAlpaII4YwFVVFAAMsjERFBQFmr6gNOtJr1lLLBG0hVepCgtRffJbDmkMa/K/8xbbz5ph1K2QxMkjRuh3II36/wCUp5ZZIDpuykAOTMsgxdirwnTIE1/82bm7BrHptuF/2YASn/EsrPNJD3bLEJddeYLC0uo9PuJkS6nBMcZIDNT+UZIRJ3ZCJLwG483w/lJ5y1T6/FJJZakFmiESgnkT034r1+Fsqw1vEmuFRR57Mi0j/nI4tfQQa9pc+mWd2aQzyEkEk0BYFE2/1eWTjkx5NoS4iP6v/FKOGXL8fj/Oe1qwcchuDixeP/n/AGyafJpXmJBSa2u0VnG3wsehOUkVK2UebNbv8z9Asb+PSLq7RLyQLRT4t9kFvsgtmTHGSL2+fqZDGSywEEVGQa3gn/OTViZJ7CbjUmOZQaV3UcxlE9iyCX+fvNkfmPyJpUcUqmS4uIIZBWpBX4Wr/LlkwQzr7XqnmD8ptD8xWKW93AqSqihZowFcEDqrDMcYAN4+if8AOj/vmjhrcbPM/LP/ADjVdDVvrHmC8a5063esERYsWA6c+X2P9XJGeTJ6Zbfzpfzv6rIykeb6BiiWJQiCiqAAPlmQBSoLXNKj1exnsJhVJ42jNfcUB/2J+LIzFilYt+T2sPf6GlrcH/SbF2tpQeoMZ4rX/WX4sMTYtlLffvZzkmLsVdirxzSYG8sfmRPZxsEtNYtzOFPQyKd+PgdnyrHtY6BkOT2PLWLsVdirsVSDzJ520jy0I21i6jtvWPFOdak/JQzf7L7OTjAy5V/nSEP90yjAy5f8T/uk5t7mO4jWaFg8bgFWU1BB6UI7ZCqQRStihin5o+XE8w+XL6wcVYws6f6yDmlPu45Vk5e71IeT6J+ew0ryXYrCouNdkrbRQCpJKHgJHC/FT7P+s2X2AOKX0txA+o8kv1+2/MTyd5dHmZtSZ5y4lubZ1D8FYigTmG4hfhV1j4ccpjqZE7xj4cvp/nx/r/R9TAZD3RYh5V80+bfOV1qfmHRtRmS6sis4suTMjoa1RErx4rT+745OeeUO6WP+L+h/sfx9bI5CP6v81O7n/nKPX9TuoF0OzVhFGGuYSpZmI2k4n7Sov+TlksuOHPcH+Li4eH/e/wCmQTEebNdU/wCcivL+saBLGqE6lcJ6QtJFr8b/AAfE32eCk8uWCeOMhdgx/wBkngHPmP8AZKGiXP5f/lc31iFxNqroARGfUYEj4kTj8MSs382VQ0xHqmeH+bGX8P8AUh9ckDFXPb+si7f80vNvmr995W0cRQvsLi47gd6kxRj/AGLS/wCplZyYYyuIOTJ9PFGP+xlwxn/s8uJhxwidgZ/j6f5v/S2KA/wb5w8w6gdJ8x61LBIY/VKW0biMx1CsvqIltbs+/wBnjP8A5eSGqnLaPBiP82X97H+l6eKXD/1sMhkPThh/Nj/H/seH0/8AJWTDNT/KjT4PPen+VHnlu7d0Mtx6hAPRnCDgF+HiEyBM5D1G5H+KPF/v5S/3SDZG76T0fyVo+jKFsLSKLiAAQort74I6eA8/63qa+APMvI3Hyh5+1Ly89Ut9SUXVuOi16uAPH7S/7DLMQ2r+Y2Dce57VlqHYq7FXYq7FXYq7FXYq7FXYq7FWgMVbxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KoDRdbtdZtlvrF/UgcsAw7lSUb/AIZcTskikfih2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv/1/VOBXYgqx/zt5zsfJ2mSavqRIhjoKLuWY/ZRf8AKbJAX5MgLfE35yfnPcfmBeLJw+r2kA4xR1qSCd2fxZssMukb/pf0v81mSBsGB6TcwwXcNzcp6sMbqXSpAYA7iq/F9nKKvZrD7n8r/nn5KmsoY4L6K2ARQImqCu32OnH4cuhpiBUaPxi2eGem7MtP856NqK87O8hlAFfhcE0G/StcZYpR5hBxkJR5V/Nzy35nna0027RrhSR6bfCxp3QN9of6uE4iBe0v6p4l4CnZ8z6eNSXRPVBvmjMvpgEniCFLEj4V3P7WVGNC+/8A2X9Vjw7WnGLF55+Yn526B5HUx3cvr3lNoIiC3+zP2U/2WXRxbXL0D/Zf5sGwQ6n0/j+a8m0T8y/P/wCat06eWgmmafExDSkV77Au32n4/srlM9QIemMeOX9L8elBmBsBZ/pPXPy0h8z6fPd6X5mlW8jh9NoboChfmDzQj/isrkBl49iOCY+rh+j+iw4r8j/sXoGTV2KuxV2KuxV2KsE/N7TJ5dJXWNPB+u6VILqMDaqp/fx/JoueUyPCRLu+r+rJINMs0LV4dYsYNRtjyhuI1kU+zCuXnZSKR+BDsVSDz1oA8waJeaWRyaaFgo/ywOUf/DgZXk5e71KkP5LeYBrnlq1ndq3EKmCYcieLxniVYN0bjxb+bjxyznv/AMT/AL1nLdnuLB5H+ef5cXGsQxeZNAHDXNNYPGV+06g1Mfuy/sf8DlEj4Z4x/nR/3yAeE3/plH8vPOWgeevXvL6UW+pS2otLy0kIX7JblIFf7X2+Kt+zlpwcY4o+rHP+b/ObDG9x6ol5cbrUfP2u6b5FhAltNDnZp5VaqPHE4VHJXl/utRH/AK75CcqiAb8SXplH8f6ZZGtu/wCp9YogRQq7AAAfRlgYMCdf8LeafUJC6frYoa9FukG3/SRCP+DTIw2Jj3+qP++j/vmUd9v87/inj/8AzkV+cFhd3EWiaPITcWzsJbhNwocGKSKPj9v4T8eWSjw7/wAX83/imVcLG/yO84a1pUF1o/lTSxdXsjh3nkJHFDRY+Y7L1bKfExw9UuKcj6eGP0seKI53L+qyKLyJ5iu/NS6V5p1F7NNYRrkpaMVV3QcTDX7PNVHL9r4MEM8zYgPB/i9Xr9P878SgkTl09D2Tyv8Akl5W8u0kt7NZ5x/u24/esT4/H8Kn/VVcqODiNzMsn9b6f9JH6v8AP4mkwvnv/WZxDCkK8I1CqOwFB+GXQxiAoAR/qjhZ8lXLVSzXNCttbtWsr0Fom8GKkHsQynkDkCL5Ex/pRV8xfnV5G8weTbCb6rqT3WhzkK0U7gupJ5KKP8TfF+0vx4BlmfTMcf8ANyV+OGX+xZiUqo7/ANJ6R/zix5g1HVvLPo35V4rRzFC/KrcR+y6/s8Psp/k5aZX0I/pfwyQTf/FfzntGBi7FVG5tYrqMwzqHjYUKsAQR7g5CUBIUd0PMNe/5xu8pas/qpC9q53/cNx38aENlAxSh9EpD+t6v9L9KAK5Jdp//ADix5XglE129zdAD7EklF/4QK3/DYZRyz+uZ/wA2PDL/AGcskf8AYo9R5n8f7JnPl38rPLXl0iTTNPhikG4crycfKSXnJ/w2AaaN+q5/1zxR/wBJ9H+xXgH49X+6ZYAB0zJApm3hV2KsL89/mdYeTbvT7K/V2bUZfSVlpRN1Tm5Yr8PKRfs5KIBZxjavr35qeWdBJTUtSt4pF6pzDP8A8i4+Un/C5YMEv+kiIf7vh4mQxSP9H+sYw/3f1f5ryrzl/wA5YabHE1t5UhkvLtgQrupVF/yuH94//C4CIY95ES/oxv8A2UpcH+x/0ykRjzN/7n/TS4WD6b/zlb5quYTYRWcVxfNXi6ISQDsp9NPhPxYyy4wLI4f870f7L1oMo91fF5T588za9qGqSnXZ2a+jBiYA04iu8Xw/sqx48cqGTi9Q9F/zfSjjv+iq/wCDLvQrG38w6j6aLJKjQ27mryqDzdjH+zFtx+L7eUiXH0Ph/TKX0f6T+f8A5rEbvoLRvzs80eY4xa+Q9BRLZKKsspoi7bmi+lEv+rzbJeJhw+kCU5fzY/7/AIeOX+fKUGQlCOwEpf7CP+l/4/FN/wDnHnzz5p83XOozeYJ0ktrZljRUjVRzJPLg6heSqq/5X2ssll4jVCHz4o/7KSDK+4Mk/Nz82n8ptDo+jwm71y9/uYqEgAkoJHp/lD4V/wAn4sNxgOKXIfwpFDcvFdbj1O4vhrfmTzBZWOowVBWD4pUWnEonD4Wbifs5ADITxRgMd/xZJRj/AKeP1pqfOow/pSSK/wDOOo6ifQ0XU9W1C7kFF4KY1rX/ACDyb/gclLUygPXLGP6MYRl/uox/3zKWSuch/mxj/v8AgTry9+Tv5n6yfVub2eyRurTXLhqdP7tC0nL/AFlTKvzsz9Ikf82OKP8AsuH/AGMJNYzzHK/9x/x//YM903/nE7T34za9qN3ez1q1G4qf+C9V/wDZc8hOebJ9Uh9s+H/On6P+lTEylLmfx/nfV/pWRWn/ADjN5YsyGtzcow3qszA1+jIRx5I8pn/SY/8AiWMTIdT8o/8AEpvH+TyW6gWWqX8NDUfvSwH0Plt5f59/1oRZ+Jk/nf7GKbW3lLVrbpq87/8AGREb/mnJ8WT/AGr/AEkv+qjESkP5h/rR/wCPRZLZxyxwKk7+pIBRnpSp/wBXCLPOv836f98n8en8SeNat/zi7pupapcamdQuoluXLsicQak8iPUP7PL/ACcoBzQPpkIj+rLi4f8ANyQj+PpQDLv+z/j3+9X2X/OKHlaGdprl7i4U0Ko70CkdfiQKzcv8rI8GSXOX+ljHi/zuPj/2HAij3sp81fkroetWNrpcNvFbwW88crcEFWRa84q/a/eftYPAEfp9JP1S/H8SBCuSRfnjoQ0q20vzLYJxOi3EfLj1EDEI4/1V+z/s8u+kj/StkTReuxSCRQ46EA/floKHh+tx/wCF/wA1bO+Pw22tW5hJ3p6iilKfzM0cf/IzIR2JH+d+P9myi9zyxi8d83Ww0T8xNM1Dj/o2swSWc3gWUckr/rLwXKhzIP8AH+Px/XSN9kH+Ucr+UvNmreSJarbM31yzBO3BqckQn2K/D/kyZLGbFfzPT+Px/EyG49yG/wCcjbZNL1HQvMrKPRguTBMabcH3ZT/rJ62V8Iuv54/H+6RHnTD/AMhb0+S/Pmo+Vbr93HdlhETsCUJkhIJ/ZkiZ2T+f4cnjPFH3f7qPpmo5e59T5YxdirsVdirx/wD5yQsJYNKs/M1rUz6PdxzbdOLEI9f9l6a5UdiD/mpBeq6XfpqFrDeRGsc0aup8QwDD9eWoOyQfmB+YOneSdPOo6k1SarFGPtO/8qD/AIk37OSjG9+g+plEW8s/KHzn5x89642rXaiLy4UdTHSikkUUJy+J2Vl+Nv8AWyuWeMjwAf1pfxQ/rS/pKZA7InyLaj8v/P135aWq6dqqfWLYHoHFSyL/AMOv+wXI4uXD/M/3KI8q7numWIWSSBFLtsFBJ+jFXx75B1rzhPqmq6l5TjWQPI8sskig1UFmWMFv2m/lXKTmjA7jj/3sP5zPjA830b+T/n1/O2gpqdwoS5V2ilUdAy+H+spVsvJHREq6Md/5yJ0h/wBDxeYbXa60qdJgw2PEkK4r/rcMoO0gf82SBsWdaLJp/mnT7PWJIY5fUjSWNnUMVLAN8JI+E1/lwzwxkdwCiURbC/8AnJLTobnyfczSJWS3aN4zTdTyCVB/Z2bAYjY8qSGa+QrlrnQLCaQlne2iJJ6mqjLAVLDP+ck4efk26cdY3jYf8Fx/42yMv0qHl/5Zfl+nnvyfqGqXK+pq7yt6Mx3IMYVkVD/lfZ/2WVZLvi6wRLc31epfk/8AmdBrmn2emXjH9KBJI5FPXlDQMT3+IHlmVzF97OQvdB/85BQKYtMnd/TRbloy3h6iFf8AjXKJiz8ERYr+R35S6DrulW2u3aO9xFM/whyIyyOeLmP7PLIGEpfxS4f5vp/6SYm+/b+a+hQANhmSreKuxV2KvFr3zVp35f8AnS7+uzpHp+qQes9DUpNHsaoPiVpF/wCC+HBixn6eX8UeL6eFtjEkV/nR4lnlv87b/wA260iaTDDBokTUmmuHCsw8UBP/AAK5MkfTESyf0oj0xWhyAJ/pPVbnzbpNqjSz3cCqn2iZFoPxyQxSPQsRjJSp/wA1fK6SGFtTtQwFaGVenzrkvAl3J8MvJPzt/MHRFutL8x6LfQXF7p85Vo0cMWjb7f2f2f2eX+XlUsUoGz19POP/ABXEyEDHfb/TRe76HrNtrVlDqVk3OC4QOjeIIxIpqIpMMCGK+Z/zI0fy1f2mlanKY570/u9qjqEHI/shmPHJRjfJnGNsqyLB5J+Yfkmz8zedNLh1eMzWTWdxRKkDnGymp47/AGZcx5ji2sx/q/V/EtWGDI/m38vNbbyP5emS5huQbqzFxuRGoZpLcMfhDfA3/E/h5ZbHOYj1x8Qw9P8AXh/O+qH49Pq9DOM9vUOOvx/OROqf85KXkGhTW7W4g8zRXAtmioSqnesqhvtdOPH+b4suEoEcQ+n+b+P4f+kWW3P/AGLL7PRfNflXyzcagsj6prtyEd4pDVUJJ5rCnfir/Ev7fHKPHJHFk+j+GMfRwQ/pfj0sPEJ+r/Nj/NeAflydc8q61d6oNIOoT2NVljINYS3x8wFDcG2+1x/myo5Me3HxcP8AD/N4/wCl/wAQjjH8XFX+5/rPUJ9d8t/mrqlrcXerz6eUUJJpstY1YmquokYrG3qV4/tO/wDk/s5coZJCsconEf5v97/pf4uH/PjBs4ZEVE2D/DH6/wDder/Sz4WW/lv+UmnflZcX+r3F6ptpQFRpKIEQHlSRmPFn5fD8PD/U+LMfDjySNGv83+L+nL+Z/pp/1mqAkfP8fVL+a8jtvO2g+V/MV9qPky3k1W9vSwi5KRHHyPKQRxqPUlXp8TcOOPhjH/eSBr6Yx/38pfx/1GVRh9R4v6Mf9z/S/wA1UuPyY87ecZ/0tc29tYeueRQUQjc7lF/a/a+1lHiR/gif6P8AB/spMDPrEV/sU90L/nGnzPo0v1u01G1E6mqloywr8nRlX/YrkuKUvqhGf9GUv+JlDi/zlu+YH+czKDyh+acXwJrNmEHSsQ6fL0MujnMdhjgB/W9P+xyMzLyj/smv8W/mB5MQzeZbOHVrFaF5rPaRRX4mMYReSqvxf3S/6+H8zA/XE4P6X1Q/zvXl/wBlKH9VeOPUcH9KP0/53ql/vEo/MTX7TXBp35heU2FxPpkgFzGg/eei3USJ9pePxr/L8f2vhxnHwpcR+ifp4v4eP+H8S/oJrh59Xs/lbzRZeZrCPU9McSQSgEeIPdWH7LL4ZdKNIlGnmP58hdE1TQvNaihtrsQSkdSkm/H/AIFZsoBqXwWL2QGuSNoXZNDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgVLtA0K10Ozj06xXhBFXiDv1Jc/8M2RhHhCOSY5NLsVdirsVdirsVdirsVdirsVdirsVdiqnLMkSGSQhUUVJOwAHXFNJJ5b886N5kLrpF1HcNESGCncU/yT8VP8rLJYzHmmUCE/yti7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq/wD/0PVIyIVgf5l/nBo3kGCt+/O7ZSY4F+0fDl/Iv+U2ThCxZ2H4+lsjG9y+RfzO/PXW/Po+qTlbewDVEKDYkE0Lk/EzL/sMnKQPIf76aTIcgyjWfyTtdG/LX/E0qmXVJjFMWrskTmgUBfh+yys7ZgAkys7RvhjH/fSaaef+Q/IM3my21KW2r6thbC4UD9qhCun+t6fxf6+WZJ8P++STTEoAvqcZBUDffY0HUZayD6jtv+cYNL1DSrfW9E1CW0klhSYM+ygMvI1I+IfayiJyx+kif9H/AKRYASidjf4/ovnvzVoTeWNUa0tbxLmaIg+rbsSK17Ovxcly+Epx3kPDl7/+JbLMeez0X8tbH8ybaGbzD5bjklW6I5yyKjPJx+Hb6x+8K/6vw5WdXGMrlHxD9PFwZZxj/R/dfSxOUA2fX8JS/wBwzhfKf5sefZFg1y5bTbI/a+wm1D/um3PqOf8AjIyZL88T/dR4Phkxf7PLx5f9JxKM5/hFf7H/AHX73/est8rf84p6Fp7G41iaXUJ2WhLHitf51C/FX/WZsplHJk3lKv6v1f585fV/sWvc8z/pXq3lDyhYeU9Pj0rS04QR1O+5JY1LMe7ZZjhwj+cf4pfzmQ2TzLkuxV2KuxV2KuxV2KrHQOCrCoPXIkXsrzf8pwfL1xf+S5ya2Mnr2pY/btpiXTiD/vmXnG/+Vgxm4784emX+8/00U9Pd6f8AiXpeTQ7FXYq8c8jM/lfz7q/lrZLHUUXULYMaVcgLOsQ6ceXqfD+ysK5Xj5V/MP8AsP4f638Mfq/nMhy934/zv+knseWMXYqwLzb+SnljzPKbq9tQly3WSI8GP+tx+1mOMXCbgZY/6p9P+lYcNcrH9VgGtaTof5J6rp+sad+706dWtL1OXJ6H95Dc0+03GReM3H9jj8GWYsZB33E/4pfwz/4mX/STbCH2/wAUv4U3uf8AnICTWeVt5H0q51WfoJWQxwg+Lu/Fv+C9L/Wyc8mLH9UuOX+p4xKU/wDcyl/nRhNbgNib/ox/Hp/0sovNPznh89ahb2MevXEMM97cKLbT7WtQwG8jzV6qz8ftS/b+3kPzBO4j4cIfxS/veL/e+n+r/wAKSJnnXB/u+L8fzJ/5j1H8mPyu8tW+hxajBAJ7m6j4zvMOTBxVJ4xX7HGTkv8Aw2UHDx7yPH/FH+bD+r/S/rNZh37sT/K57ryx+Ylz5fu2Uie2Ee23L0QGtpKftO1t9v8Ay/Uy3H8vx6v9N9f+c2cw9D/O7TJU0238yWSc73RZ0uUA6mOoW5jP+S0XxN/qYy9JEv8ANl/Vl/x5iObObPV7a7s4tRjdfq0sayK5NBxYcga/LMjhN0nhN0xbWvzo8o6O5iu9Tg9QVqIyZKEdQfREgB/yWyzwJdaj/WMYy/0sjx/7FkcZHP8AH+b9TDL/AP5yUtb/AP0fyjp91qdyW4g8CqD/ACi3xbf63DK5yx4/qkD/AEcf1/7KP+9kxJjHmb/q/j/eqVzJ+Y+vxtPfT2vl+xIFdwXAI3+NvstlY1Bl/dQJ/pZP9jLgWOQ/wx/zpf7p5ZqZ8hi9+oa9ql/q0hIX6wp/doSd+FeXLp9pVyUseWf1zhD/AGuIlKPF/S+mH9Fnwk/VID+jX8b6P/L/APLDQvJUbPoUbKbhV5uzli4G6Ej+7/a+0q5TjgY85Sn/AEZcPDH+rt/vpNAFd7NMuZOxV2KuxV2KvA/zz13UtW8z6T5Es5ja2t2Y5ppEYq7Au6FOS/srHHyVf2348/s4PFMB6fTL+d+P9l6vV9H9ayMjHlsf5z2i+1nT9HiBvriOFVXrK4BoO/xnkcshjlLlZ/pfj0oEDLp/xP8AxLy/8wf+cldC8ux+lpLDUbw0oENEH+vJ/wAarlhxiP1/6WNSn/xLLg4fq/0sWCp/zkp5u8zfufLOkAv05UaSh+XwL/w2U5M+HH3n+seH/csTKA25/wBZi3n/APL78xdd01tb81NzhsUMqpVQwDEc6Ig5clUcn5fs5jy1XEbEeD+lXD/V+r1/6Vgcl9K/H+mZr+WH/ONflfXtGtdcvJri5e5jDsoYIgbo60UNJVWHH+9yMsc5HeVX/NHq/wBPPi4v9IxlE9/+lEf99x/716d5Z8reRvJZaGxNnBNuGaWVGk3/AGS8repT/JyyOgPOQnk/pSj/ALmMIxh/pYs/BPUH/ODxX8z5tJ/L7zZbebfK1xbOshAubaJgwo323HD4VWRf+Bf48McBx+mQ/d/w8X8H9Hh+r+p/pUxhw8/p/wBz+P4VX8wfMGhefZpLTyfopvdSvRxa8ZCoQkU9Tb4eS/a5N8OV5IY8X8RMv9Txn+L/AI8giEfOX9FmXk7/AJxmsrDS5n1yT65q88Dxh2JKQllKKY17tHXly/4D+bISE8ouV7fTjv8A3X/Ex9H9djZPPp/CyH/nG3VxdeVU0+Ta406WS2lHeoYutf8AYvx/2OZEQKsdWZem21nDagrAixhmLEKAKk7kmn7THI48cYfSAP6rACmJ/mVFDpGlX3me2hj/AEra2cgimKgsoALKAf5VY8sBxi+I7/7n/SpH3PBv+cb/AMpNJ84WVzrvmCM3DicIiliBsA7l1H2uTPkZxMzzIH9H+JEhb6c0/RdP0eKlnDFbxov7KhaAeNMMMMY7gD+t/F/pkCICC8ueddK8yWj6hpdwstvG7Rs+4AZftV5cdqUb+XjmUYEbf7n1f7lsMT7/AOr6kPf/AJmeWrDa51K1U+HrKx/4FCzZZ+Xn1HD/AFvR/u+FmMMuXL+t6P8AdcKK0HzlpGvSPDpV3FdSRAFxGwJAPQ5XPGY8/wBEv9yxlAx5/fGX+5Yt+b35w2n5cW9vJNC1xNdMwRFIGyAc3JP+sq4I11/2KxA6/wCxU/yy/PLR/Pbm1gDW14ByEUlKsO5jYfC3H+X7WSMRVx9X87+ikw2sb/716VlbW8v/ADf/ADM1LyDPYXy28cujyyCO5c1Mik1b4ACqj4AzLy5fF8Pw/tCM43wm9/pl/D+P96zjXX/TPMtb/wCcivMnmHXLaz8k2bG2bkQkqAtMFrzbl9lI1X+V/tft5I5seMb+uvq+r/SxjH/Tf8dTxRH9P+d/xLLP+VqfmDYL9Y1Hy+GhA39JiWHvSrZUNXh68cfgjjj1Eosq/Lv80dM/MaG406e3MN3CCJ7WYA/DXiT/ACsvL4csyQjMbeqMv82X4/pRRKII23H+yeilduI2GCmLyX/nJLy3NqPl5NWsh/pmkzLcowry4j4ZApHT9iRv+MWVSPCRL/N/0/8Ax7/dLbPfI3mmHzVo1rrNvSlxGCwH7LD4ZI/9g/JcvITIU8y/5ye8y2OlaVaK8jR6nHcx3NrxBO8Zo9W/ZXi//Bcchw2b22/03DJMfud+cUIlsdL/ADK0fa4sPSlan7VvJQurePHn/wAC8mQI4J30l6Zf72X4/ooGxTX86LW387eQp77TyJEEaXcRH+R8TD/W9P1F4/zYco4T7j+P+KUini/n+8FufK35iWoJqsMc+wFZLcgHkV/akVHX/URcETU/6/q/4v8A3v8AEm9/e+uLS6ju4UuYTyilUOp8Qw5Kfuy2mKvirsVdirHfP+g/p/QL/SgAXuLeRUr/AD0rGf8Ag+OVZOV93q/0qsa/IXWvr3k2zaf4ZLRXgkrtQxErv4fBxywbsju8K8/Wes/mjdX/AJtthz0XSX4QRGo9REP74oP5mUeozf6qZXlzUeHu+qX82Uvx/pVMq27n0p+W+raZqug2d1oqLFaNGAsa/sEbPH81b/gvtZMYxDYf9JMeHhYF/wA5G2Mlnb6b5rth+/0m7RyR/IxHIH/J5ImQJqQP+b+P9kkc3remahFqFrFewGsU6K6n2YchlqCxHzt+a2keVW+rOzXWoOKJawDlIT2rT7H+yyXCALkeCH9L/exZiNby9P4/hixryLc+ZWa41W/tYNJ0P05XW1CgSVILepIV+y3L4n/4guYcDH6ccfSf8pL+NjY5RH+d/Exz/nFzzVpsWlXWmeuv11riScRHY8OK7j/gDmSIkC2Zj1el+cZR5i8mXcqJyNzZM4Qb7lOdB/qtkJnZhyeO/lp/zkVo/lbyvY6bqSyy3UBaJkjUHioYlWbmU7Hjx/ycvjEEbmmzhB3JpNvzo/NHR/NnlZLLQLlZpb64ijMfRwK8yHRviHxKv+TgyQ4RZ/00UcNeb3LQdPGnafbWQFBBEiUH+SoXKoDZrSb8y/LMnmfy9eaPBT1biOi16VBDj/iORyctt1QH5PeSJfJnl6HSbkg3ALSSU6cmPQH/ACVGOMkizsqF0H8mdI0PzHL5otC4nl5kR1+BWk/vGX/W/lyEISB5+j+GP/HkCwg/+chtAuNZ8rSrZI0lxA6TKFqW+GoagHX4Ww5Dw78qTdKP/ON+k3Wm+UIY71WR5JZJFVhQhWO1Qffk2ShLi3C3b1PLVSvWfMunaJEZtSuI4EArV2AycYGXJnGBlyeb3/8AzkXpTsYNBtbrU560AijIU/7Nh/xFWyM5Y8f1yjH/AGX/AB3/AGSkRHM/6VA3U35nebgI4I4dCs36sW5TUJ/2TK1P5Vi/18p/ND/JxMv6WT6f9lwf7iaPEA+kf50v+J/47/nsc/MP/nHnRtN0OfU7eSe71G14ySvJIWLgEGYOq/Z5Rkt/N9nKz4l8U5E39W0eH/N/j/2bCiTZMjbMtI/IfydqdjFd2kUixTxq68ZWpRgG+/Hwpx5SkE7jrL5tXH5E+R9GUXOpAiMkLWeUhST0/l3yUcOTJtxTP9X0pEDPvKMP/OPXkm9RZYrX4DuCkjbj58umVnTEfxT/ANj/AMS18BHU/wCx/wCJYT5z/wCcWIdWvw2iSR6dZKiLShcn7RdjU8mflw+03HjkOGcdojj/AKWSXD/uYy/3K7jlv/W/H+x4WP8Am3S/NX5Npp9xHq0t1pKyhDHQqqgfF6ZjJZfTZeWZePPP6ZCAv6eHhl/suGE22MjyPC+mNJ1e21W1jvbNxJDMoZWB6giuWyiQpiQ8d/5ym8itrOiprlt/vRppJanUxsRz/wCRbUbMaVxN/wCb/wASxumR/kt+aNn5r0KBrmdBqFugSdWIBquwk3+0rrQ8v5syzAncdf8AdNhiTv8AjieR/np5ys9V846bHaXsgsrQpFPLAxCoZHPqcJEP976Q4vx/yUyEjKBoHgkf9MkXHa+E/wCyiyr81Lhm/Mjy0LVqkcKkH9hn+Lf/ACk5f62VXR/2LEMV/wCcl/LH6E80WHmmNQYLh4xIvjJER1/1o+P/AADZGIokd/q/4r8f0mMX1JbzrPGsq/ZcBh8iK5cgvAr7zZafl5+ZGo3WqP6VhqVoklQCfjQKo2H7TFJP+DyGMXY5b/xMoi9mH+ddbl/NtmtvK/l8H4g31wqFkoD3k/dQry/lkll/1OeUT8HEfTxeJ/tfFw/8qocX+nnHFwsCYRNDeX9H/iY/7qfCmnl78hvNOtajDZ+dLiVtMgiVlKzepXjRBbAseUXw/bZVZf5HyctTPL6fVjP9KPp/r+nixTn/AF/X/OT4spbeqP8Apf8ATemXDx/0vVN7x5S/LrQ/KicNHtI4Wpu9KufnI3xHIxwgbn1n+dL1f6X+b/msREBk2ZLJ2KuxVogHY9MBCvG/zL/LGTTZP8V+TYhFqURJnhTZJ4z/AHiPH9jl/wASzFA8Hzwy9Msf1cP9T/jv0fwrE8P9X+KKR+VtHu/qR82flvJ6SSE/WdNl3T1F/vI0/kbf4f8AY5aJnDt/fYf+lsWZPDt9eP8A2SUfm1+bNh5o8sixuFaz1mC6iZrdwQQykqWQn7S8TlhAkOKJEo/7L/OgkVzG4/2T6RspTLBHIerKp+8VxHJrKvkldirsVQ897DBtK6oT/MQP14RElNFAXXmvSbNliuLuCN3+yGkUE/LfLI4ZS5CXyZjFI8gURZa1ZXxK2c8UrDqEcMfuXBPFKP1Ax/rBZY5R5gj4I/K2t2C1dhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5N+cuuT6pcWvkTSmpdamf37DqkA3c/7Kn/AAPLIylwix9X0xZjYWw/8wvyqi/Li3g83+US0U2nlfrCE1EqdHZx+0zftDKsfFjPOU4z+r8fzWEPSfe938u6wmtafb6lGOKXEayAHtyFaf7HMhNJlgQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX//0fQf5i+bF8p6Hd6yRyaCMlB4sfhQf8FgGxZAPz31/wAxXnmC9k1DUZWmuZTUk/TQD+VcJlbKUrfRP5Of84yWmqWUeu+Y2LicB44IzQAVBq7r8XJgv2VzDlxTND0Q/wBlJqIPue2+fvLtrbeTb7SbdKW0dnIqKSTQKvJdzyY/FlvDQrf+tJlzfP3/ADh1dKuq3tq2/qwDbalFbr+OSkAebKtmH/8AORfkCHyj5jaez4m1u/3yoCPhNfjj4j7K8viTBiBjsen0y/osQCGdaJrXmz854YdG00LpmhWyLFO6E/EAAvD3+EfZycswx+nGCZH+KX/F/ibKU62j1/ieseRf+cb/AC15UnW94td3KggNNQqK/tCOnGv+tyzG8GUvrN/0Yjhi0iPfu9Rt7dIEEUShEUUAUAAfIDMqMREUNmStkkuxV2KuxV2KuxV2KuxV2KuxV2KvMPzWiGgalpnnWOo+qSi3uaftQSnga/8AGJjyT/ZZUNpf1/T/AJ38LKP3vS4pVlUSIaqwBBHgctYqmKuxV5h+dvlG/vre28x6BX9MaQ/qxAdZFqPVi/yuSj7P7XxJ+1lMpeGeLp9OT+oolw7/AOm/qofyL/zkR5f8yyQ6dcl7LVJKI0MqkD1OhRH+L9r7PPjmVwCQ4omJHv8AV/xMv82TZwgiwQf91/xP+yZH5y/NnQPKSlb+5VrgbCGM8pCfDgvT/ZYRjNWfRH+dJRDqfT/WYJF5h8+fmDvo0S6HpZ29aYVlYeKJ+zt/k5jnUjljHiH+dL6EeIB9Iv8ApSR0H/ONmiyQSyaxNPqeoSoVE9w5+FiDxdEU/sk/tcspmMmTeUv6sY+mH/Hv9i1kmW5N/wCxiyj8pL8Poy6XKES701jazqoCjkh+GQAdpY+MnL9puWW44gCwAL+r+t/GyP3/AIkxnW4V1D80rCK4PKO0sXljXsGbmpen823/ABHAd9vNPRGXvm7Rvy51e5iv7hIbG/BuVWvIpMKLMoRfipMvGT/X5fzZZjxEbfSPqjKXpjwfzf8ANkyEDXd/N4njnnz80bbVfNumeZtBsrh3gf0gWHATmv7sL95V/wDIyFwjL6r/AJ3D/CgGI63/ADuF6VcWP5mebY2WZrTSLSQEGMj1HKnbi+zf8RXAdRxCowu/4sh4f99GX+6R4nQR/wA6X4/3jE/Iv5JLrs11ofmfU7qf9FSLGLaNysfBhzjkTny+FviXiqrw/nx8TLIUCMcfplGI9f8ApvTH+pxQmiUpEVfD/OjH/iv+Ki9Hh/KHyD5MgN5c2dvHGgqZLpjJ0/4zFvuVcrhpDPmZ5PjwR/zvC4IcP9aLGOLi75f1vp/zv4WHal+dF7ql0dG/LDTRMOhuTHxjHuB8KhV/4s/4DJgYdP0Bl/Nj+OP/AHqRwY9uf9GLVn+QXmPzS/1jz3q0kiVr6ELGgqenL7PH/Y4TqMs9hWGP+y/0sVM5HYeh6ZoP5OeVtEgFvb6fC9OrSKHY+5Z+/wDq5SdNGX1cUviY/wC44WHAGaJGEARRRRsAPAZlAM1+FXYqlvmDXbfQrGbVLzkLe3Uu/EEmg8FHXFQHz75u/wCcv4IQE8v2bSVNDJPsPoUfF/wWXAQHXj/q+lu9I/p/7Fhk3/OSnm7V4SI7u1sWWhHpws7N7fEJ1/4LjkDlA5Rj/WlP6f8AM4oy/wBhJiD/AFR/Skfx/uGD+ZdW806zqsGpXzXcuoSgJbyemYmYAn4IAgXkvJ/2cxxqATYMPR/qfq4P+Pf1vUwjkvcdP5v4/wCPM48n/wDOOHmjzRIZ9fd7GAU3mYvIw70Svw8f8v8A4DIy1U8vK5/zpZOKH+6jxS/HqWWUy35/1uL/AHL1XUPyE8laDo9xaSMn11oW4yzyDmGoaMiEqq/F/KuQ/LzPquR/2MEDGT3pB+UH526L5c8sW+lTRSTajCzoYrePkzb1VnZfhrvx5N/LmTGEB6iYw4v4v4v+KbKA5kRZHdz/AJj+d+cEEMOiabICKzAPIyn4SGQ8uPJf2eH+zyk6mMhUInJf8WTihH+tD8T/AKrEzHKIv+lL8f8AFPKvLXkLXXudT8k3WqTwpYI00VrFULPX4tiD8Kt8LceD/wDC5IajJGNx4YcP1S/ij/Un6Zf7OP8AVZRnKttq+r+d/p/TL8fSxDyrCtnK8GseXbi+dCQxX10cfMfEv+V9nK/Hxy5zIv8Amzx/9Jf7JgMkJcz/AKWf+7ekDVfJlzYSWlx5ZvLWZkKhxCzMCQaN6jBW5ZExw8xkP+dL0/7pRGH84/7r/fMq/wCcW/OdmllL5WuP3V7BKzRq44s8bfF9lviqv8uZMICQ4xR/nSiyIsWHtXmDzRpvl23N3q06W8I25OQKnwH8x/1csjAy5LGBk+b9B/NvQfLfni8vNFFzcaTqcdXSGIkm4qW5wxv6bHl/xu2QjEQuMpQER6uKX0w/ocUIy/HCmgBVx/nf1f8AY/8AHXsEP5szzDnDoWqekNiXiVGH/PN5ORyvx8Q/iJ/qwnKP+nYGUBzMv9JKX+yT6HVLfzZp9xZyW88IljeNo54+JII4kdWX/hsZGMhUTx/1RKP+7jBjxA8jfwlH/dxecf8AOLc7Wem6h5enAE2n3bA+PxfD/wAKY8lCiL72ZGz2i8jaSF0QAsykAHpuO+GXJi+Q/JH5Ny3nm278qa9PJHbxqbh4rZyEYk/APi6DiftcWbK45ZmNRMsN/V/FPh/zZcH+6/qp4pEULh+P63/FvfdM/IDyZYD4NOjkNa1lLSH/AJKlsp/LX9Upz+PB/wBMuCP+xauD3/P/AHsfSyrRPJej6DI0+l2kNtK68WaNQpIrWhp22y2GIQ5X/ppSZiIHJ4j56s7Pz5+Z9jospEltp8RaVDuCRWV1/wBkoRcnkiSK72ZGzIvzc/KrTNM0BtY0BBp97pKmeKSLYkLuyN/NyymOM4jxRP8AW4vVxRYRHCbDP/yx8yyeZvLtjq84pNPEC/8ArKSjH/ZFeWZV3yZSSv8AOjyD/jby9Np8Z43EZE0R7c1B2P8ArKWXKMlgWOn8P86KCaSX8ifMmn65otuZYoodT05DaSCgDALRdv2uMnBeX+XlkcEfqiP85n4d7xH2Jn+Zn5yaR5O0+SZZ4570giKFGDEt2Lcfsqv7WZHhEby9I/pfxJEO/Z55/wA4xzafJLeaxe3sMmt6o7MYgw5BK8z8H+U3/EcpGOX1VUGJBO76HwsVG5tkuYnhlAKOCrA+BFMhKNilePfkPJJoOoax5KmI42U5mg8fTf8AX/uv/hsYG47/AMPpZdFv/OUvlW31fy19deRI7ixf1E5GnIH4XjX3b4W/2OAxJNjf+d/VQIk8njfl783tQ1fyvH5Cs4UeSRTE80zBVWNjtTkf2a/abLZVXKU5fwxj/RbAL/nH+qqfkz5PvPNV9eeWdR1W5torFHVIYJTxNTxem/Ex8jy+z8WVyyZDGo0APq4oxl/myh6Zf5zEmVbbV+P6KfaF5Xk1nyJrflSb/erRLppYieppVqU/Z5Kjf8HlRlYB7vxJieT1T/nGrzOus+UoIWflNZkwsCdwK8o6/wCxbiv+rmSe9lJ6vgYOxV2KuO+KvnK+vLnyhqnmHyraI7SauBNZhFJ+KUlJqBfs8efL/YZTGYjHfbg/EWY5e57Z5P8AKNr5b0WDQ4VBiij4tXfkTvIT/rMcYQ236/U11TzP8lWXy95j17yujUs4JBPEp2ChqcgPBfjGTx3Vc6ZjcI/8z/zF0fWNOuvLenJJqd5cRlBHbryCnszP9n4W+L+bDmiIC5EQ/m/zv9KkxEfq2/o/xMP/ACi0/wA2+bdCXTTqS6dp9m5t3ESE3B4mrK0jH9114qy4Dml/BEf8MyH/AHEP+K4f6y8ZHID+t/F/pXrnk38qtD8pt69jDzu2FGuJSXkY9yXbpX/J45UMRJ4pk5Jf0vp/zYf8Vxy/pNfPc7q35o6df6l5dvbLSF5Xc0ZRRWnXZt/9XLJS4Rf+5ZXT5WvvKs/5T6nZy3Tg3cttIz8egLAoEB+nIYyZc9kxL6w8g29fLlhE3e1QH6VywCwgvlLVvym1/Q/M9zNY2TXVvaS+v9kcXjJ5UC/t/tLxXMXxYgcMv6sv+L/of12PEOv+cnFp+XsX5na3Jd+WbRtDtbZQZHZSP3wNaBK8V+L9lclYhtjPifxeo+mMf63rWwPp3Z4+sfmt5Xj9OW3h1SJNlcULEdiePFjlw1kf44mH+m/3nGy8UfxD8f5qnZXn5t6xJHK6Q2duzCooAVFd6j9rH85E/TEn+lUlGUdIvfbdXWNVlIaQAciOhNNyB88sBQq4VWsQoq3TGrUBg3mf84fL/l+sAmF1djZYLf42J8Pg+EZI4xAeqscf6X/EtnBw/V6Px/NYzb6z5587fFZQrountWjybykePH9nKfzI/wAmOP8ApS+hjxgfSL/pSRml/kBpXri916abVLgb/vmPGv8AqDK5RyZPrlt/Nj6WBJlzP+a9H03RrPS4/RsYY4Ix2RQv/EcMMMY8h/nfxf6ZQKR2XpecfmbqbeWB+m3T1NNnH1e9StPhb4Y5gO7L9n/KXK6s8J5T/wBjL/jzKO+x/wCkUF/zj95ng1LSJdLgdZF0+Zo0YHrGxLxt/wAa5YAQN0yFJz+c3kk+cPL09lDtcR/vYv8AWTt/slquVZLG46Nbzf8AK3VdRstEGreXA08Vt8F7p0hJKuv25LV/2GZfi9Nvh+1kjlMfq/eYj/F/lcX/ABcGwnv3if8ATw/4p7Z5Y8yWnmSwj1OxasUg3B2KsPtxuP2XVvhZcmRTEilfWdDs9atXsdRiWa3kFGVgCMqnATG//SLEi3xR5wmvfy182y2GkzypBayh4QzGlCOXDj9lk345biyyAonir0tkZH3vq6z8z2nnXyfJqdAIbi2kEin9kgEOh/2WDJHoEEbvCPyT/I/R/POhnUr55oZkmeOsTABlFG7j3ygid+iXB8OL/fRa5X0NPa7j8jvLr+X38swQ+lC9G9UUMnqD7Mpc/ab/ACfs8eS/tZDwTzv95/Ol/ueH+Z/V/wBNxLw/9JMc/Lj8hbjQdXTXNevzqE1qnpWoINFUDileZb7K/YVfhTJ8WTIblQA/mni4v9jD/fcSeKUudfj/ADYt/wDOSVnpOsaOtrd30Vtd20qyopNWOxDJwX4gzKfhy6WOR9Q/2Xp9LYIEsWg/NnzT5ihh0TyNZsYYYkiN1KNzxATmS37tP5v2sTqIY9v7zJ+P4f8Ai18SMf6f4/msg8p/845wzS/pXzpO+o37nkyFjwG9aE/af/Y8UymXHl+o8H9GP1f6b6Y/5n+maiTLc/6X8f717RZ2UNlEtvbIscSAKqqAAAOlAMshAQFDZIFIjLEuxVJvNmuvoWmT6nHC1wYFLemnUgdfuwcQjz2SK6u8p+aLPzRp0Wq6e3KGUVp3B/aRx2ZcnIUpFJzkUOxVoioocBV415BVvKXnjUvLdf8ARL9frkI7BiSXA/4b/hcrx8uH+b/uWQ3HuegeZvy70PzMVfVLSOWRSCGpRtv8tfiyueAHcXA/zotfD1ZFFEsahFFFUAD5DplwDJIfM3nzRfLMRl1e7ig2qFLAuf8AUjHxt/wOXDGTv0/nS+lmIE/8eYDD+ed9rwYeVNFurxeizS0jT5/5S/6rZXLNihsZSnL+bjH+/wD4f86KCYDqZ/1R/vv+kUu1fXvPC8X1jUNO0SGQA8T8Tj2+L4v+NcYZZS+jHf8ASyS/EGcbP0x/0xeS/nF5W1KRV11tcj1WFQFfi4DKK9o1PxLh8XLE1IcF/wCp/R/nKfEjz9P9X6Fs35WeT7vQTeWOuq+rPGHSOZ1QV7xFGPJW/Z5cshKGc+r6/wCjESnLh/oy/wCONZhLvv8AH9ZmH5Jfln5W84aP6pWa11q0YpNJDOwav7EqCrLx/wBVft5DgnH1RnOF/wAPp4Y/0ZemM/8AZrRj6gZf7H/ieJ7d5F8vazoAlstSvf0haAg28kgImA7pKfsuP5WyYnKX1CN/zo/x/wCZ/D/pkcRlz4f60f4v83/jzL8mrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVSbzV5psfK9g+q6o5jtoqciASd+lAMMRf/HkgW8lT/nJ6PUHZtF0W+vbWM/FMo2AHU8USX/gWZcE8uGG0p0fcP8AfyjL/YJJgOv2f8e/4ljdx+degX3nTTNbhEluwje2uVuE4lQ32G69FqcAxxJuJEwfp4f5zIAHkeK3oH/OQl4LryqsNq/Jb2eGNWU7EMw7r1WmCdhiNnpWi2K2NjBaIABFGiUHT4QFwRFBijcmrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf/9L0/qOnW+owPa3kaywyCjKwqCPcZXOAkKKCw6P8kfKMZcrpsI9Trt+rwzE/LX1l/pvpRwBk3l3y7Z+XrNdP05PTt468VqTSvzzLgKFEmf8ASkyQX5gRySeX79Iftm3kptXse3fGRof8UkPz98qea9U8tXLvo0jQXMoMXJftUJ3A/lbLIy4d9j/WZCVPZbH/AJxw1XVNEn8x+YriRr1ozLHEasx2qC/7XJv5cxJ55z9XKH86X4+hrMjIqf8AzjT+Z9r5U1CTQdSURxXbgCTccWGwVx/L+zmXAcX49LaBxCur7CUhhUdDi1t4q7FXYq4mm+Ksb178wtB0ED9J3sMJPQFxX7hloxS939b0tgxk/wDHvSxKb/nJPyTESPrrPTb4YZCPvCccfCrmYf6aP+9RwVzMR8eL/ccSCb/nJ/yvyAijvpFOwdLc8f8AhmVv+FwVj/n4x/p/+qakR/nQ/wBl/wASm2k/85B+TdTdYkvhFI23GZWTf3LLx/4bJjDf0mM/6p/4rhZeF3GMv6v/AB7hZ/ZX8F9GJ7WRZY26MjAj7xlRiY82sxI5onIodirsVSvzJocOu6fcaZcisVwjIfpGx/2JyucbCsZ/KPWpbrSzpd6f9N0yQ2step4f3b/7KPjkweIX3/7pkR172dYWLsVYf54/NHQvJcRfVLhfX41WBPilb+ULGPs8v5n4rlkcdiztH+dL/e/zv81mIdTsP534+p5etp5t/M+X67aW8fl/S3ofVZAbmQeNaKy/8L/s8wD4d3hiJy/1aQjCP+b9X+x4v67C4g3EA/7ZL8fj+e9B8mfkt5f8sfvkh+tXnVri4+NyfH4vhX/Y4Th4zeQnJ/uP9Kx4bNndnwAUUHTMkCmTTOFFWNBhWnh3nX81ND8geZ2vYpPrJvYuF1BbkO4lT+4kK14q3HlG3xcv8jDHFwfV6In1er/Zen6vV/pf6TZw0PV6fx/pnl/mPzbrmv8Am+21acSeW4L6IQJNKDy9OpBbcKys3P8AycrhlBP7qsn9bh4f+J/0kpf1kRle0d/634/H896/pf8Azj5oVvare2khvr0MkiXE7CQMVPIin93xb7Pw5RPHOR9Z4/50fpj/AEv6TWQTzU/zUgi1HzJ5f8vWiKjJP9ZcKAOKKOO9MlwCI9O1+lkBQZ15v/NDQPKactUukWTtGvxOfkifFmaMR5n0j+dJmMZ67f1nhutfmf5h1XXV1nyfYPZ214q2hubpKI5J/dyfF8Ksv7H2v8tMxhlxwkRH98f4o/0v9NH/AGXCgSjyHr/3LPNF/wCcf476f9K+d7yXV747lCSsK/5Kp+0q/wCxX/IyEpZMv1Hw4f6nj/4r/ifV/TkwlIy57f0Y/j/iXrGl6RaaXCttYxJDEuwVFCgfQMlDEIckAIzLUuxV2KuxV2KqM8CXEbRSqGjYEMDuCD1qMiYgiirHLj8tPLlwiRy6fbssZLKOA2J6/P8A2WYx0sOlj+rKX62rw4/i0x0zyjpGlEtYWcEDeKRqD94FcRpsY6f6b95/u+JkIAcnzB/zkN+acFz5gto9Lif6zosprI/2SagkBPtfaC/Fy/2GZVRFV6v6MY+n/TcX+8/zm/Yfj/fcT0DR/JvnL8xoV1DzTqDabYSqGjtbM8SQdwZD8X/DMz/6uQ/MzP8AdAYx/Ol6pS/q+ri/3Ef6CPEP8Po/3f4/HCn9p/zjt5XtkL6j612aULzyk0H/ABFcgYZJ/VKcv6MfR/uWrhMtrkf6v/HWB/lrqnlv8vfNGuWd3JDb268GgYkN8P8AJG/2q/5OTx6fi2lvwf6p/uvW2Rh9n856H/0MT5XfaFrman8lvIf+NctPAOcoR/zv+JTURzlEf6b/AHsXmv5k/mBYWWvab540aG5DxkxXSvbyR84z/wAWSosJb9n7fPMeE4cVCUJ8f8MTxS/0n1f7FEZxugRO/wCb/wATLgZjB+bvmvVoWudF8tyNG+8Uk0gWq+JRvSb4v8lsPjYL/jn/AFYf77hlD/ZSXih5n8f1f99JWTz/AOf1IM/lxCu1eEgJp3p8eS8TAf4Z/KP/ABK3Hun/ALFhFprdi35m22qalYy2JuYwirOvHjMBxDh1+FuWQxiB+g3Eer0+n/NnBQAeX/EvYvzP0fyrc28N95w9NYLZ6xmRior/AC0B+Pl/LkzgOU7Ej+d6oxh/n8X/AB1Ahxbf77heNfnF+aPk3UdOtT5dmB1DT5o3g9KJ0CqPtqHZEXjxxGmGE3HgH87hlGfF/X4OLiTGAj3Cvx/Vegaf/wA5GaXeQRzxafqcqOoLPHbFlBpvRg+++SlkxRNGeP8A030/1uIf8UgmPePx/OZl5Y/MnSfMkv1a19aO448vTniaNiPEcxxP/BYQYn6ZQyf8Llxf8eSQOhjL+qXnelxHyZ+Zk1udrTXYuaeAkXqB/sh/w2V4+se76VG73DLWLwXSdfsNH/MjW9R1adIIYbZF5uQB1G3xdW/yVwQgZHZsESWRy/8AOSXllnZbJL29jQVMkFuSo+lzG3/C5KXBD6p44H+bKUv+J4P9LJhIxjzlD/TMi8j/AJt6B5yYwaXMRcqCWhkXjIAP8n4lP+xbJGG1gif9KLIx2sVIf0XhvmzTp/y6/MuHzFcMU0y8k5NK1SoDikiE/wCTmNjlZ4T/AJvEgG9mV/nb+aFj5j06Pyt5WuFu7zUnVD6RqFSu/I/5WX5R4cbl/mpI4Rb1/wAkeXE8t6LaaQhqLeIKT79X/wCGyqAobsE9yxXzh5q/5x4uNQ85NcWhkg0e8BkkkiYApJ3HE/ss3xZjCcoHhHEP5sv4VBrvZn5d/wCcZvKulN6t3G9/Kf2pzUf8Cu2Jxyn9UpH+r6GJBvckp5qXkvyh5fha5KwaZIoos6lVdPdGflQ/7HJw0pu4XxD+L1Sj/nx4uGSYYqNxH4/3LyjXPzPuNJcr5X8wS6pLWi20lr6tR/xniC1zIM5YxeQ6c/0rlGX+kxcfD/nN5kY7y8M/1vR/0y/33Cp6X+eX5lW0oW90J7mM77W0qNT2dS0a/wCyVspGtwS5mI/4XP8A3s+NgckD0r+rxf77iY9c/nW9p52tvM1zYTaeJEFvcxS13WvHkCyRfEteXxLhxyhI+iXHf9X0f6SUkQnGWwKe+ZfyS81fmJqNxqd7qMZ05/jtSGJUoTyQBF+FOK/b/wAvK5Z8h9Ij9P8Amxl/V/nMZTly7mK+Xfy18q+X/NN1oPm64VrYQq8E/qBVqftBiPh5YY4Zz23hIfzf+PL4Zl/OFf5qTedE0HyX5ls73yTqLfVdjK8T82Sh+MHjx5qy/s5dATxnc3f87h/2bOAMOvP+rL/TvR/y8856Xf8An++i06Yy2esW5FTGUBkp8XwP8sr4aBHpP9X1Jq/P/TJd/wA4766fK/m6+8rz/DFcyOijsHQkp/wUfw5KBsIHJ9WZJg7FXYq7FXkX552smkT6Z5xttn0+4VJfAxyHi3L2XKaqQ8/T/wASmPNM9b/PPRrelto3PVL1qBYbcE7npzf7KjMiQjj3mRD/AGUpMzED6tv9k8e0Ty1qvmv8wri38w89Pa4hE0sMLEFkFOEbOv8Aw+Y4yEj0cUL/AJ31seM/w7PpTQPK2m6BD9W0u3S3j8FHX5t9o/7LBHEI7/7KXqkwAp5z+XKny95w1nQHBWO6Iu4etCD9un7PfJ4+7uZ9Pc9dyxi7FXzF+b2gz+dPzEtdHgVjHEkfqNQ0Cg83OUTlXx9KSX0va2yWsSQRCiRqFUewFBloFIVsNKppEqfZAFfDK4YxHkAP6o4VVMtV3TFWM+ZPzF0Ty7GX1G6jVgPsA8mPyRd8sGM/1f63pZiB939ZhCfmn5m8yCnlPR29E9Li7PBCPFU+Gv8AwWUHPjGwvNL+j9H+m/6RXiiO+f8AsYf6b/pFVT8qte8x/vPN+ryujbm2tP3cY9mP7f8AwP8AssicuWXLhwR/o+rL/p/+PTY+JI8qh/V+r/Tf9JMv8r/lpoPlkV021RJO8jfE5/2b8myuOAXcrmf6X/E/Sw4WUjbMgbMnYVdirsVY9548l2fnHTJNH1AsIZKGqGhBBqCMrnEnlsgsa8t+VPKf5Twu0cqWrTAB3mk+Jqf5P/NK4cWCXOzP/YxZQxnzLGfzM/5yL0nTLF4fL9wLi/agQqpKAV+LkT7ZkcPDua/qtgFbmj/ReW+V/wA4Lry1rMuq2NjI9rqlOUNeIabu8dA3Hk37OUQlCNgn0/Vy+n/jiNuT2v8AIry/qljbXupatEbQ6hcNMlqdvTB9uxb/AFVyGOfF9P8Adj6WF29Ty1D5x/5yY8jW36RsvMUycoJiLa467V/u5a/s8cxyN65cX0/11A+1jFvovnX8s9Mu7KOH6/ot4GReNWpzG0oC/EvJcMdSK4ZiUD/O/wCPrHJ0l/pntH5GeX28o+VLeDUmEM0hMzq5A48twDXp8IyzGDPcdfpSLkhPMf8AzkPothcNpujRTavfg8RHbLVS3h6nxf8AJNXy6YjjFzkIf0f4/wDif9lxM+ER+o8P9H+L8fjheS+bvzZ86+YLtNHhBsZpzRbaHaUA7UmKn1F/2TRf6mQOoERYFfzZSHqn/V4v9jwwh/XmnjrkOD+t9f8Asv8Aewiy7yF+RGiW94o803f17WCOZgZiFHiN/wC94/tZQYZMvqkaj/NjL1f5/wDHFrMZSFl73Y6fBYxiG1jWKNRQKoAA+7JwxiPLZiBShrGvWGjRfWNSnjt4unKRgo/HL4wMuW7OMSeTzLXv+cmPLFgxisDNqEo2AgQ8a/678V/4HlkjCMPrlGP+yl/xP+mnFlwgfURH/Zf8d/2Sf/lX+aifmBBPcQ2c1okDBayUKse/FgF+Jf2lyuZhdQPHX1cQ4f8AfTRLh/hPF8OH/fSZ9gYIe8lhihd7kgQhTzLdKU+KvtTBw8W3O01b5n8sfm3p35e6xqejaYG1OyuJPVtVgoaO324/9X/VyURwRrIa4P8AcM6AHq2pmVr5b/MHzuPrmqagdCtHoUgtxWTif53BRlb/AGf+wykamR/uoxEf5+T1cf8AVjKMv95/WYeIeURGN/xSHFP8f6V7Fpdo1lax2zyNO0aBTI5qzED7Tn+ZsmCev3cP+xQler+edD0cMNQvreEp1VpByHzQHl/wuXDFI9Of870/7psGMn/j3p/3TwT80Pzo8u/4k0nWNKnM72bsJigIBQj7ILfa+LIHFwm7jv8AV/EyEK6jdGav/wA5i2Ma/wC4+wkc77yMAP8AheWW1AdZS/qj/ikVEd5/qvKvOP8Azkr5o8z/AOj28v1CIGo+rVVj7GSvI/7Hjj4gj9Ir+t6/97wrx1y2/wBmlf5f69rCXj3NppSaxeMal54nnYe5CvxT4v2mXn/l5hZpwP8AemR/mx4+CEv83h9f9X1R/oNcpg/Vvf8ADL/iP4mc+Zdd/Nn6o+pzRTWFlCtSsIWNVX/jGh9T4f8AKw49Xjj6YRjD/Ml/u5R/3zIZR0Ff5v8AxXrSTyRomu+YFGrXekSa2sp2lllPHY0O3PI5s0JGpyyj+jj/AOL4WMpcX1cX+azC9/Jg3tXk8uz2z/8ALvcAr/wD5T4gH0nN/wAlIcf+5aiYj/VPlxPK3/LWez1s+XdSje0luQfqzSjjU/sA8fh+L7Pwt9vLozsWNyP4fVHi/wBP6mcfV7wzX8s/M83k/VYNWnXgsbiw1BO4NaRzUp/w2WY5Dl0n9P8ARl/pmyP3/wC7fYsUyzIJIzVWAII7g9MsYFUxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVxO2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KsO/N2ztrvytqMV5QRegxqexH2P+GyucbCRus/KCxa08rafHIixv6KkgADrvU0/ayOOI6DhtBYX/zk35WsZ/K8+pJbIbuFkPqBRyC1ofipy45DwoxNjY/0f4kcIu3m35OpqPnjQx5d5gnS7yC4VmNf3ZPIpX/JpluSZNdf4WcpW+sQKCmTYuwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/0/VOBXYVdiqB1mcQWNxK3RInb7lJyMhYSHwV+WGktr3na1gSgD3Jk6AgBSX6fy5XLkpD9AeIpTtllbUh8i/85M/lU2g348z6YtLW4b94FFAj+O3RW/4llEPQeHp/D/xKImi9g/5x5/NJPN+jrY3T11KzULID1ZeiSDx/yszCL3bZC93rmQa3Yqwrzn+aGm+WpVsByu9UloI7WHdyT05fsov+U2S4REcUjwR/3X9WLPh2s7f75is/lrzt52lYaxcDRtMO3o27cpWH+XJ+zlP5iR2xx4P9syfV/mwYjJ/NHB/Sl9ae6H+RnlbSaSfVBczjcyXBMhJ9+Xw/8LlUsRn9cpz+PDH/AGP/ABTAxvnZ+LLLPyrpNnX6tZ28devGJB+pcB0uM84g/wBb1/7riYnHE8xH5BMRbxgcQo4jtQZMYYAUBH5BsGyQ69+X2g6+np6nZQzDsSgqPk3UZV+VgPpHB/Sx+j/csOAPM9W/KjVfITtrPkGdzGu8ljKSyMo3Ijr9lsujlnj2n+9xf7OLZGRHP1R/2T1DyX5rt/NOmRanbGnMUdO6ONnjYdirZeRXu/hUik/wIdirsVeZ3jp5X87xzmottci9M/yiaLcE/wCU0f7WQhsSO/1R/wB+yHd/nPQdS1ODTLaS9u2EcEKlnY9ABlgFoAt4Rdfmj5n/ADLvH0ryHH9T09DxkvpBuB4p/L/kqvx/6uRnmjj2iPEyf7D8f1v9KyMxDYeuX+wZr5I/IrRvL8w1TUC+p6vsWubk8jy8Y0b4V/yWbk/+XmPLHLKbyG/9rj/df8e/3P8ARajcvq3/ANy9NAptmQNmSE1DVLbTozNeSpDGOrOQo/HJxgZct2UYk8nlev8A5/wy3B03ydaSaxdjq0YPpKfd++M5QxfWf82Pqkk8Mfq5/wA2KUr+W/nbz45m833506wPS0tDRiPB3H/G3L/Uyr8zOX92PB/pS+v/AIr/AHCPFP8AD6P91+P9KyUfkR5f0rSJrTR7dVvinKO5l+OQSL8aNzb7Pxfy8cxji/iJOSX1eo+n/Sx9P+m4v6zWI9fq/rI60sNK/Mjy7DLrcSs0YKyE/C0UifBIVb7ScWHLLp4hPcWP5vD/ALn+l/VZyjvt/mvA189an+XGtHSfKV8dbsASRb8S/E13Tko+1/xZHl4yHGKzcP8AWv1/j+j6mZlwj11/vk20ryT5v89apN5u1q4/QkBUpyJKsqDqsYb7K/5TZj+MZH90L/pS+mLEZDL6FPS4tJguntvJOmSa/qimj313VolPdgG+Fv8AZf8AB5HIIg/vZSzT/wBTx/T/ALD1TRLhG8yckv5sWXap+SHmrzbZvJ5o1YhwhaK0txSIMByRX+yvwt8P2W/18Jy5K9EYYYj1cP8AF/sP+K/zV8SR5VD+j+P+PoLRfyr1zSNKh1/yPqdx9YCcpLS4YOrMuzxD7K/aXjxZf9nlp1OUbzPj4/8AO4ox/wA6U+L/ADOBkcsuvrj/ADZfj/iXp/5S/mQPOlg5u0EGp2rGO5h3HFh3Ab4uLZbsRxR+kqQOY5FnmRYOxV2KuxV2KuxV2KuxV5t5w/KPTbrTNZ+pRn67qamRmJr8aiqcB+z0zEOOvVzr6eXpiil35La++u+UYY1Pp3dsjWz1G6unwBiP+GzKvaw2S72CWn5C+addupX82azK1qzEiOJz8Q7fyqi/5OQOoyy2FY/x/Cg5pnb6P6qB1b8qdI/L/wA06TerF6+nXTG3k9b4yJD9hzy/mamUCBkeHIeO/VxfSxjG+e76JgtIrdfThRUUdlAA+4ZbHDCPIRHwCAK5MZ/NPy6nmDy3fWDgVMLOpPZlHNSP8rbGcRXu9SlJfyc8522oeVbKW7njSaKP05A7gEGM8CxB40zJjjMt4gm/5obvDJ3Akfgm1/8Am75WsZGgn1GDmgqQG5finIZLwZe7+sYxQcZeTfnj5/8AL/mXRBe6TI0l7p80csTBGFN/iIanHjtlE4RibuH+bKPGvDR5g1/NkzfS/OHlL8zLW20m8H1qRkSUJIjqOajeknwqT/k8viw5cAkPqj/mzjx/6X6kSj7vmy6TyHo6WUthaWVvCssTR/DGo2I4ipArmKdNCuXFX0yl6p/6aXqaPDj3D/ff6b6mDf8AOO2p+no9zoF3RbjSrh4WBp9mtUP+r+zmRGIkL523EW9Ek8x6LHLxa6tVmG28qBh+PLLRpyN+E/6VfDI6fY82/wCch7H/AHGWfmqxPKbS7hJAynqjHi/xDtlMgYyH+lko2L1XRNUi1Wygv4CGjnjWRSPBhXLTsginjNx/zjwNd853fmHXnWXTXcPFCCauafZl8ET/AIbMSRnL0/RH+KX87+r/AMeY2Tt0e02emW1lCtvbRJHEgACKoAAHgBlkcMI8gFqngflaJPMf5rXeo6WixWmnRmOVl6O/2O3w/EwOIAxmhtf1MyOF7prvlyw162NlqkKXEDdVcVFcM8Qnz/038TEi0g8r/lL5c8s3Rv8AS7NIrgigbckDwTl0yqOARNkynX08RYCLMsymaQ+ZPOuj+WovW1i6jtxSoDMOR/1Ix+8b/Yrk44jLcf6b6Y/6ZnGBP/FfwvNbz/nJewuK/oDTrzUQDQskZC1+a+p/xrglLFj2lKN/zY/8f4P9ymojmf8AS/j/AHqBGsfmd5yIWzt49FtGoOb7vTxWvJspOrj/AJOMp/0pfT/vGAyD+EX/AEpJjpP/ADjjYyzC980Xk+qXGxIdiEr8vtf8RyEjlyfXLhH83H+P96xlKUuZ/wA2L07RfK+maInpabbRW6gU+BAD9LdT/ssjHBGO9Wf50vVP/TSQIgJvmSySHzT5L0rzTamy1aBZojv4EHxVx8QzHnhEvI/zo/UxMQwv81vy+1jU9IttL8qXQsLeCiSIG4gx9Pt/5A+LJicsX0jj/wB0zjIx5PIfzD/JTSvJ+nWXmGFzqUcM6/XC7cldT9rjw+z/AMF/LkCJg/vDL1/7D/TKLv1dUk876vpPnKwksPJfl51WE+obpFIICg868Q3w8f5myMoYsJ+o+J/nTh/uv96xIhDlZ/0yWDXPNV3o2m+ZktIPqeiOI1mQgSVB48Z058uLfzekuWDw4HaMocf1Sj9M/wDSR+v/AD5MxIA8q/3yF1XXNQuvM8nmGKAWd0Al2FjYODxp6hRx+yyktxyViJ2ser6ZfVHj/wA2DI+k/wAQ/rPtXy3rMetadb6lCax3EayD/ZCuWlgRSZ4EOxViP5m+ex5I0d9X+rvcsrBFRPFuhc/spgBiPq9I/HpSKHPZ41aeT/Ov5uWsl15mnbTtMkBaG2QceW1Y+SN8Sr/lScn/ANXKZakzFYwOEfxfz/6s/ql/uP6yDkvaNfj/AGUv9yzj/nHLTLG28v8AGOGNL6GWSGdgoDEoSF5n7X2cY4wfVz4v53q/3S1170v/ADIsr7QvPej+ZbOJpbe4H1SfiCacjRS38q/Evxf62SExGVHr9KQXteWoeQ/mtbvofmTRvNUTenF6v1WcnYcXrw55UCRL+uGUT073rqsGFRuDlrFvFUOLOETG4Ea+sRQvQcqeHLrlfhi+LqqIyxXYqoz3CQIZZWCIoqSxAA+ZOIFqBbznzR+eWk6c5stIDalf9BHAOS193HX/AGP/AAWSkBDeZEf6P8bZwiP1bf7pKovLfnPzt+81q5/RVi2/oQfbp4O2UfmJS/uxwf0pfX/pWPifzdv6TJ/Lf5OeX9Df6wIPrNyess/xsT/svhys4eL6yZ/7n/SsKvnuzhECDioAA7ZfGIGwSuySuxV2KuxViPnX8zdF8nr/ALkpv3x+zCg5Ofkg/wCNsmIbWfSP50mYhe7BdE/PbU7rWLOwv9Ja0stRNLeV2Icj+dkI+z/n8WVxy45bR4jX8X8Evx/Xkn0nlxf1v4P9z/vntGFrYzrn5eaLrt7HqWp26zzxLxXnUinun2TlE8XFzMq/m36UEW8z/MLyfpWo+c9F0Q28a2piklkRFCggVVeXH9nbIDFGO0fTaREUk/50fkhYaLpreY/LivBNZssjRAkoQD9oA7hlamEcWPrKcP5sv4VBIeoflV+Zth540yOW3cLdxoBNCSOSkChNO6N/NmZKPUcmco1uzrIMHln/ADkN5j03TfLslnqUUk31sFY/TFeLr8SuT+zxOVkA7E8H8UUiupp5Z+XHmv8AMDz3p6aVo8kdrZ2qiJ7lx8ew2/yi3H/JyU84Gwjxy/2H/EMjk7h/nPQLX/nHC0veM3mXUbvUZu9XKr8gvxfDkDPNLnLgH83GPxH/AGDAylLmef8AN/H+9Sv8xJrXyisXkzyTbLbX14nKeeNTyihH2pHk/vPs/F8T/Cv+tlcYRxDiPqyH0xlL6uL/AHv+b/WTECO/8X8LN/ye8jaFoOmJd6O63ktwOUl2d2c9xv8AEiq3+6/+D+LJ+CRLinvk/wBNGP8AU/4r+JBieqTfn75REumnzPpvOLVdPo6PGCSwqKqyj7Sr9r/gsb8M8Q2/nfzVB4d+TK/yq86r5w0C21QspnKhZgOzrs4I7fzZkSDKQYn+eXlLSZIB5o1qOe8gsk4m1jYhDyP941Ps8f5sx5CzRkccP6Ijx8X9Hj9P+mQN+ZqP9EMx8g6VoEem2975etooreeMMpVRyoRX43+Jm/2TZH8tAHlx/wBKXr/3X+9YmAB/3zKY41QUUAD2ycMcYCogR/qjhUL8tS8m8w/lNq/m7VpJ9f1FhpCt+7tbeq1XwlP/ABLKjlyH0iscP4pXxSn/AMSkzPIbD/ZPHfz80iD8ufMOnX3leNbR44OYCioqCyVNftfDkcUeA/z/AOt6uJYen+l/WU4P+ch/zC1TS3l0+0UxQ7SXaQs1B4nlyjH/AAGZEtViiaIHF/NlL0/6X0y/2bI5Y3yF/wCw/H+cqw6xZX2njVPNPnC5nWQVezteavy7x8H4qq/5XpIn8mEHOeXhYY/w5ImM58P9WMYS4v8AT/0m0GfO4Q/pR/4mHDL/AGLzPzb5l0aaRrfQ7IwxmgMtyxlmb3+M8U5f5K5Vw98p5v6UvTH/AEkP99xtZAHUz/pS/wCJ+hjVpZS6jcpb2MLSzEgKoqSST4LglIRFlgS9v8lf84qatrSi516T6jGwFIwAW67/AAD4R/ssxvEnL6Bt/Ol6f9K18RPL0vZfKf8AzjZ5S8vAO8Bu5BvynNR/yLHFf+C5Y+BKX1ylL+jH0f7n1/7NRE9Sf9z/ALn1f7J6Xp+nWtjEIrOJIox0WNQo+5cthhjDkAP91/nS/iZiNeS++tobiCSG5AaGRSrg9CCKGv0ZZwXt3p5vnP8ALj8ydG/LjV9X8vXtz/uMjmMlsynmBU/HGOOW44EjhO1fzvS2CO1Hav5zIdF/PabzH5strHy/FLc6VOnGXnGV4EVJlV/Dp8LYmcY+k0T/AA8P1/8ASKDKIFc/6v1JX/zlxFa2ltp2qqrLqUcpEUi9AFIco3+yPJf9llQHqu/83+d+P6zAMK1OOx1S9tdUPw6b5mthDLxICx3a0Xk/7PJZf+JtkOA7x/zsf8X+b/vU10/zovb/AMhfNE2qaM2lX/w3+lSG2lB6nj9hyP8AKX/huWXiXEOLvU77vTsWLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeZ/nvyu9JttFhakmo3kMFPFalpP+B2yuZoMovRLG1W0gjt4xRI1CgfIUyURQYofXtHg1mxm066UNDOhRgfcf8a9cE48QpBDBvyV/Khfy+sp4ZHEtzcycmYCgCjZIwe/HK8YPOSi+r0nL0uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv/9T1TirsVdiry7/nI7zSdA8o3JibhNdEQKe/xbv/AMk1bEFnF8sfkBDdP51sHtVqVcl9wDxoQ5+L7XGvLjlZNIBfezE9hljFLfMfl+18wWM2mX6B4J1KsD+BHup+LK5x4h/uUVb4lZb38n/ObpFIJGtWB41IWRGHLgf8r0z/AMHjhma3/qybIeb7Q0rzhp+oaNH5h9VY7J4hKzswoopuGb/Jb4f9bLuHelMd6eeT+dde/MUvZeTFay0kErJqcooWps6WkR+Jv+Mn/Efs5XLMInhj+9yf9KsX9aX8U/6H/SSmQjsPXL+d/BD/AIqX4/pMt8k/lZpPlQGWBDPfPT1LmY8pGPc8j9kf5K5VwGR4pnxJf7GP9SP4k1nc2d2aZel2Ksf1Lz1oumXi6Ze3kMN2yhgjuFND9nly+zy/Z5ZZHHKXLf8Ao/xf5sPqkzECRf8A0l/pfqTuGVJlDxkMp6Eb/jlZFMSK5quKHYq8s/SkHkjzgbGaP0bDXOLRODRBcKOMikfsvL8P+t8OQxAbx7vVGP8AR/iZxFiu71PU8mwdirsVYb+aflp9b0Z3tqi9s2Fzbkdecfx8R/xkUcMqnt6v5v8Auf4lGyP8t6vY+dNDjuuIltrqPjIjePSSNx/ktlk43smQTHQ/L9joVstjpkKwW69FQUH+388hCAhyYgU7XNfsdDtmvdTnS3t06u5AHy/yj/kr8WWxgZHZnGJPJ5HN+bvmHztO1r+XtkDZqeD39yOKV/4rQ/a/4F2/nRME8sMZr++yfzY/RH+vL/j0f6skmUY7fX/ufx+OFEWH/OPh1Sf6/wCddQm1Oc7+mCUiH+TwXqMplPLk2J8OP83H/wAV/wAcYGUpc9v6MXqOheW9O0CAWul28dvEOyKB956nBDCIcuf86Xql/pkAUknmr81vLnlYEaneRrL/AL6Q85D8o05NmYMJqz6R/Ol6W3wz19P9Z55J+cvm/wAzNx8l6DIbZ/sXN38KkfzBSYl/5Kv/AKmUHUYY7DizS/2sS4eL+lwxl6f6/hMeOA75/wC4/q/icUk038pvMMurJaeb9UMVtqRklNvYkxxO60MkTCiryaNuXwxfH8Xx/DlQyzPpgI4P4v58+H+L+KX+ylOKiUv4agP6P4/4p6Hqkvl78sbRbTRrNX1CYUgt4hyllb+Zz9rj/PI2McEIeuf+ml6pS/owYxgBuf8ATfxJXH+Wer+eGj1DzpctFAaMLCAlUUHokz/tt/PhOSc9ofucX/S2X/EspTPIen/dPTtG0Ky0W3W006FIIV6KgAH0+JxhjEOX/HmAFJjlyUi0HSm0y4u4VH+jSy+tGPAuP3q/8jQ7/wCq65VHbb8cMv8AifpZdHl/5k2H+AvMlr56sQRZ3LC3v0HSjfYmp/N/zT/lYw9MuH+Gf+xl+P8AfIj3d72qKVZVDpurAEH55bSOS/FXYq7FXYq7FXYq7FXYq8Y8lsfKHn7UfLrfu7LVFF5bDtz/AN2Kn/D/AA/8V5Xj5EfzD/sWQ5e57PljF86fncPO2p2l3dyQQW2labOs8D1/en0zRJB48uXLjlJzAkek+mX1S+n/AEqRPuB/rS/4lKLzzrqf1NDqvm+GFJY1YJbRc5akcuJChWRv9lmTKeYcoYsf9LJLg/0sfVx/6Vt9QN1CH9b/AImfExDV9QXzJaNbW2q6/fTJuo+rloid61RJeS8v5v2MryauePnk08P6MYywSl/yVjD1f50OFrllMT9UP6sY+Fx/j+qwfy35Vs31F9O8xXN1poChlJgatD1MiV5Iv+VxbK45DMXCUP8AOlLhn/VlBF90gP63F6/9K+rfye/J3y1oFkbu0eLVZJWJFwwVqAgfux4f7L4srlgkf73f+jHi4P631ev+sx4SPq5s/wBb8rWV/plxpawokc8TR0VQKVFB0H7OA4YgbABHCHjv5T/mVaeU/Ii3Ooh5ZLS6ktUjQVdmqXjiX/YZdGMCeI8I24uL08TbQ67I6HzP+ZfnSjaNZw6HZN0mufikI8RG4b/k1/s8Rq4f5OMs39KXph/uo/7GWX+qxM4/wji/pS+n8f8AK15tqn5Uz6T51t9L80ahNNb6xV2uIv3QeWv924+JftfD/s1+xkYZchBArFL+Lh9UeD/Sw/3KRInyv+b+P969ff8A5xp8lxx1lhkqBTm0zV+8nIRxTP8AFM/L/esBEnvknHlz8stJ07R73QLS4a6s7vkOMjiThUcQENf2W+L/AFstnjyVUyZ/zeIcP9JmYy/iv/OCS/8AOOGtyy6PPoF2f9K0md4Cp6hKn0/o+0v+wycZcQtJN7s187eb28qwx30lrLc2XIi4eEcmhWm0pj+06V+3x+z9rBxRG0jwcX0yqXBxf05R+n+j/SYgjrt/S/h/znlnmD8yfMX5iv8Aon8vIZYLMmk2oSqUAHdY+XxL/sf3v+SuMs8cZqP77L/NiPTH/Tf77h/o8bLiEOXrl/sY/wCm/H816L+Vn5bW/kXTPqSt611KxknmIoXY/jxX9nKscT9Uvql+OFgyvUNTttPjM15KkMYqSzsANvnmTGJlyZRiTyeY+af+cidFsW+p6Cr6tfnZY4AStf8AKk/5p5YZiOIXMiH9H+NJiI/UaSKDTfzQ850lubmLQbN/2EWstO23xSK3+zizH/NE/wB3H/Oy/T/soy/zZRxf5yPFI+kR/wA7/j3H/uIJx5c/5xv0OzmF/rssusXxPJpLhjxr/wAYqty/56vJkJRnl/vJf5sPT/m8f1f6Twv6rCRMvqN/7H/j3+y4f6L1Ox0y2sI/StIkiQfsooA/DJRwxjyAHwRGIjy2ReXMmmYDc4rSWap5n0zSI/V1C6ht0O1ZJAor/sjk44pS5AsxAlj+p/nB5S01A9zqlsQ3QI4kP/Aw+ocs/Lz6+n+sRD/d8PEnwz7v6xjF55qn/OTa3k7WvlTTLjUiv+7KEL/wCBmp/rMn+rlUp4sZqUr/AKMf97xfV/pUHgjsTf8AV/Hq/wBKkXmFfzO/MmF7MW66RYkEsKlS9B9mtWk+L+XKfzgH90JS/pf9J8H+xiwGX+aP85JvyFtp7+11z8t9bDLOUZ0V61DD4G6/sq/ptgnM5I3uSPpTfEGaflL+YeneVPKV1Z6wotrnRXaKaOgDOST6VB+00n2clDGJix/H9X++ZiN/75415Q07XvPWoXPl7R5Tpml6gXvTCSeJQHgOBpylXl8P7Kft/s5CWTgjURx0eH1cP4/0jAzoVH8fj+ih7f8AL250Wwj1OWR7W5h1A6dc134q4/vClfssh4/5eCMifPjH8Q9PF/MUAn4/zn0P/wA47as8Vhd+Vrx+V3pNw0dDWvpHeNh/k8uar/q5bGXELSTYev4WLsVWlQwoemQlESFH/ZKuApkwFeS+W0/wp59vdJK0tdajF3CewkSonQD+Zvtf6vHK4dY/zf8AcyZDl7nrBUHrkzEHmxXZJXnn586UdQ8pXrL9u3Czr80NT/wvLKp/pSGVeUNU/Suj2d+QAZ4I5KA1pyUNlqyG6c4odiq1mCirGgxV5b51/Piw0e4OlaHE+q6oTxEUFSqnwd15Vb/JX/hclLhxC5nh/o/xf8d/HpbDER+rb+j/ABJRa/l95n/MArd+eZ/qdl1jsLY8dj/v9/i3/wBkzf6mYxzTntAeFD+dL65/j+lH/MYGZP0+gf7KX4/EXp3l3yXpPl2IQ6ZbRwhR9oAFj7s5+LBHDEG/ql/Ol6pMRFPcyEuxV2KuxV2KsE/NDSfMWo2yDy7eJZJGGeZiCWPEcgEOQOSUPpEZ/wBY/SkSI5boT8h/Nd95m8tpd6o/q3McskRfu3E7E+9DkzLi8kyZDbfl9o0OpTa2bdXvZyCzuOVCP998vsf7HMaWESPquf8ANjL6I/5v/FMDG+bB/ONqNQ/MfRbZgOFvayzmvjVwP+GXJkdBtyZjk9dy5i7FXjvlO8XXfO2reYp2VbHS0FlGzHYEHlI4P2e2V1xSruZkdF35jfnj5ZjsbjSoHOoz3EbRiOAchVgVFX+z9r/ZZdPEAPURD/dfj+sngr6tnz/5H8u+ZNXhS88o2UkV9YSFHuY5QhNTyEciOVVmVfhf+dPtpmL44xGxxm/qjGEssP8AYxl+PXFiJiPLi3/zoy/2P+/e1eQPzT85Ra7B5c856eYxOKJOiEfEBWrMhaFh/Px+zlo1OPJy9E/5srh/sZ+r+qjxIy/oH/O9X+bL/evb7qzhul4XCLIvgwBH3HBOAlz3Q8a8oXUvlT8xL7y4IwLTU0N1ERsAQC5oPs8ftx/7BcGOgOHuP4/2LIcvc9sy1i8T19Ton5n2894OVjrVobYV3XkoA9Mj/K4cf+euVfUSD+Px6mQ32QvlqST8rfOH+GZXP6C1gmS0LEkRyk8fSq38zcY/+Rb/ALT5LFIkcJ/g+mX86P4/2Sx3Fd38T3C4aNYyZyBGB8XKlKe9ckY8W3NiBb5P8pfmOn5a+btW0fTo2v7G6mPoRwkH94TWMIfs/Zb03/2OMCICp7cDOq2l0epXd1+YPnC2ktFsrXS7SeNlY3BMjEMKfYX7Lcf5lbKpaiMhUYzyf0peiH/Hv8ySOIdBf9Z5P+Ulv501i7ufJVnqL2Onac5E7oo5rRypjhkUeorSMH/b/wCacn48gKiImR/il6+CP9L+H/Yf50fqRxnpw/8AE/j8SZ3+Yv5VP5M0a48zabrGom+sgJOU0ocNVgnFlon8382Mc2cbSkJj+KPDKMP82PFP/ff5rPxZnmTIfzf4fx/pnsXkPWpda0Gw1O5oZri3jkemw5MoLU/2WTu2Ek/xQ8E/MbQR508/HRKBlg0mWpPRXcn02P8AspI8x8ovl+OFl0SST82ZvKn5cxw2duFv43k0+UqOKwuoK+pJx/3aycWT+d+T/s/FbAQA/rji4a+qf8fFxfj+FIob9/8AunzfDrEdl6d5bIzaishdpHoy79AI2DfEv2vUZvt/sfDiYjrv/Rr0/wDHv9ix29/9H+B6l5T/ACBe50hvN/mW/jttNaMTAx/G7BvipVvhR+Xw8fj+PKjKcpcMRwV/Fk/3UYw/o/8ASKgSJrl/WTjyfaaj+X3lSTznpFkJbm9uKI0q8vStlBpLT7X7yT9r+TjkBKBl6/WB6Y/0p/xLYB33/mvfvyf846h5x8rw6zeiNbub1AAg+EFWZEqPo+LMqcgeQr+jbKVXtsHzpf6R578yeabzyq9/LJcxVeULM0cXAhSp+EfZ/eJ+zkTrJiNgUf4YxGPj/wBNxQ/3ayyyHL/Y8Mf9k9c/IX8svNHk+e4k1+6raMvGO3EhkHKoPq7/AAp8Pw/D8T/t/YXB+Ynl2kJf1slSn/m+qX+cx8WU/qv/ADvVL/N9U/Sn35l/lZqHnfU7cy3722jRRkPDFUOz161+zxZafF+zicmQbRoX9Uv+O/8AHl45DYbX9Unzp+f/AJD0zyVrlpY6WrRwNbpI7FuTEl3R3+L9rimVwid7PH/Sl/x1AFPXtK0Xzn+Xdql3pRh1rSiob0wgSUKRyqpUfF8P+tgjMQ/vIiP+2Y/99/EkSr6gP60U113U9I/OryrcWen0XU4BzWGTaSOVf2afyybx8vs/8DluaFDjjv8A0o/zf4opMeo3eE/lrbPrum6n5MuardQ1vLRG2b1ovhmhTl9lpI/2fh/nyMzY4h/B/uZ/Wknb3f7h6L+VPms2+s6fr0p/d6yhsbw7gLdRU9Fj+zynjKN/rO38uSjQNd/qj/vvx/Sgki/871R/rfxvpjLGt2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KoL9LWv1v9H+qv1rhz9Oo5ca05U8MlwmrTw7Wjcih2KuxV2KuxV2KuxV2KuxV2KuxV5h51A1Dz1oGnuKxwJc3R8AQvFCf9kMqkd/ky6PT8tYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf/9X1TirsVdiryn86fyduPzGexVbz0La2c+rGQaMrEcnTj/u3ivFeXw/6v7VEzMfTW/8AsZfzv6Ufx/VFnpX4/wBMzPyv5D0byvBHb6VaxwiJeIYKC5r15SH4iW/1sjDBGJ4uc/50vq/H9VjwDn/sv4mR5ks3Yq+eP+cifyLHmCa48121xHA0VuGkWQ0DtHsPjPwryi+H/XVf5sx6mDsOOJ/08f53D/u/9OgRJO27xv8AJTVRrmp2fk3Xrl10SScyCGtFeWn7uJz9r05GHHj/ADf63LMiRlKPCPTf8X8XB/FGLdxEivx/V4n3HaWsVpEtvAojijAVVUUAA6BQO2QhAQFDYBpRGTS7FXYqltzoNhcvJLPbxO8yhZCyAllH2Vcn7Sj+XMaenhM2R+P6P82X9KLExBeRajbyfkvqC6jaM8nlS/m4zwEcvqsjfYmhPX0W+y6/8SfhluOZB4Jn/heSX1f1J/j+lwx4Z8dkTfpP+bL+b/R/q/j+t2i1uorqJLiBg8UihlYbggjkrD2YZYgq+KGFfmt5DXzpoz2KHheRETW0nTjIm6fF2DfZ/wCG/Zymd/UPqj+JRRyWflJ51bzVoqy3Y46jasbe6TusqHiSR29ReMn+y4/s5fYIscizlvv3s4wMXYq44FeDX3nHT/yg80XFpOx/QmqL66onxehMKiRfTX4lWX4G/wCuccMKHCdq/u5S/m/zP838fU2Rjtvt/NYz5i/5yvv9YmGmeTbFjcSniryjkxJ2Hpwp+1y/mb/YZdKWPGLPrr/Nh/xUv6voT6Y/0v8Acf8AFS/2KYeTvyM8xebbxNb/ADKu5JY0PJLMtWvtIE/dRR/8VxfE/wC3x/aw5Z55hQ/d4vdwSl/Vj6Zf8lZ+v+bxfVGo5DLyj/pf9h/vpev/AHT6DtbW10q3EMCpBbxDYKAqqB+AGWQxiO0Qoj0DzXzf+fNhYXH6J8tRNrGqNsI4N0U9vUkHw0/1f+Cy6YjiF5Dwf0f45fj/AEzMgR+rb+j/ABJJH5D8/ecwJvMepfou2bf6ta/aA8Hcd/8AZZR+amf7uIxj+dk+tHiH+ECH+7Zh5R/JHyz5Zb14bYXFydzNcfvHr/s/hX/geWUnCZm8hOQ/0vp/0v8AxfE1kXz3/rM/VQooNh4ZkRiIigyec/mv5ttbOOLSrNTda+zpLaQRDkyup5CWT/fcHH4ZeX24mdfscnUSAiOOXpr6f50/50IR+r1fj1R4WVV6jy/3X9X8f7lv8q/JiW8C+ZNRla81i+QNLK/+660528a/sLGw4/62RozPFL/Nj/DGP8Pp/ncKJEk77f0f6L0fLUOxV2KuxVIvO3lqLzNo13o81KXETKCezdY3/wBjJxbKsgsbc/qiimK/kP5jl1by5HaXtRe6a7WcwPWsXwpX/YcV/wBZWy0S4hfezO+/e9HxYuxV5R5v/IS01y/k1e01C9srxyGXhKWRCP5Eb41Xl8XFZFVf2OGQGXPHaM5eH/NlxS9P83i44/7KM/6XGz8WY5E/53FL/fJBcXn5ifl2n1m7dNf0uPeQ04zKo6t/N9n/ACpf9TH81ZrLEQ/2zF9H+xjH/O9H+eviA/UK/pR/H8X+d/WereS/Oen+b9PTVNLk5xNswP2kb9pHHZly2UeH/ikSjTIMixdirsVeSfnzYtp66Z5vtlHr6VdxmQ9vRkPCQN7cuP8Aq82yrlIHv9Mv97/vmUTu9I1S8n/R0t3parPP6TPACfhduPKMch+y2WSPCjlzeBWv5W+d/wAxi155vvGsbOStLVNjQHZWjHwgf63PKpameQVjAhj/AJ0vxxS/2EVlkJ2j6Ypr/wA42eStCk0aSS4s4X1S1uZYZ3kUMwKGqU58uHwtx+HjlZwifqlZ4v4b9H+l/i/z+JjKAPPe/wAfS92ihSJQqKFUdgMthijAVEAf1QmqeNfmdax6B560PzG6qba95afOG+z8dfTZv2f2+X/PLI8AJ4TymPp/pfjhSAgPzR8haHYaxb6hJqsuji+ZUjit6BTKDRpn/ZVfiTm2WYo5YenGYQiPVwyv/SxZQEhyoV/O/nf0Uxg8k+f9CY3ekazHqUI3ENyPtDw5j4VP+VywePkj9cYz/ncPomjjl/EIy/2Lz/8AJvznD5N8yan5c84xLZvdXC3ESuAY45CG6OfhXkjoqSf5P28ccI5o/wBX6Y5Pr/6STEDIPd9MZfj6mf6j/wA5AXtzcPZeV9BvdQkjcxs7D04wQeNeaiX4eX8/p/Dkjmww2MuKX83GPV/xf+lxTY8UI87Nfwx/m/7KX+wYP+amh/mJ5s079Nara2unxaWDcxpExMwIo5Ierbqq8m+JPiRfgyo6iJIMYzH+2S/4j0/7LF6f56BkvkCP6Uvq/H+bFNvy+/L/AEbzVo9rrnmPWbi5uLlKtHJchApBKvHSqs3xD9rMgx1GTkZCP8Phw9PD/sv9i2EZD1Nf0R/vnpek/lN5ct54b/Si8bwMrAxTEqxU1pKAWV+X7XLKvCnDnKf9XJ6v901mMhzM/wDOLCvM90v5b/mBDrsh4aRrielcHskq/Zkb2rxbl/lSY4tiY9/qj+Px9UWUd9ns+m6pbarbrd2ciywODRl3Gx4n/gW+FsslDoUEUwXzn+efljymrRGdbm6Xb0LajtXwZ1/dpv8Aa5Ny/wAjJx04xjfhwx/m+mMv+VX/ABXDH+k2eGR9Xp/3X+l/4rhYQvmn8yvPhaTQ7ZNH087K8394Qf2wXHLko/lRVyj83AbY4+L/AEv4f+J/3fCw8Qfwji/pS/H+l/3SOsf+ccptVk+s+ctUuNQkPVFYqn/DcsjLJlycyMY/mx9X+b/DFBnI7cnqHlfyFovlhOGkWscFRuwHxH5ufiyMcERv9Z/nS9TARAZDmQydiqReafOmleVrb65rFwkEdNgx+Jj4Iv2mOTjAy/4r+FkIkvKLv/nJC41hmtvJ2k3F7JWiyOCE+dF/5ryE8uLH9UuI/wA2P4+leKMefq/oxQVv+V/nvzo4vfNGqNp8TGoggJBUeFEKr/wTZV+ZnL6B4cf6X44/9xxL4sj9PoH+yYf51/KHSdC1zSvL9s8+qanfyqZhM54rDWjyER/vB0duXP4URsjKcyLyTMv4Yxj6ZRl/neL/ALlSZEXIk/zfxPiZn+ZX/ONWkLokj+UrThqcbI68pGbmoPxx/vn9Ndm5fs/Z45VwnHuTPJ/O4uH/AGPhRj/vmsbd5/H+ayD8g/zCs9dtG0R7VLDVdPULNCqhQwB4GVFXp8X21/m/1vhyI4sYHFDr9X87i/rfxf7r+GX9KfCKuL17LEPBvO9r/hj80tJ11Bxg1SM20p6AvQx7n/VMLf7HKobEjv8AV/xSY93egv8AnID8ptE1C9j1m61KLS57kgSCXZZAgoWRV+Iyqrf7L/JyIhkF8FSif4ZHg4Zf75RGR5V/nHhZLp/n78utDezu4NSgR7O1Nonp1NYyUajoiM3wtHyT/Xb7XLL4aOUd7h/S9eP1S/nfU2eER/N/00P18TyLzz5p0PWNe1a10u6jmsdZtVkWQ8l4XUPxx09QKy+oyen/AM9v8nIyxEbc6PFHhlGf9eHol/N4/wCkjh+z1M28neYRB5m0bzNEw+reYrQWtyARRbmIAAt7sycU/wBlkYjhJHK/VH/fIqvj6n0RljB2KuxV2KvKf+cgbCeHTrPzLZGlxo9ykxI6+mxCTD/V+zz/AMjllRPCQf8ANl/nfj/ZJBovS9J1ODVLWK+tW5QzoHQ+IYVGXHZSFNNZs3vG0xZUN4qCRoqjkEJ4hyv8vLDwmrXh6sZ/OC/vNP8AK99d2CiSSOOrIwBDRk8Z1avb0i/2fiymRHXe/T+P85Qa82Nf84zeZk1jynFblqzWTtCwPYE84/8AY8W4r/q5YmT1S5uY7ZDLOypGu5ZiAB8ycIFoAt5p5m/PvR9PkNjo6vqd/wBFjgFRX/KfJSEce8yI/wBH+NmYiP1Hh/3SRzeTfOX5hSLL5guP0Tpbbm1gY+oR4O4/42/4DMf8xKW2McH+2S+v8fjiYnIf4fT/AEv43pXlDyFpHlK3FtpMCx/zOd3Y+LyfabIRwgHiPrl/Ol/vf5rCmR5kJcTTFUFp+rWmoqzWUqTKjFWKEGhHUGnfJSiRzZSiRzRuRYqUVxHNURsGpsaGuEilpVwKo3M4t43mYEqiljTc7CuwwEqxm3852HmDy7cazp7n0BFNXkKFSgYMHH7JXGYrzZVu87/JTzHpnk3yPFfavOsSSyyygE1Y1PEBEHxN9jHHAytkIEvRvIX5gWfnS2kvLCOWOKN+AMq8eW32k8VwkxugRP8AqsCB0NsO1iZY/wAzraeVuEUGmSFmNKUq5Jr/AJOVDc/H/esghdW/5yGW1Y3lnplxcaNGwR7z7Kkk0rGGHxL7/tf5OWieO+En1f0RxRivp5XZ/o/S9ZtNRiu7RL6I1ikjEqk/ysOY/DAWLyb8jfL9nrflS8t72P1ILy9nMgJ+0AylNx8soMeK9z/Wj9SZPQdC/L7QdCIfTbKGF1GzBQW/4NuTZAaeI53L+seL/Y/T/sWsQAYB5NceWPzB1XQyClvqqLdwCmxcAmah/wCRn/C5dj227i2Dl7nsJQE1IFRk6Yrskr53/OPXH8t/mLo+ssT6SwrGafyl3Wb/AISTK4ndlHd9DqwYVHQ5Yxec/nh5Mm8w6L9b0+q6lpri6tyOtU+J0H+sByX/AC0XKJnhPF/N+r+p/wAd/wCKW63YV+aWsWvnP8vYPNUThLyyaOYMBuswIili2+x+8bl/sY3yc40RIfiM2ZFF5HqX5l+avzSlWy4yvGoH+jWoKqx7tK//ADV/sMsy6gQ5fu/9lOf9RTkEf6H9X6k9vvy081w6UkNnYWtg1owuuSyA3JaMMwNW+Juv2cxIzA9XDkJ/iyS4uHh/3PCxB6iJ/rSfQP5RaVc2miRXF1fy6ibsLMHlABTko5Rin8rfzftZlccpfVX9Hh/mspSMubweH8uZNV/MXWNIN5Nps8jPd28kNdyxEqk0KV4q7/Zb+ZMqjOcR6DVfVGXF64/zfT/voz/qrGUh9Jr+ci/ze/x3oumJ5V1K8h1SDUWEUXBaXDBCHFVorfaRebcpP9fJ+OSPXGMP9sj9P+bHij/0yivGasgf1o/7nh9P+5emflZ+bmiyWdp5cuw+m39rCkJiuBwBMYCHgzfzceXxcf8AZZPFGMxcCJ/1fqUREt47/wBH+J6J5ovb200y4udJiE94kZaKM9GYD4VyJkI7lgNub5r8sXn5g3fnHUdQtLe3TVfq8a3EUlOIQhPTA3X4/g/m/myB1EbvhlK/4f4osjPuH+awHzr5N8z655sk8u3ixW97fk3Xoq9IS/FmMg3ZebUk/wBn8GAZqieEHn9Pp4v9N6fSxMtthL+r6WYf846LpFvBrnl3zYkMcaoPUMoVSoBMU0frHjNy5emyKv7fxp8f2k4Bm3HP+GX8cf6X82HD/wBJKIcfLf8Apf8AHmIWF7e6qZfKdhLNcaFDJLPY27Agz8W5CLn/AC8ebf6/LhxdslLJUaJj6P7yUfq4P6P4/wByz4qFc6+qX8b6Y/KT8w7Dz5pcuk3Fsttc2qejPaEEKFpw+EH9j9nj+zhOOJjUd8f+yYkCtuTCfyi89aX+Xz6z5Y1udbeKwumeAtWrI540A7tsjcV/nyWKBmPd9TMR4gutfNel/wDKxbHzPpswk0/WrdrRnAP96nFQj8vs7+hkBAxJj6f53pPEjhrZ6Jdfnl5VtdV/QM93wuw/pmqMED148GkI49f2vsf5WXxx2NjG/wCbfq/4n/N4mQx31H9X8en/AGTPlIIqOmVtT5N/OryzrXnDz7dWGnwJK8FmnAM2wjoayf5L85H4ZRPJwjlI7/w/7r+qmUqHK00/K7zx+Y8+lKdNtoL2zsP9GaNyBLWMD4OvIsq/D9nLTqYR5xnOx9UeJkZjmRf9Vbba1DqXmzTdV0Wyl07zCblYtQsyCFaJ6rNcdPsr+23+q7p8OVRMIeqBvFP08P8AFCbEUN47xPp4V/5z6V/yr7zxp3nOxULb3UoM4A/aFEn/AOR0T/8AB8nw4xR4e/6f876v9Ksdl+v+VRa6vqnlazIS11KNdW0xl6CeMc+EZ/Z9Qc1+H9j08iAYj/hMv9h/0h/uEg1/mPffIvmMeY9FtNUqOc0Sl6dnHwyrT/JkDZklEgn+KHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYFcTTCrsVdirsVdirsVdirsVdirsVdirHNX8lWep6la63Vor60JCuhpyU7NHIP2kYZSYG7ieG/q/ijJWR5crsVdirsVdirsVdirsVdirsVdirznRWGq+e7+66pp1pHbr7NITK/8Awq5V193/AEiyIejZaxdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVU3iWTZtwCD92VSjxfsSDSplqHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq//1vVOBXYVdirsVdirsVSbzX5ltvLWmz6veV9GBeRA6k9FVf8AKZvhxASA8l0PQtZ/Ni8j1jzNG1noEW8VlyIMx6iSbjx5Ly+L4v8AYftZTPL4nphccf8AFL+KX9GKmV7R+n+d/PYj/wA5O/lTbaPDF5t0GNbUwsqTLH8IrsIZUUfCrK3wvx/yX/myvGPDND6T/ncMv+Pfj6mMRw8no3/OP/5w/wCPNNNreAjU7NQJW7SDosw8Gb9tf5vi/a4rmSo7jr9Uf5v/AB1slXMPW8iwQeqR3Ulu6WLrHcFSEZhyANPhJXuK5EkjlukPPPMvmvzJ5FtjqGqRx6pp6lRI8ClJI1/akaP4ldf9nkY5RdTHB/SieKHF/neqKYkfxbf0o/8AEs88v+YLPX7OPUtNkEtvKoZWHv2Pgy/tLl0okLKNKHmez07UrCaw1Zo/qs6FHDsAKEeLHqv2sr8I5RQs/wBUfTJRAy5Wf6rzD8ivOcFit35M1C6iaTS5SlvIZFpLCxrHQ1oWXl0X/U/Zy2OOUhuJcX8UaP8Auf5rLhkenL6ntOQa3Yq8buh/gPz+lwpC6Z5jHBx0C3CfYb/npX/h5Mrx7Ex/zo/778f1Ux32/wA57JliHYq7FXj+sf8AOM3l/WdUuNX1CW4kkuJGkKh6BSx5EL9r4a5jShkP8X+xY7nqt/Kn/nH628gaxcax9Y+sq0ZSEMtCgY1ck9K8Rx/4LBGMifVw+n6eH+d/VpRfVH/mH/zkBoXlMmztidR1MnisEBBAatKSyLyCf6qq7/5GZ5x8IufoH+y/47H+lL/N4m7g4d5en/df8d/H1McsfI/mn8zZV1DztI2naSAGj0+BirMCOs7V5L/svj+1/dZinPKe2L93j/1T6pz/AKv/AEjGP9Gf1MDkJ2j6I/zv4pfj8RereVPI+keVYPq2j2yQJ3IHxE+LufiY5GOEA3zl/Ol6pMBEBkGXsnYq8/8AzX/NS28k2ixRATarcnhbQV3LHoz7rSJW/wCC+zkgABxS+kf7L+qzjHqVX8t/II0KN9X1FjPrl+BJdTPSoJAPoRqPhSKP7PFf+aeOMAZnjl/mx/hhH/iv6TAm9z/0imK30Hly+lhu5Fhsrms8bOaBZP8Ad8VT8Khv75F/m9bLscSfSP4fp/qf8cl/sZf0WcQZea+7/Mzy3aIsk+oW6o4qp5g1H+xy8YJdyfDkpaL+aXlrW7gWen38E07GioripPsMicRQYEMsytg7FXYq8i0wf4T/ADDuLQ/BZa9CJkr09eP7YHuy8m/ymfK8fWPd6o/5zIbj3ep67ljF2KuxVTl48Dzpxoa16U74CLV5B/zj9pZguNd1CBOOnXd8fq1NlIQyByg/k+NV5f5OVwNen+Yk7bdz2PLUOxV2KpX5l0WHXNOudMuBWO4jZD/sgRtkJiwgi2K/kvrL3mgR6fdE/XNNdrSYN1rGaIf9X0+HHJA8QvvZy7+9n2Fi+c7zWdb8i+d9S0fyxYrfNqqpdBHfiA3xc2B+zx5F+eUwnHGPUJTAP8P/AB2Mv9yzEgBuJH+r/wBIyd+Y/nD8yNC046nqdxZaZFIwiSGBfUlZm7IXEq8lX4uSsuXR1APKFV/Fml/vYS9X+diSJg8o1/SkeKX+x9Ev9JBAfmH+Ter3flZ9d1DWb2+mgiW6WGUUA2DkcKsyOqll+Fvhyg5shNng4f6I4P8AO4vR/uGsykT0/wA0cKe+RPyJ8q+btCs9VuGuZ2miBPKdiFf7MnEdvjBwTjkkd5n+jtFZAjqSntl+RGoaMSNC1+8tYj0RqOB4fbyfi5ht6Mn/AAwS/wB6njlX87+s8U/Nny/d2OpnVn1WPVr2xaOK5rCP3aNVV9YU9N+vF1+39nAeL+OOKPH/AKmZeqX9L+KH9aKi+Z4N/wCb/vn1n5TSFNJtBbsHjMEfFlqARxG4BL8R/k8m45KMK5j+t/W/rfVL+tL1IO34/wCKecfnl5I83+a5La08uXS2+nsrJcLzKE8u78R8acfh48sEs0obCPHf8UeH/ZcZ9P8Amp8Qx5PLfyr/ACk0mz80X3lTzSDPPboJLduRVXHV+KV3+FuX+wbIAzyDYyhX1Rif98u8h1H9UvevKf5eeX/K92bjSpGR2BHpmYsu/UiMn7WXjHkA3M5j+l/xSeCQ58f+dxSQn56aHFq/lW7RrZruWNRJEqfaVgf7xDRvsqfj/mTllOWvqJ4K/i/H8LA/KniP5VflR541vSvqFzeyaXoVyxlZessnLY0HwyKrU+PkyI/2+D4Rq5nbGN/9Ul9Mf6n/ABz+L+KLIZT0/wBN+PV+Pre3+TvyN8r+VuEtpaia5Q19eb43r4/F8Cf880XKvy/F9ZM/9jH/AEn/ABXFL+k18Pfv+P5v0/756CABsMygGbeFUJfapa2CGS7lSJQKkuwAp9OSEDLluyESeTz/AMw/85C+UdFZonu/rMq/s26mT/hx+7/4bLPCr6jGH9b6v9JHin/sWYx95jH+t/x3iYkv5sedfPBKeSdL+qWLVAvLzY0/nRG/d/7FVnzHlqccdoiWeQ/m/R/vf9llh/Va/EiOVzP+w/Ef6/8Ampr5Z/IU3VyNZ89XR1fUCNkb+5T2VP2uP+xT/IymRnm+r93D/Uo/76Uf97/p5MZEy57D+bF6zY6bbWEYhtI0ijHRUAA/DJwxRhyAioFK08ywI0khoigkk9gMtS8O/KnVLTzF5l1TznqM8SfEbS1VmAIjQ0ZxyPJeX/G7YPCOSVgSqH+6bvClL6RI1/nPVda8xaMLSWO9vLdIZEZSWmVagih35V/4HLvy8yNhP+twy9KDhmOkvlKP+yfL3lLUZtFvbTznYv61tbXR065epq8JPGCV9uP2Ph5f5EeY0ZcMqP8AH9XD/PYDY13/AFPsBWDCo3Byxi8o/wCcktBfUPLX6QtwTcadKlwpHUAHi/8AwrcsqlsQVBpkH+H9E/MnRrC/1eBLpGjWVdyKMQBIKoVP2vhZcGTHxdSK/m/zfx/nKYsI/Njyp5U8haBNqljpNhJdqVEazgNWpAYgO3J+K/FxVsgNLE7nxDX82eTh/wA7hlw/7FEMQG+5/wA6XD/unm/n/wA8eTtf8s2kunCK11q24SiOKJlUMP7yLnT7P7ScuX7PxZL8tGHqjW/1Rv1Th/S9PC2DFEbjhH9H+P8A3PCpeRrxfM3lXUbSyAS80q5XUbYDqBs0kaftcV+ymMhwVLu9P+anlv3PqfyvrsWvaZbapCapcRq/yJHxD/Yt8OZBDAik1yNIdhV2KoTU9Oh1K2ks7lQ0MyFHB6EMKHISjxCkU8f/ACg8x/4X1O6/LzVpPjtnLWbNsGjb4uA/yv2v+CyWP1x/pR9Mmweoe5F+Y/P+h+W/P0SXZVZ7m0EEkmwCfHzj9Rz+zt/scMcVm+p+mPqSIfajvNX58eTbaKWxmuhdF0KskCGQEMCKch+7/wCGyyWDapGML/nH/ew4pLwVzIj+P6PE+b/yq85eYfLOrT2Hli1Mp1E0iSZCKAEmOWlePwr+18SfayiOeERv6/6p/i/H9VrGSP8AXe76b+S2teYnF1581KS4B3+qwsVjBPYleO3+qq5E5smTYfuY/wBH6/x/pkmcpf0P6r03y55I0fy3GI9KtY4aClQo5fS/2shHBGO/1H+dL1MQE+zIS7FXYqtkICkt0ocBV4b/AM47x11fX5bcFbP6zxRewNW6f7HIRNbMi9W866Re6vpcthps31aeWi+oOqgn4yvvxwykY7x3QDTxbzr5Hn/Kp7TzR5fuJmhjkVLuORiwcMaGQjIwyZImpnjE/wDYyZRmeR9Vvf7C9jvbeO6hNY5UDqfZhyGW0wKpySSqVB8RiYpIfLXm691XyVdat5LsYmmi1YmS1478RIT6gA/4XKIzAjUv4GUZADfozT8pv+ceoNOgh1DzNW4u1FUgbdIx1Ap+02V+rLzsQ/m/zv6zWSZc/wDSvb7eCO3QRQqERRsFFAPkBmRGAjsNlfNf/OQWp3dl5sSDTwWmvbIW5UGhYO5DID/lL8OR4uGy2g0h/wAyPzNaPysfKV7pc+lXLenGgfePghBJWT/Y/wCVjA45D0G6/hkOGX4/0rGJieV/1ZPY5bgw+RT+jHWaSOw4qyMCOQj4ndf5WyRuA3SRR3V/yV0n9GeU7CArxdo+bfNiT+qmCAYs4yxDyL88rZtNu9H80Q/C9ldrHI3/ABXIaHl/k8vh/wBllXKXv9KY83rUciyKHQ1VgCCPA9MtQvxV87f85dWnGLS78bGOV0qBv8QDdf8AYZUefwSHsf5b67+nfL9lf8gzPEAxH8y/A36stTIbsmIB2OLF4J5l8vweT9am0y/Xl5V8wsVkHaCc7hh/KrN8X/XK5jxjY8Pl/Fjl/vEx39P+lef+T/Pg/L2HW/LWm0bUDdBLIkVJDEpWv7XFeDZbAAes0SPqZRFc+jONY/I+Wz8uz63f3ty3mCOJp2l9UheQHP0+PTj+zkBlyn1XX+116OFAnI9f81NPyu/OLQ9H8p2EeqXQN4FflGilnrzZvsJ065kDHtZqA/pH/cszC99gxXzbea55u8xWvmfybpdzFd268BNMAsbqK0D8iq8fj/378afsZiePjhK4nxP50YxlL/cer/TRj/Wa+OI5ev4S4f8ATRl6f87hVdL/AC4/M2XVm8zXUlmupMvBWmIbgvTjFGiSxRr/AKvx/wDBthOo4jvjM4D6Y/TCP+b4kZ8X9dfEvnH6fp39P+xl/ukf5z/LXz95ptTDqo06dlNVdV4vXxWRUVlyMsgviGMwkP4oy9X+l4vUpkP5sf60ZS4lPy9+Ynmb8rrOLT/Olm09krcY7lHDMB/KeX2+OZGPURy/Vxwn/SDKMxPnxD+lSE8vfnRo+n+YtU1uJ3u/0iIxDBDGedUAUByfhDYaEd5VCI/ivj4v82P0f5ySB1oV/ncX/EsQ/ODXvM9/fWHnWSxOjpA4hhlYgybnkrOjfsr/AKvD7X2sqhmgT6LP9KX0T/H9eTATB+n/AE0vpl+P85Wuvyui0/zdpN15ouRqdprY5PIAY1ZyB6Ybgd+qN+zzyMeKdxNY/wDhZ/47Bd5c9j/Rez/nD5DX9BxX3l+JYb7R2E1uIxQ8V+3GOPZlyAiMXqH9WX9KMv5zGPpeQ/mTe30VrY/mN5Uc2kupL6F56ZoBJ03/AJfiH/EcugfCltvGfqjxf71svhO3VG+VP+cV7/XCdV80XoZrlC/7slm5MPgcu3wsv7WVSnkmdhwf1v8AiGsmR8mRfm7+WNv5R8jQLpLMZ9JmWZJTTlVjSRvYdG4/5OMQYkSO/wDO/mpjs8v1uXzBqPluXV9Z06PUIb4eomoRr++iZDxAcp9iLY814qj/AM/PEzx8XI4cl+nh/upf5vFwcU/9N/Rl6UmUQdxR/hl/D+P9J/nvbvyo/Pfy5daHaWmpXqwXsESxyCUEVKjiCrfEG+HNhHEZbjhPx4f93wf7HibRjMuVH48P+74Um8t+dtK1H81JZLCZZorqzEKyKfhLr8bJ/lfZyg4zE7/72TExrZOPy7/51bz1q/l2Q8Yb+l5APEkkvT73yvHyr+YWI5e56pN5esJr6LVZIUN7CCqS0+IBhxYV+WDwxd/iX9Zr4RdsW/OvyQvm7y1c2YFbiJfWhNKkOnxbf6y1XI5RXqHT/cpLxiPzNBqHkvTNf9aNdZ8vyhCrsAzIp4vHwJ5PyTj8K/yZcYG+McRjL0y4f6X89uF/VztnH5H+ddMl1S/0PTJhJazUvIF3+AyCs8HxftI38vw4YwMRR6fT/U/hQY7e7/cvbMLW7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVOaURI0h6KCT9Arirzf8AJCI3NrqGtv8Aav72RxXrxU8E+imVR3NspPTMtYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV//9f1TgV2FXYq7FXYq7FWFa7cQ33mSz0a84vB6ElwI2oeToVCEp+0qqS3+tlco8W3T+L+l/RZVYZmqhRQbAZICmLAvzoivLjy9NBa2CalG/8AfRM/AiMfE0kZ/wB+LTkv/G2VTMQPVxf1sf8ADL+d/F6U2Otn+q+UvIf6X8o3MXnPy5HLcaZFIY5lp8QB+3FMi8uS8fsSL/r8FyQyiB4Zdf4v4Zf8TP8Ao/6WU2QlWx6/j/TPoHzV/wA5H2thDbT6NAL76yBRFf8Aecj+x6a8mHH7Ls3+xy4mMd5X/W+mH/HmfCI/Vf8Am8LBo/z681+YL64tY5LXRfqyFmS4U8jQdufxFsfFBF44+J/WKAb+kcX9Ypz5I/5yHN7opstUhfVdZld41hgjNHTonM/Zo2MzAi51CH82Prl/pVlwnc1H+jFhGqeXPOPkwG/LyaNoWpXA9WG2fk0AY7H4uPD/AGLLlOPUGPpjt/qcskYyYRyV6Rt/NlLhm9Cvfyo8ueX9T0y+1SSXVYNQb0S13IZPjYB4pRT4eG3Hi3L7eJGSfpySkf6spYuH+j9XF/skSEp7SJNf0pR/EV35oeR9I8p69o2v2dlFHZNMLe4jVAFo32JGX7PJf5srhjETw+qp+cper+txIiBy73vi0pt0zJVdiryz/nIyxtpfK8l5M3Ca0kSaBqE0cHYVH2eS/DyysjcHuSGb+SdfTzBo1nqiGvrwoxP+VSj/APDZaVkKKeYEOxV2KsO/NTyvqvmbRJdL0W5FpcSkAuSQClfjSqBmHJf5ciZyhvH/AI9/mpEiOTGvyl/IXSvJMS3d2iXerHdpmHIKf+KAw+H/AFvtZj+GZnin/pf4f87+dJhV7nd6tmUydirsVYH+b/5nQeQdIa+YCS7kPCCI7cm/ovXJRA5nkGUR3vL/AC9+RNx560uXzH5unlOtXyh7cqxUQD7UY4fZ/wBj+yn+XmLLJPIeKPo4Ppj/AAy/3/8AvmBkZb8q+mLNvyQ853N1ptxofmCQLqmjuYZmdt2Qf3crEnw+Hl/q5lA+J6h/F/umw+rcdf8AdJ/+ZP5Yab58tVS8LCWIExOjEbkbV4/aXMeYl/CTCv8AZNZB6bPIPyF/Lby/fpe6Tr9kk2rafOVcvWvGvwED+XIHH4g4rmP4eGMvSkixe/8AVeyWf5R+V7K7j1C20+KO4iIZHFdiOhpXjjHAAbBl82IiB+CzLMlk7FXYq8z/ADz0qQabB5gs6/WtJnS4BHXgDSQf8DlRPDIS/wA2X9WSRzZ/pGpxapaQ30BrHOiyL8mHLLVOyNxQkuleatP1W8utOtZOVzZMEmQgggkcgd/tLv8AaXDW1sjGhaL1bVbLTYTNqEscMPQtIwUdP8rr8sYwMthugRJfMfn38wdV8465F5X/AC8kZLKBNhD8AYg1duX++1/5qwcf5YVH/Yjil/VZg+F9P+xe0/lN5U8yaFBJ/ia/N47gcE6hPH46fEchHLKf1Dh/3X+xYGZlzehZNDsVdiryOxuIvKfn29im5CDVbYToB05xD97t/NxHw5VE1Y7vUyG49yCh/wCchbm8mePTtCvriNSQrBacqGlaHoMlLPhjzl/pV48Y2svOfzD85ebk1Wy86No36P8AqhMKtMSQwk2AmH7plXIxzYzL08Zv/M4/6svVBRIXQ4ky/NPy5+YfmfQP0nrT2CWlqBdLHb1L7DYgsGX7J/ZlyMs9n6JQo/VKUf8Ae5P96jj/AKPD/Sv1/wC6lBkXlHyP5t8yaJDqEfmV2gvIBWN4Qy0I4sv2/wDY5ZPNkO3Dj/0seL/YxbZZJD+Z/pIsW/KTyz5otb7UvK2nat9UbTJahCnJGDftgV+Fenw4jNPh2EJf1vr/ANMwE5AfwH+tF7V5Vk84Wt0LTXkt7m1p/vRCeLVp+1EcRm4tjEwP9H1w/wCOqZCXTh/H+xV/Mf5c6Tc6XqVrb2yRyagjNIwFS7gFkdi37XLKpYgN2sRp4d+X/wCc2t6R5dtfL2i6c2oarDK8B5VKoAapzCcW/m+00Srl3jY4i536vpjH+P8A2Mv9LCM2yUoj6r3Z1BpH5r68A99e2ekQuN44YxI4+k8uJ/1Z2yH5on6Mf+dkl9X+b6v9liigZO6Ij/W9X+wlxR/3LAfze/JTUtFs0803Go3OpXMDKLhiSrelWh9Nl+Ica/tPkRlyCVy4Ycfp/djh4f8Ae/7FjxHr/sQ9F8rfkh5V1Swt9Us5LsrMiur/AFh67jcV+e2SrIP45MiZd8vmy3Q/y1i0a8S9s7694L1hkl9RGFKbhxXJ8WTkZCUP5soR4v8ATxYgkCr/ANMI8X+mTXzx5qXypo9zrLxGZbZOfAEKT7cjyp/wOGNDY+kf0Rxf7H0pAt5bZf8AOXPlaWBXuYruKYj4o1RXAPs/NeQ/yuK5kHHE7iQ/zhKMv9zKH+zkzMR3/j8f0lK9/wCcoYdSdbTyjptxf3LdnXiB8whb/ia5VKWPH9Z/0v8Ax7/iUekcz/pWpf8AlbHmlRQQaPCeoBHP/jZsp/Nj+CBP9KX/AB5HiV9Mf9N/vVTR/wDnGkXzfWvOOo3GoTn9lWIQf8Fy/wCIrkZTy5OZ8MfzY/jh/wB0iU5S5mh/Ni9I8tflZ5b8uD/cbYRI38zDm30PJyYZUNNH+K8n/DPX/sfo/wBi1HGDz3/rJl5u8wL5b0q41T0zN9XTkI16sa0CL7s2ZMRGP9CI/m/8S2jfm8xj/wCcgL/TCG8zaFd2ULCqyRj1BT/LFF4/8Fgjnwz5SMP+GDg4v9Nw/wC+U5MZ5XD+t/ZF6L5K8+6V5xtjd6PL6iqaMpFGU+Dp+zl0ocPdL+lFJjW6t518tnzJpNxpIme3+sIV9ROoGUy4gPT/ALJjbynS/wDnF7ybPEY1nnuJo/hkZJV2bvsFbj/qvyys4ckfqPPy9KyxyHPiH4/qoC9/JX8sPK7+prF5Vl3Mc1yK1H/FMISRsmNLlluTLf8Ai4YwjL/Pnxf7viSMMjvvX9LhhH/cx/2MlXWPzO/LZtBuPLVjL6FrKpUelCwAbtJ8QWrbcuTfFko6UAbSj/O4pSlP1f1+GbZHCK+of7L/AIl6F+Wn5j6D5igTTNIujcTWsSK3IEMQoC8/iy2UDEc4z/qonCuoP9Vl+r6dHqdnNYyiqTRsh+TDjlMhYpreO/k7qmpQ6DqnlWzP+5TSXkjgL7AhiTD1xjPa+dfwsyevNA+XP+cfZ9ctG1Lz7PPeao6twiaQlYjvx+y3E/F8XFWVMplknl3vgiPpjGPBKX9ePD6f9Jx/0mEpGXl/Rj6fx/mt/wDON2k6feaPf6LeW8Uk1rcPE5KAsVO3xGn+Tglp4ZPUQD/S/iYyxg70HmflpT+WXniazlPGzaYwSjsYZPsPT+VctgOIUevp/wA9sg+hfyhB02G98vOQTY3DGM9jFJ+9i4+y144Ybj+r6ZKXoeWMXYq7FXYq8b/On8mr/wA76jZ6hpE8dpLbgh5TUP1+HiyfF8OY5MscriOK/wClwseIjl/pnmH5Vfk3Z+add1OPzJcS3b2EgSvIguelWLcmpkpmeTrwfzuH/epkCef+xfR3lv8ALzQfLkfDS7KKE9241Y/60j8mb/gsq/LQ/i/ef8M9f+x+j/SxY8A/6STx7CB5FnaNTKgIViBUA9eJ6jLBiiDYA+TOl91dRWqGWd1jjHVmIA+85kAE8kgWvjdZFDIQVIqCN/xwIUJtTtoJBDLKiyN0UsK/dkhElkIkokEHcZFi3iqRedddj0LR7rUZdhDEx+mlBimIt5H/AM4zeb9Gaxk04TAapcTPK8bbE1O3D+bGOM/UyMer3nFg+Xfz91DWtVW/vraZl0m0kW2eEfZY9SxXx5ftZUcu/Cz4q2R3kzzzrHnyxsvKnlpmtIIIQLy7oain+64z+yzZOWTg2j68h/2CmXDy3l/uV/nTyOn5b6npOoabd3Mkk9yEkEkhPIHrtkY5Mg+qXHaxkeptl357omlz6T5qA4ta3Cq7f5DdQcjW/vRHmu1f82tR8zXq6T+X6Rzui85riUH01HZR/M2WznHFzHHL+bFJIhz9f9FNvy6/My81HUJvLPmWFbbWIByAT7EifzpiJiYsbfzoy/hXYixt/Ree/nFAz/mRoo41DenSuw2JJ3yoiygMj/NS0i88eZ9P8oqoeG3rc3TeC0+GP/ZY5B/ppelBFBB67+VfmHycl1J5Hm9WxuVIazk3pUUJjLZEZZYxUh4mP+d/HFRMjY+sf7J6d+WdleWPl6ytNST07qKIK69aGpy2ErFqWUZNDBvzm0w6n5YvbaMBpVj9UKep4HltlWTlfmkbJl+WusLrHl6xvFNawqpr4qOBr/wOWpkKSjzn+cmjeWpRZqWvL9qhYLcc2r/lcfs5MxEBczwD+knhreXpeYeaPLPnr82IDFeQxabp6uHjSUfGfev2vs5iT1Al/dxM6/il6P8AdsJZP5o/zmX/APOP63GjRX/lO+blNp03wkdCrDqPbkMthLiHcyPJ69k2KQedfL1j5g0qew1IqsDqfjagCEfZkqenE5XKBny+r+Fat8R27Xul+a/rVnx1Ceyk5A9VcR/CHJ/aXj+1gJ/n/wCdFmTXN9KXX5beYvOdi115g1J0EsZeO2tvhT4hVFdv2u2CWXIRsI44/wA36pSYymTsPR/ul3/OP35V/wCG9Kdtcs0XUDM1GdQzBAfgoT9n/Y5WIRybkH+rL/iWG0v+PPXbi6htUMkzrGiipLEAAe5OZUYXsP8AYsxEnluwjXfzy8o6MCJtQjmkH7EH7w/fHWNf9k65cMJ/iqH9aX+9+v8A2LPwz1ofH/ex4pscb85Na8y/ufJelSyI231m6HBBXuBX4uP+tmPLPjjtvmn/ADcf0/6f/pFjxRH9P+r9KrYfkYdYm/SPne7k1G4O/pAlYlr2VB1ymRyZef7uP82P1f6djKRl/RH82KE80fkLDp8o1zyOfqGpwCqxjdHp+z8f2S2VASx7/wB5H+KOQccv81A9O/1f0ZJXrHmtfzI8s3/lrV4vqnmG1jLtCwpyaP4vUir+z/k5kTIlHjjvX+mizIBFj/pBj+kKfO35ZK0RH6V0NuSHfkpjPIb9uUf/ABHGZqpdyy23e5flx5nTzZ5ftdSJDtLGFlA3o4HGRTlkhaCHjWq+XP0RPrnkm5/3ivoXvbEdaOvxuE/l40+zmONxX+pn/YJG49zG/Jn5vec9etbXy55RgRprGACZ5ACTxO27Hiv8uZEs0cYsjjv+tJl4gHTiZDqX55RahoWo+XfPFq1rqar6RVFqGLbLIA524t8TfaxIjlFx9H9bi+v/ADYrQkLGzBPIH5panp3lnUPLT2n1u0hRyxFQ6LJ8PP8AaVlVvi48cjKcSN/Tf0yj/wAT/vv4UCQ6/j+tFn35Z6H5FuPKFndeZY7UXFG5M9BKd/Bf3rj/AGLZX+V8Tf1D+lGfDH/dcH++YnFxeXx4UZZ/mD5C8v3KN5Z0p7m5iqFeGKhH7NeR5N/wSrhGDHjNyl9sp/j/AGSRjjHmf91Njv5lebvMV1qVj5sh0mSwFk4VZZd+Qc0CyD7PHGObGZeniP8AO/hjJYyje1m2e29h+aOtxpM15Z2Eb0b4FDMARt2nU5L8yeUcf+dkl/x6Mv8AYL4lbcI/rS/6S/3qx/yb84ak5bVfM06RN1W3BWv3GJV/4BsH5jMdgMcP6XpnL/pnGX/S1j4sz0hD+r6v97i/3TzC2/L3y35K84zaR5tk+sadJD6sU0rMDy+1SRIvtszcvtLkYwlkHCTwH+j6IS/0/wDxTIRMhvz/AJ30L/K2pDSLqT/Dto8j6dcm4hm4+mHtZPhkSYvxbgv7HFWyMDGBu+P+GXD6+P8Am+r+cseEef8ADLh/i/zn1Xply91axTyhQ8iBiFNRuK7HvmRf4kgpDNeeYv8AEKQRQRfoP0zzkJ/ec/YV+z/scHiD6al/W/hRf/SSJ84+YLzRLMT6bZtqFyzBFhVglSa7mRgwUf7HBKcY/Vf+aOOX+lXbr/sXeUNZ1HWtPF3qtkdOmev7ln5kDxf4Yqf6uGM4y3jxf5w4VsHlav5d8r2egJKlkGHrOZHLMWJJ93LUHtgF/wARM/638K2Tz3TrJq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVor3wBK7Ch2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ksc/MTWhougXt+dzHC1B7sOA/wCJYDsmItZ+W2jNo/l6ys3+2sSs3zb4z+vIQ5KSybLEOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KrWYKKk0GKV2KHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq/wD/0PVOKuxV2KuxV2KuxV81/n3Pe+XfPOj+YYyy27FI+QO3Xi6H/YnllcZ0SGcS+kY5BIoddwwBH05Ng6RBIpVhVTsRgkLCvAPLHkvTdH8633lbU4EmsLxTd2qOTxBP2xw+y/VvtfZzHjGxw3Pb0+mUoccP6fBKLICxW7GfzK1iy/J/V518vRW8z3y8kiKgtbyDbkngrf77ycMA/jHHwf3cpf75MYgbyF/zfx/NeG+ZbfXNV1CW71VXlvCgml7kIe78fs/Ccn4g91/T/CxMu/Z9efkrPpFvDaxaXbxxxXlqssbhRz5IAk8ckn2mbl8WVxxRB/nSH8UvV/0ikwAejeavLtv5j0y40m6/urhGQnwJ6N/scnkjxD/csKt8x3SeZYpLD8u9StJZJrS8SS1ux9kwqeRqaMrcV/a5fB9h8gdRGQ7so9Mo/iXF/sfWz8Qf5z6L/Mfyp/ijy/c6UD++eOsZ8HX4kP8AwWSndX3epjaB/J3W7jV/LdrJe0+swgwvQ13jPCv4ZbxXukm2b4UMV/NHRV1ry1qFk37UDkfNRz/41yufJXj/APzij+Y8E1i/lS9cLdQOWgB25oftKP8AKVv2cvqxfd9TYRY9z6KyDW7FXYq7FXb/AEYFdhV2KvFfOX573vk3zN+jdZsTHorEKtyKkmv7f8tP8nDCcJenlMM4mJ25TZ95m8l6J54gtrjUl9eCIiaIg0G4rU+K0yjJi4jzkK/m8P8AxLXIMT8zf85CeW9BJsdPEuoXifAsFuhpUbBfUI407fDz/wBXMngjAeuUYAefHL/if9POLYYiP1ED8f6T/TSeHed9I8y6vqKecPMNm2l6XeSJDMsbFX9MnYzj7X2f2mVf9TMSGeN1j4ocf8X8M5fj/NYie9R4oX/F/O/H9R9d6RBBb2cMVoa26ooTv8NPh3+WX+9S8i/MKNvI/nGx82QHhZ6gRbXg7V/YkP8AL/rZCHplX8/6f66w7u9U89f85I6Zpkg03y6BqGoSOEWhpGCTQcn/AGv9jmSYiG8t/wCjH6mzh4ee/wDRj9Sb+RPOfnG71L9GeaNJEEboXW4hasYoPsvuw5N/r8v8jKPHxz2AnCf82f8AF/sY/wC+YGUTyv8AH+leoZJi7FUNf2UV9byWs45RyqUYexFDkJDiFILAPycmfT4rzytcNWXSpyiE94nPOEj/ACePw4Yy4o78x6Zf5rM8npGSYvAPzssNS8i6snnzQG4CcCC7XjyXf7ErpVef/NWVwnwSrbgn/O4vqTCVHfe/5yt5F8haN50uX1PW9W/T9wAr+kaqkYb4qGHk3+rx+zhyRyzHqIhD+biP+++qLLJGR57R/ovL/N2jXN1+Y8mi+V2+rFmSOsOwVVA514/y0+PIR/cj08/4eJAPByfUWveddI8oWiHW7tIyqhfiNWYgU5cB8XxdcyoYzLf/AGUvTFMYGX44Uw8seZ7DzLZLqWlyetbPUBqEbjrsd8hOPDtsf6p44/6ZBFJvgYuxV5Z+ekR02Gw80wryfS7lWf8A4xv8D1/yVyvYSvv9Mkjm9JsJ4riBJ4KenIoYU6UIr2wiAjypFU8f/P8A/MrQ7WzuPKV7HNPfTxBlWJKhWO8bMWK/8LywyjEizIQZbVd0w/yB+e2p32gJokOhXepywxGCSSMniduNH/dvxbj/ADYZ5MQFTkRKX8MYxn/084v9gmUoczxf5seL/ff71Lvyl/MfzZoMU/lTTtGM89tI0pjlbg0aOdlYNx5fF+1kY58YFy45/wBX/pGfCmM4kb3/AJvp/wB3FDHzl5s8v+dxrF1pQt7rVE9IW7PRXI2U81LfFyGCGbGbI4zH+bXr/wBlGCOOPnX+yexJqv5j3zemLKxs1NP3jSF6f7D7RxGpHSE5f1jwIEx3E/Hheh6V9ZW1jXUWRroKBIY6hS3fgG345Pn04f6P1f7JaeC+Wru18o/mtdaXZSqbbVEJZFIostOfEr2blkIR4RR/zUjk+hndY1LMQANyT7ZYwSbVZdO13S7mP1Y5rR4nWRkYMoFDyqULfZ+1kcmM1R2/relNPmj8pf8AnIC28nWk3l6aGa/SKZhbGIblKnajZbGq9ZEKZmupp6PafnX5svR9Zt/LVw1oeh5EMR4heGU/mMPfP+tGP7WHFA/zvkzeyurD8zdAlguYJYIpw0UsUqlZEYdf9krYJ1Meg3/NlFBo8jbyz/nHryppWnX+r+X9QtopdQsZ6q8iKWMe6qQTy/aH7Pw5V4UcguXq/wBNw/6VBgDu99t9MtbYloYkjY9SqgfqwwwQh9IEfgoADBdT/OjTNG8xyeW9XX6oEjEi3EjAIwIrSn2hmZCHHsPr/m/8ebBG+SzWf+cgfKGmIWF6tw/QJCC7H6FyXhV9RjD+sUjH3kR/H81BeXfzz/xFexWem6PftFI1GnZAqKP5yWPT/gcxzlxA8PFxT/mxjKX/AB7/AGLXxQ5Xcv6I/Ev9ij/z3823/lXyzJqOl0FwJESrKGADHduLcl/4LEkfxAT/AKMkx282SeSb2bWNCs7zUeEk80KO5A+Ekj+XBICXMf5qkW8vtbP/AAZ+Zq2mnxhLLWYCzLWg5rViyD/WH2cGP03H/S/0VHJ7iQDtkyEPjHXJ9Y8meadS8uWeoLptpey83uGJUBG+MFSvJlbi37Px4MU5VQAMv6R/2XHP0/6ZnEk7Dh/zpcP+6Zn5W8uflNpVH1bUo9Tvm+JpZTJxr1NEQen/AMjGdsTpMmQ3OQ9X8McuOP8AsuLxf9lH+qpwSPMj/NnGP+4lxJL+ZH5u+T4IDY+UNMtmmFVM7wKoXsDCPtM3+Uy4PyuOHP8AefGU4/5/F9aDiiOfDNN/+cftW8qeULebVtW1KD9J3f2l3+Ba8uPT7TftYYYJyNmox/hjxRQIn3PdvK35kaD5ole30e7S4ljFWUVrTx37ZbKFdzKUa7j/AFXn2vuPJ/5j2mofYtNaiMMm9B6i/ZLfzN9nKIbEx/zkR32et6trVno9u15qEyQQJ9p3YAD/AILLoxMtggRJfKeh/mzY+WPO+o3mhRy6jZagfgjjqpLn4vhRgzEcuX7ORiBAVM0B/FH1/wDE/wCxZ0Bsf9igPzn1HVdfvYdcutIm0+OZfq/KQglif7s/s8G/1sx/FhKVQJP9aMv9gwE4n6b/AM7/AHj1z8p/Nn12fS7uYBZru2e0n8fVgIKV/wAr08tAF7dfUzq/j6nt2Ta3Yq7FXYq7FXhH5SXQ0/z/AOYNII3kPqKa9gd9vpyuAT0e75YhKfMvmax8t2T6lqcgit4xue5PZVH7TN/LkoxtlGNvFJ4PMv5wXgEiPpvlqJwwDgh5QDUH+Y8v+AyiWe/Tj3/nZEcfSP8ApnvVpapaQpbxbJGoUfICgywCkMQ83flJoPmmRrm/iYXTCnqo5DCnSm/H/hcqlCV3GU4fH0/6VBvoSGCfkrrOqWHmLU/KOp3b3EVkP3Ak3bjXrz+03w5aMhmLNX/FL+JsMiRu9rubqK2jaadljjUVLMQAB7k5IC9gxAt4N+YnmFvzTvofK3lwSS2Ecoa6uVqI6Dqob9rjleWXB6b/AHh/hj6uFJPDt/EVL80/JOk+Qp9F1nTIxbCC4WOV12JXapf+bKceMwPO7/nfzmMBT3HQ/MVhrkH1rTZkni6VQ138D75lSiY82UokPnHzD52tbzR9U8uW1rNe31xcSyMEG0YUnjI7f7HMeXCBcjVn0sjQ5ov8m/zB1vT9DS00Ty8bmOOoadHCBmB358hu3+yxGTDjO/HxfxcMZT/2XqY3Ac7/AM3/AKRUb7z9/j7zhpun6rD+i009i8iTOK8xvSp4rlhrJ9Fm2QF/S+hde8vaf5lsjY6hGs9rJQ07exBGRyY72N7f6ZqkLU/LHlDTPLFt9U0iBYI+p4jcnxJyMMQh5/0pKBTzj8ydDvbXzpo3mDT4XkQkwzFFJAB7vT9njglMQO+3EkSA+LL/ADt+Vul+bpob28MsV3bf3UsL8WX8GwygbuJ4Je6Mo/6WSN+iI8l/l3p/lUSSW5knu5zWW4mblI/zfwwiJJ4pHjl/pY/5sV57ndkd1eQ2iercSLGg7sQB+OXiJPLdkBbBNd/PLy9prmCCRr2cbenApY18K/ZyZiI/URBmYVz9KSj8wfOnmEiPQtIFpGT/AH12SBTseHw/8Kz5j/mcf8Inm/q+mH+m/wCK4GPHEcrn/sfx/pkg8/8AkXzrLpz6xqGsLztlJaK2iCH022mUSjizjj8XFvh+HInPPnwwgD6ecpS/zoy44f6SS+Ie6I/2f+6eIeTrTzNr94fLnl65ujGrnk4kYRKhP2ii/Cv/ABvlh1MsYq+f0xiy8Ux2BfWH5d/lJpPkyIPBH6t8wHqXD/ExPehPQZSMdnin65f7GLVV7ndneZCXlOoH/D35hwXBPG31eAxnwMifZr/lZXHYkf5zIMi86fmdYeW2WzjDXmpy7R20I5OT250/u1/ymy0gQHFM8Ef9lL+pFNVudh/uv6rHLf8AL/WvOLC787T+nbmhSwt2IRf+Mzj7Tf7J/wDX/ZyjjnPaP7nH/wBLZf8AE/j0RYmZPL0f7qX4/HCkX58eVoNA0W1u/LlrDDc2kvwsCqkIQeYIYr6qt+2rcshHFHGbAMuL0y+qfF/XWArfn+P4mKeQPz487ayjWtlYQX8ke1E+AoB8Iqg6r/lZlSywiPpkP6vqZkgcwf8ANZp6/wCbGrD0hHZ2CuN5CQzL9FW3/wBjlR1QP0wn/nf8e4P90x8QcxH/AE34iiLD/nHyPUZVvfOWoXGqz9ShcpEPYKvxU/1fTwGeWfOXhx/m4/8Aivp/2Ev6yDOR5n/Nj6Wa+V/IPlfS4+ei2dsFFRzUBzUbH963Nq/7LK5aSIPqBl/wzil/sJ+mP+bFhLFR3G/9K/8AfMrSNYxRQFHttl0YgcmSDtNcsbyRoLa4jklT7So4JHzAOWmJDIxIR+QYvPfzO/LT/ESJquksLbW7SrQygD4/+KZv5kb7PxZjyiYHij/nR/nx/wCKQDW4/wCknlX/ADjPIg17W9MvYmguJAC9u2wG5Wb4P9Zv+A45OIExtvFkNxszH8oHPlLX9T8kXG0fM3VoT3jfdlH+rksRuP8ASh6ZJG49ya/npoMr2MHmOyXld6S/qkD9qI7TIfbj8WQnsb7/AEy/zkA0Xl//ADjxqMGg+YdWE1Esp0WZZ2+FQCS6irfzcsMRxbfxD+FkI2aHNA/nzeeWvNuq282hGS71SIqsiQIWWRQagcx8TN+zyjVsE4eFuSBE/VHi+n/ex/qzlFjICPMgfj/Sp0PLHmTVla71+4s/K+nzosTBeCSyqBQJIWKyO3H9mSX/AJ45XAcV+FDb+LJk4pR/rcEo8H+lji/4bJYkn6Y1/Sl+P+qSX2Vr+WmgSCBBda1cg1AVSVJ6U9NfSVh/zyfJywEC8kxD+jH0f7P1/wDTVkY19UqH82P4jx/6eTOtG/MeeOP0fL/lqWMLUVKBB7faWNsiDp4Hnx35f7/1xYREAa5/1R/0l/umC/mp+b+u3mmzaPqVpbWwmHFlDhn61BAr8LZkGUT/AAzH82UvRwtorukP63pSTyn+a35ga5FFpeghpDbqIjwjBIAFAZHcMq/6zccMtVGHMA3/AEZSn/m8Ev8AeTQcoHSJ/wBNxf7GX+8ehWHkP81Nbs2TVdbFgGAIRFUv8mltxEyf7GVsq/NzP0QiP6WT0/6WHDl/2cINZyy6CP8AncP+x4Yy/wB5Jh/mT/nHjX/LkJ8yC/iu7m1YTOWQsxofiPx8ufFfi+L/ACsqOScj64xN/wBOUv8AewY8UpH1ffxf72DJfMflTzpDAvmS5u7F1t4Cv92EDROBWN+PFT1+DJRn08OIv0y4Zy9f830soyJNcI380o1bXPOXlGyt9eF9az20MQhWJHqCh6TGOvxMuZEcsxtKBEff/F/WbhKXIxr4pj+Xv/OUEMNrPB5qZpbqFiUe3QsHU+y7Lx/ysu2lz4cf4/zkGpd0P9N/x5N5/wA8PM3mTT59S8oaR/oMSu31m4cbBASxENV5MtPsq75TPLjgQPXk+Ho/03DL/dRkgmMe+f8AsY/j/OSv/nGu+8yeaL6613Vr+eS0jJT0mclGkIB+x9lRGv8ALhlmMjw7V7o/6WP8TEzJfRmLF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvOfzflF8dM8uLu+oXiFl/4qi/ezV9vs5CfJkBs9DjjEahF2VQAPkMkAxX4VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeQfn1NdalNo/lbT5JIptRuiXZGKn04xylqV+L7Lcv9jkTMwG2x/4pkCRuNnrFpbC2hSFSSI1CipJOwpuTucIYq+FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/0fVOBXYVdirsVdirsVecfnz5PPmTyzP6K8rq0IuIvGqbsP8Agcpnt6v5v+5UbJ/+XPmKPXNCsrxGq0sIJHeq/C4/2LfDlgZyDIbq6itY2muHWONRVmYgAD3J2yQjfLdiBfJ8ufnV+alvrOq2155SMhn0xij3oWsSiQ8KhgGaity+L/gMEgMcuYlI/wCT/wCPf9JRZ1wHvl/N/h/H+xZTqP5X+X/KPla81zWZlvtSuYS31qX4izuKosCsf2m/2X7WUeFPIeKfT+H+CLDhMjct6/0sXlX5O6B5p81w38eimKNLj93c3M27cSNok/a+zjknR+nxJf7CP/H0mVdLSP8AL7V77yhr1i8k71t70wPbliBRiEc0+yqtz/4TL4ZD/m8LIG33gjclDeOFrcVB3PXIGIO6rsmr518wfmOfyX1q+sZ7dp7LUJBdW4U0py+GYfF/KwyOGvpl/C2Ro8+j1jRvzW8vanpkWr/XIYYZQDSRwCpP7DCv2lzI8KR5bpOM9GQapPDcWEzc19J4n+Ku1Cp3ykxLDhL5O/5xt/LSDzBr0+tXMh9PTZaqi1Wrklo25r8LKtDyXKSZXtt/O39f+l4f4kGx5f7p9h5ch2KuxV2KuxV2KuxVj3nbyXYecdNk0nU05RyDZu6t+y6H+ZcoyY+LltL+GSDu80/JrzBeeXr6b8ufMRrNbKTaSHpJD/IK/aKqf+A/1cuhIZI90o+mUWf1DzH1PT9A8m6V5fVl0y3SIsxYsBVqsan4z8VMx46eI3Pr/pSqU/8ActYiAb/2TvO+h22uaNd6bekLBNEwLMaBaDkHJ7cWHLLZw4htz/h/rMqt49+S/wCYes67bWvl7TUVhprBbu6kIYGMEiNY1+00kir9rLDkAG445y/zYx/pSk2SI99/7F6h+aflRPNHl6704ishjLxePNQWSn+t9nKcg2vu9TUXjn5c/lBpPmnyDwtlVdVaR29Y/aWVGKqhP2lXiPs/7PISxn6xvL+H+r/MUit3oP5OfmFNqsb+XNdHo65p3wSI3V1X4RKn83+Xx/42zKBGQcUf86P8yTYfULH+c9QwMHYq7FXmnmWE+XPN9jr61FrqS/UrjwEn2rZ2/wBanprlcdpV/P8AV/nRTHuel5YhA6zpUGrWkthdIskMylWVhUGviMrnHiFI5vkDWPLXmb8kLv8AS0MsVLsywp6dWHEAMGcMF4stfgyOHMboj/TS+r+lH+j/AKX+qyhPvQ/5b+VPNRu11QXUemPqgPC5nI5yBqMTAf8AKqv8uIymUjwjxJQ/nemMf9N9f+YyBJO273vyn/zj3pVhL+kdfkfVr80Jec1UH/JTv/ssjITy/wB4f82Ppi1yuX1PUbKxgsohBaxrFEvRUUKB8gu2WwgIihsqJyaXYqk3m/QI/MGk3WlSgEXMTIK9jT4D/sX4tlcxYVh/5EeZX1Xy+tjcjjd6Y5tJV7gx7IT/AKy5YDxC+9nLv72ePpFm8/1x4YzcUC+oVHKg6DnTlTKJ4YSNkA/1mugXi/l1l8jfmVdaOx4WOtxieEHp6gqSF8N/UX/gcniGxj3M47iu5Dfmxr8H5c+dbPzW3xxXlu0FxGpHI8dkcITy/kXl/rYccaJv0xP8Xq4eNMR3vCvOn5seZPMlwJ734JNPm9eElQrxhiOIp/KvwfayXiRNEV/vZp4+7he12HlyG90u38w+afNE5trlVYBZBGN+qAj4vhb4clxZ5EgcGP8Aqx/4tNzO2w/qh57eef8Ay5a6tcWEP6VubRarFNFeNydgdmCN+w383L/YYkkDecxX1bR4Ucv4pj+rw8DAdc/S+ma7b6xbW9zYTSSB4DdEyMTXiGMkyKr9f2vgyrHnjI+k+NX+nl/mYvV/mxYRnf03P+l9Up/6R7b5C/M3W75tQh87atbRW/1V41iJhqzuCoZGti1OP7f+xy3jlk2jHgr+dxYp/wDS3h+r/YNoiZcgBX870S/2XAiP+cTPNFlNb3/lqZy1w8jTKp+y0ZCxPQ1/m/ZwGNiz/V/pMDy9yp5v8t6b+VnnPS9c0+JYdMvS0M46hWY/a+L7C7o3/BZjY8Yvhl6/5vF6mEYfH+s9O1r89vKGjt6c9+jv4RAyEfP0+WZ/gEc+GH9Yxi2nGRzoJp5J/M7QfOnqDRLgSvEAXQqVYA9DwcK3H3ys4uEWKPF/N/3zExp5751U+UfzG0zW4vgttXX6rOexcHgn0/FD/wANlMDRI/nepEXt+WMXzZrH5f2PmL815rHVeVzbG2FwUdu9FpGtP91rz+zlEwZbXIf0o+n0pIsPZdI/KjyxpEnrWenQJIAACV5Up4c+VMh+Xj1uf9YsOEMsVQooNhmRGIjyZJD588sR+aNEvNGk/wCPiIqD4MPijP8AwYGQyCxtz+qKvNf+cdvOb/U38maxWLVdLYoEfq0Y6cP5vT+z/qcWy2J8SPEP878fj1MyLFj/ADnfXm8wfmqEtwJINIsykjD9l3Nf+C5Px/2LZCXMBB2e1ZNi8d/5yF/KI+cdO/SOlxg6tbCop1kjFeUX+U/8n/A/y5jT9B4v9N/xTEvJPye/I/y956s5muWvrLULNxHPHVOJJH2k5RVXp8Ub8mXBITlvCUOA/wAMoSlP/TRyw9P+ak77g83rmjf84ueUNOo80Ut247zP1+apwX/hcHgyP1Sl/VjUY/8AFf7NiR5n8f1WYW/5Q+VLf+60y2H+wGH8vH+lL+sZSUwB5p/p/l/TtNJext4oGIpWNApp81GShhjD6R97IRAYd+dP5dv500jhZMU1G0Yy2zKQPj/k5Erx5U+1+zkp2PUOcf8AcpBp53pP5Aa35k1CHUPP16bm3SFP3KuQwem8R4D0wi78mjbk/wDwWRlnyZfT/dw/zf8Ac/zv53HGXD/uGU5S25fj8cTX5w+XLDyNrPl7XtNhS2sref0ZAi0ABNeR/mZkd/tYwxiJr+d/O9Xq/pcSIRA+L178xfKsXm3QLnTSAWkjLRE9nA5RkHtv8OTyDax09Svm/wDI4NeXotL+6+qjTpWv3ZqA/uwbedDy+z/M/wDkcskAZfTX/HJf8eZ0Ty/EX1D5c836V5kjebR7mO5SNuLGM1offLZQMeamNJzkWLsVdirsVfPmuxHyp+bNrqD/AA22rRiOvbkQEp/waDK4bEj/ADmUTez6DyxixzXPJVhrl9b3+oq031QH04mP7vkT/etH+0/8uUziZbE+n+KP87+t/R/ooIvZF+Zk1JdNlXQfTF8APS9T7Na9/oyV+GNhxf0Y+lIeSXf5h+dfIfC58328V3pzsA81vsYwfFRkoZ4yNSBxk/T/ADWYkDsfS9o07U4NStY762YPBKodWHcEVByZFMSHzV5+8623ln8w01fy/wAb6eeP0JoUbYyH4AnP7PLkA3w5AR8Mni/rf0mYHDz/AOPM3s/yx8w+eJhqHnu6aK1O6afbsVUDt6rDv/wTf5eVeNPJtH9zj/nf5WX4/pf6RgZk7D0R/wBn+Px6Xqug+XLDQLZbPTIUghXoqin3+OGGMQ/4qX1MQKeTf85Sxy3mk2WmW6F5bq6CgAV6D+3DOQHNldJZ+SWkS+Rtf1Xy3LIWjS2jud+gNN/14ITJG6RuGJ+Q9TPlWeXzJqIf9E6x68LzKvLg/Jgjn/Jb4siKkeHYfzeJlzNHZG/kl+ammeUdH1SC8l5tDOzwKNzLy2CoB/lDMiEb57V9SeG/KmR/l9+T8Pm6xutb8327C91CVpIySVdEP2Kfy/6uYf8AeHiiZQA+nh/i/wA1qkeLfkmGlfld5t8o6nAugaiZ9HLr6kVwalVr8fHx+HLxnyD0yAyf0vx9KeM8ju9r6DfLUMf1rz5ouigi+u4o2UEleQLbf5C/Fk/DPM7f1vT/ALpmIH3f1mAXH563OrubXyhpdxeynYSyLxjHuQp+z/rSxZVPLjhsTxy/mx/HH/0q/wA5SYjYmz/Nj+OL/Yf5y0aT+ZPmHe7uodKganwxgFx9Kcm/5K5AamR+iFf0sn/HuL/cRR4ncAP634n/AL1UsPyDW4kM3mLUbi/qSeNSo+ndmbImWWfOXB/VYmcpcz/pWfeXvIujeXwBptrHEwH2qAt/wZ+LIx08RufX/W9TERAZBmSyQmqadDqVtJZXIJilUqwBIND7jfISFhXzR5OtdT/KPzbf2ptLi80mVA/qIpJEYNRKP5/TrxdeXLKYZoDaZEZfT/x/+rL+cmMhyk+jPL3mXT/MFst5pkyzRMOx3Hsw+0p/1sy5RITKJCaswUVOwGRYvm/8+/zAt9bmtbLQSzS2dwvK7T7MbsQnAH9pv2sjOoH/AGz+b/xTZXD/AFnsHkP8ubDytF6yVuNQl3luZN3Ync7n7K1/ZXKYwMjxT9cv9jH+p/xTVz3LMcyEsG178qNN8xawNZ1hpLlEULHbuf3S0/a4D7RP2viyiQnLa6x/zY+mX+dJTZ2eaeR9Anb8xtUvNEjjt7TT/Tt3RRRWVqBwPB14ep/11kY+jaIse/8A2Sj07B9CZkAql3mASfo66EG8voycP9bi3H/hsBNBLyz/AJxZjUeVnkBJd7qXnvXcED6PhwA2ks+/MDQb3X9Lk03Tp/q0ktAZBWoUEc1FN/iXGU5R+nmgEjk8x87/AJUw+SNPi8yeVA0d9phEs1WJM0f+7udevw1b/V5ZVEyxmyTMH05OL/dRREkd5v6nrflLzJB5l0u31i0/urhAwB6g/tIfdW+HMkhMhSc4EPnz87ZG8gebdM882iUgnrb3YH7Q/wAr/KaP7H+VFlUPTIj+f6v+K/H9JMTv72RfnVbrawWP5gaXIguNNKvuwAmhf7UYPduLfB/rNjRjKxy+nJ/xSRYP+6Spvz4ufO6HSvJWntcyyJSZp6BEDChFK/GN+PL7OW5jCA3vJ/RiJf7pJqPfN5bpvlnTfLupXOk/mFduiWiRtFBCaiQSVf0xx/33X7PH+bKYieQbHw/53F9fD/X/AOk0C5Df0M60XXtTkiYeSdIi0bTTUPqF3RWKj9qsvJv+Tv8AqZVE4xKoA6jL/Orih/vYx/2P9SSw4b9IOSX878fj+gkby+Q9IuWvvNerPr+ogD4Iw7ID4c1b03/y1aXh/kLl88WXJ9chhj/Nifp/0keOH+ZDF/SnJnwmX1ED+qf+J+j/AKVf00Zcf85EabpaC18p6RFboKUMoC7H9r0047f5XNsjDT4Yd+S/4v6X9efFOX+dwIEIDluZer+bxf8AFf6aKQzfmPr3mwmG8vrho2NBDp8J3r+w0tFXJnPwfT4eD+t65f6SPq/2SeOuXDD/AGU2V+W/Li6NPC6aFGs85ISTU7geoxFK0T4l/wArMcCOXn42cj+bHgxf7OTXQl/PnX+bFKINeufKH5jiTUJ7bTba7jDXAhJeFgFJA/Z4PyHHl+y3+tl+IGuER4P6OSX0f0ocHpZRFbAcF/wyL0/VP+clfKlnKLe3ee7lNRSKOm4NKVmMVeX+Tyy84xEWZQHx4v8AZQ4of6aSTEDmRt+Pq+j/AGTDvPv/ADkPrVrYG4ttFeCxlJiMt4GoQwP+66R/aWv+/VymOXFPYGWTb6o+mP8Ap48cf9nGX9FAMDyuf+5/2PHH/SzYzPNJq2lR6f5j8yRR2LxIEt7YF2YAVRXCj7X2fhb4+eSkcshyhD/bMko/7z1s5CX9CH9K/wAS/wBMxv8AKe10q5Sezu9JutZ1CCWioCQqR1onNGPwNy55RkkCBxzkP5scfr4/6kmo0fqJ/qxR2oWWo+SfMtveNpMNrDqJeGOCZw0fGQqhjcqPhVXbl8X7HwZGHBLapzr+GX7qf9Hgl/v0RMT0JH82XpknmhaZ5m8l6ldeSpZIbe01a3nni4o0i14OzxQOxi4vxXi7Ny4/C+SjluJFUY/w5JeqMP53o+v/AGP8TMS25cv531/7D6npv/OL9mIPKSPx4tJPKSfGh4V/4XjlsWL13JodirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirga4AVdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5bYltf8AzGuZqcrbRbRYQewmmIk2/wAr0+atlZO4H+d/vWRepZYxdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirjtirG/KPn3SPNySPo84lMJ4up2ZdyAWQ/Fxbj8LZKcOHul/Sj6mZjTJMiwdirsVWswUVPTFXkdF1n81qSVKaTpnJPDnK4BP/IuXIHc+4/71L17JodirsVSGLzto02onRYruJtQAJMQarbfa6fDyX+XlyyZxyAv8f6X6mfAU+yDB2KuxV5b+aPm7UfLnmLy6tvIVsr65e2uEpVTzMSRk/5Xxtx/l4/63IRnVjbcd3q9P9L8f0mcS9SwsHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq//9L1TirsVdirsVdirsVU5gpRg9ONDWvh3rgIvZXzrpP5naV+XMGo+Xnb6xd2d0XsVjPL1Vm+NI6p/LXjKv8AxvghjocUvRwfV/V/482iIq5bV+PQitF8h+ZPzXK6v50uHs9JLEx6fFVSQpI/eeG6/abm/wDLwyEs8sm2P0Y/9U+qUv6v87/O9H9CbWchO0fTH/ZS/H4i9Wn/AC00X9BTeWrS2jt7OaMpRFFa0+GUn7TurfFyb4spGAAbfV/Ol6pcX9b+b/R+lhw08MvvLOoRxjyD5mhkvZbMSTaTIlQk4VS/1afw+FP2viX4k5/t5OWXjG58OcP7yMf8rD+dH/e/8WzMwRvsR9Uf58U78o+Wtd8h6BJ5uhtljvGkaW4sUqB9X+EBQB0liVPU5fy8sGPII7+rwT6fUfVH/bfV/SWMwP6p/HGxaLTdC/Mv8w7C90FWW3aMXd6RtSSMluBH7LM4hV/9lkp4+DYG+M+n+h/OTKNPq4AAUGXsW8VQWp6ra6XA13fSpBAm7O7BQPpOSjEy2G6YxJ5PmT89fNFr+YkSTeXLGW9TS/UaW6KkRcafGB/Ov+7P+NMoymEDRPrPp4Y/7HiksqHW/wCqivIn/OJ2nanpEN/ql25muVWVfRpxVWAZRv8AaPHKz4kuvB/R+prkJe7/AGTKo/8AnF2F1Fvd6zfS2i7CLlQAeG7Mv/C5Pxc/LiH+ll6v9lH/AHTZxz/nfZ/x56X5F/LrSPJFo1losRjVzydmJZnIFKuT/wAa8VxhDh5kz/rf72LECmU5cl2KuxV2KuBB6Yq7FXYq7FXmv5zeQbjXrOPWNGJj1vTD61uw6sBu0J/m5fsj/Y/tZRI+GeMf539KH/Hf9yoNG0+/LTzxD5y0WHVI6LPThPGOqSLtIhH7P8y/5PHMg945H6Wcg811TzLd/mt5jm8paaWi0DTnP16dDvMVJVYVI+Hg0qceP7aKz/yZHJLhHDH65/VL+ZD+L+l/Q/rS/m8Sk8Ow5/xf0UZ5lt4Pyy812OtWiCHR9UUWVyqgBUdf7iU/sr8P/Mz+bKsUeA8HSXqj/W/i/H9NjAdO97SDXcdMuQ8m/LhU8rea9Y8qyNxhuWW+s1pQFXB9dU/4xtRf9g2V4txX8w/7D+Fl09yY/mn5Fubwx+ZvLYEevWBDIRt6yD7dtJ/NyX7H/A/y8YH93LjG/wDqkf50f539aH49TEGt/wDTf0osn8j+b7bzZpcWqWtVLfDJGwo0ci7SxOPFG/4X4svkO7lL1R/qpP8A0iyLFCUaz5r0rRf+OldRQV7OwB+7rlkcUpcgzjjMuTzX8x/zL8va7pF1plnNLNcFOcLwwu4EqHnCQ4XiPjVfi/lymYERfFAcJ4vqjx+n+ig1He4/Nn35f+Zx5m0S21UqUkkSkiEEFZEPpzJvv8MiNkrB3H9ZB8mR4oSjzP5dtfMOnz6ZeIrxzoybgHiSNnFe6n4spyQE/h9P9GSCHgflPyncebvJ995PvGI1jy/dMsDeFN4VVv5W4yRr/kenjKRIExzH4n+P58WZO1h6b+Rfn6XzhoCy3x/0+0c289djyXo1P8pf+G5ZeSDuOqZDr3vRsDB2KuxV2KvFNCmHk78zLrRRvb+YIfrSf5MiCR3+XL05v+SeQxjYg9D6f6v4/wByyHL/AHL2vJsXiP8Azk/5Xnn0mDzPpfqLqWlSBkaMGvBiOR+H4v3bhG5fZRPU/mygy4JCW1fTLi+n+j/xH9LiUGjbxfzFotmPLVx5k83Xpl813ciNBD6gd41DfZeNHbhzj5t8XHgnBFX7WWkZMh4t4Yo/TGQ4Yzj/AEeOPF/U/h/i/ibSJHc7AfTGXp/0sWG/mH57TzVf/pS2g+rvLbRwzjYh3UDnIAv2eTImPAI/T19X83hYmhy6oTyzp08siJqlrd3VtGpEcUYIFTUgVYfAvI8n45XLOCK4oiv8/wD2LETB5nl/NZPrXljzL5akg81R2J0aDkIUYfEV5Ar6kgfk3Jlb7XH/AFMrhkhLYcU/+GeuM5f0OOMY/wDEoBF7f7L1f7tmn5p/kVrlvoT+ZL3VX1R4AshjYMQFanOSNnfZVry4+kvwYTmyE+sQEfp4oy/0nojjjH/SyXjlL6q/zT/x2LPPys/IvyVrnl6z1VoXupbiINI5lYEOPhkjpGUUenIGX7OA4ZE7yP8Am8PD/ueJTGvx/wASw+Py1D+WH5rWUcEdNO1Giwipool/c0qf99yj/gOOTxj+E9P9l/N/4lY9zN/z6/JPV/PV7HfafcgQxREei1aBlDMpTxMjHj/k5Gc5x5Dij/R+tTIsZ/Ju/wDIui+X3uPMEEEGqWbtFcLOObsw+yUjfl9pfh4qv2lbJDSjL69zE+fDGP8ApeH/AGbIYuLf/dFNdL/ME6hqEt3+XHlvnO6ekbyQejEQDyoUXhHx+H9qWJ8R4OE7GeSX+p45S/49/uOD+kxqETtc/wCr9H/E/wCxj/WSD837D8xzpiX2vR2s9tazrcg21ecBSrVY0X90v7bfvf8AX/bwHUCRFwOH+GMvr4/6Mv3mX6/8z/eszlB/h4P6Xql/vpPo3ylr0ev6TaatD9i5hSSg7Ej4l/2LfDmSxI3fPWpfmpp3lz8y9V1W8jef04FtYViHJi6iIOP8npJkABdyPBX85nQ67Mvh/wCckJI1Fxf6JfRWjfZkCg7eJHw4RmwyPCJUf6Q9P+xYceM7A7/0mceTfze8u+bpfq2mXQN1QkwuCj7daK/Hlx/yeWWnGasVIf0T/vfqj/nMjDax+P8AN+pm2VsHmH5m/kvB5rnTV9LmOnazFSlwlfiA7SBeLNx/YbMepYzxQ5n6o/w/8dUEg2Nk0/Kv8r4PI1nIhlNzfXLepPO3Vm8B/krk4gk8Uvql/sUe9neWpdiqhFbRQlnjUKXPJiABU041bxNMrjjEeQAv6uEfUgABXyxLGde/Mby/oI/3I30MTdKcgWr/AKqcmy0Ypf8ASXpZ+Gfd/WYPq3/OTPlm2Bj071r+etAkKHf35NtTGUIxFylAfHiSYiPMj/NYrqn59+bdaT6p5W0OZLkbs8qlgo/1Bx+Jv8pspOpww5EzP83/AKQ4pSY+LjHK5/0f+kfVJMPyn8x/mReeZPqvmyIxac0LSENCFUEU4CGSMfb5P8ayO3wcv21yH5uGT0xAB/5KQnw/zuGf1fj1fzh4gltVf6aP+6+plv8AzkPoDaz5NvkjAMluFuFr29M8pCPf0ueCXf5/8dRyTn8ofMP6f8q6dfsQZDCqPvX4o/3L192ZOWXHdlLm+a/zz8kXOiear06YSkOoWslzQGlR9u6iH83xR+px/lzHgTHbu/3MvxwIBI5PXv8AnFbQ7Oz8qpqFsB9Zu3b1mqd+BZY1IbpxVv2csA3vff8A0v8Amsap7Rk0uxV2KuxV43/zkxoMkujW/mG0H+laTOkwI68CRz/4FgjZUfSQf83/AIlIO71Dy3rcOuadb6pbGsVxGsg/2QrT/Yn4cuIpSKTTAh2KsD/OHXtH0/QLu11qQKtzEyInVmYj4Ci/5L8WwSx8Q7v6TKMOJ4l+TWn+ZfPWj/oSK++paPZMUcp/etyJf0/5lXj/AKuQllmNogb/AOUl/vGRmen+mZx+aH5RaboPlJ5NCi9O4sZEuvUPxO/A/Hzf/VPL/Y5RwcJ4jcz/ABSk1RFeb13y1q8Ws6db6jAQyTxK4I8SPiH+xb4cy2RFJpihRmtopiplVWKGoqAaHxHvlcoCXPdD5l/PTzNceX/N12lhX1tQsEt/h61Y0/4iMQQCW2Jp7l5H8m2+neWbTQr2NZUWECRHAILN8b1U/wCU2ViAnH1b36mqrSS2/wCcf/KFrfLqUNnxlRg6rzYoCDUfuyeNP8nIDTn+dMx/m+n/AHfDx/7JjXv/AB/smR+ZfzB0XyxHXUrlI2ptGu7H2CL/AMbZnRxmu4f0vS3CBP8Ax5hUn5v6rrdI/K2mSTBuksuy08f5f+GbKZZ8cNt5y/mx/H/EoJiP6ahJ5K89eY3prGorZWzdY4PtU9mH/NeQ/MTP0xEP6Ul8Q9Bwsj0H8k/LulH1Xg+tT7VeYlqkdTw+z8X+Vyys4TL6pSn8eD/c+r/ZNZ35klnFtaxWqCKBFjjXoqgAfQBl0cYh9IEUjZXyxLsVdirsVdiq1kVuoB/pkTEFXm/mP8o4xcPrPlm5bStRPxEp/dMe/qRfZ+L9rjlcRLFtD1R/1KX0f5v81Ykx5f6WX0vGfNn50+Y9Ttzol0oECzelPdWnWQA0pH/Lypy+HLjmA/2vJ/S9XA28QHl/suF5xPrl3b/WdCtYZo9Ovp42hWVaMHQihr+07KeL5SJRrnGdfxRYRkPf/Sfbmta5b+W9KfUL8uYLZAZCql2AFAW4p8X+Uzfs/ayyNbWQP6UlAs/j/epjp1/Df28V5bHlDMiyIaUqrAMh33+zkkUijtih5r+S6pM2u3wFWm1i5+I9Sq8FQfJcpjz+AZSelZcxd1wK8R/JJ28u+Zde8nyV4JMbqAHYcHO9B/qvD9n+TIY9x/V9LLo9puA5jYRECSh4k9K02r9OTLF84a9oOv8A5c3Nl5i1e+kv7a5uGt76MkmP05CQnwn+ZCzf6/FMrGaeT0z4eGY9P9D8fwtgmZbHkWVD8nPMOgrJH5L1k2tlK/qLDKoZV5bng9G+HBDLkgKqGQD6f4J/8S1iUhtsf631JJ5s0jzv+XelyeZDrou/SKGaGVKq1WCBI6j/ACv2fSyyOoyE+uMDD+j9Uf8ASxh/upMxklL6hA/j+jGCe/nHqkfmT8tTqc9q8slzDDMiIORjkan7ytG+COrLy/bX+XlkMhjzJ4N/T/xP+cxJA57PH/ygXSvOEaTeeNVH1XTQkUFk7lVIUbM/7LD/ACV+Jv28tnHJlHDH0Y/4uHh4p/j+f/pOFsqUxtXz4E78+efvJ/kK7kvfIaI2r3MZQuhPoxKwqzJH9lpWp/scEMBxcyZfzcd8X+ml/N/msRj4Of8ApeL0vD01fU7+9bV+clxeIeZkYcjXff4gyrx/ysjOd/Vw7oMu96ro/wCVPnzz9Yrc3k8gs5V5p68xCnaocRry+1X4fh4ZXPVH6Ygmv5ojCH+944/6ZByy8/8Ac/8AE/755vafonR4JYdX+sSajHK0Rt4eKKOBAJkmcS/tfDxWL9j7fxYREy3uMI/1eLL/ALqMY/7P+qkDry/zfX/pvpj/AKWbIdC/M/QtESqaDDLcjjxe4leUCnU8G+FWan2l45IYYH6jkn/nRh/uYw/2XEkxgf55/rSjw/6WMYwZL5s8z+YdSvND1kwxaHbTycLZo6qAKpWaRP2k4n4OX7HLI4zCJIxDl/O+mcv5vEsTX0Dl/O/jQf5q2EJtFvTrzapqcT8uC14qp+2Uf9luWW8WUH18EK+mMZeuLImQ58Pp/m/UkvmO2sZtOttZ0bTrn0YpUaW5uG5oxNKxEKOPHkP5ueVGQ4qlKWSR/h+n/Sz4uJhIi+cj+Px9T0zXvya8z+bNOh1otYWklrGZbZbYCOi0EqCsSstdl4M0/wAGVWYH0w4KPq9XHKf9L6p8f+lhOTC65R4P538+f9L6pxl/sHflj5E8u+d9AuPMPmq6uZriAulwZZjxRlG0iMPif4OPDkzrl+SOTLylX82MR9P9bj44/wCkjBskDLa/+O/6b/pFiX5RfllrPmq6Y6VMbTSbWZil0UAZ9xQD+d+I5fyLlMpWaAjPIPql/BH8fzWBlXKv5vE9/uPydltvNUfmjRbw2aSNG13Co2m4kVH8q+ovLn/l/HhgJ49hRgf9h/O4f96okRyrf8elA/nr+VOs+fHtv0dcRR21urH03qD6leQkRwG+0v7v/JwzlKJ2jxf0v4lJLxK30Lzf5i0qfXJdQaW88uyMvoSAmRONObI9OLclRufL7fp/tZOWckiVRMT/ABR+v1/zocP0M5ZD5V/sv9z/AL5lP5AfnG2gWMWkazbsmmvMyx3i1KrI5DenN+yq78uS8f8AUbLYmB9P+U+r+v8A1fx/pVsHb+L/AGL6iRg45Kag4sF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVA61qsOlWU1/cHjFAjOx9lFcICQLYJ+RmmzLpU+uXoIu9XuJLp69eJPGMf6vH4k/wAlspieIk/5v+lUvSctQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXHFXz15b0BfIv5pvaQFza6vDJKqqPhBYmRkP8AkxsnL/J5rlWOxsf4f9z/AApD6Fy1DsVdirHde1Hnd2+hxKWe7DNIR0SFP7wt4epVYU/1/wDJyEth7/TH/ff6WLIbf71gnlKp/M/Wiu6ixgU+xBSg/wCBxA3QXruTQ7FXlX5w+db9Gj8oeVvj1u/BqRt6MX7crH9lm/Y/4L+XEzGMcX+lj/SZj07/AOleU+Z/yWl/La00/wAzW1zLcarHdxGY/sfEd6ftceXw/E3xcspjOV8Uq9X8P/H2ESbs/wClfVeXK7FXYq8f/P8AC3E3l+zUfvpNVhKsOoADV4kfEu5XK5bb9yQ9gyxDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf/T9U4q7FXYq7FXYqpzTpCjSSGiqCST2A64qHy95l/NfzH+a17P5U8pQ+lZcyslwpIJjDcQ7v8AsK38q/aw5M0cY2s5Px9H/FNhkIcvUU1H5QaZ+VV5pHmCf/SkSYxXkkgqFMg4wzIP2Fjk/azDETM1k34/9jKP8P8AS4mqIvn1e6a7qkumW41KFDPbxjlIibsUPWWMftNH9rjy+JOX7XHMg1E7/T/uZfzv6v8AO/m/Wy5c9v8Ae/j+L8cRnY3sN9ClzauJIpAGVlNQQe4ywilIpVeJGYOQCy9DTcfTlfCCbQ26K6lGFVIoR7YSL2Vi3lH8tNG8p3V1faVD6c143JzXYDr6cY/ZTl8XHKMeLhPO/wCb/RigCmRX2oW+nxG4u5EiiUVLOQAPmWzKjEy5bshEnk8r1D88bjWLltL8hWD6rOuzXDVS3Q+8n7f/AAScv2OeCc8eLaR48n+p4/VL/TfiP9OLI8Mefq/ox/4r8f1nWH5K3GvTDVPP12+o3HVbZCVt4/8AJCL9v/jb+XKTLJkFH9zj/wBTx/X/AJ8/+J/0zAylL+h/Rj/xX4/znp1nodlY2n6PtYUjteJX01AC0IoRT5YjFECu/wCpAFJB+XnlG48q21xpzzCWy9dntV3rHG2/pEnqFb7H+ThgZEVL+H08X86LKz1ZflqHYq7FULfajb2EZmu5UijHVnYKPvOSETLkkRJ5POvMX/OQnlvSnNvaO+oXXQR2ylqnw5/ZyUoCG8yIf7pnwV9REWLalrP5nedEP6Fto9Fs2Bo8xHqEH5hmX/Yp/s8xvzcR/dxOb+lL6f8AN4pQh/sp/wBVgcgH0i/6Uvxw/wC7ec/lL518w+SvOw8teaLqZ4p3MUiSuXUO4/cyozn4VaQr8S/sZfHMco3/ANl9UP6P/HfpZ8Znz/2X+5fX2Ra3Yq7FXYq8T1dD+W/nFdRQGPQdeIiuADRYrg14Tdfg5/tN/lSf5OVYtvR3+rH/AMR+P96mH83/AEv4/H+xYjJpmsfkLqdzqenwnUvLl6VaQ9JEIJ4B3+LdebfvOPB/2+L8cjiyiJ4cnM/Tkj/H/veL+dH/AEslEukv9N+PxJX/ADb/ADg8veevKBttPc/X5J4eEDijqwbc7bEcea8lzJyY6HECCB+PpbOCt+b6D0CGSDT7aGc1lSGNX/1goDf8NlYNhrLHPOvkD9O3+n61aTfVr/TpgyyUqGjP97A4/lcf5/FlZBBBjX82UZfzf+Kix3HJllzcx2yGWdgkaipZiAAB4k5eIk8mQBPJ4fL+YNppHmm5uPJsUusRXqf6XBaqfTSdDRLkT09HlIvwzcft/C/J2yu44PTMiN+qMY/vcsZfxQ4In6Zf6eH8xkahtL+twx9c4/5kf538X8UZfUn1xB5t1i3bUvMN6mg6bGpkeK33lCD4j607cuJ4/bVMY5pT2xxEL/ymb6/9J6Yw/oylwS/nI472iOH+lL1T/wCJijPKH5YeUL4JrtkP0kZAeM0zmXeu5o/Q5XPDKX95KU/9hH/YsZgn6rL0S1sYLRPTt41jUdlUAfcuEYojkB8kAUxXRIjonmG70/pbagPrcI7CRaR3Sj/jJ+7m/wBb1GyUNvT3eqP9WX/Ey/3TIcq7lXV/zW8r6Q7w3up2ySx1DoHDMCD0KR825f5PHlmWMEj/AMelGH+6MWYxE93+dKMP9jI8SRXP/ORHkuEVW/EhpWiRv/xuqYBhrmYD/O4v9xxJjjvmYx/rf8d4mCaR+cvley843OrwTulhqFqnqkoQPWjYKjkf5UXw8srji4SRxQN+rn/x1PB0uPzW/wDOOPmHTm1zzAsMyJDdXIkgUkDkvOUgqp/yXGQhjPvAYmJr3PojFrdhVj/mDzxovl0D9LXkVuSNldhyPyQfF/wuWRxGW4/2Xpj/ALJsjjMuX/E/7pgN9/zk/wCULVjGkk0vuke34nl/wuE466x/zVMAOo/zXjH5yfntpvmWex1HQIZYdR0+bmtw1ASlDyjoPipy/m/42yBgIS4oni24ZelJAidjf+ay25/5y5lu7VYdJ013vmUBi55IGpvxWP4n+L9n4cJnjhub/wBjH/Zf8cQTAfzv9jH/AGTBNe0/80PzFNb23vGtn3WOnoxAdV+BjEr/AOszM/8Al5Qe0APo2/4SJT/084xnP/N+n+ix8e9htf8ANEuH/Teri/zpJNN+V9x5GMeo+d9NmktJG4KIplABpsZHT1W/2PJeeVCfi7XPH/WhxSl/U4pQ/wBwwB4jR4h+P6zL/wAuPIWmeZtC1zQYI0+vQsLq0m6sUpyjXn/L8PF/8p2wSh/F/FD0/wCb/V/pMpRrfuesflX+a2k2nk6C/wBemjt5rQm2lrQMzJsnwL8RZkp/suWZENPGR4gIi/4qjH/ZMhCztQv/ADWO/mL+eug+b9GvND020u70zxlVdIvhV+sbfEeXwtxb4ccohEWZw2/rf7pjIxjzMUg/Lf8AOzW30IeW/wBAz6sbWNreUhz9g1VEkj9KXiqp+7+L9lccmTHKNzMvX/FGPFH/AE/F9X+ySZA7+r/NCE/Jjz15m8o3Vz5TXR5bhixnS3eXg8an7VDL8LL9n7K5COfHw2eI/wAPFEcX+mjw8aRMEWb/AB/RlFP/AM4l1fzlYR6odKudN1PR29eMlldWSqmQB0/aUorIvH+bKznxiVxJ/pRlCUP6vql6WHEBy5+7/fPTvKXn+486+Un1PRAv6VELJwbYCcDv4KzfEuZMzw78/wCizltvzfPF55E/5V75j07WPPYS8ttRLNcl6kJITuTT7bLVW/kf4kzHgPF9MvRf0/wf6b+axj6+e1/5r2N/+cgra4Is/JWk3OrKnwkxIY4h4cW4N8P+xVcu/c4PSSB/Rxjil/veL+tHjU8Mdr3/AJsR+P8AYcSvN56836pBLaah5VlFpLGySUuoyaMOLUVgvL4f2cplqMUxX74f0vByen/YxUSgf54+H+9qPEh/+cX9bkl0e70K6DrLptwyhZBRlR6sqFe3Fg+XRlxC+aSbZfpn5deWfKEt1rRiRXnkMsks3xcSx/ZLfYXkcojpuM+r95/N4vx6/wDOYCHEe8qfmP8AOvypoUbC5vYpHAr6cfxsfCirmYdNtUuER/pcP+5bziI5+n+s8g/LfSpfzB88jzja2S6fpNl9nivEuwDcK8fhaVmesvH4eHwf6+HcYnhx8v4t/T/x2MvpjBpsDaL6dzJV2KuxVSmnSBecrBFHdiAPxxAtLz3zV+fflby6TE9z9auBt6VsPUavuVPFf9k2XHFw/URD+t9X+k+pnwVzoMRn/PLzTrv7ryt5duCH+zPcghfnxokf/JfMU6rBHkTk/ox/454spf7FgMkOlz/q/wC+4OL/AHUVKL8nvOPm5xc+ctYeFDQi3tdgNv8AJ4xq37LcVb/XxGqyy+gDAP6X1f6WMuL/AE+X/MU5JdKh+Px/HJkml/8AONnlKycS3EMl3J3MzlgT7r0ynwpS+qUz/pY/7lro9SSzvR/J2j6MANPtIYeIoCqAH/gvtYRp4Dpf9b1f7pRABOiQu52y8RA5M2J/mb5ouPLPl671iwCNPAlVDAla1p8VCv8AxLJcubKPPdD+TvPOn+bdEguLiW3E91DSWH1FJDEFXQoTy4t/K37OWHBKQvhnwe6X+6ZeGTyEj/mlgH/ONuofoibVvJtyaTWV08kanujHiSv+T9hv9llMDYYnkmv/ADkboDy6VBr9qP8ASNMk5N7xP8E6n/J4/E/+TlctjfQ+mSAx3/nGbzxY20c/kyST9/FK8tud6PGwD7eBX7XHL4x2vu+pkY7e59A4GDsVdirsVS7zBpEWs2Fxps/93cRtG3yYcchMWKV5L/zjdcXumx6l5Tv25HTJ6R1rXixNQAf917Kyf6+GM+IWkmw9M80+edH8rRCbWblLcMCVDH4mp/Kg+JsshAy/b6WUYEvKn/NfzP57uGtfI1n6FkCVN7cCgp4oG+H/AIHm2Qnnhj2H77J/R+j8f1v9KplGPL1n/Ysg8sfkdbx3C6t5ouH1XUBuDL9hT/kJlEhLL9ew/wBTi1kmXP8A0qS/k/aronnPX9GC8VZlmQDoATX/AI3yWPl7vSz6PXtf05dTsLixfdZ4nT/ggRk5iwxed/8AOPOoFdDk0Ocn6zpk8kLqewJLJT/J+1jA2L72ReqZNi7FWEeaPJ/lk6pF5m1rglzAoCtIwC7H4SVb7TLlP5c5D1/qpEDJJte/PnSbVxa6RHJqN0+yLEp41/16f8R5ZfLhx/UR/Vj6pMzED6ilE2k+f/OwYX0qaLYN/utN5CPfj+8/4J0/1Mo/Mk/3cf8AOyen/df7yH+ejxK+kV/Sl+P+IZB5b/InQNJZZ7lWvrgb85zyFfEJ9nKzilP65GX9GPoh/wAX/sms2ee70KC3jgQRxKEUdABQZfGAjy2UKuTS7FXYq7FXYq7FXYq7FXYq8o8+eZb3zRft5M8stRqf6bcDpEh6xg/78bBOfh8vVkl9Mf5v9KTP6P63+5Sz8z/yk0uz8rpDpsi2t1p9ZoZGbjzYbvzP7Rb/AIXMeOKUfVG5/wCqf00RBPKyh4DafnN5I/d8V1e0UbigKzINiD/JLT/PjksmIQ9UBEEfzR/poIlGtwgbjzTcedPyyvoJWK6pYJ6VyORDExGtTx+16qp/s25ZZKW3EP4v999TMnqOqd/l/wDnr5WtPLdkt/fJDcwwLG8dGLAoOHRV/aC8syI4SRfpr+tH/ccXF/sUmF77fP8AEmbeX/zS8v6/aPfWd2ixISpMvwb0r0fjy/2OPhHp6/6qDjPT1f0opD+QhVtKv5IyGR9TumVhuCCV3GY0WMgzfzD5l0/y7bG91SZYYR3J3J8EX7TN/krl0Y2sY2knlD81NE81TvZ6dKwuEHL05FKMy/zoH6riY2LBjOvq4f4UmPcRL+qwjzvEvlf8wdL8xt8NtfobSZq0HKhCFv8Agl/4DKIj1V3+qLGPc9oy1DzL/nIo2z+T7uC4cI78WiB6l4yJgF9/gyJH2JAQ2k/nPoGg6BpbatcETT20Z4qpZvhHBmZU5Mo5LlojfOo/1iyMevJ59+a/5maZ+Zkmn+UvL81UuLgNO8gKABeinnxr15f8DkckTEbeu/5vqSI7bb3/ADXqv5r6jD5W8m3MVtRFWAW0I92HoxAe+ViNCmMQ8+8j/wDOKegHTYbrWDNNdzxq7DlxVSw5cQE4seNf22bMbgnLfi4P5sYxj/suPi/2HA1UUd+X/wDzi7pOjXNxda6sd7zkJgSh4otTStftNTHglP6rhX82X1/1lq+bA5vzRtPJfnXU9O1OGP8AQ5UxLBAimuwUb/a5N+38WXR08CKqMP6UuKU26MBy5Ja3/OQ2v+WdPXTNLsxBZKW+ry3CksImY+iKKeP7tfhVvi+zl2PJA7f3hHp4r4Y+n+d+IJE4++vx9LDtCuvKv6UutT84Sy6k8gEyLbDgryOeUiychEycW/l4/wCyyuWIy2uOEf0fXPh/o/VH/Ter+kjg4uZr+r+P+JZXr2o6v+YumjTPKnl1LXTFYMrpGK1HdZ2ESlv5+OY8jgxHbink/il6pz/zuDi/2cpNZMI8hv8Azvx/v0X/ANC7+br/AEaK9v2Ml9byKsdrI4I9IALQH9n/AFf5MMtRKXSXhj/Nn/mwQchPft/p30V5e/LLQbKwSBtOgR5IwJV4htyPjUO3xU5YBp4kWeKX9Yy4v9ijgH/SSaDyNpK6O3lyO3VNOZGT0x0AYkmnLl8XJuWT8EVX+y/i4v5zKkFoPl/TvImgtYSzSPp1qjszzfEQh+Jl+AfYX+XjlsRIipG5H08X0f7qUv8AdMtzzfMNvpelXV7qt7p08w8lQSpLNGlVMj7iOKNGKtx9T7DNx+D/AGGRqcf3YPP6slcXBD/fSZUfp7/qlw/jjfTH5T+ZNK1/QornQ4DbWcZMSxkAEFKV6df9bJiEYbR9X9L/AIpiQBy3Znk0IaS/gj585FHpjk+42Hi3hhpNPl29/Nqz0bzfqX+G7c6rY6rGqSRR1AMtCrGP4X5/tfs/FzbKzGOMETPDH6uKPDPh/wBlFlQGx/2LG/JHm8eXrXUPLPmDSZZNOmYSSg1EkAPwiTiw/ZqG5fDlY8OY51/qeT+l+P6aLjIfxD+bJ9deV/RGl2gtXMkAgjCOerKFAUn3plwsc0FNcKHYq7FXYq7FXYq7ArsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvMfzrvXvYrPyrbE+tqswRqdREp5SH5fs5GRobMhyejWNpHZQR2sI4xxKEUeyjiPwxiKDFEZJXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXkf5oxhfOXlmZRST1pFJHXiQOQP8Ak5DqkPXMmh2KoHWNYttHtJL+9cJBCpZmPgMIFpAtjX5eW9zerN5i1EUuL8j00IoY4Fr6MfzavqPlQPEb6D0x/wB9L/OSSxK8dfL35nwzMQkWsWZi+bxmo+lsMeZH+cgPYMmhAa3q0Wk2U2oTkCKBGdielAK4QLSBbzb8jtCmvEufOmqCt9qzlkr+xCDSJB4bDKfqlxd3pip5q35s6qmrX2neTrZuVxdXEc0yjfjDEfU5N4cmUZOew9/0pAoW9SyTF2KuxV4v5wLa/wDmVpOmJQJpcTXTnrud028fgyEv0p6PaMmh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv8A/9T1TirsVdirsVdiqySJZVKOKqwIIPgeuAi1SrQPKOleXldNJto7YSGremoFTlEMQhy/00vUgCnea/L1v5h0y40u6UNHOhX5H9hv9i3xZOcbH+5Sxn8o/McuoaadH1NlGqaaxt5k7lU+GOUjwkTLPqHF0l/uv4mZ70g0vVpfJXnEeV3k/wBxWqBp7ZSKmOQktLFGa/CjP8XxLx5NgxnbhP8AB9Mv6P8AM/pcKBuK7vp/4lnvmjzrpvln0P0nJ6ZupBFGKVJY5ZGN9w/rLGNq2v8AnDSvL8Zm1S6igVRWjMAfoX7RyUcZlySIEvN7j877/wAwsbXyPpkt61aevMPTiH+Vyb7WVzy48exPiS/m4vUpMY/0/wCjFuz/ACWvvMkq6h5/vWvXU8ktYSUhT2PH4n/z+LKZTyZNv7mH82P1y/ry9Uf91/msTIy/oD+bF6tYadb6fCttZxrFCgAVFAAAHsMYYow2Ar/ff1v5zECkXlyXYq7FVjusY5OQAO5xpNPP/NX55+WPL/KNroXVyNvRtv3jV8CV/dp/sny04+HeZGP+t9X+k+r/AHv9JmcdfVUP631f6X/imIaV+Yfm/wDM2KRvKkUOl2KNwM87c5Sf2uCKOI/z+PKpZhH6InIf50vRi/33++QZCP0jj/pS9Mf99/vkbaf848R6iVuPNmpXWpzVqylysdfAD7XHKZSyz2MuAfzcY/3zAylLmdv5sXoPlzyfoGgKINKt4IWX+UDl/wAF9rIx0gjuQZf0pepfDroyTMhXg3/OUX5fm+sI/NenrS+08guR1MYPKv8Azzb4sxz6JX0P1f1v4ZIui9V/L3zA/mHQLLVJaepPCrPTcch8L/8ADDMglkWSYodirsVSDzt5StfNmkz6PeAcJloD3Vhukg/ylb4sqnGxtz+qKsM/KPzHLPBN5N8xFW1XTf3RVl2lhHwxS78g/wAP2v8ArrJGs0bI/oyj9XqZH1C/9MnFt+S3lS2vxqkOnxLcK3IUHwg15VC/ZrXKPy45XKv5vEfxwtAgL6/OXCnPmbz3o3lqP1NWuo4fBa1Y/JB8WZ0cZPkP50vTFyBAn/jzCP8AlaWs+bHe38lWJMY2N3d1SMe6J9p8plmhHYfvp/zY/R/nTQZRj/T/AKv0f6ZUsvycn1ki588X8upS1B9BCY7dfb004mT/AFm45CU8mTYnwY/zcf1f50/976/6MmJnI/0B/Nj/AL6X1fj6noekaDY6ND9W023jtoRvwiQKK+NF74IYow5fOXFKX+mnxSUClbU9Mg1S2ksrxBJBMpV1PQg9snKPEKQQ8Y/JKV/KXmLVPIk7Ewo31i15fyHqB/sf+IYcZJjv/B6WfMe57lkmKFvLGG6QpMtaggEdQGHE8WHxD4f5cgY3/wAUrzzQf+cevKGk83ezF3LIxYvcn1Dua0VT+7FP5uPNv23bMc4DL6pTJ/oyli/3EuKX9LjnJgY3ub+f/EsrtvIvl+wHOGwtYgB1ESjb7sl+VhLmOP8ArepfCEjy+xjvmDzt5E0nlFqE1nzA3QKrnb/UDZYez41uIx+PD/x5v8I9dr/nPly1/MDQbC91G4TTEvmnui9uzMUEaAkinD7P+rko4xHrOFemPhlREDv2/mp9d/8AOSXna+Yiz9KBWoFCxhiBXbd+XJv9jl3jxgPpG387i/4qLLxIjpH/ADuL/ikg8w/nJ52uB9X1DUpoiw3WNBEfkeAibGOckXHhjf8ARjP/AEk5cf8Au4qJkDbh+Xr/AM2fD/v0g0HyPr/micJaWdxcuxHxycgu/cu3FV/4LMTJqhI7y45f0fVL/fNRyA9eP8fj+J6xoX/OL8/EP5k1GCzWn92hBK/7N+K4IxyzHpjX9KXF/uIf8WtSI5VFkln+VH5Y+XV5apfJdPQijyCh+SRftf7LJ/lMkvqND+jww4f871JOCXU1f9WDJ9J/NDybogFv5ZsJbhyKcbW2PIgeLvw5/wDB4Dp8OLeUof1pS8X/AIrg/wBijgjHcmI/2X+yTBfzI826qeGjeXZY0PSS9lEQA8Xip6n/AALNk/zGIfT4mb/hcOCH+bllxQ/0/CnigDXrn8OD/ZS4oyQ3mbyX5286WEumaxcafZ20woyQxPKfEfHMU4ty/aXIzymQ2hw/0smX97H/AJVR4EX0of1rlxf6X6Hzx+XmjNovnIeWdbmljjDm2cwuUJBNY91+LgzfFk4TkRcT4d/1ZM4yPTZnraZ5b/LrzLqGgeaoxJot+izQFwWKkH9or8Qb/KyuGLxvSTRH8XFwf8dYxjxCv90XuHk/zd5Pa2WLQLm0SEAAJGVU+1V+1X/WzIjojHcRv+l9XF/nMhgPQf50Xml5dw+RPzKTUyynTddTgWVhRZNhuB/lIjf8FleONExO38UURieScfn1oVxpNxZ+ftJqLrTmCzAftxE/teIWv/As2Q4uCV/wz9MkRNH3vVtA1e38wadDqEG8FzGGAPgw3U/6v2ctlHoginjH5bIPJf5han5ZTa0v1+sQjoAd32/4J1yvFyr+amIse5F/n1+TVz5u9fWhdMRaW5MNvSo5rVj/AMEuQnKY7uAf6ZgSWUfkf5jstS8pWtxGsduYF9KZVooV0+Ek+7fa+L9rLoYQPpH1/wA31Skz4e56MrBhUdMkxeLXMyeTfzLRjRLXXoeLf8ZV2H/BMMrxiiY/5zIC3sl3aRXcbQXCCSJxRlYAgj3BwyiJCiwpi9l+VHlaykM0Om24c9SU5fg/JcoOmied/wCmkw4B+LZRb2sdsgjhVUQdAoAH3DLoQEdogD+qzArkp6jqltpsJub2VIIV6u7BVH0tl0YmWw3ZiJlyeZa9/wA5K+U9OJhtZpL6foFgQkE+HNuP/C8ss8MR3lKMP9n/ALn0/wCzZmFcyB/sv+O/7JIT+Zf5geaiP8NaQLO3atJbrw91bj/xHMY6rGNoiWb/AHP4/wA5hxxHIEtwfkb5h80P6/nbV5HQ0Jt7c0Wn8p/Z/wCFbInPlnyrDH/Z/j/OQckj/Q/qvRfK/wCU/lvyzRtOsohKtP3jjm9R3Dvy4n/V45UNOP4ryf1vp/0v0NfCOu/9ZmGZI2ZpPrvmzStAjM2q3UVuoFfjYAn/AFU+03+xXLI45SFgf538P+mZxgS8o13/AJyp0KEmHRIJ9QnBoAiFVPvX4mp/sMMhCH1yj/m/8eSRGP1H/S/8eSg+dvzQ83qY9I05dLhbcSybGnahl/5oyj85j/gjLJ+P4vpYeKP4RxKMf5S+ePM0jQa35jVQv2kt2PIV7MkXpL/wTYnUZq9MRj/rER/0s4ccmQnkrlwfj+dFXi/5xJideN7rN1Kp3KhQAf8Ag2l/4jjLPqJCjIf1fXlj/uoMJTyH+Lb+bISl/wBPGC/ln+Qdj5oGpRz3dxbXGn3JiHp0JKjlQkEfaan7OVGWSriYj+dxRlL/AHMoIkZV6TX9biWeS/MNh5f85WN5ZGZbVWaynlmoS71Kczx6Mylfh/Z+HLYc9zxmfq+nh/0vql6WwfOw+sdf0qLWdPuNPlFY7iJkI9mFMZxsUwfFOhGPyV5osL+4Zg1pdGC5Hf4TxRv9VozkcZ4vj+Jsh977jhmSdFljNUcBgfY7g5axVMVdirsVdiryHzan+D/Otn5iJIstSX6rPQbc/wDdbt+HxZVDaRHf6mUe7vZ95j8i6N5kkim1e1juXgNULitK9vcf5LZHJiE/53+bKUP9ywMbTizs4bKIQWyLHEooFUAAfIDLIQERQ2UIjJpeTab5c1a0/Mi51UxH9HXFsF9QdKgbA/5XIZQMg4uFPF0es5eh47o91H5W8/39rcssNtqUImRmNByX7W/Qf7LKsQJNc92YHFy3ZV5k/OPy5oPwTXQml/kh+M/evw/8NmT4dc6h/W/4lIh37MB1D81fM3mMltDgTTdPHW5uiFJHiOX/ABrlPjxBqAOaf+xUEcojj/3LFVj8q3F36/mPU7jWLkGpjiRjHXwBX9n/AIHITjOX1yhj/oxPr/H+mWVn6jGH9Vnuk/mfoGjx8dH0W8CjYGO2pX/Zk8sqiMEd+OB/pS4pS/2bX6B/FH/ZJlafn1YRvw1yyu9LVvsvcRnifmR8S/8AAZkwnjyfRISP82Xo/wCKZ+mX0n/Ten/imZaV550TVyEsL6CZz0VXFf8AgT8WXHFIdP8Aff7lJxkfji/3Kf5U1uxV2KuxV2KuxV2KuxV2KsF/NfzjNoNjHaacOep37+hbjwLdZD/kqMTIRFnoyiOvcmH5feS4fKumpbbPdP8AHPL+07ndmY9TlMI/xH6j+OFjdsV/PH8pX892Qltbh4rq3RuCV+Bz9qjjDOUo7x/zorZ6PnT8p/zWP5b6hOtzA5jZDHLAtAfUQ0D/ABZbjo8/pl6mYIKLggt/Mtzcal5nvhoOlXcpmFtGGZ5CT1Macm/56SLw/kTK4iR2xUI/xZMh4f8AMh9HH/VjJRf8O0f50vx6nsPl/wDJH8t/NVkkui/v0jADSRyuHJ8ZFb4lZv8AVXK5aWcP4pb/AM3w5Q/zfTP/AHbVLER1I/0s/wDik3h/5xj8pREn05mU9EMrcfurkRjn/Pn8ox/3MUUe8/j+qhPyi1ux8l6HqcWoN6Nrp99IpY1NAxHAf8Dl+IcWzcI2q+UbSL8ydcl813g9TSrNvSsY2rxLD7c5RvhOQyDjPD/k4/V/Tl/xKJ/zen+6Q3niZR+ZOhQW44usbl+IFSp7H/JoMYwEPpoX/NUbBk357+Wm1zyzO0C1ubUiePuaoamn+suGe2/cxBT/APLnzLH5k0Gz1KM1LxqG9mUcXB/2WXFlIUofmb5Fi87aLNo8rCN2o0b/AMrKaq3/ADVlOQE7jowIeOWP5BeZ/L0cd/pdxbXN8ITA0c6BlC1NDGX+FW35ZRxSP1x44/zeL6V4ieYif6KfeWP+caNLk0lx5kBk1e4Jd542oYyTULFT93Rf9XEQlL1Ayx/zY/wx/rQ/48ij/V/qvJ9Tu5YvM9n5T1bVJ9T0G2uUXmQQA1aCNn+Lnx+z9r/UzKlKUxwy4I5P6P8AM/p/R/vv6zcSeR4R+P4vxJ9kIgQBV2A2wgU1sF/NL8z9P8k28aXqSyzXXJY0hFW6da9skAOp4GUQOpp8O+eEih1Iy26XMTNRz9Z+3VqtX4f+JZXGXFvYyf0qYCV9bTrSrafXYFu9dk1G4tI1KoYk5igFePN34qqt/ktkJ5t+HixY/wCsOH/YQjHi/wBMiWWtrAZ3+Qnl3yHeMLrzJcKt+JD6VvOeMZX9jmWX03b/ACfV/wBhkjp5ZOR9P82JjGcv9lx/6Rn4XFy/0tx/6Sl/mvr61hggtxHaBY4AtF4UCgU2pTamMcYgKGyKrZ4QP+ci28qahe6P5iAvDBKBBJAQSyMT9unw8lXL41Ier92R9Xpl/puFtNHn6P53/SLOvIH566F50vH02zLw3KiqrKKFh/k+/wDk4TEVcTxolADkb+D0jK2tSmgSdDFIoZGBBBFQQetRkTEEUVfMv57fl+vkaT/E2gRoLC4YR3NsVBiDEHhIE+yvxf8AAtlEBw+g/wB2fp3l/uvx/NTE1tzt6X+S62vlLyRbXepyrDHIGuHZyABzP/NIy7FEy/H8LIRJZt5P85ad5ss/0hpLl4AxSpBG469cskOE1YP9VEo08q/N/wAt3vlTUf8AHukEyRbJfQNUq0R+FjTw4/8AA5QJmJ4Zb4p/7BYyrnuC898/DUZLeHUPKWkLpumWrpcR3ifaYydH5n9lWb7PxcMqjLHjlQ4zk+mUpcUof1P5v+nQDGJoXxfzkk1v8ttam8zWen6xqJa51eIMZxUihH92alea5YM05XQiD/N/gn/pY/8AFp4pH+j+P819A/lDf6xYyXXlXWv3x0wIsdyqlVdSPhQ/5SjJwyCY6RkPqjH1I4hLyP8AFwvT8sQ7FXYq7FXYq7FXYFdirsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5Z5YP+KfOd7rJ+K00tfqsB6jmd5mGVy3Nd3qZS7nqeWMXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8l/MRFuPPXl6B6UX1ZKe46ZApD1rJoaJA3PTFXkN5eSfmdrg060P/ADrumShp5B0nlXpCPFI2yGU16BzP95L+bH+Z/WZS22/03/EvXEjCAKooo2A+WSApiwP83PIlx5ks4b3SX9PVtPk9a2bxI6xn/WyuRMTxDevqj/PiiyNwo/lz+bVr5jrpmpr9R1uA8ZbaT4SSP2ouX21bMgATHFD1Q/3P9ZsoS3juP9yp/n/dyReV5LeLrdzQ25+UjUOVE9yIsb87/m9+hIrfyj5Nj+u600aRr6dCkWwWrH7Jf/iP7eToYRc/82H8Uv6zKQ4fq/0v8TIvyj/LO58urJrOvym6127AMshNeK9okJ/4bKRczxS2/mx/mNW53L0vLUuxV2KvEvy4Rbz8yPMFxckmeAKkVeyE0+H/AIHK/qPuS9W8yeaNO8t2zX2rTrBCo6sdz/qj7TH/AFcvjAy5JjEl5rF5+8wfmCTb+U4GsdOJo99OKMRX/j3i7/D+1lZzRiaj++n/ANKof1v5ymQHL1/0v4YvRvK3lpfL9p9VE0twxPJpJnLMT36/Z/1Vx4pS+o38Ix/3LDfruneFLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir/AP/V9U4q7FXYq7FXYq7FXYq7FXjn5vaTeeV9Qh8/aEhZ4KJfRqK+pDX7RH8yfzZSJeHLf+7n9X9GX89MZV8WH+cPM9l+YPm/y5L5cnEvpkySBftRUPJvUB+y3H4csnE4ze2/0yjXq/0smZHCs/PH8s/PHnHzFGbIK2nRUNuwYKsZ/aL/ALXP/K45XLUcO3DLb+b/AB/5zDxCOi+L/nGC/W0N/e3Yv9aqCqykmJTXctX4n45CeTJLeX0/6nE+r/TsTKR57/0bR/5Nebtf0TzRP5J80kFmQvBxACCm/wC74hfhZctxmMo7AQr+Gv8AdMwQR3U+hMsYuxV2KpB5n88aP5Zj9XV7qODaoVj8R/1UHxHJxxmQ/wB8zECXm0350615nkNt5G0x5lGxubkFIx7gftZVLPjhtvml/Nx/8UgyjH+n/VREv5ReYPM9D5u1mRoSQWtrUemnuhf7TL/rK2RObLL6eDD/AFfVL8f53+apyS6VD+r9X+nb/MeXS/yl8ttc+XrOCO6kZYYyUBZiepd/tvt/M+VRwQBuQ8T+lkPF/wBI/wCZwsYRA3O9fzv+KeJfkt521LyZ5t+o6vGYYtSYepGeimT445AP2ftZfjyCQ2ZxkJPrnzBp0+pWE1nazm2llQqsqipWvcVwEkbxr/O+lg8jf/nGsRp6llq92l1ueZYmrePXbfKxkzD+IH+j6uBkJzHW1HQvzO17yPeLoXniP1ICeMN4KAMOg5Hof+J5bDMMuxHBk/m/j/esokT/AKMntNxb2+q2rQyASW9whBHYqw/pjKNimsh5P+StzJ5Y1K/8h3zfFbyGa1B7wtvsf8nBjPFHfnH0yZ3Y9z2TJsHYq7FVOSRY1LsQFUEknwHXFQ+afzp/NPQRqNtqXlO4aXzDbNwEkC1RkrRoZmP97y/Y4csJx+CeImO/1R+ri/pS4fTH/TcTZw8G5r+r9Sc+XtW/NDzxAI5Fj0i1frOUpIVP++0b4h/wuV/m4y/u43/S9XB/s/q/zOJj4wP0jf8Anerh/wBmzPyz+QehaY4vNS56lfdTLcMW361CfZGVShLJ/eEn+jH0wYG5fVu9JhhSBBHGoVV6ACgH0ZbGAjsEquTV2KoS51K2tGSO4lSN5DRFZgCx8EB6/wCxwiBPKykAl4/+cSDyt5k0jznF8MfqfVrgj+RtlqfpyqIqX9f/AHSY8/e9mWdGQSgjgQCD7HpliKYd5q/N/wAs+WUY399H6q7elGeb18OCcmH+yy4YDzPoH86X44pf5rYMZ67f1nifnT/nKu91JvqnlSIWkR2NzcgFqeKRryUf8lX/AMhciZRhy/ef7GP+6j/s+H+quw/p/wC5/H9b/SPPbm98yecpeBu73VDWnGMMIwT2rXiq/wDIr/UymerMdiYw/o4/rl/m8MPV/my/rIlkra6/ox/2M/p/3rINO/IVmWuu3lppu1eLyh5KdwRX7X+tyygDJP6Yy3/iyemE/wCmx4Jy5D/TLp9K/LXyqlHuJ9ZuFO0cfwpX/KK8fh/2eTOmn/FKMB/FGMeKSRjr6j/pVW3tPNvnEBfKulR6VYD4VdFCsVP891Lxkf4ft8WynxccD6Qckh/F6ssv99ixfj1MfFiPp3/pfXP/AE30x/HqT/y5/wA4t65CTNdXltBKxDcxH6zg+zOIuDf5Ub5EynPfhv8A4ZP/AHsfFhL/ADmPGe6P+d/xHrj/ALJ6BB+QLTLx1XWb66/yeQCj5V5t/wANl0TlHIwx/wDC4cP++4f9iolPvr+qP+K40fa/849+W0NbkXFxt0klYj6V6Y8OQ/VOZ/q8MP8AcoN95/zfR/uWR6V+VflrS9rXT4F+a8vwfkMj+Xiedz/pSlLiXhHNklrZw2q8IEWNR0CqAPwyyOKMdwAPh6kiIHJEZcl2Kvk//nJXQ20DzZaeY4RRJ+DGn88Z3r/rLlMdjX+cmJ3Zp+f+iw65oOn+dIog8lqY5JFIrWJ6F0b/ACVbBMDi/on0yWhbK7X8m/JPmmzh1RbCMLcRq4MbMooR4I3HKzpq+mU4f1TH/fRk1+HWwsfj+nxPO/zm/wCcddD0PQJ9Y0NJluLYhypkLLxr8e1OX/DZO5womU5/1uH0/wBXgjBYxI6k/wBbh/4lMvJP5C6L5k8v2+oQ398Fu4QZFWcFKnqCjJ+y37LZbkyZpbccj/Rl6m4yny4p7/1f+JYJoWr235cajeeX/MOp6jAbWQeits1UZPtCobpyyWOU5j6owr+GUeP/AEq3Ij6qr+GuJT/Mb86NGvfMml+ZdD9d3sgFm5LxLjwrX4mx4OE8wb+rhZCh5vcrH/nIfyjcadHfXV0sLSrUwH4pBXsyJyy44b7v848PF/pkeHfc+bbjWV1a51byvoUd1LbalOJ7RI04nkpLH1EcqypxzF4uCPP6P5olPij/ADY8CLod/D/NjKb6N/5x488S+YNBGn6i3+5LTmMEyHZgF2jJH+r8OXXxDiHVZb796G/5yQ8nzatoqaxp4IvtLb1kK9eI+3T/AFftZRI8JEv82TAGkn8o/wDOUOgJolvLrszjUQOMqKhYkj9v4f2WzLEBLe4ht4b32Cgf+cj9Y1mRz5V0Oe9tl29Q1G/jRQ3w5RPPhx7GTEmI81yXn5tealCRxW2iwN+21C9D7N6rBv8AnkuR/OA/3cCf6Uvp/revhjKP+mR4oH0x/wBN/D/uf9zNFWH/ADjNHfTC683ard6rJ/KWKr8qs0knH/UaPISyZ8gqUhjj/Nx+r/S8UYwj/wAqv85iZzlzND+bH8cP+wi9M8u/l5oXl6IQ6ZZQxAUqQoLGn8zt8TH/AFsgNPHmfX/Sl6v+kf8ANYiIDImKxrU0CjMkDuZUxzVPzH8u6WxS91C3jYDcGQV/A5eMEzvTZ4Z5vO9c/wCcqvLdjN6FhHcX1OrwoAo+lyuAxjH6pR/zfV/x3/ZJ4QOZ/wBL62Pzfm551/MOT6h5J097C1I+K7uBuB7OR6af6q+rLlEtVjhtH99k/m+n0/5nF/s5y4P6LDxIj6fX/pfT/m/T/ppf5iZaV/zjfo1ijap51vpL+cfHI0khSMHr3PI/7Jvi/kyoxy5uZI/ox9X+yl/veDhQeKfO/wDN/wCK/wCkXH87vy98q8rTQ7X1nTYC3hABI8Hb4v8AhctGjxw3kY/0uL1z/wA9RiiOfCP9kltz+Yf5hefI2g8uad+j7SWqieSoYL41f4Q3H+XInVY47QByfj/Sr4gHIcX9Jjv5Y+X7/wDLT8wodM1p/rD6jCQs1SQWYVrVuvxKy4Y5ZT+qwf5tpEr5vqzJsXi2jSJ5a/M67sAeEGrW4lUHvIu7U/4bK4dR3MhyeU+evKcmnaprOhxgiQONStTx3IU8pAD/AKpyoGt/5h4Vvb3PpT8sPNKeZ/L1nqifaeIK48GX4HH/AAQzKIRIU+ef+cmfKyadq0lygAj1GMSA+EsZo9D/AJS5jDY13epQ9q/IPzZ/iPyrayu3Ke3HoSeNU2BP+suZJTJ6PgYuxV2KuxVi/wCYvlVfM+jT6ctBPTnC1aUkX4kNf9bKsgNWOnqVj3kv82dMk0RJ9duYrS8tqwTrIwDc0+EkJ9pg32vhzIjA5N49fx9Um3gvcdUJf/8AOSnlC1JSOeS4I/31GT/xLjk/DA5yhH/OQYAczFi/mP8A5yhayRJbPS5RE/R7g+mD/qj7WVieM8iZ/wBWKgRPfL+qw+f/AJyn8y6hKYNKsoS3QBQ0hr9HHGWbHDmP9MeBTKI/tZLod1+bfmyM8mi0uBv92PGFan+Qjcm/4XKfzgP0R4/6X8P+ml6f92x8W/pA/rf9Jf8AEMT/ADY/LxvLElnq3mfV5dUmaQLJETR+HVvRDOzcf+BwA5ZbyqAP8WP+D/YwjL/SJHFLc7D+jFmPlbyRda2Vu9A06LSrJwCs93++mIps6I/JU5ZjERJoXnr+LJ6MX+lh9TE0P6f9KX/Es4sPySsXkFxrtxNqUo6CU0QfKJfhplnBOWxPBH+bjHBFBJPP/Sx9MWbaf5Z03TgFtLaKLj04oB/DDHTwHS/63qRwhM6AdMuEQEqF3ZQ3aGK5RZEPVWAI+45GeOM/qAkgi2E6/wDkt5d1NC0FstncdVltxwYEdD8HXKhh4N4GUD75Tj/pZKBw8tki0fzvqnkm5/Q3nLlLakhYL5VNCDsFn/lb/KzIhlGQ8Mqhl/m/wy/qtgIl5S/3T1eKVJkEkZDKwqCO4OSYKmKuxVR+sRlzEHX1AK8a70+WGimlYGu4wIdirsVdiryHXE/SH5l2VvdMPStbUywr/lk7n55UfUa7mXR69lrFTkkWNS7miqCST2A64q+Fvz31PStT8yT3/l8EQAhZHA+EyD7TplfBwbc/6P8AMTw0nv5WaFqEwW9sX0e7u5hX/TpC0i+3ol1+L/YtkJwM9zDLmEf5s4xxf7qM/wDTSSQZfwyyf50ZR/0vF/uk11nTPNv5RaknmyZbUQXLFZYbWqxHvxaMBVH+Rxw4M1HhMTjif4ZSjL/Sz4sskxn0rh/o3/x6T6g8m+ZYvM2k22sQDilzGHp4E9R/sTlxYkU+Zfza8yW2mnzJoshpJc3UTxoNugNW/DK4x+wswNnqH5b/AJq+UPL3lewtpb6GJ1hHNK1YP+3yUfFXll+PAa6D+sYxSMZPd83nl1+cem3Xn1vMVlBc39tBbiKFYYzUsRu9G4sBlM+CJ9coxr+L8cH+6YmUY/Ua/H+az5/zg8066np6J5ZuDE4IL3bempBHgQu3+ybB+ZwHkZ5r/wBTH+/j4sf9yjjx/wBOf83hjwf8XH/ZvO/KHmPzd5SOpeU5rONWkiluVjaQgoGBLmBweLcftcf8nBDPHh5T2/m8PHD+vGSRMHodv6v+ye/flT5kbzB5ftLuVZBL6aq/qChYgfaH8yt/NlvEDy3YndmBNMUPHPzN8/Xet3g8k+UH530x43M67rCn7fx/Z5cf+aPt4zn4Qv8Ail9MWZPB/WP0xUrL8kbXSzZQ3Dxw6Zpr/WZZ2IElxNTrI3wrFBH+xyZm/wBXMSOOUjVSMj9Ur4of1MUeKUv68pRj/nMBcu/8fzf+PJ3q/wDzkH5ZspGtbOSW/nUH4baMuKj/AC/+aeWZ0oxgPXKEP6x/Ef8AZMzER+ogfj/S/wCyY3e/85A2kjLNqGg3gSIFg7x14jx+JPhykjBkO8omvp2/48ojA9f9i8b/AOcivMnl/wA3PaeYNDnUzFfTmhIow4/YLD/hcPhcB2rhP81BjXmh/wAmPzmTynZXui6mWbT7mJ/SKrUpIwI/4Fq5IxEhRoV9PEzjvsdqen/kx+aPk2Hy/DouvSxJOpYEXERKkEkr+8KNH/wXHjlI0UMh4qgZf0uGMv8ATT4f91xMDiE/5p/rcP8AvkJ+YGoa55/14+TfJ7pDpFsiF3hYCPiwrycxdV/kjXJyynCOGIPH/sv9N/DFPFwChzSH8xP+caP8K6IdbgunuZ7chpwQACpNGMffly/myiMsl+rh3/m8Xp/4pr36sr/5xn/K2y+pp5xv1JuTIxgqxoqDbkfFsmASfd/slpW8zf8AORt7NrZ0zy7HB9St3AmnmOxUHi5Vqqqr/wAFmUSI7VKcv6P8P4/nS9Ddw13k/wC5/H857B5X/MHQ/MzvBpV5FcTRirojVI9x/Mv+UuJxmIs/fGX+5YygY93+bKM/9ylP5y+RbvzroEmkWMqwyl1er/ZPH9knqv8ArZj5CRyFsN+j5Dmlml1FdG8yaiz6Zp54NwYstFP93AP2vi+HllpnOQ4dof73+twfVJssnbk9kg/5yDttA0hbfypo8ws4RRZJNk/1yVHxM2Rj4WPbi45f77+kgcI23knX5d+cvNH5nw3sWq2scGkSWzovwkFpGHwcXb7Sr/q5DJlhL0xHL1SlfFwqZROwCO8nXlpB+WrW/mGZYoFWa3DPUCqsyxqO5bkn7OGjkG3/ABKgW8M8wfmc1/a6VPBBI9zozBWnNeLAGsaVpyXko/axJiDz9R/h/EkmQt9Lfld+asnnCR7a70+WxuBGsoLbq6N0ZX4rkhLGfpO/8Uf4mBMTy/0snpOSQs9RSeIIqO2FNL8CHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7Bauwq7FXYq7FXYq7FXYq7FVNpkT7TAfThopALlnRujA/TiQUUhbzV7Oy/3rnihr/O4X/iRyyGGU/pEpf1QZM445S5A/JKrj8wvL9uCZNRtRTrSVD/AMRLYfBlyr/Tej/dJjilL8cP+6S5/wA5PKKfa1OAfSf6YTp5jp/so/8AFIMCEHL+enlCM0/SEZ91qR+GAYvOA/rSjFmMV9Yf6aK0fnz5NIqdQQD3Vv6ZP8uT1h/ysx/8Uown+j/p4/rTG0/NvypcsI4tVtSx3AMgH/EuOQOGXl/myjL/AHJU4ZAX6f8ATxl/vmSWGrWmorzspo51HeNww+9C2VygY8wY/wBYNZiRzRuRYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpF548wJ5f0W71NzT0YmII/mPwJ/w7LimItJfyf8vPo3l+AT73FzWeU0oeUh50P+rXjlWPffvRbN8tV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvHfPreh+Y2gzTMEjeCWNGboXqzcfnxyPM0P6zKL2EkLuemSYvHPNPnK/wDPmoyeUfKD8bSKi39+p2QE0eC3cfC0jL8PL/jT7YyT8PYf3p/6Vf05/j/ZfTI+n+t/uP634/4707y15bs/LdjHpmnII4IhQDuT3dj3Zj8TNlcIcPn/ADpfzmA2TbLUuxVg/nz8otE85stxeo0N4lONxC3CQU6fF0b/AGWY5xkHigTjl/sf86Pp/wBjKLGqNjZ5T+an5KPp2iLdz6vqF7FBNCHS4m5RrGziN3o3Rl5/a5fDhOTLdSlAj+ji4J8X8+UuOfF/pf8AOTGU+pu/Lh/028ns3knyBovlS2WPR7dI+QBZ/tMxp1aRuTN/wWMcQG59cv50vx6f81RFlGXpdirsVdirx/zj+Smp6hr0vmHy9qz6ZLcqFmCqSTTujKy/a/lbKRPJjPpEJ3/O/h/2M+L/AGKRIjlW6v5e/wCcf9PgnGoeYrmbWLsUNbhiUBHcR9/9lyxkJ5PrP+bH0xYG5fUb/wBy9Tggjt0EUKhEUbACgHyAycYiOwSrZNLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgVwwBXYVdhV2KuxV2KuxV2KuxV2KuxV//W9U4q7FXYq7FXYq7FXYq7FVOSNZVKsAVOxB3GRlEEUVSDRfIGhaJdyahpllFb3UuzOigE16/6v+xyiGAQNi/86Upxj/V4ixEQPwWR5ksnYq8d/PzTW0Y2PnmxX/SdMmVZaDrC5o9f9XKR6ZX3+mSYmi9X0vUYtQtYryEgxzIrqR4MK5fS0w7zh+dPljyqWgvbtZLpdvQh+OSvgQvwp/s2XLBiNXKoD+l/xP1f7Fs8Mjc1D+t/xP1MNk8z+f8Az0wPl+2GiaW3Sa5AMrA/tKn7P/C/67ZjHUx5Ywcx/nS9GL8f6ZhxgfSOP+lL6GH/AJlaHZflZDba1qIbXNaunYCS7JKLxALER/Z7/BkaOQ/vTY/1OPph/wAUgeree/8AR+mCY6F+b/nbRrODVtX0hH0idQ6tAvEop3BKJ/k/zZKOfCPTRx/0v4ZJE4cqMP6X8L2fyP8AmBpfnK0+t6ZJUjZ0bZlPg4y6Ua5b/wBJMo1y3/pPPv8AnJS2+sQaPG9PRbUIw5Ow3IpVu2Uy7u9EWO/85P8AkALawecbD4bizKLJQ9VH92w/1W+HKwDGXv8A9jJiDRevaT5l/THlZdY0xucj2jPH3+MJsPn6mXy9O7Iiiwb/AJxo82ap5k0u8uNYuWuJo7goA1KqKBqfLfCZmW/pH9VMjb0fzn5UtfNOmTaXeAFZVIVqVKt+w491OU5IcX9b+FhTz/8A5xx1+7vNJudI1GQyT6ZO0AJNTwH2Kn/hf9jl3FxC2cje6I/ObRZtPktfO+lR8r3TGHrAdXgP94D/ADcf8/s5TfBLi7/TL/eyYg0d3pWlajFqVrFe25DRTIHUjoQw5ZcRSkUi8UOxVSuLeO4jaCQckcFWB7gih/DARavO/KH5C+XfKmqya1p6OZHUhY5CGRKmpMdRy/4JmzFGEnaR44j6eIDi/wA7+GX+lix4e/1f1npIFNsyqZOwq7FVkjFVJUVIGwwEq8Q8l/8AOT2j3i3EfmeSOwuIpSqKiOysg6NyX1Pir/q5fwif07f1px/VD/fNpiDy2/rH9jx/83fzR0rzf5rgulaefSLVAqiKqMxoWJTw/eftN+xlctthLg/pR9X+64UEVtdf0o/8eTbzB578x+ffLs2kaTphi0e0j5NPMxZ+MYqD6j/ak/1conmhy3yZP53++4YfSx4weVz/AKX/AEiw5vMdzdadFLrGvzMrIB9WhLFgAePBz8Ma/CP2my85svThhH+d6eL/ADeH1NvFKucR/uvx/WYvqOpWDpSwt+J6F5WLsfevwr/wK8/8vKTG9yTP+l9H+x/4uUmuq/nH8fj+cnfllp2QPpuiyX901RyaN5Yv9hAoWH4f+LPVyiU8cTUpf8k+Pwv9x+9/0mWH9RrE43zv+jf+8h6/9nOP9Bn1l5H/ADP8xp6QjawtmA+F3ESU8BBF9j/V9JcMNTGH93E/5sOD/Zz4JS/r8cmYzV9IkP8AYf8AE/75k+i/84l3FyRL5i1JnNBVIhX5jm+Jnln3Q+PHJrMpHy/2T1jyt+Sflfy5xe1s0kmUU9SX42/4f4f+FwDB1kTP/c/6WK8N892dooQcVFAPDMmMQNgyXZJXYq7FXYq7FXYq7FXi3/OVeg/XvK636/3lnKrf7F/gb/huGVS5qGH+XPzn0Ffy8fS9al5XawyW4hG7sPswv8v2suOLiF7D+l/S/qtvDfkxv8uf+cmv8LaFBoiWL3c8HIAl+I41JQdGb4V/ycmOCvUZf5sf+PRSKPeitf8A+cldc1+1m01bSxt4ZkKOZpamjfDt8cW/+xbBMx5cM/8AO9Mf9zGP+zXY8gf848H+64P90wLyn+bnmDylaTaPpeoRpbo9UHAPUmvL0HdPhX4eXxccYzIG4j/nH6P6PplOMv8AZIB93p/ner/N9HFFivm7zDqHmG6/SmoSPcTgANIU4jboCV+1lJkCf4Rf838RYGd9w/q+l7Un/ON1rN5JOvRySPqj2ouVUkcQKcynw/a/d5jnjHq/hv6a/gYGwf8AevF/LGh62qNrNlbytbQNxeVIg4U9d0YMuWTyQGx4d/53FwpM6/489k82+edPmHl3zfaXKPqFi6Q3iKvB6D7ZMdFbjxMi/Z4ZZHD4ZuIiMc/9T+ni/H871sxGt9t/5qeeZdZj/Lr8w7bXbQAaVrcaGUg0T4zR5K/Z5K37z/UwYhRMP9KiPPhfRt9ZwalayWsw5wToUYeKsKH8MlIWKYvPfLf/ADjz5T0G6+uw2xmk7CZi6j5I3w5i/lyfrJmP5v0f7lr4L57vRLWzt7GMRW6JFEvRUAUD6BtmRDGIbR2bAGO+ZPzR8t+W1J1S/hiYdUDcn/5Fx8pP+FzKGGRF/T/Sl6I/7Jn4Z67f1nnOt/8AOUukSD6p5Wt7jVNRfZEEZVa+/wDuxv8AVVP9kuQnwYxcpD+rHi/3Uo8P+l4/6qZCMeZif6vF/vo/7njSwQfnD5iSjyQabE55CnEMB2FUDt/wTZSNb/Mh/nS+n/O8WX+8YeL3Rr+t/wAelL/cK3/KhfM+qJ/zsnmKZ4huVQkbf6zHB4+eXIQx/wCy/wBzGCiczsNv6KGu/wAt/wArPKaM2sXC3Mo3IeUsxPskWJ0eSe8pS/remH+74lGGR3J/3kUHpf50aRp0bWPkLy9JO5BCsEpyA6OSolmdf9bKpYtPj/vDxn+lwy/2U/p/zYrWOPP1H/df50/X/sUxWL84PNMfLlbaPBIT8AorgeNaTzKf9krZIaqI2x4z/Wr/AHmWUIf50cS+N3R/zpf7/il/uYPOvP8A+WGoRazp/l641WbUtZv2Bm5MSsaHv8RZm4qrt8X7H7HxZOWfLVz4R/Nxx/EYf6SLIylVn/Ni99X8tPLvlPy/Lp0Jis3aIqbqQLz5U/vOT/tf5K5XDTE+r68n86X0/wDHYsIwPMbvMfyA/Opbe8byhrM5nBlK2lx1B3P7snwanwf8BmWPUN6jINp3+DKP+clLU6e2keaFWq6fdqJT34sQQPwfKOUmuJ3e1Wl0tzCk6GqyKGB9iK5YgvGf+chB+htQ0PzSFIW0ueEzjqEYg0/4H1Mq5S97KPNT/OK1jt/M2ga+KG2uWNpLX7JSUUUE/wCUsjf8DgIs13xUDop/kJK+ga9rfkxyRDay+tAp/kYncf5LLwbJ45XHf+H0rdj3Mg/5yL8sHVvLT3kS8prBxMB4r9mUf8D8X+xyvJ3/AOb/AKZixD/nEMONP1GkgMPrrRO4NNz8mXjloJSS+g8kh2KuxV2KvK/O/wCSUvmjU21MaveWiMBSKMnipAp8HxLQf5PHIeJljtGQjH/O/wB7KKfEnHaJ4fx/Wiw+X/nHHTPLd3Bq1y0uq2ob/Skm6gMf79eG7+mfto3P4MxpcR2yH0n+LHxQ4Zf0vVL0y/nelhufqPP+KPFD/fPadM8naNp0Yjs7OCNB0CxgfwwjTQ7uI/zpeqX+mQIAJP5u/KfQvNlxDd6rCZGt14qoYhaVrQoMlLD3EwH82LIhF2Wg+XvI1m9xBDDZW8YLM9AD/wAGfiyWPTC/55/nS9Sxh3MOl88eY/Oj+h5StzaaeTQ39wtKj+aCM/a/1snLPGO0f3mT/pVH+tJs4hHl6/8Acf8AHkH5u/JTS7by7qE8nO81UwtIbmY8n5KOZ4cvhRdvsrlEoyl6pEyr+H6YR/qxYGybO/4/msi/IbWjq3lKykapeJTEa9aoeOZNspPQxthAYuwq7FXE0xVC2d/b3ql7WRJUBKkowYAjqKg9cJBHNJFKWs6Na6xayWV6gkhlUqwPv4ZTOAl/xX81FPLfLevXP5d6iPLOuszaXKaWV024UE7QyHtksc+P0y/vB/s2wer+t/unsCsGFRuDk2tD36ztbyLakLOVIQtuA1PgLDw5ZE7K+CfNuueZ9C1u9tr+5mS8ZmWUqxAYE8vh/wAhv2MnDUGQsf8ASDYMhLtH/MbzPoVnHc2WpSCIyEenzJII/nRv2Wyzx5dfV/Sky4z73qflz/nLTVYIydVt4bgCm6Hg33fZOG4S5iUf6vq/3S+n/pFm2k/85c+XLgUvYbi3ala8Qwr4Dia4eCJ5S/0wkjhB61/W/wCOs98n/nF5d81GKGxulW6mB4wOQJNt6U+yW4/FRWyEsZAsUfj/AL36mJhW+3zj/ufqYn+cobyvrmled1Um3gb6vc0rUI9eL/7HlmMNpUf4/wDdIifteuWN9DfwJd2zB4ZVDIw3BBFQcuIpBFJf5v0qfV9JutOs5BFNcRtGrnoOWx6f5OVyJA2UGngPmX/nHy20fyTczzIDq9tym5qxNVDcqU+zy9P9rMYAj1Gx/Oj6eH+t+JsR+Iq35P8A5DaF5i0X9LamBOt4A0XpMyNEQOMiVU0Zuf8ANyyRxyJ5nHX0yjLi4v60ZxQYn3f1f+PMc/N7yvrPkDS5tIkkk1Dy3c09BpDVoJAaqC1Nvh5L/I/+vlgyyn6cm8h9OT+d/vv83/Stgne0t/5sntv/ADj3epdeS9PdP2VZG+asUP6stAQVXzR+SWgeYtRm1i8iJu5oTHUn4QSOCy8P51zGliJOxNfVw/0mBFvnXyFFo/lK51LTNb0p9S1W1mKQgIXWoqAHH2VXkOXL9vExhMXORh/R9UOL/SMiIkXI1/pn0D+SHkaby7pkl7fxrFe6i/rvGq8RGCPgiA7cV/Z/Zw44g+qv6v8AF6f+PLz8npeZACvPvzP/ACng86iK4jnazvYQyrMnUqwIaN+5X4spkJA8UNv51/xLZHLZMNLOm/lx5ft7LUboLFaxhebndiBvwT7R/wBVcvxwlIb/AOdL+FMYkvEfNn56ax58um0DyXDKsZU8nUfvGXoTt/dJuP8Am3DkyxxDbf8Apf8AEszIQ5b/ANL/AIlM/IXkX8wdEtTa6XHa6eJm5STTUeVie7f3v2f2V9LMWGffiEJZJH+LJ6f91LFPh/07X4g/m8XF/FL08P8Asoy/2MmSXf5I3Gp87/zrq1xqUcSF/Qj/AHSfCOR/ap/wHoZMzyzFExwx/wBr9f8AvI/9Mssk8UpbXwf1f+kf97xMx/K//DV5pKXXla3SK0qV+xRgymjc2PJmb/ZNj+WjE9J/0vq/3XqYmAj/AMV/0kyLzJ5fg17T59LuCyxXCFGKbNT2OMsYPKgf51BT5Pn788vyD0HRvLh1TSALaezAqWbaUHY8uX+7f2srhilE3cp/zv8AioqIl4D5IutJdprPW29OGeIqsnEsY5F3haifFxZvhfLpQMuWxH0/8Szq30X/AM4varo+paJN5evzBPcwzyMkUiglkIDeogfqvItkJaWOT1mINfxcMeOP+ciWMSFkCVfV9M+Fnmt/l7qGh6mfMXksQRzyRiKe0lBWKRV+wyFP7t1X4f5cjH9108TGf4Y/3sf6nF6Zf57GJ4f+J/4lI9e8t+bPO0Xo+a5INJ0aP45kgclnA3o7v9lcn4xn6ccZQv8AiycPF/mxiyEr2iOf876njGieZPM01ve+RfJjm5tI5JnWVK8mhqE4Jy+yrV/ZyzxvCHq3l9Pp9fAyM+Hzr/OSaw8v6DpWn3Vt5ugvbXWVR2h2AjLD7C9GbkzfbZvgymJ8TeEo7fw1/pv4mIIl1/zXtP8Azif5JtNP0uTzA7pJeXdVAUglIwejU3UyMvLj/LxyfBK7NiP8P1er+l/NUxI3O381A/m5+fU12LnQvLcM3pRsYrm8VCeK14yemlNv9ZmXl/k5ackIdRxn6d/T/wAe/H1suKMOo4vx/pkPo3kr8sPM2jxQQXghuIVq8sjBJSSdzIH+F/iP7PLKjpMn1CVk/Vw/R/pJeuCPBJ5G7/H8TzXz5eyeVJf8P6Pqn6S0n93J6Roykgl/TPD9nb48nwyiKyCH9aPonwf1mUiY7Sp69/zj9+bGv+cdSk0+7jtobG1hBKRqVYGoVOAr9n+b4cNxAqMa/pcX/Hf4kWCNgy641XyjYXP/ACr7WFqlDOv1hR6RLEzbSE7MvJvibj/LyyuODxI1fFIH6Y8UZ/7D/iv81Hh8fn/Rjxcb5x/NrUrPTtSvtG8sXCyaVM0cpihAaPkF+PiV/wB9/wCT8OIh4YqVbfxS+v8A0yfpFGvx/SZx+WX5/arJY2PljSLBbrUlX0lkdiAVWtOXEbcV/wAvLOKERxGzL+jwpJjzO707/AfnbXlJ1vWBaRtuYrRKU9ubZDx8h+mMMf8ASl65sfEPQRj/ALKSeeRvymi8rXj6i19dXlw68SZnJWn+piJZDvKV/wBGIRxSPM/5r0DLEOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvFtS89+bfNutXmjeS0ht7TT5DDPdXG4MgqGVF/1h+yr/ALLfDywHMIbCPiS/2H+6h/umfEB04z/S+lGw+XvzSRwG1bTzH4mEk/d6a/8AEsfzMv8AUoX/AF8nD/sZ/wC8XxP6MP8ATZFx0P8ANFTX9KWDDw9AD/jTH8yf9Sh/m5Mn/FMDkP8ANh/p5/8AEqw0f8zKiupWND1/cdP65A6iX+px/wCVsv8AfRYcZ/mj/T/8dcdO/M6IVW90+Ujs0RH4g5AaiXXH/pcgQZn+b/sl0S/mfSpOl7H9oPuP9gcmdR/tU/8ANy4/98yE7/hI/wA6KkdI/NGdq/pDTIF/yYnb8JEb/iWSjqT/AKnH/kpOX/Tqf+9bTkobRhL+tLJH/cqi+U/zGkUGXXrZGJNQlohFPYkK2QlnyHljxj/krk/30ZtfGe6I/qylL/dxWxflf5pmUve+ZLn1D/vlQi/8A3LCc2Y9MI/zOL/Zx4P9yynORO3B/peH/crX/JG5uP8AevXL+X6QD968clHLmA+oR/qji/3TKWWZFX9kZNt/zj5p0m8+oai56/70H/jYNlfFm/n/AOlhwf7mbGE5x6n/ADfR+lcv/OOflviVle7k5dS02/3hct8TMf8AKZR/Vl/xXGiU5n+Kf+xl/u4yRNt/zjx5OgIb6o7EfzzysD81L8f+Fyg45S+qeSf9bw/91CEZ/wCyY15y/rXwy/2HCmdr+S3lG3Wi6ZAad2Xkf+CbfI+AD1mf8+X60RjXef6xlL/dJhD+WXluFBHHp9uFBqBwHXB+WgeY+2SDiiUcnkzRUHFbG2AH/FSf0wjTQHIfbL9bIRAal8laJKvCWwtWXpQwoR/xHCdPDu+9AhHuHyig7r8svLNyhSTTLMg9f3CD8QtcB00P6Q/qznD/AHMk8Iqht/V9LBdb/IePTH/Snke4k0zUY/iCc2MT9/TdGLcVb7P8n+Rk4yyYuR8SH8WOXq/0sv8Aiv8ATMoyMeW/9GXqTL8vvzak1S+fy15lg/R+txAHgT8Mo/nhP/GuZIMcg4of50ZfVBnQlvH/ADo/zXp+RYOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5X+bznXNT0nydGdryUzzj/iqL4v+Go//AAOVzND+t6WY5PUUjEahV2AAA+jJgUwX4VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirz/84Py6k856dEbCQQapZSCa1l8GHVSf8r/iSrlM7j6o78P8P86KNxuHnzeV/wAy/ORj0bzLNHp2ljaZ7anOVR2JV2+19nj8Kf5DZL82Ttjiccv9UkJen+p+P89l4h5AV/S/4n8f5z2Xyp5R07yrYppmkxCKCMdhux7vI/2ndv5myMMYj/Wl9UpfVL8f7FgI1/xSeZcydirsVdiqB1fSbfVrSXT7xedvOhR13FQwodx8WQkLFLSvaW4t4UhBJCKFBO52FN8kqvhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK7FXVwWrWRJpLhhBQ3hV2G1diFdhV2KuxV2KuxV2KuxV//1/VORV2FXYVdirsVdirsVdirsVdirsVYlo35o6Bq1nNqEN0iW9vI0TtIQtGWnLY70+LLfCJ5ev8Aqtnhnk868/fnfofmCwuPL+iW8+rT3aNEBCh4gn4Vbm3w/C3FvhyrLGEB65CP9X1SRIRj9R/0vqYV+UHkzzH56097LU9XnsrDTZDam1hPGT4QKo7rx4rxPH4uX+pkPHyV+74ICv7zh9f4/wA6KnJLpt/S/i/H+c9x8n/lD5a8pfvNNs1Nz3nl+OUnv+8f7PL/ACOK5R+XEt5k5T/tn0/6T6P876v6TTw9Tv8A1vxws1AA2GZIDN43/wA5S+U31ryq17CKy6fIJqf5B+CT/gfhb/VXK57EH/N/0yHoPkC+i1Py7p90lGjltYj0oPsio4/63w5IwFV/sWRDyz83NPk/LfUbfz35fiCwM4ivol2VlY/BJwHw8v2eX8/H+bK8dYjw/wCTn/sZJgQNu9mH5maRF+YHkuWXS/3ryxLdW3HqWUc1A/ymXkn+tkso4d/5v+5/HqU+k+55n5+89f4t8kaRpFvKr6lqc8NvMimrKV+GQOn2lbn6bfFlkzQ4u/6WRHVlH5FLceUtQ1D8v9QJY2xNzauejwuQrU/2R5cf9b+XIQlxx35x9Mo/j+FjzHuSfVbaf8mvMj61AjP5a1Rq3CotTC9dm2/Z+Ll/lLyT9nI4pcJ4Jdf7uSwI+k/5sntX+KbCbS21q3nRrQRGQSBhxoBy65kGB5J4DdPK/wDnFfS3OiXeuzkmTUbqRgT3VDwr/wAjPUyiO5P+lYkvaJ4UnRopAGRgVIPQg7EZMixRYvOvIcjeUdSn8nXjH6tvc2DsesJP7y3qf2rZv+E+PBjJI4T9cP8AZQ/hl/vf6zMCx7v9yz3TdXtNTRpbKZJkRijFGDAMOq1HffLZRMeamJHNG5Fi7FXYql+uXk9lZTXVpF9YmiQskQNCxArwB8WyJkI7n/Yp26oXyj5ptPNGmw6tYmsUy1p3Vhs8bf5St8OTkKTIUnWBi7FXwF5q0PSrHVtdtb+Z4p7aZ1tVVal3DsCDvxROPxO3+rw/kamMSR/CK+ri/wB4yq/L/fMe8qecJ/K96mo2EaG4RHX96odatX4+DfDyVcnwxl9Q4/6Kgj3pxfeePNPnJvqZlmnDEj0oQQu/bhEOPHJSzjGK2x/1eGHH/wAWyOav5o/q+hJ9I0BrLW4tK8y87OMzIk5I+KMMRU0/1TyyuMvEHo6/TxfSwj6n2/5K/Jfyx5WjBsrVJ5TQ+tMBIx9wSOK/7FVyn8sJfX+8/oy+j/SfT/puJrMO/f8Arf8AEs8SNUHFQAB2GXQxxjsAI/1Rws+S/LVYZ+a/n+PyNocurlQ83JY4UP7UjVoD7BVZv9jhFdWUfNJfyn/M6+8xu+l6/biz1RIUnVNxzifpIA3Tj8PJf8rI8ccguKTR3D03CwdirsVdirsVY95i896L5cTlq15DbmhIVnHI08E+0TlsMUpdNv50vTH/AE0mYxk/8e9LyzzP/wA5Z+XtMqumwTXz/skUjQ/S/KT/AJJZLgiPqP8ApRxf7KXBD/Syky4AOZ/0o/4vg/00eN5rrf8Azlf5i1EGKyS209WJowrI4Hzbkv8AsvSXBxxHKP8AysPF/ncMOD/fshw9B/pjx/7nh/3M2H6hd+b/AD6WgglvNUj+0disW3UAV4/C32Pi/wBhmLk1nDtIwH86OMf6Sfpj/vWEs3T07/wx/nfj+qgvyq/K+488atJpHrLavDG0rclJNFZUZQPHk+VykauPVhvWzPvJP5EaTJ5z1DyhrcsshtoVnhdCE5g8C9Qwb/f37P8AlZGpzHOMDH6tuL/fRWtntdp/zjZ5JtlUGxMjL+08sm/+sFdV/wCFyPgE85TP+k/4ni/2TDh77P4/o8LAfzi8i2X5eahpnnLQLNI7O1kEd3GgHEqSApIP7Uis8fL+b08EcUQeCVzhP/VOLL6v8/8A00f6iYxA27/53r/3T1jzP5O0vz35bks7UJHFfQrJFKqgEEgSRPt/w3+TyyZ04h9IAI/H+yTVML/IHzXLClz+X2vU/SWll0QHpJCDRaV+1xVv+RTLmSD4kb/zZRZHcX/pko/KFF8oefta8nVK2kw+sQI30PRfH91J/wAkshAcUeE78PpUbj3Mm/NT8h9C82WlxeWMSwatwLo8RoHcL8KyIPh4t/Mq8v2soOI494WK/wAn/B/m/wAyX831cH9Br4K5bPH2im8//ljNc6kB9f8ALchSJgfiMYVOayr4+mftft+kv+XlszZEht/O/mT4v4vx/Ol/m2S33SL8vfzJ8+6leWeh6ZfCNjEFgWegR1WoA5ENzf4ePxftrwzJlqCB9PH/ADto8f8AsvU2eIe4fKPE9gY/nJGvpD6k5O3Icaj36LmMNYP5k/x/nNXib8v+JQk35V/mL5jUxeYtbW2tG+2sXh4Lw4/8M+SOpyS2jGMP6X445f6VPiyPICDJ/Ln/ADjb5R0ELc3yNezLQl7hvhr/AMY14rT/ACX55UcU8h9cpS/ox9P+y+v/AEsotfAZHqfx/pv9kg/Mv5z+SvIdLbQbaG6uyaGOyVFA/wBeZBx5f5K82/n45eNHDFvP0f1v3uX/ADuOXFD/AD5R/o8TZ4QjvLhgf83j/wA/+b/ner+ikv8Ayunzv5rb6t5W0VrYNX99cAkAePNxFH/wrYPzOIfT++/q/wDEx+n/ADpoGSA5ev8A3P8Asf8AfSREH5DeZvMLfWPNuuTFmoTHATQeK1+FeP8AsMidRmly4ccfx/N+lJyTP9D+qyfQ/wDnGzyjpTCWSB7qQd5nJ38aDjlXgylvKUj/AFfQ1VfO5PSbDT7axiWCzjSKJBRVQAAAdgBk4YYw5Af77/TfUyAryUdf1Q6TYXGoLE05t43kEafabiC3BP8AKbLSQNzsP4pJ975K8pW35ga7r0/mTTrIx3V6SFup0osaN3i9X9n06KjKrfB9jKDqYE7DxOH6Yx4pQ4v6Uvo/00v9kvii+XF/N/m/8S9S0r/nHGbVJje+ddSm1CZqExoxVPlU9ckcmXJzrHH+bH8cKDKUue39GKA/PX8odF0LyydX0CBbS7050kVkryYMwTj/AJTcirLkYYzjNgk/zuJRGt3oWv6LL548i/V7tCt3dWSSgEUImCCUCnb958P+rkshscQ6er8f5qSo/wDOP/mdtf8AKVq0v99aVtZK+MdAp/2UfBsvu2Uk3/Nzy2fMfli/05CFkMRdCf5oz6ij/ZcOOVT5X3er8f5rF5pMzefPyojuYfivrGIOKGpEtseLH/WaIcv9njkFVL8er6mcuaT/AKe+rec/LvnGAkW2v2yQT9h6gAhcH/VkMP8AwDYY+kkd/q/H4/jX9L6MvbOO9gktZxyilVkYeIYUYfdhlGxTB86f846CXyp5t1nyfdNT9tK/temaBk/4yQyep/q/6uOM8UfMfV/uUjcPpPJodirsVdirsVaIrscFK3hVIvNnm2x8r2ZvtQag6Ig3Z27Rxr+0zYQL9w+qSRG2C6X5T1Pz7OmsebVMFghDW9gCQPESXP8AM3+TmPKZy7R9GL+d/Hl/4mKmV7DaP+yk9ShgjgQRRKFRRQAbAAdMsjERFDZDp4EnRopQGjcFSD0IIoQcJFilQujaLaaNbJY2Eaw28deKL0FTU/jkYQEBQQAj8sS7FWiwXqcVYj+bPmT/AA55avtQU0kERSP/AFn+BaffyxtlHmxT8nbuy8meUrT9Ozx2k1zymYSOAx5mqbfa+xxyOKJnZA6pETJl3nL8ydJ8q2qXN5J6jTAelHH8TyV6cFH7P+Vlgj1OwH8SiPftTCLLztpX5rm48panZzWdz6fqoJQAwA6SJ/Ky1yjJGMxxQP8AVl+P4UGiLiUL5H/NGLygt75b843ASfSyBFK3+7Yz/d0/aZ8uxk5BfKvqZ1x7/wCmeda3/wA5Q635g+tabokKWxdv3MxYKyIvUuzn0+bfzfDwyzjjHkJTry4uL/M4UihyF/7L/YPHPN/m3U/NlwLzV5RNcxKIyVUA0XuXT7f+tlMiLuowv8fS1yP9WKRRy8YuAA3YGp6/LBSGQ+VfJOpeZtQSz0eP6y5oXPEhFr/O38q5VPII8+Z+mMfrYmVf8S9Sl/5xI8xoEdJ7diSOQDEUFdzuOLccq8Sf80/6aP8AxTHiPd/sn0F+X/5Q6T5SsoIjFFc30JLfWWjHPkf5G+0qqPhX4slHDvxS+r+iZRh/pPpl/nQUR6sx1bSbbVrZ7G+jWW3lHF0YVBGXTgJCiyIeLHSPMX5S3DzaUr6n5bYkmCtZIa/yeKr/AJOCOfh9OX/Nyf8AFshPpL/TMv8ALv57+WdYIiec2k/eO4BQ18KnMoQ4vpIn/VZ8HF9NSZol1Y65aukMkdxBKpVuJBBBHEjbKsmM1RYygRzeR/8AOPGm+YfLsl/5c1mzeGzhcywSndasaGNH/b5D4/h+z/ssohmjL0+riH1cQ/3X83/fI4gR7mX/AJr/AJc3Pny2g0sXYtrFZOc6hAzPQfu+Dk/Bxb/J+L/Y4zMv4RH+tIy4of1Y/wAXF/msbPSnhXkjzvrHknyze2WmPGZ9J1B1uEcAsYn/AHYkQH+WVD8P+rlsJ1RqxL+t6f8AjrdH3WP9y9ws/wA+fKU9ol218iclBKNXkD3BXxzI8E+VfzrRwe55Qfzg0/TfO02qeXYJb2LVIUhaMLwrcKaIVLfzKPizG4IxJ4jE/wAXp9UorQHP/Y+pluo+YvMmpuW1rVbLy5ZkV9NHSSelf52PFW/Z5L/wGWRlOX93D/kpn/4j/ey/0zLf+GND+dk/HB/mydYfmp5P8mwyTpqN9qlw4AZ5Xkcmg24ib0rden2ol/4LJCEifXKJ/oxEfCj/AFY6eMo/6aaBAn6jy/0v9Lg4fR/sv85LrL8zvOf5jyNF5VtBp+nHb61Luad+Ln4eX/GNf9nlctRCBqA8TJ/S+n/iY/5/H/UY8cY8vX/W/HD/ALtO9M/5x0tp51vfM19PqUo3KMaIT/xLj/k5TI5Mn1Gh/NiwMpS5n/Ssl8h/kvofkjUJ9U0lXEk6enRmqFWvMhP9ZuORx45A7ni/m7cP+m/nMQCGf5kslOSNZFKOKqwIIPgeuRO+yvF/yTC+U/MGs+SJSQqS/WrbkesbgVp4ni0f/Dfy5HFvHzj6Zfj8fUy5j3PbMsYpP5m8sWHmWzbTdViE1s5DFTXqpqu4yrJDiFWY/wBKKkW+LfzA8mw+R/OVzYAKlqw9e29QArT++jj3+18UZt/i+3kYAkUdzD/ZfiP+zWA+P4/4lWtPzA0Ty9+YC+aNPh9TTiRJ6ca8SnqRcZhGvwLygkd14/Yf7H+XlsMfD6Tt/N4T/peL/fRZ8IH/AB17TrX/ADkjd3enz3WgaPe8BGzJcyJ8C0FfUZAGVlVfi+3h8XCDXEJyH8Nf7Hi4uKP+kW4Drfw/i/zZML0Hzr5i/PG4h8tSsLTT4VEl7JHszgE02/yvs8V+D9p8cuSh6BRn/F/DH8f6aSTL+btbOvMvly0/LTzHoWq6RH6dhL/uOnUeDmscjn9puR5N/qZj4hwHhPUcX+f+OFhAVt3px/zkloEmq+WlkjQH0LqJ5W41YRVZHK0HL9tGfj+yuA0DxVV+ni/3K7Bu4/5xv8rXDfWLH6zYl12+rzMu5Gxo4c5LH4uP6JyF/j+Dh4o/53+cxjxR+kyj/Vr/AIni/wBklNz+X3+EgzSeaprda7JcFGBNNhJG3978P+RkoYspH04SJfVLwhDi/wCSvF/vuJsEch39Hq/ilD6v8+cvqeZfnQPJd9DG3lVRPqyyK0xhjISRKH1CwUKoZm+L4V/mweD4HOQF+nh4/p/qfVHg/wA5jwCHMj+rxf7n+BkHkjVRqMX1ryT5YhPIcHmnIZQwG4HL4ftZTKOKB38TN/R9UkeiP86aSfmD5Z84eVrhfOlw8OnSXLLbTC0A+FXB3K/Z/Y+1/Pxy3Fm4T6Y+HE/TxeqPH+P6DKE+E7Dg/wBLJOPzV/Jo6XpMHmmS6n1iaGWN5zMxKtbmrHgFLMq8iv2W+yzP8PHAZTMrnw+v0+mPBwf5/wDx2KLJPq3/AKvoTLzX5p/L7T4bHUPL72yXNqQ7wRof3kMi8J4ZHVePq8H5Jzf7aZM6Ph8wfTLinxz/AKM/VKcvQyGLh7t/Pjlw/wCz/wBmlX/OPvmjR9N83X2k6dyawvSTaMyfECCWoW+0qtH8P+xXCMQH1ESlD6Zfz/6q8NfB9S5awdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqB1k3YspzpwU3gjb0Q/wBnnQ+nz/yeWRJrfn/RW2NflX5PuvLOkmPU5BLqV3M91dOKUMshq4FP2VpxyEN9ztf8P82P8MVu2Z5arsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVef/m1+XSeabE3dkPS1mzHq2sy7MHX4glf5X+zlEhwHjj9Q+r+lFHI2OYV/wApPPp84aOLi5X07+2YwXKdCJF6tx7B/tZkEg7jqzlvuGc4GLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirx3ya8nmT8xNU1k722mQiyjPbkSGen+yWTKjvKv85nLbZ7FlrB2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK7CrsVdirsVdirsVdirsVdirsVdirsVdirsVQl3qFvZrzupUiUd3YKP8AhjkowlPkDL+r6mQgTytJdQ/Mfy7p4DXOoWyg+Eit/wAQLZYMEz0/03o/3SY4yWOXv/OQXk20PH68JSNqRqzf8RGPg95hH+tIMjjoXcfn6ktl/wCcl/K69PrJ+UD/AMRlY4DzlD/Zf73iSIRP8Uf9l/xKHT/nKLywW4mK9A6A+ht/xKuWcGP/AFTH/wBLf+qbEiP86H+y/wCJTvSP+cgfJ2pusS3voSMaBZkaP72YcF/2TYPCv6TGf9U/8VwpOO+RjP8Aq/8AHuF6DbXMdzGJoHWSNhUMpBBHsRscqIrns1kK2KHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArhgCuxV2IVrAUuyJV2IKuwkWreG0NYbVsYVdhV2KuxV2KuxV2Kv/9D1RkVbySuxV2KuxV2KuxV2KuxV2KvmT84vz81i51keVvJIkWaN2hlYICzyA04RftKq0+18PLJ+JHHGzwz/ANlw/wDFf6X+qz4hDzefeSPywePzjB5Y86LLEt0pkCq1FZ6F15H7LcqcX4/t8cxYzOSNRJx/0WIJkP4g+x9C8tadoMAtdLt47eJRSiKB956n/ZYwwxh7/wCdL1S/0zERAeY+Wj/hf8ydR0sfDba1At3GP+LUr6tP9b94z/7HJYxsR/NP+xkzAse57HlrF2KoTVNNi1K1msbgcoZ0aNx4hgUb/hchONikU8h/IjU5vLlzefl3qrVudPYyWzH9uFzz+H/VZ+X+yb+XDjlxx/q+mTPmGc/m40CeU9Va6CtGLSXZuleJ4f7JX4sv+VkZCx8mNWlX/OPfL/A+l8+vpvSvh6knH8MkCkojS/yX8uabrreZbe343hLOByJRXavOVI/sh25f7H9nMeOGjzlwx+mPp4f9zxen+uwr5fzUq/OrTZ9NS3876XQX2kElx09S3baeJvH4fiTLfplfPi9Mv97L/MZx5+/6mUaD5i0X8wNLka2pc2Mg4OHU0NQGZN+pWvH4fsvksmMH0mj/AFf4f5v+csg8+f8A5xe0gymJb68XTGbkbMPRCa8qeFK/5GVjxQOHi9H9X1cH836vx/NY3Llf4/H9F6baQ6R5O06O0V4rKwtl4rzYKoHXdnO5Zt2/aZsuxYSRwxuf+yl/Wl+OFlGBPKy8/wBQ/Pf9KTPY+R7GbWJ02aYApApPSsjcS3/C/wCRyw5JwxbTPFL/AFPH65f6aPF/vo/0osjwx2PP+bH/AIr8R/pJJdfk75s87EXvm/UhBLHUw29uPhQkUNXHHZ1+FuPx/wCXlBzTmbhEYh/S/vf6v8X+ylNjxk8qh/uvx/pnsPlryxp/lmyTTdKiENum9B3J6s57s37RyUIcPn/OlL6pSYgJxlqXYq7FXEVxV4V5U1GD8sfN975avZBDo2og3do77Kj/AO7Iq/ZVf2f9jH/NkcNyHBzlD6f6n4/3zOI4hXd9LO9M/NzR9Y1+Py7pL/W3aJ5HljIKJxFVVm/mbLpw4NjtL+aso1z5/wA1nWVsHzV598i6Wv5o2j6zAs2n6wg+E1A9UL6Q+wfib1Fjb/ZtmPwcVx3j/F6Tw/V+Jrw8Qr9PD/uXlX5t+UprXzMNNTTl03TxN6NuyoQrqW2laRuXquynl9r4PsYIGI2jxWPq4jKcuL/O/g/mIFchf+dxf7uT7F8l+QtK8oWUdhpkKqEG70HNmoOTu/Xk2MMQG59Uv50v96gRfM//ADlj5W+o6+mqoKR3sIJ93T90/wDwno5KOxr/ADmQL2f/AJxv89/4p8rxRTtW7sKW8niVUfuHP+tH8P8ArI2ZJ72Uu96tkWLsVeKfn+i6jrHlvRpRyiuL0M69iA0ab/7GR1yufJkBsmP5zf8AOu3+k+crYUa1nFtcEftQS1BVvZW+x/lPgA4Ze8cP/ErHu71OL85L/TPMp0bzHZfVNMmkMdtd1JRif7rm1OH7wf5XwftfZyyOSGQ8Mf7yP8Mj/vf9z9XEm4nYfV/uv8169hYMR84fml5f8oof0rdIsoFfSX4pD/sF6f7LLBiPM+kfzpfjil/mtggT/wAeeZXH/OReq63WLylotxPyNElkB4kePwjiv/BtlUs2LHzPGR/DH/ffVJjxQH9NTby1+afm9eGpXkWlWzCpWLZyPD4PiVsh+bJ/u41/Sl/x76or4p/hFf1v9ymugf8AOLugQcp9ekm1S5k+08jlR/wp5/8ABPlEo5Mm8pGP/C/+KmJf7mLWbluT+P8AOTXVvyh/Lvy7ZtdalZ29vbp1eWR/uFX5Fv8AV+LJw0nFtcz/AEuLh/03DwRXwuLv/wBNKH++jFgVr+YX5baPzfRdEe5SI0eZbcFQtd39WUtIq/63HDLTYYmpy4jP+HilL1f1ZGMf9JxJ8GHKR5/1p+r/AD5f7l7l5M8x6Rr1it3oTRtbsB8KAAqf5ZEX7DZaMAxbAAf1fpZGHC+d7y3fyR+bccqfu7a9mB8AUnqr19llLt/wOV4ttu70/wDEso9z0H8wUHl78wdE19KBb4NZTE7Df7BJ8fj/AOEXDHaR/pfj/iVj972fLWCQ+d/LsPmLRrvSbgBlniZR7NSqMP8AKVwrLlWQWP8AZK8//wCcZfMUmoeWjpd0T9Z0uVrdgeoWpaOv+r8cf/PPLAbF97KTHPz3s5PJ/mXS/wAwLEUVXEFzT9oGoq/+tEXj5f6uVx9Mv6/+6/H+5RHn70i/5yX0Y3Oo6P5o0m4aEXgFt6sRIYhqujgqVr8Duv2v5UwgnHI13f7L6FAIPcy2x/5xZ0+KMG41XUGuVNRIkgWh8VDCRv8AhsfG1BH11/Rqcof9NI8SfFyfzj/sv+KYx+W3l/8AwV5v1TyFqLm5sdWtyyM4FXPFjV/dlaeN/wCd+OQFziRL6o/zf91H+agEkbsN8l+Q5/Mmh3lhppEeu+Xr0vbtXixjJPOOv+TJHyT+R/8AWwGRjUxv/DLhU7eodH0L+SP5iP500T1Lyi6jaN6NwvQ8h0kp25/8SVsyTvuOqZDr3of/AJyKtby48n3b2DukkJSVuBIJVWq4qvanxZAzMNxsiMiOWzyPyL+W3mb80ba0ufMt7JHoMMQWJY3BaTj8FSKt8e3xySq3+QuQlqMh9MeKH86UvxDj/wBz/nMpZCdvp/nf0v8AinpWr/ljp/5e+W7688oQImqxwlhcS0eSgIZ6FxxX4R8CqqryzH8IR9U/31fzvph/SjD6fT/O9U/6TXEUbO/9b/ifp/HqTj8u/wAz7S+8pWuv65cxRPwZZmNFHNSVNEHdl4txVc2AhxH0j/if9M28PFy/46gL3/nJfyfbj93PJOSCaRxk0p45M4wOcofNTADmYvOvzK/O+Lzi9pougXbWFlNRrq5aqslTxWMlfiUV/l+1kJHg+nhnM/T/ADUjblRT6by/5m/LC1XX9Iv31vTAoe4gmJJ4Gh9WA1bj8Pxcl/4BsoGeQNZQOE/xR+qM/wCl6fx/RYcZ/i9Q/nfxReweTfN9j5u02LV9NblBKOh2ZWH20cdmXLZRpBFPOPzd/PC6/L3WbSx+qpPYTx82IqHqCQVjNeH8n7LYMfCNu7+b/D/mshXVIrWx8/fmbXUXuW0HSzT0YhXmw/mf9r/gsr/Mk7Yh/wAlJfj/AHKPFI+jb+lJQ17/AJx2uLWxmur7X7j0okLn1KlRx+OrVPtkTlzz5+Gfx/VYgzPcmX/OMWteYNYtbyXVbhrjTY3Eds0g+I0ryIfuvH7St/MuWyy8fp29P1Sj6f8AN/ms5T4udWP4kZ+WiHyj521fyqRxtLz/AE22G9AT9tEH2fs/8mshiO1H+D/coG49z2eSMSKUYVVgQR88kd2Lw/8AJazj0HW9f8jyn9wJPWgQig9Nxxenj8Lxr/sMhCzGj09KeY9zBtT0S4i8o3emJX695W1AyxkdfRckgj/k5/wOQEuUv82X4/rpvq+k/KHmGPzFpNrq0P2bmJX+R6Ov+xfkuZJCJCi8i/NLTV8qeedG86LRbe4kFrctvsWBjWRv+eTcf9guUxFSrv8AV/nLHnXe92y1DsVdirsVdirsVS7XtbttDspdRvW4wwqWJ/UB7thAtIFsE8p+X5/Nd6nm7X0KqB/oVq24jQ9JnH+/ZPtf5OY8j4p/2of7OX87+qsjfL/pJ6Zl6Hn35xfmgfy+06O8jg+sSzPwVS3FRtUlz1wxMb9V/wCayjXVlPlLXhr+lWuqhQv1mNXKg1oSNxX54lEhSbKwbpgUrsUOxV4l+fD6lruraV5V0SR4riRzPI6EjiqkAO/Hsv2sgcpx7j+L0/1mYkYjZOPzl8ja/wCZ9BtdI0ySOSVXjM7uePLgP7wD4v2viZcrnMgcuI/0eH/f8LHirzeZ/mT+Scfl3ytcaxq1097qiiMBmYhV3C8YU/5qyIlkkblt/Nxx/h/rf8c4VBMuf+lZb+QHkR7y0j81+YCZ7l0Edur7iONPhUqD+01MJ/enf6Yfw/0lkeJiWv675hh13WPOmg2v1iOKtnHINwoSgdwn7WPiQhLfp/peKf8AOTxCJo/w/wCleFXGtaprmrLe31bq8lcLSUVBNeIQj+X/ACculIS3/wBz6VMr83vvkP8A5xUaW5GpebZEeN15fV4SVoxpRXIH2VX9lcxLlPYfu4/zvTx/8d/zmvcvRj+TWmeV9GvoPLVnFPezq3EXHxVDf7q5/aC/y4nDW87y1/m/6X+koiBz9bw3yb/zi9ruq6iTrka2Vir1YKQSRXlxjpy/4bD4pltEH+tL+D/i1MieW39Z9VeV/KGmeV7VbLSoVhjUAEgbmnd26sctx4hH+t/OSI0neXpdirsVS7Xr9tOsLi9RPVaGNn4ePEcqYJEDmkMG8q2+gfmjoS6le2EQMpZHWg5BlPZ1+L/KyiWnhdxuH9KPol/xLGcB0S9/yAt9Pm+s+W9QudOfuqnkv/A1T/huWGJyw+mUZ/0cg/6S/wBymMpR5H/Ter8f6VQu/IX5hL+7ttdjaNSKFk4sRXvxjan/AATZLx8g/hgfjH/fRZeJLuh/sf8Aqmt/5Vl55vo2h1DzCURu0SGtP9dTA2H8xl/m4x/S9P8A1S/3y+LM/wAyP9WMf95DFJ5Ro35PR23nyTy/qUkt1aSIHkkBKs3NSyueP/Fo45UZSkKJqRl9Uf8AjzGyfx/xT2q5/wCccfJ09v8AV/qpSn7auQ3/AAWR8A8xKX+9/wBKw4fOXzef/mH/AM44aZomlS6jpd5NE1qDKsbuKEjc8D8PFuNcMY5I73x/Dhl/sGURK+/4MNsvLVl5gY2PkfTptRYBWmurqUrGGIBKDgYuXFv5m/2GOT0n1SnkyfzcYj/s5zjll/s4f12ZIHMmZ/o/8X9X+yg9C8k/841k3a6n5vaCXhutpboFiG3+7CAvP/V/a/bd8iBLJ08GPv4ss/8AO4pcH+nnL+q1k3/Q/wB3/nS/49L+s94s7KGyiW3tkWOJAAqqAAAOwAzJhARFBPJKE866ZJq58vJKG1BU9QoAdh7n+an7OWcO17f1f4mzh2tEeYvNOneXbc3mqzpBCO7GlfkOpwwgZcljAy5IbU/O2madpQ16SXlYsFZXQFqhjQcQu+AijRIj/Sl9KBHetmvJ3nnSvN1sbvR5hKiHi4oQynwdD8S4ZR4e4/0orKPCwH88bM6Hc6d54s1Pr6fMqTsu3KFzRkf/ACeTZQPRK/5/pkiJo+96xaXUd3ClzCeUcqh1Psw5D8MtKFfAr57/AOcvPKsVzpVrr6geraScH6AlH/5pcf8ADZUY72OvpkoDwW317T5pIrezsjcGSGW3aNNqmQl4DWnJ3hkf9r+SPE4x1/rfz5ccf+K/of6RnQ/6R+r/AHz2b8ttb/MLWrF/L1tHZ266ci28qXKnmQRRA6fFX4P9hgGaFbQ8Tj+qVyj/AL6Ev9goygj6b/pXKP8Avv8AerPMPlDzJ5e9HVRaWWlyWtK3to5VeNfsXELDi6f7HI4piBqMcgv+GRjPFP8Azpy4uL+kxEqPpBHF/D9cP87iQ3nL867LzP5YudI1vjb61bmOWFo/iSRlIYSREfZ5LmVKIl6hsf5svqj/AMU2UOY2/oo+X81/Mn5naO+jeVbFxJ6aJcXBcDiafHxP2V5Mv83Pj+xkcuWEB/FOR8vT+P63AxlIR5Wfx+P5qB/Ljytq/n/19I8z61dw3GnERvZjZuI2EhevF/i/aZZf+GwHUZZDixmMP6URLi/zuHgn/wBLf81fEmRYPD/V+v8AzuHh/wB8pfnF+SFn5Nt4fMenTNPDA6CeG5cNzFRuuy8v8uP+XKryE+snIJfVL6ZR/H876mIJ68U/534hwMmX89fJOh28UWhWKyyyICyRoqBajdWkcb8fs4Y6PHHcm/8AZy/zmYxRHx/03+dxPL/K350XPk7V7saeqJp9/IZvRHxiNiSeMf2V5fs/8Dl2Ooiug+ni/h/0iQRy/wBLxf8AHXout675x/Nuxk0mz0tLPTZqcpZ61oDVHQnjRlYfso+UTzw5QBySH83+H/ef7NrM4/w7qvkP8mdS8wW8lj55uL30rJxFFAHKwuijijo/7a8fh+yrfZ+PHxp5BUT4f86PB6v9P9Mv87jU5DIVy/zeH/ZfxPTPL35J+U9BUfVdPidwah5R6jD5NJy4/wCxyv8ALA/UZT/rH0/6SPBD/YtQgOvq/rf8T9P+xZPaeWNMs5hdW1rFHOq8Q6oAQP5QQOmSjp4QNgAJEAE1zJZqU7sqMY93AJA96bYCr511v8xPzI8q2w8w6vHbmwM/pm3KcWAqQDt8Shv2G5P/AKmCGqjLbhqP+qer/iv942DID/D/AJ3q/wCK/wB4nukf85UaRJciz1qznsGNPiJDjfoW2jdR/sWy6IhL6T/phw/7mU1ERLkf9MPx/uXsum6zZ6pAt1ZTJNC4qGQgg5ExI5oMCEaDXfIsHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8XtgfJf5ivCnw2Oupyp29Ud/8AW5f8TbK8Zq4/50UgbU9oyxDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVQ2ozi3tpZiaBEZq/IE4CkPMf+ccLT/nX5dSeplvrqWVie+9BkIjdMi9Xyxi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXgX5g/85J3Pk3zJJo9zp5ayj4j1ORDMCAxkTbiV/Z+1k4Sgdt7/i/o/wCa2Dh/49/x1l2k/wDORnkvUIRMb9YG7pKrKwP/AAPxf7Hllw05lyMD/nxj/sZyjJkMV8jH/TCP+74UY35++SgCf0pFtsaJIfwEeJ00h/M/5WYpf7maDiI7v9NGX+5kg5v+cjvJimkd40p/yI3/AONguQGMdZQH9Y/8SJKIA9YR/rcX/EtP/wA5GeU1ICyzNU0qsLED54Djj/Px/wCnYkAfxQ/0ym//ADkd5XVSw+tE9h9XkFfppxyv08uKH+mCI0esUP8A9DH6S9PQsNQmUjqkI/43dMZTxR5zgP63F+pjOUI/xR/3P+6d/wAr/wDVB+qaFqsp/Z/cEKfm6erx/wCGymOpwXXHH/NOOU/82EskJSTCeOX8V/1RGX+/Wr+cfmO6Wtn5Zuz2rI4Xf/VdEbJT1GGPWZ/5Jy/3cPFijxIA1uf82Uf97OLQ82fmRff7zaRbW4/4tkIP62XbE6mAO0csx+P6n+5SMkQa4Zf53/FRWjSfzRvoys95Y2vL+VSWHyYBl/4XH8yb2x/6Yif+x4oyRGZveP28S7/lVnnK/XjqPmWWM/8AFEQG3+t+6bCM+W9hjh/s/wDYzjL/AHaY5Zj+Z8uP/dj/AHzm/wCcdrW6qdR1jU7ktTkHmFDTptIkn/EsiMuov6wB/Nxwli/3OXh/2CY5ZgUZH/N4ox/0kpTiqwf841eWk3uGupzWvxzEfRSL01pkZ+JM2Zz+UZf7qM5/7Jh6idzI/wCl/wCJTmy/IfyfbAD9HxyU7yEsf+GOQOG+Zn/p5f7ljGNd8v6x4mSWnkjRLQBYLG3Tj0pGtfvpgjpoDp9slEANk0WxgQUSNAPZRh/LY/5sP9JH9SiAHQfJVWJFFAAB8skMEByjH5RZoDU/LenarGYL+2imRuqugI/EZD8rju6iD/OjHhl/pmJiDzS7y75D03y7O8+lq8CSChiDn0h7pETxQ/6uXR4gK4pSgPpjL1f7KXqZgmqZJliHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsVdgV2KtZAlLsiQrQwxKt4bV2EK7GqVsZMIdgCuySuwEK7CrsVdir/9H1TgV2FXYq7FXYq7FXYq7FXYq7FWOWPkDRLDU5dctrWNdQn3aUDffqR/Ly/a45jeALvf8Aq36f9KxEWDf85B+X5PqNt5osBS90iZZgR14VHMfJftZI+mXF3+mTMGi9M0LVY9WsYNQhIKTxrICOnxCtP9jmQdlIp5d+fSNpFxpHm2AHnYXapIR/vuTZ1P8Aks3Ff9llN1L+t6VjzeuwzLMiyIaq4DA+x3By1CpirFvMP5l+X/Lz+jqV7FHL/JXk30qnLj/sssGM1f0/1vS2DGeu39Zg3nLSrfzrFH5x8mTf7l9NJ4MAQJAPiMEisPi5fsZiyHhnijUx/lIxPFxf8eaz6eVH+dwsQ/MP87rTzX5YPl63jkTXr4pBJb8CCp5ASbkcSrU+DLpGPDxAjh9/qZmhu908j6APL+iWeld7eFFb/WpV/wDh+WQhyYKHnbz1pvk6xa/1SQKAPgjFObn+WNOrNlsY3v0H1SZRjbxq4+tedUOtef7v9FaGTyhsA3FnXs8oH7xuS/5P/A5WJTy7YvRi/iyfz/6s02ZfTtH+d/OSPyH+cJ8tyXXlnyrZyajbvMZLEdKIw5SBv2mVW+xiDDGPWb4f4o/x/wA1Ioc96/ms6i038zvM45z3UGjQNT4VXlJQ+3x8W/1uOD8yT9EP87Ifx/uJIOSvpAH9b8f7qKZaX/zjvpLzrfeZbi41m7FN7lzwBBrtED0/yWZk/wAnK5eJk+uXo/1PGOCH4/pQjikwMpS+o/5sfTH8f1eF6ZpulWmmQLbWMMcEKj4UjUKo+Srthx4ow5D+t/Ol/Wl9Uv8AOUCuSNy5XYq7FXn3mb80x5d8zWXl2+tW+r6iAIrkMKB60ZXQj7K7fFz/ANjhjwmx6hIeXpl+P6rIAFNvOnm290GAnT9OuNQn41AioEHb43Y8v9iqM2QOSEfqMh/RjCc/9lGPB/s/81jcRz/0sRKX6OF563l38zPNEBubrUItHEm628aVZR4PIp5cv9k2Q/NS/ghHh/nZJev/AGUZf73+qz8XuA/zvqYp53/5xpvDo8upz6jNqGqwKZOL/YNDycJX4l5LkJ5ch9U69P8ADH6uH+uwMiTZ3ek/kLZ6DJoMWpaLbR288qhLigq3NdnDM3xfF9r/AGWSjhEDe87+mUl4K+L0/LleT/8AORPlmXUNDTWbLa80mVblCKg8VP7wAj/gspkeEiX+bJRsUg/OW4Xzj5EtfM9mKvbNHc0HUEfBMPbjVslMUbSdi9h8rawNa0u11If8fESPT3I+L/hssWQovMv+cofLy6j5Y+vKKy2cquPHi3wOPlvyymfO/wDNV4N/zjr5wfyp5nS3uDwtL39xICehbeFiP8lv2v5OWXQN7Mo77PtzFg7FXh35338GnebfLV7duqW8UzF2PbdGqfb4Mjw2a72cY38Uq/Pr86PLOqaFPothc/WLtnjZQikrVHD/AG/s/s5bkwmPMx/q36mXBw7mkl1P83tT876bHouneXnvowiAvIGI5KAAwVAvD4hy5equY2bJhFAmXF/Dw8MZf5n18X9XhYSlj/pH8f53Gn9t5E/NDzVEsesapHpFoRT0oPthaU4/ueNR/rTtkvzcz/dwEP6WT0/7vxcsZf1Y4lGU/wAIjD8fVD6pR/08WU+Uv+cb/LOiUuLxG1G76mS5PIV61WP7I3/m5t/lZVLHLJvkkZf0Y+iH/Fy/zpcP9FrIJ3Jv/c/j+txPUba1itUEUCrGg6KooPwy2GMR5CkvKPzk8w6xd6np/k7y5Mba6vqySzDqka9f+assOTgFjeX8LbE8Isc/4XnLfmR5h/LHzQdA1O8fVLLgGAkFGJYGnplQzcuQ4quMcxnH94I8X8Uo/wAP+4/3CePi+rh/zfSzvTPyz1DzpdL5j/MBx9XQc4NPBpHGvUGdvhq3H7X/AA7fs5RKUs20fRi/6W5f+I/3X8zg+prMuLYbR/2Unqel2GltaCLTo4DZsKARBeBHtw+EjCdLGHpMa/ncQ9X+dxepBx8OxFfB4z5r0aT8p/MEHmLRk4aFeuIruEbKhY7SAfs/5P8AlYcR4DwH6T9P9BMP5vegf+cqNFVodP8ANNoatEwUkdx/exmv0cf9nifTJI2Kf/mzd/4k8kWfmm1AMtq0N5Qb0p8Mv/A/FhnsQfNeRes+X9Wj1iwt9Ri+xPGsg/2QqctKCKTLAh4P5IlXyl+ZWp6Iw4waqouI6n9rd9v9Y88qhtt3MhyeqfmB5Uh81aJdaROB++jPE+DD4kb/AILBkjY/2TF8V6v5h8zXWiJpFxGrWOhXA/eUIZXJZQrPX4l3/lyfjRNfVxH+JkZvoXR/PH5o3FnFcx6PaXEUiKysJgCwI2NDLsckdViH8Ob/ADeKX/TqTZxQ6iX+mj/xLCvzc1bzNBead5t1PRW06fTpAHmjmSVGUnkAQnxJ/suWVDLjMvTxxv6o5IShD/lb9Ev9iw4og7WL/hl6v9n9CZ6ZJD5c/Mqy1bTz/uO8xw86V/acbg/6snxf63LJQ9NxUCrCr5uhvPyf83HzJZpy0LVHC3CjorMaufZuXxJ/ssGGXCeCXX6fx/RYxPTve/TJa6/pzIpWS1u4iK9QVcZOcbFIIeUf8483b6O2p+TLkn1dOnZo6943O1P+Jf7LBCXFGz/VZcw9c1iJZbKdGFQ0bgj6DjIbMXzR+RH5J6V5msn1PWZXnjhnkjW2DUReJ6uq/wA38uQlxyFXWP8Ao/V+P9kmV9X0DpP5eaBpQ/0Kwt4q7bRj+IysaePX1f1jxNfAHk/5zfkd+kI7/XNJVBP6URjhUcRSMl5th8PJl48MiQcf9Qf75lyegflL5utPOPluCVFFY4xBNGezKODAjwZfizMnAEd8SzkPtecfklNL5f8AOuteUrWv6MRjKin9htj8P+Txbj/wP8uQgdqXkKZd/wA5D+Sf8ReXXvLZf9O08/WIiBueP20/2S5XMV6v9N/VYHZh2gf85WaRb6Vaw3kM8+pLGFlWNRTkvw/a/wAr7X2cyxGHMkQ+DdUeZNfBg35i/mZ5q/MsfozS9PuIdPJBMaqeUgrt6j0+z/krlE9VjgPSef8AF/0i1nLEcuv8T0L8u/8AlYmjwW2n22lWttpkJUFHejlSfjNS/wBtvtfZyuOfGBQjkJ/il/vvVH/fIEx0if8ATf8AFpn+dsh8v6/oXmlBQRz+hKd6cH8T2ycdpe8JiftZ15//ADH03yVpp1O+YODThGjLyev8gY7hftZfCN87r+KVf9Isoxvnt+P815P5p81Wp1jQ/wAydIf/AEO6ItJ1IoQG7PT9pa/8RykDhlXf/EojRrvZPqWlRw+dbrT5v94/MNiV27vGOJP/ACLOV8N3H/OigCws/wCcdNRktbfUPKty1ZNLuWVK7ExsTQ/8EMtibCnkyD89/Lf6d8qXaIvKe3Ani8Q0Z57f7GoyE9t+5jdMa/Ij88188k6PdQCC7toVIYPy9TiAjGjDkp/a+02ZEqO4v+lxM5Udx+Pse0ZBg7FXYq7FXE03OKvK7yV/zE1o2Me+gafIDMR0mlU7R+6Rt9vKsh/gHX6pfzY/zWcttv8ATL7H88dPHmZvKF1byW0yv6UbsRxYgbf6qt+xl0REjY8v4aXhBDNPN3miPy3YtfPFJORsqRKWYnt06ZHijH6iIsLHXZ5NYecb3zvrQ8qeb9HSOzu4jLGpYl1A3DMV+zy/2GUz8PKNuMH+GX0/6X0/8UkmMhtY/pJb5+/JCz8oaPd6ppWp31tDEpZYBJ8BJ6L8PFsnDJmhtxekeUuP/TcXD/sFhOY24tvx/S/3rM/+cdvLN1o/lxbm/Z2nvW9UhySQOifa/wCCwjJLJuTxfzVMrR3ny/8AO2mXn1zQYYLvTlUcoTtIT34tgOcQ+qMiP50f+JUSA5i018hfmNB5rt5KxPb30G01u4oyn2r1VsnxRIuJuKTXMbh4hc+YPOFn5gvvO8enFrSCsRE1VpEp4tw3VuX7XL48pjqMZl/FMf0f4VGQE94fRvlrWo9c0631OIUW4jD08KjcZeginnf59eX9V8zW1lommQs8E04M8gpRVHjlE8nDtvZ+nZHFXxd+YX5iWf5f2Nv5btUP1uWIRQmlEFfg5s3z+LLYRAHu/h/nM4gM08h+Wo9A0WDTxRjx5SN15M3xO3+yyEI7b/xfUweC/wDOQX5dWvlu9tfMemkQwy3C+rGNhzry9RB2yqEOA1/D/D/R/opiH0lpVyt1aQzoeSyRqwI9xXMkKUZhQ7FXYq7FXYq7FVC6EfpMJiFjoQxOwAPXrgIvZQHzv5F8+ab+XGpax5e1Fma39X1bcRgsWD/sJx9jgxjb1Hgr+c2Abb7V/ORtl5o8/XN/63ljT5V0pgOMd7Tp4o5Ksv8AqszZEauA23z/ANKI9X+x/wCJYnIOW8/6XDw/7J7vpjXD20TXqqtyVHqBTUBqfEFPhXJg35f0UIvCh5xe2/1Tz9DPQA3li6A07xnkP15RW/8AsmQQf5LeaNT1W41ax1iczTWl0VQHYhKmn0Zdx8Y6D+qmRtMPPX5RW/nS+S51a6l+pxLQW6HipPcsf+bcql4h2ieCJ/0zHiPJNvIvlGLy5pkukWgEUIeQRvH9ri32HZiPikX+b4sjjjw/1v50v4lp57r3kDzf5Wgk1vSdfub17esrW9zUqyj4ioq7L0/yf+Byz8xkH1DHOH8XDGMJR/2P+5lBYzPXhPw4P+K/3r1Dyf5mj8waZbaiSqyXEQcoCKg99vnlxHXdkYnnu+fvL2mecrnzLqnmLy1FC63UskHrTEfCEIHwg/6uY3jCJ3jLJX0/zUGdHlbyH8xNa1e91R01y7a+Nq/FjQhAQd1A+z/k5ccpnz4R/Rikzv8A4mL7H0vzroOk6Fp013NFa29xFGsasQBUjp7Dl+1iNPxiq4/6y8F8mAJcweQfOP6Xt+P+HddQAyoQY0l6g8weIVuP/EsrxjgPhn0/xRj/AL1Yj+E7fzXodtdWv5i+WpgQPSullioN6FSyKQfHZWyWSNjb8SYyCSfkJrs95or6TfEm70yVrZ69Sqn92f8AgckJWLSd93p2Fi8q/Ob8n089R/W5ruWNbaJysAoULAEq3+t/wX+xyjIZjkRw/wA1SS+TfLepXMUM2gQQIZwwljbo4eM8xQ/Zb4Rx4/62EgfVvt/EkbbvQtB/5yClsdbi1xrcTXlxbC3uYUqgaRTSGSrcvib9vLoiI/qn1en1y4m30/P+alX5v6x5w1HUYJvMqyWFlfkKkStVAlaHkKsvLfl8WRjqRMGMLiP6X8X9JiMh5DZl35S/lh5fn1HUfK3mOD1LmMLLbzMSrNGRWqH7P2WVso4DlFgkTHplw/8AEtfDxDrt/NW/pvTvyQ82smmzG60a6i/fRowZkYHboVXkuZGKEh6Z/wCbLhZxiRtLr9LHPOf50XWpa8PMflS3ewkKGB5SAxflspkqPTRvs8OTNgjwYzQ3v1cMv97D6vx9DISjE0N7/nf8Qm9v+Q3nnzkwuteuDGjfFWeb1DQ71RIy6qv+TyXKZaqc9gCf637qH+l+r/YtUssj/wAe9Mfx/mJl5G/5xZuYdZlg8yD1NMjWqSRvx5muw4/aXK+KU9vVj/nfTKP+mYWTtuHqPmH/AJx28uXunfU9LhFldIQ0c67sGHTnX7Qx8Ix3iSZf0vpl/RXhr/jzM/KVteaLpsNlrt3HcXa1X1BReQHTY9WzKhZ6CH9GP0tu8v8AjrJAa75Jil+t67Z6LavfajKsFvGKszGgyQjaYxt49dfnB5k83zPB5BseVrGaG6nFFJ/yAfhp/wAFkJ54YzW+Sf8ANikmMf6apov5reYvLWpRaV5/t0jiuDxiuotkr4PT4cYZo5dgDjn/ADZfxJiRLYbFBfnnol/5eDeddH1SWFlZP9HZiY2r/ItePxfy8cEZ5Imtp4/9lFMZSDy/8wta13zPoFt5g1S/BW7mCQ2UWyjiftOF+03L+bGWSRNUBjH+nmkk+Qi96uvya0bzfpNi2v29L6OCNTJGeLbAbFgPi/2S5i+FfqiTjv8Aq8Mv81oIvyeG/nN+WUHkm8tLHy1cXLS3ZP8Ao4Yk0HdePHMiGWeMeqVxZxJiOb6Q/K/zBZ6rotvFaSM8ttGsUqv9tWUcWEgPxdcs3q/qv+JJHX6r/iZlgpi7CrsVdirsVdirsVdirsVY3528+6X5MtVvdYkMcTsEXiKkn5ZKMeLuH9ZMRacaTqttq1tHfWTiSCVQyMOhBwSFKRSMwIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiryL/nIizeGxstcg/vLC6RyR2BO+VnYgpid3qem3q3ttFdJ9mVFcf7IVyxB2RWKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ksf8/wDqfoC/9AVk+ryU/wCBORkaCQaYh/zjjfR3Xk20EdKxl0YDsQTWuICl6fkkOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVj/mjyJo3mqMR61ax3AXoWrUfJ14tmPkwiW+4l/Oj9SKtJNP/JHyfYU9LS7duNaGRS/X/jKXyH5UHmZn/PlD/plwMOAXe/8Appf7n6U1g/Lfy3bCkOmWie4hQH7+NcP5aHX1f1jKf+6lJBxRPMD/ADkdZ+U9Ls2MkNtEGO1eA2HgNumCOlhHkAzERHkiho9kP90ReP2F/pl3hR7gvCD3Ky2UKigjUfJRkPy+P+bD/SxQIDuHyVlUDYbZZGAjyoe5muyxXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FViqwYkmoPQYqvxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2BWq70wWrsHJLsFq7IEK1gVwxCt5JWvHEK4Y3SrhloQ4YArskrsVdirsVdir/AP/S9U4q7FXYq7FXYq7FXYq7FXYq7FXYqgda02PVLKewlFUnjZD/ALIUyExYV5z+QWsk6ZN5budrrSJWhIPXhUmNsMDYtnLlbJfzY8uDzD5avrD9sxF0PgyfGP1ZDILDB5f5Z/5yR0nSfLNlDc+peayEEP1aIVcsvwKWanFQ1P8AKf8AyMyaFcUiIR/2X+l/4rgbTEDcmgi7TS/zD/MJRNqk40DTHNfRhr67L/lk/EvJf5m/2GY/5kn+6jX+2ZP97/x3g/rsBkr6Rw/0pfV+P9Kznyh+Tfl/yzWWGD6xct9qef8AeOfpf7P+xys4uM3MnJ/W+n/StdXz9X9ZmtvbxW68IVVF8FAA/DLoxEeWyQKQh8v6cbn68baE3Q/3b6a8/wDg6csp8CN3X4/q/StBIvPP5naJ5MgMuqTqJqVSFd3b/Yj7I/ym4rmXGF78h/Ol/vf53+a2Rhb5m0mHzd+aOvtr1tATFUiF5hWGFe3Dn8Luv+SrfHmLlzgng+vh/wAnH/f/AMMf8/8A0s0SmOXOv4f+L/Ens3ln/nHexjkF95nuJNVvDueZIjr/AKnVv9lkSJ5PqPB/Rx/8X/xHCwkTLn/sUy/Mvyomk2lv5h0KFYbrSXEnGNQOUX2Zozx6/B8WIgMRsf1Zf8UmIES9C0bVYdWs4r+2PKGZA6n2IzKISRSNwIdirsVdirsVeQf85NaGbvyz+lYPhutNlSZHHUb0bcdMrPpIkkbPQfJGtHW9EstSO7TwIx9zT4j9LZaVKa38728DzRRmWRFJCKQCxH7IJ/myJNIeRXev/mZrUsi6dp1tp9sNh9YYMzA/8LkTqIHYRnP+lL0JMx0B/wA4vOPIPmvzD+WXmseXdct4/R1WYSMsZ2UuSPUhp8PH+dcOLJGUaqUK+ni/hZAgin1bkmCHv7NL2CS2lFUlUoR7EUyMhYV4J+VNu8Vtrn5bamP3kPqtAp7o4NKH9r4uDZAHjh7mR3HuZX/zjbq73Plo6dOSZtPmeBq9gD8GTibCy3Z3540caxol7p5FTNC6j50qMExsxfCNzJDZvJ67iOQxhkIBJEsZoF+H7LNTjy+xgiDz7vU2Pf8AQP8AnI3WtbsYbLy1o019qMcarNK1fSDAUr8H832v3ksWWTzY4fUSb/hj9X++n/sf85jKUBzu/wCb/wBI8f8AuIoxvLv5r+a15395FpEZNRHGaMB4H0Tv/spWys6on6IV/Sl6eL/T8c4/6WKDlP8ADHh/H+dL/csH/Nj8l5fLNrZ63rV9NqJa4VLnlUAKx6p9psh4mSZ9dD+bw+rgTxGXNl/5s+Q/L+jaLpmn6HaxxNf3cNGpVyuzH42+L7LZDwRHfc/0pSYxjXn/AFn0BYWUdlBHbxAKsahQB7CmXQgIDagoVnkCAuxooqSfYZYrw23/ADS86+Y57u/8sWMD6TaOUAlrzk4kh/T4nc7f5ORlqIQ24TOvqlH+H/Zf7yTPxIgVXH/S3/4pnP5c/mzZecOdm6NaanD/AHtvJswp3X+ZcntIcUTxRUxFWNwx6dEP5qxGSvIaexTw8G/XlXM+5HRgf/OR2nCw836Nq6bGVkUmndXAHz+E5GqPvWIt65+dmqfUfJ+oTpWrw8QR/lkCuWXXkoVfyV0qPTfKWnwxAAtCHandm3JwRFMUZ+aXl+PXvLd/ZTUoYWcE9ig5g/hgmNlec6NbN50/KsQsOc0MLAE71aInf/gccm4tnLmhfyElPmjyNe+Xp93hMkIHs45oP+Cwz9QRJl3/ADj9rRuvLq6ZPUXOmyNbSA9QVJK/8LhibF96nd6dkmLw3/nImzOh3Wl+dbYESWU6pKR/ITX/AJqyrlL3pjzez6XqMWo2sV7AaxzIHU+zCuWqRT5X/NTTX0PzHrelIn+j6ta+tGOg5r8bEf5S8TmOO7uKQdkd+WP/ADk9puhaNa6ReWd1M9unF5IwrA79QGZW6ZlARHM0T/pfx/msjwkcz/pf+PMy83/mt5Y/Mby3faTpl36d68JZYp1MbEr8VBz/AHbHb9l2xniNXGp1/N/4mfDJBhXKp/1f+PcP+xeWnnqv5eWGtWYLX+g3JV2FeSpWor/k5jyPDIHv9KCer6OvtPs/zJ8pKjEPHewBlbwemx/2MmHLCx/sookGDf8AOOvm25gFx5I1klb/AE1j6Ybq0deg/wBT/iOWRlxxv/TMibFrvzLP+DvOumeak+C1vK210R032Qv9+QhtKv56I93e9c1yamm3MyGoEMjA/wCxJGSlyQHyz+S3mXzrc2E2keUbaFYlmd5LqboGY9Pi5L/wr5Hxo4+kskv5v44P92pmB0v/AHrPtRb829Ege+kmtLpI1LsoUVooqeIouEamvqht/RXxO8D/ADWffk/+Yf8Aj3QxqE8YjuEYxTJ25DrT/JbLJUeX+lTKujDvMf5Q695f1B9Z/Lu5W29di01rIf3bMf21Vvh/4jmNHJLDtXjY/wCb6eKP+yhLh/qzYxmYdOP+j+OH/dI/8mvyt1XQL288yeZZEk1W/NGWM/CorU1p8PL/AFeXHJRkZm64I/wx/Ep/7pFk78v6P44nrM0KTo0UgqjgqR7EUIywi0vNvy4/I7T/ACbfXt4rLcJdPWNXQH01rypyPU1zHGK/qo19LGu/dlvmzzZp3k/T5dRvmVIoV5cFpyPsiZkY8IHICA/nU2Ri8d1H/nKb9LRra+UNOmur56D4x8Kk+0fJn/4XLZyx4t5G/wDYf7pl6Y890j83eSvzO8/6e36da0tLRf3ogYhd1G3xASyBv+Mkq5inU8f0Ql/Wj9f+llkjL/S4mHGTtGP/AB//AGXF/sWCflj5a8say0p8/ak8ctu4hiheQ0oBueQDcVVvh+FlTLzDLn5Hhr+dKPH/ANLZf71nKE8nXl/OlHi/2aYRtBa6TrvlSynW6trKRL2zdDyFARUA/wCqfjykggDi+qB9S1w8+j2XWdT+vaFoHnFBV7V4TJ48XHpPX/JVviyUtj/sUDn70u81Sf4G8/2nmBAV03WEEMzD7PM9Cff9rHGaJj/O9UUR7nt9zCl1C8LbpIpU/JhTJSFhi+FPLGrv5C89c4WHCG6aJ6dODNxI/wCBOOM97OL7uilWVQ6bqwBB+eFgqYVdirsVYJ+bXmSbTtOTTbA/7kNSkFvDTqOX25P9iuAy4Rfczjtv3Mg8n+WoPLemQ6ZbjaNRybuzH7bn3ZsrhGh/umDwj/nJjym2k6lZedbEUZJEWWnipqjf7JfhwD0y96QaL6G0m7+uWkNyesqK30kA5bzUsY8o+W54NW1HWtRjAuJ5BHEa1/dKPhp4cjlMfUb3FemPEgm0o83x/wCMtbh8uIOVhZkT3h7E9YYPn+065LIf4Rzn/sYsuQ970eKNY1CIKKoAA+WTApivySoaOxgjlM6RqJW6sFFT8z1OVxxgGwhDeY7JL3Tbm3kFVeJwR9BxmLCWM/kvGsXle0jQUChh9xOGPJJTHzh5ok07TL650zjLd2ScijVoDTlvT/Jwk1ud0gVzeS6x5Zg/MLyvP5pv5BNqnoc4lj2EPH4uCp9r/ZNlWS74uUR9Mf8Ai1kN+7+a9O/KDzAdd8s2V25rIIwjd90+E1y9ZPJf+cu9YrDYaRFvK7l6d/5RkCFA2e0/l1p02neXrC1uifWSBA1etaVxgbCCbZJk0KSzIxKqwLL1AO4+eNJpq5uEtonuJTRI1LMfAAVOKHltn5r8x+f+beXOGnaWrlPrUg5SPQ0b0ovsr/rNkJZuE1Acc/4pS/uo/wDFszLh5er+lL6UN+Vms6vYeZtS8qaxdvfLCqyxSSAA0P2vo/ycIymf1cIr+aOFTKxvX+aOF6P5v1ubRdMnv7WFrieNapGgJLMdlFF+LEzEd5bMR5vGfM2kfmBrnl+51DV72Kzg9FpDbRJ8XGleDv8AstTInUyP0xAj/OlL1JGQ9AB/u3kukeUtT0O10rzfY3Q5Xr+izyLyEbV4rz5faXIcZMqkBP8Am8X8X9dQSTvR/rPf4PNPnry4Oes6fHqdoKfvbM0elOvpN9r/AIXJfmYD64yw/wBL6sX/AB1HHHqDD+r64px5c/O/y7rEv1SeVrC7G3o3Y9Nq+xb923/B5kxhxi4EZP6v1f6T6mQhxfTU/wDdf6X/AIln8UqyqHQhlIqCMrqmBFMb8z6Q9xqemX8Q3gmZWPfi6mv0fDlMjRCWC6mw8l+f470iljriCJ6dBKv2S3+thxiiY/50Ux32egfmBY3F/oN7bWRZbh4WCFTQ1pXY5OUjEWEA08o/Lf8AOK10vyvaaaqPea4paFbRN3LKSKuf2E/ymyZkK4pH/ipf1WZo+o/8eTDzFb3skHr/AJi6yum2dxUCytfhBH8skwDSy/5fFeH+XkYyyZdoCGKP86XDLL/p5y4I/wCb/pVFy+mof6Xj/wBPP/eMK0Ky8tP5qs4fIrSNBZJJPdS+o5XioPFAJT/N/k5CUZ4tjKWS/wCrOMf9J6EUY9Xrf5FID5bWYb+vPNJ/wTnGLEvLP+ciWj1vUbbyb5btkkv5X9a49NQD0+H1Sv8AL9r4sgcccQ4u/wDHpWhEX3vK7jSbKPRGbW5pW1W0uDbei7HjGigsOCfa+18OSuU979P838f8SyAMt30b+Vnkm08weQLLStbjMkEq8+JqpG/JCjA8l/1sjKPGOZFfTKP8P+mj/wAdYS3el6BoNpoNlHpunJ6VtCvFVFTQfM5OMeEVz/pSUPOZP+dT8/c2+Gz1uIKPATJ7/wAz/wDNODGKJj/nRZDuesZaxaZQwodwcBCvgT80fLN7ofmC/e1SQR287fvVBHHkSwPNfs8v2MphPh25SZcVPXPJVv8Al5oXlEXWpXKNqGoQlpHNWmVxvxRU+KLi/wDqcv58P5SUvUT/AFf4Yx/4r+knwzzP+mkkXnL8xL3809Gt9B0jS5ri5tyC04FaFRxBH8nL9v4sllnjhuT6v6I/6S4mM5RCC0v8sPPvnWd5bxjZ3VjGsA9SqFk6cQ69fh/ysr/M73jF/wA7h9H+6YnMT9PT/NexeVv+cZdAt9PC64jXV9JHSV+ZChj9ox8eP/DcshwSnuZSj/Rjw/7L6uNiQTztO9P/ACC0DT9DuvLkHqNBdtzLuwLK4+w6cQo+HB4UiNzxTj9Mq4Y/77/OZUjPyw8ka95X9aDWNSOoWwVUt1IIKKv83I/a4/DmRHLOf1iEf6n8X+xjJPETzr8fB6DliuxVhf5kfljYeerdIbx5IpYamKSM0Kk+I/ayqXFzgeA/7GS79Nkp/KnWtSs5J/KXmFw99Y0MMh/3bCdkk92X7LZMZOMX/EPTL+t/x5kTxb/6ZI/zI8j6p5z812Vjcib/AA9CnqSgUCFxvxbf4mb/AClyqeUn0Dr/AEZf7rh4f9kx4un6Jf7t63pumW2mwra2cawwoKKiAAD6Bk4YxDkgBiX5xeTx5p8u3NmoBnRfVjPgyfFkMgr1dyXm/wDh68/NnyDaW0Mipe2j8Ty6MY/gox/Z+HDkJ5x3/ospeXV4FpVhrWk6z9WtoBePpjtL6e7RAp9tzxK/Dt/Nicor13v/AA/xf7HjQZ9/+l/6RfY35Q+eLjzpoUerXcSwzMzKypXj8JpVeX/NTZbYP0rKujHLTy9Lr3nm/wBWkIH6OhWCCvRXYcvUp365RL1Gu5Xi9v5s1vyB56kfWGU83VZ+AorI5+GTiP2ssxTB2rgv+H+kzjK9jtb69t7hLiNZozVHAZT7HcZY18lXFXYq7FXYq7FXYq7FXYqwX86PKtt5j8sXtvcirQxNNG3dWQF6j/Y7ZVMde5aedf8AOIN/fz6JdQT/ABWcMoERJqQSKugXsv7WW8d7dzIyt7/ixdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirEvzW0ldU8s39uRWkLOPmnx1/wCFyuY2UIX8mdUOpeVLCZjVlj4E+6nicsSWb4odirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVUriBJ42hkFUcFSPEEUORItXlv5c+S5Py71i60xXaTS9RcyW3+Q4qzxP78fsN+3lWORHplW30/0o/wDFf0VB6H/Ner5ersVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgVrIUl2AmlarTACrq5G1awFWx0xCtVxulbyVq6uRJVsZbEq2MlaHYVdirsKuxV2Kv/9P1TgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXkt1Ty1+Y0TQrxg1u2IkPYyRkkcf8AK4/E+Vw2JH+cyD0rXNIj1iym06dmWOdCjFDRgD/K2Sldbbf0mLCPy5/I3y95FY3FpF9YvCSfXmALqP5Y6Din+x+LMYYiTczx19P8EP8AScUuKX9KX+awEe/f8fzXo+ZbN2KpP5i81ab5ct2vNUnSCJQSSxAJ/wBUfaJycYGTOMDLk8km87+aPzOlNp5PRtM0cGj38o+Jh4QJ/wA0/F/lplUs8YemH77J/O/yUfx+IqZiO0fWf538MWDXH5OaVJ55sfLayTXkkMZub+aZuRc1DKlPsqu6f5fxfbyqRnIeqVmf+ljH+h/F/s/82KDZG5u31JZ2cNnEtvbIscSABVUAAAeAGWQgIChswCIyaVK4t0uI2glHKNwVYHuCKEZGQsUrzT8sLiTy5qV55Juz8NuTPZk/tQufsj/jE3w4McuIV/FD0y/3smd2HqGTYOxV2KuxV2KpJ5y0Rdd0a80xhy9eF1A2+1T4Ov8Al8chPcK83/5xr80RXWg/oCd6ajp0jxSRsfi4g/AQD+zx+H/JywC48Q3DMixb2PAwS/UddsdMUtfTxwgCp5sBt4775OMDLkzjAnk+XPzW/MnTNR8/aZf6fIstrYFFeVAWBqeT0CqzNxVuOQMOE7/53EfQtVzfV8Myyosi/ZYAj5HFgqYq8O/NC5Xyb540rzRtHa3am2uHPTr1J7fCUyuA9Vd7KHd3vOtH/OKHylrevJ5fja8S9k9S19NSVD1PJin2mXLI8OP6yNv9l/nsjQ2PRda2n5tefIyTJLaWslftUiWh/l/3ZxyB11/RG/6o/wB/P0sPH/mj7P8Ai/4mDS/lpJ5b1CYawyyy6dcwGcGpVopT/efEOTLt8f8Ascq4jLntfp4f5sv68EgX8Xvf5GyL5e1/VvK7FVjYrcwCgHJTtVPFfTMbZPELH9X0rW3ue5Zaxed/n/pwvvJuoAirRosi/NWG/wDwOVS/Sl5R+X+s3P5l+YdJAWlhodsjyk7gykcaf63L/iGGZ6MpH7X03ljBLvMEpi066kUVKwyED5KxyJNJDy//AJxhvLi78tO1xN6irPIqJtWMA/YP7X+V8WDn3f8AFf1kyKC/5yC0lfL623nnSz6Go2kyIxXb1EavwP4/y/7LBCPBKx1+qKIbH/dLPzA1A6T5w8ueZDQJeobaQf61G6/60iYjn72UUo/5y11KC3XSV2M8c5l37KCu5/yarhMd0AMy1Tzpo3nmGXyXp/qXctxbH1ZYgDFCQKp60hP+/Avwxq+OaPANyOM/TH6pen/c/wCcshXx/Hq/moT/AJxt81tf6NJoN2aXmlSGFga141PBqN8Q/aXJg8QsJO4tmf5s60NF8r6jenqIGUfN/wB2P+J4GISP8gNH+qeSrKGbcXCNIQfCQlqfdkI7hSwH8kbaTyr501Ty5ISEk5uo36KQyP8A7JX/AOA44MZ2TWzItMkPkz8xLizlIjsNdjEsRpt6y/aUH7NW+P8A4X+bDiPOPd6o/wBVRuKezZYxYf8Amz5ZfzJ5ZvtMgFZniLRj/KU8wB7tTjlWTlfd6kFI/wDnHzzIda8q28cm09kTbSD3Tp/wvHLebOTGv+cpfL/PSbfzFbpynsZQrH/it9iD/k8vh/2eUnaV9/pkxHNin/OH9/Gz6npjKhKssqmgqQ1VIH7RVaYJYYz+qIP9YcXD/p0kB7t5k/LnQPMkfp6rZQymlA/Hi4/1ZE4yL/sWysaaEfp/d/8AC/R/pox9Ev8AOi1iAHLb+r6f9y8S/LPyzHonmjX/AMvJP94LqEyRhjUgEDif8puMif8AA5aLlGj0bByTj/nH3zBc+W766/LvWwUubZmktiejITVgPv5J/k5ZjkJxvrH0yTzHub/Pjyzc+W9QtvzD0FSJ7VwLtV/bQmnIj/V+F/8AY5XE+HL+jP8A3bGJo+9mnmaKw/NHyZJNZ0kE8Jlh7lZEFePs/LlHks0K37vVH+qykKXflLrA83+T4Y70kyGN7Weh+Kq1ibfszLk5eod1rJJfyS1PQNBsLry/FKttc2NzKsqTOAx+IhZKtwqrD/gcOHDKQseu/wCbH6f9KngJ3G/+yS/82/zxsorWTy/5Zf6/qt3WEel8Spy+FviGxbj/AC/62TnEYxc9v6K1w82Z/k75K/wV5dg0+4I+stWWY9Pjfdh/sfs5j4gTv3sBu15s/Onyx5YRzeXiPMn+6YiHcn/VU7f7LjmWMJ61D+s2jGevp/rf8T9Tze9/5y3tbmQW2g6Vc3U56ByFJ+SR+qxyEpY8YuUuX+bH/Ty/4lHojzJ/2MP9lP8A4lCXv/OSvmmztpJ7ny9JAqgnm6yhVHYvyRf+JLlcdRglsDf+fGX+9SJ4/wCl/po/8SkTef8A8xPN2hz+Zba6t7DTYw3HiQjEr1VOXxFv9Zsmc9Gowv8AnS+r/dI4j0j/AJzDdOvtB1Gyi1nzXe3erajJyP1OMnYgkfG/7K7cvh/YyE+Of1SGPH/Dw/VL/M+j/PWVn6jX9X60N5Y8+6n5dv5dW8o26WGm3ki25WX94iPtQk/aXry/4L7eRiIxNf3383xOGM/9N/x9ESAaHr/m8X/Ff8fTPzVqkmq3bQeYtSuNcvAKR22n19EMfsgyU4/6/oxM/wDl5KeaYHqI0sf4o/XL/O9XDD/Pnl/qLORA9R8P+jHh/wCkf93/AFWH3X5Y6nZ6xZWGuW76ZBqMiqjN8QAYhfFm5LX7LfH/AD5RDKJ7Rux/qkZQ/wA71Rhxf5jWJcXL/ZfiL1/zz+Ulp5F1LTYdFZ0h1COW0lZzUM7KeHM9uTlPhyEOIWCeOxxf9IJiD72YfktE/mLyHeeXpdp7Vprelf2h8cfy+KmXS3H+yZE2yDXNAj/MLyIiSgfW0g5Ie6zRCjj/AIJOOCY/iH9b/NRJNfyO82P5l8s289wa3MFYJfdk+Gv+yXi2Xk3umW+75O/Pfy2+lecr1ba1aGEkTClSCp3aUN+yGb/gPsZRGQG19eH1fV+P5jAUH2R+WGrjV/Len3itz526VPuBxcf7Fvhy6mUgynFDsVdiryqzH+IfzDnkf4rfRrdUXwEkm5P+tlUjZA/zmR5PVctYsY/MjysvmjQrrSiBzkQmP/XX4k/H4cpyDb3epUp/JXzCdZ8t26ygi4tK28oPUNGeP/EeOWg3uylu3+bn5mJ5D01blYjPd3DGOGMd2p1Psv8AL+1kgQNzssQOvR5PpHnrzx5K0mS/u9Ej9KVzNLcSygMxc8vjTkrcuPwovHllWPPikeWQyl/FGMuD/TeHP0/5yxnE9J/j/NW6L/zkX5v80q8Og6Qkkg25ryKqfdmPp1y2efFDnxf1b4v9xHiSZwj/ADj+P6MXtP5av5hk0z1fNfEXzuTxQCir2Hw7ZWMnHvXAxJvyXnzBLa+Z/wBETMDDc2wmiHgyHhIo/wBb7WEG9k1syK8jaWGSOMgOykAnxIoDjLkxeL+VPMGu/l3qdr5Z8zCFtNvGYW9xFUUYktwctx/aP7S/y4MUxL0kcEx5/WzB4tmW+U5E1+bXivxQyTvApG4PFAjU/wBlkCOaCwL/AJxi5SnVrCdaxwOId+4+IEHDz28lJQiebrv8mdSvtKntpLrTJ2M9sUFAC25Un7Kj+fHFOP0zNEf7JMZDkdqSb8sdBuvzd8yy+b9eUrZWrARxivHkPsRivVV/bwZZcZ4Y7D+L8f0mMpXs+olUKKDYDLQELsKvBPyqW/tPzE1uzvJjIChkIFeO5HA8f2fhOQGQnY/6VmSae531pHewPbS1KSKVangdjhkLDBbpmmW+mQLa2caxQoKKqigGRhAQFBAeBecPPlp5H/MW71C8jkl9SzjSNIxUsxC0HtjEAnc1TYAOuyZ2n5oeb7TWNMGuW0FvY6vIY47cAmVB2d3/AJt1+H/hFyQzQmKEZcH8OSX8X+b9P+xUEHpX9L+L/iHrHnaD1tDv416m3l/4iTgnyYh49oHl4a9+Uy28f99DG8yHweNmf/iOVS7+4pLMfKv5waJB5Zs9T1a7SOQxBWUmrl1+BwEHxN8WZkcZlvyH86XpizMCd2LeavOnlTzlG0l5od9e2yKS10luV4AftLJzik+H7WYM4Yb2mIZD/qfF/s48MoS/0k2rhiTz/wBLxf7P/pGaZ/8AONQuRo1yv706YLl/qRmBDen8m/Z5VzIjPi2vj4PTxJMr8/6T2KmGkMB/Obyi/mLQpGtKi+syJ4COvJNyo/1lymfp9X83/crdJf8Ak/8AnDa+eEewaOSK/tI19YPSjH7LstP8rxzIkARYN3/CzlTKfL35eaF5fuZb/TLRIbmcku4qSamvVi3H/Y5ixwgG9z/N4v4f6rXw0wi3t4vM/wCYV5Dfj1YNIt4/RjYVXlKPjc/s8v8AJbJZIifpP+d/SZHlTD/zD/IjTvLKX/muzvZbSGONn9GOgqW2EfP+Rnb7OCAyQ2iRw+6XFwfzfqRAyB2P/Ffe9X/JuwmsfKenRXFPUMCt9DfGK+9Gy2J2SSitD/LbSdF1a6162RjfXZJd3PKlTVglfshsrGM3ZN/zf6KHjX53flJPNq76ho9i90+qARs6VpBJUc5XVR9iRP2m+z8WVykIGje/qxx/hlP+Z/xKBQ53/RfQGhaWmlWEFhH9iCNUH+xFMyYiglMMkrz/APOrRhfaG99GVS709xcwkkD4k+IpU/zr+z+18OVyBviG/D/uP4mUdigLP8//ACxHpVvqF/drHLNGGaJfiZTT4wQv+VmUMJO+0R/DxHhZ+GfJimo/85Dalr031DyJpct3Ix4iaVSEH+VQcaL/AMZGTKZ5sWL6jxy/mx/Epy/zY/5zAmEf6f4/0zz/AFj8uPOHmLzOul+ZbqOzl1aEvIYRVWWLYIUQopkX7X22/nzG8Yzvhjwf0Zf7v/Kyj/sV4yeQEPx/Wn/uoo78rPyb0zRPNdz5e83QfWJgvq2Mj1EUqKfjISvFm6Nwblx+LAB4o3JjwfVjj/uuP6uH/SsOHjHu/h/339V9Q2Gl2tgnp2kSRJQCiKAKDp0y2GKMPpFKBSLyxLz780/zat/IC2/rW0ty9ySFCUAFOxY/tfyrkomP8RplGv4tneQvzp0LzjJ9Vt3a2vQB+4nARz/xj34v/sfiyRgCLiYzj/R/h/rfjh/pMuDqNw9ByDWoXN3Fap6k7rGlQKsQBU9BU4QCeSatCR+Y9Nkf00uoWcdhIpP68l4cu4/JPCUi/M3zy/krSTrCWzXaI6q6oQOKn/dhP8vLiuVgxB9Vj+qP4lFddkz0G6sPMFvbeYII1Lywgo9AWCvRmTl8/tDImAu/x/xKCKLAPzV89eYrLWrLyv5YWKK6vULiaahGxb4ADyXon8jNkvFEenif0fxwf7pkKA5W15R/M3WrLXI/KXnOBEvZlLQXEWySUFacf+C+z+1+xhjkjkGwOOUfqjL8S/3S7SHdT1pkDDidwcBFsHjn5PhvLvmXWvKZFIlkF1D/AKr0r/xJcrxnb+r6WXRX/Oa/jhjXyxoUSLq2sHizIoUrHX95JI6/F8X8zZHw44/UB6v4f6SxFbj+qzrynp2n+WNKttJgljVIECVLAVP7R69WbLseGQHI/wA7kyGKXdL5SRF5r2jaTIWuLm3glloTydVLU2HerZOOA8wCgYj3f7189f8AORUmh+Y723GiTi61iakBjh+IUryDMV/a/ZyrJjOP1H0/0f4uNJiY830Z5W019N0u1spTykhiRGPuAAcYcmBTXJodirsVdirsVdirsVdiqUeb0D6NfKehtph/wjZGXJXm3/OLejrY+UEuR1u5pZP+BYwj/k3gikvYMmh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqN1brcxPA+6yKVPyIocjIWFeV/844yFNGu7Ine2vZUp4dG6dviOCB2SXrWTQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVpUHr26YCq7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgVoZAJdkSKVbkVd3yu0tE4kq2DXCCrsJQ2cNq0MAVsZYFbyQVwxiVbyV2h2EBXYVdir/9T1TgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXl/wCf+iPcaGuuWlReaRKtzER1oCBIv/A/F/scqkeEiQ/qy/qySDRZ15V16HX9MttVtjWO5jVx7VHxA/6rfDlxFKQm2BCA1jWbTR7Z73UJVgt4xVnc0AyQBPJIjbxjV/z31PzO76d5Ds2kqeP12b4Y1/yhy+H/AILBOcMe3qyZP5sBxfj/AGLPYbbzl/R+lFeVfyStL+5XUvOV9+l9Rb4hF6lY17/CgPxccpnDLkHrvHD+bH0/6aTCYmfqsf0fpey2trFaxrBAgjjQAKqgAADsAMlGIiKGzF5h508ga1a+Yl87eVWie7EPpT201QJVFPsP+y3FV+1x+Jft5VxGBsjjh/R+uH9WP8X+6/oshKvMf7L/ADU20T84NNuJhp+tI+k6lTeG5+Fa/wDFc/8Aduv+V8OZEOHJ9B46/h+nLH+tCX/STIREvpN/0fpn/pGdQTJMgkiYOjCoIIIPyIwkVzYEUrYFeZ/nXo1zHaw+a9LPG/0Ymb/Xh/3fE3+Tx+LKieE8X+bL+qkbFmXlHzLbeZ9Kt9Zs/wC6uUDAHqD0dD/lI3wtlxCZCinWBi7FXYq7FXYqxW3/AC20K11l/MsFsE1OSvKQMwBJ+Fj6dfTq37Tcf8rKI4zE2Cf6v8H/ABX+bxcK0yrL1eP/AJj/APOPFj5yvp9We7mjuJUIVK1jDAURv5lWv2lXKJnJ0Pp/m/71ST3/AOawv/nHLRtM0zUrzyzrtjEmu2Tl0kcVLJ4py+H4ftcl/ZdciMUco4jZ/nRl9H+k/wB1xLwiQvufSmZKuxV5Z/zkh5U/T/lG5dB+9sqXC03JC7SD/kWzN/scpntR/HqV5YbGw8qaR5Z8/wCjRqsC8IL0DevOqyM3+Usiyf7P08jHGIyo7xn/ADvV6v8ApH/cJERE+99RQyrKiyIaqwBB9jvl/JXgf53eXTJ5i9NKhNasJYfYzQUmjHsWVI4/9nlEtr+Ev9J9X+wSGMr5nFnH5W86wsDHEBYXlBShT4H5/wCU0TtIn/GJcsjtL+uPx/vGQ5+99SqQRUdMsa2K/mpeWtp5Y1OW+NIfq0i1/wApgUj+n1CmAxtMRbyn/nEYW1toN9M9EdrwqXY0qOCMi7/6+RjGz3pp7+rBhUbjJsUq81eYLXy9plzqt+aW9vGWbxPZUH+VI3wL/lNiI3skC3g//OOPmKbQdVu/KesRtbS3dLu2V9q8gCyDxLJxZf8AjHJ+1kMchMenp+Px/RZDcbdE+/5yMvm1ufSvJFl8Vxf3KySAdVRfh5t4LRpG/wBhhnsL/wBKjkGa/md+WkXm3SIrKGT0LuzZZLeT+VlHQ/5LZVMEbx3r+H+cw9z5Y1vSvNH5g319NeSLdjSYXDyr9jjFViIyPtNJTl/l/Fhy59xtX9GP8H9ObZKfw/ovpL/nHXT9Nt/KFnc6dGqSTKTOw+00iko/M9eo+FcMYAG+/wDHCwMaY9548ga75X8xt528lxrOZ1IurU7cu7Mo+Hly+1/Or/z8uGVxyeCaIlLEf5v8P4/h+r+kolw+bGtW1PzL+c11a6HJYy6XpcDh7x3qKkE7DmqcvhXiq/F8X28nLUQltj9d/wCdwf1+H8SSZjlHq+jNM06HTbaOytVCwwoERR0AUUAycY0KQ8l81WJ0X8y9L1avC31GJ4XPYyKOCD/ZfuFyER6q/wA5lFOfz70CW+0IavYj/TdJlW8jPU0Q1kHy4/vP9hjM8JEv82X9SSAaZh5Y802ev6TBrVtIv1aZA3ImlCNnV6/tRuGVsv4d6G/9X1JMTdKWp+ftB0tC15f26ca1HqKTt/kKWbLPBlyr/Ten/dMhjl7v63p/3T5r/Lb85f8AC+p6vp2k2suowXNw01ssY8SV5Efa4svDKAYwHrNV/NQaHPp/NZF5j8s/mH+Z1rKmpoumaeqF1g6F2AJRSPtM3L+bimVS1XEPRE/0pS/3vH/vWJyX9Ip5t/zj5rsnl3zla27AL9aDWkymoINfgNP5uaJ/w2WwPd1ZD7325kmDwL84ePk/zzovnAVW3uCbe5amwA+Cp/55vy/55ZXE1Kv534/4lMefvVP+cg9LudB1DTvzE01Q5sGVJwOrIx2JI/ZYN6fL/KXIg8Mv6M/93/0ioNF7DbzWPmrSVlos1lfQg06gq46f5/ZbLZwvZZRrZ4b+TmsS/l/5qvfy91OqW08rS2Tt033QV+zSaP7H/FvJPttkcR4o0ecPx/x7+qkHiHu/H/Hk78mXFr+XPm7VtDv5lg0+9Rb62dyFRRyZZY/i+FTybiv83pf5S44QZDh58H+4/nf8V/nJjchXcw38y/NP5aa1fyXMcFxeagwozWlUDkd2P7X+t6eRnp/D38Twb+qMeGfq/wA/0/6WbGUBH+Lg/q+r/dej/SMC0Lznc+WNVSHQdLi0+6uVCxNd8mejHiGrL9nk38q4IeGfV6tTX9L+P+rHggsTDpxT/wA7/e/S9ftvyA8x67yu/MutzpPLu0cJJUA9U+0q/wDA4/mM0uXDjj/s/wDYL4kjy9CRed/+ceIvJFpH5l8v8r+axYSTwXCh1dBu7hKfs/aZfi+H4v2cq9QP7z95jP1cNwnH/P4v9l/puKLWNvq9X87+FF+er7TG0jS/zV8tLFa3Nu6CaFSFDhjwmtyF485Y2qv2ebRfH+ymWxxeHL0j90fqj/N/p/0f6X9Phbox4Dt9P8X9SX4/0yY6t+dOo+f1l0TyTpbXUEyNHLcXIpGoYcTsDxX/AGTM3+RksssUPSf3kv5sfxxf7iPEiUoR2+v+jH8f8S8nH5fDyLrFnpHn6Zv0RdK0oWBzwV68TzH8uy8/h/lwQnLKOHfD/WWNyFfQmHknzvoXkrzFfpo9m2qWd3QWfwDkG7xqz/s8Txdl/wAnB4UB/eEHg/ij6/T/AMUjhiPq3r+KPrSvQfy11XzDrt55ev8AlpLXMb30Vqa8WO/px0/ya8eX204NkBkuPo3qX8X18P8ARkoNjbp/Oe8/84x2+nt5ZWS3tkgvoZXguWA+JnQ9XZvi/u2T4fsq/wCzkhjjfF9R/nS9XD/V/m/5qOEcx1ZL+dHkb/F3l6e3hFb63/f257h0+LiD/wAWL8P+tx/lwzFer+Z/uf4v+KQe/uSzzdpx8++REurMVvPQS5g/mWaMcio78+QeP/Xxyber+b6v8z/pH1MpGjbz/wDK291PQ/NsX1OF5dG8wRC4Y8TSOQqWk3+yvpyo8br/AC8cMckR6T/m/wC9Xi6f6V7X5agXS5tQsXokC3BmjrQDjMBK/wBHr+uuDGOcR0/H+5V5B5U81aD+VOo6nFd6pDc2d5MZYbe3UyPG1TzDhB6afCyL9r9jL8eKY2nWMD6ZSl9X+Z9X+w/zmYgaqVQ/03+54Uh/Mr/nIiDzJaXGl6Fpks8M0DJJPIlHTl9niiepty/mb4v8nKsscMTcjE5P4ZfT/m+uPFL/AGDCRhHn9X8MrjD/AHceKX+xVP8AnFD8yLyQjyfJbtJCnqSiau0YoDwceDPy/wBm2TM4/wCcfpTxAjz/AN6+n8LF2KuxV5N+XlLHzt5jsrg0mmaGdFJ6oQTyH+rzX/VyqO/wuLPo9Zy1g7FWK6Z5NstB1G61q2leGK4UtNFX91yG7TBf2G/nyqEDHa/R/DGvVH/OQAeX+xfOf5o/mDcXXmjT9ddBcWUMpNrag/E6qeIlYfFT1n+JPh+wuSkQdjtjH1S/nfz/APSN3Ln9P+6Z5pX5eeYPzLuxrHnota6au8GnoSu3/Fv7S/7L43/yUyo5jl2h6Mf87+KX9X/iuHh/mtZmTsNo/wC6/H/SL2Py7pGl6Pb/AFHR444oY9isdNj/AJdN6/62WRweGOR3/il9Uv8AOkjg4fJN8sV5X5tvDF+YmiRLuWtp6jwB5UP4ZUefyZDk9Uy1i8o/5yS0qS58rtf2w/0iwmjnU9wAeLU/4JW/2OUy2IP+am6Vv+cc7G5h8rreX1fWvZpJzXY0Y0B/2XHljE8Vn/NUytn2j+XLDRzM2nwpCbhzJIVFOTH9o4wxCHK/mgPNfz316S4itvKOlgPqWqMEqKExx1+Nz/Ly/wCaslkAA4iOKvpZAUL/ANK9C8n+V7byxpkGlWagRwoASP2mp8Tn3ZsGOHCPP+JiAnRr9OWK8m8rfmLrGl+ZH8p+cAhkuGL2VwihVdamkZA77fD+1y+B8YTExy4JD6os9pfBhGo+f/8ACP5i6tcrZT3frQxxhYlNagK3Lp9nrlcZQj9REd0XHqaZ7+W35tap5r1WXTNQ0qWyjSMyCRq06jip5d2Dfs5PxccvoJKOKJ5W9UySHz3q9lBrn5xQwSRh0s7cO3+sqc0J/wBVnTKJxv5ppkPmS3bzF+ZmnWaCsGkWzTy+zPXh/wAy8lI9O8/7lPIMn/OTz1D5O0Ca7ljMrz1gRR0q4Iq5/ZVRlu3VYgdXjv5R+V/N3mry3HZwXi6dorM9CgrK4LH1B/kr+zlXjSHphEH/AGyX0/5imZHIf50kz/KH8r9J0PzTqWhatALq5tQk9rJKKgxn4SwQ/Dy5N/xLKuDxR6r29MoxPoYVY36PfNR0i11G2NldRh7dqBkNQpA/ZYDqv+T9lst4ABQ9H9X0/wC5/wB6lE29vHbxrDCoREAAVRQADpQDJRiIighWyaXYq8h03T4vIfnloY1VNP8AMCFkNAONxGeTR1/lkVvgX+fjlGKNEx7vVGX9H+Z/mJD17L0PNPNf5caoNWl8z+U71bPUZkRJopYw8UoTpzNOaNx/aX/jbKRKUDYEckT/AAyuMv8ANn/vfR/WUSI7pf0Zf8V+P6zEPO2g/mN5ssx5c1KCzW1mdPVuIWNOKsG6P8Q+zy+FcEtRxChCYl748H+6/wB0pyX/AA18fT/unuOn2cdjbx2kIpHCioB7KOIy2IoKickrsVYB58/ObQfJ1YLqU3F7sBbw/E9T9n1P2Yg3+V8TfsI+TEKFy9H9b6pf1Yf770w/ps+DqfT+Px9XDFg0v5see/MsdfLeiNbRtsJZ+o/y19X0lK/88myn81hH08Wb+r9Mv9J6Yy/5KsfEhW3FP/cy/q/w/wCzk63/ACU1vzH/AKZ5+1V2XY+hE1EUdaFzxUf7FcgcuXLtH918PX/pY/7L6l45S2Hp/qsN8unyR+X+p6rpevxxXaQyJJaSU9VmRxX0tvh5RUXn/l8sA03ifXtX1b8H+f6U+EJfV0/H8LJrb/nJW3ic2Xl3Qp5IlWqqoCV9+CK1F/yslHwMXM1/SiI/7OU5Rkj93Ec6/wBLw/7pjd/fecvNfmPRvMmt2zadpkGoxQQx/ZZfUZa8w371/UUem8nHg37CJkRqYyP7vlX959XH/nfR/mx+lPHfLl/O/H/SD6C88eUbHzJZGK9cwNERJHcIQrxMu/qJIfs7fa/Z45IwJIMNsv8ADL6v83h/ijL+agXeyp5Y8zadqhk06wuxezWIjSZwQalh8LF1+Al+PL4f2suMSPqri/ij/wAd/hZEUyLAwSvW306KJbjVfSEcLeorS0oGUH4l5ftqv8uQOEZOl/j/AHP+xZCBlsN3in5nee/yx1uIPfzerfBKxTWiN6yH7SfGvBeSseXpyN8PxfZwjR8B4oyjhP8ARl6Z/wBaMOL/AE3ol/TZDFW9xh/nf8Rxf7L/ADUP5d/5yYTTrOFNS06+ewRQgv5BvLxqvqOvBI+bcfsrK3+yyUcmOR4TKPi/xRiI8P8ApeLihH/M/wA1iJRJq/8AY/73i9LDPzE87a75+isLy5/0PQL2+WGCJdnYKQrzO/fj+x/lcuGROUWYw6fxfzpJ4q2H+m/ievz/APONXlj6o8FusqXJUhZvUJYN1D/8FlIjkG/HPi/2H+kaqI3soP8AJ/ULzzJpWreS/MbGW4092tXkbcsjh0Q+7RlG+L/VyycvFj3SI/2TYTa//nHO/ubK21Hyjfms+j3BRf8AjG5YrT/J5Kzcv8vJQlxC1JsMx/MnyGvmmzSS2b0dUtD6tpONirjcA/5D04vlUwQeKP1D/ZR/m/8AEsbrcPGovM1/52866Hp1/bm01PSWdrutKHjRqp4rIo/4fJGQl6o9f9j/ANIs7B5f9IvpjLWDyTzSf0H+YulalXjDqVvJav7uvxR1+9Mpj9RHfUmQTfz/APkno3na7TUL5poblVCF4WoWUdFPIMP+BwGMwbhLg+HH/pfVHhYEnoaYvqP/ADip5bmtmjs5bmG4I+GUycqHxZKKp/4XARlG/GT/AEZD0/7H1Mdx1P8AncP/ABMV+hf84teXrSr6nLPfyEbGRyoHyVP+NuWAxyT+qX+l/wCP8SdzzP8ApWd+WPyr8u+WZDcaXZpHN/ORVh8i3TGOAA2eKf8AWPEgR/EmXZks3Yq7FXYq7FXYq7FXYq7FUn84tx0W/J7Ws3/EGyJSGFf845sn+CrGNOsfrA/MyyOP+FbBH/pJS9NyaHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXkn5OcbPzD5k01dlW7Eqr/rl2P/CmPKodzI8nreWsXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYFcMiArWQvdLQyIVblMkhrKqS2MtgUFvLEOJ2yJNJDhvgibVcMvCHDGKuyQCuxpWxkwh2FXYq//V9U4FdhV2KuxV2KuxV2KuxV2KuxV2KuJpucVYl5u88eXNNt5bTWryGNJUZHQuORVhwYcR8WT8CUh3D+dL0/7psGM+7+t6Xz/+U/55jylBP5ZgtbjVAJ3Nh6QoWjYk0Ib4lX/dnwq322yAnARuZrg9MpR9f/Ex/wBktx/iPL+b6/8AiXo7eZfzQ19GfTtNtNKhKlkNy/OX/JHBTxDH/iyJcr/NRH0Qnk/pS9MP9J+6n/pZyY+IOkTL+seH/Y+mX+6ixKw/IXzb53AuvP2pyogY8bdCGIHj8P7lP9VVbIS1OTJtEDHH+kOHi/zIcP8AppS4v6DGWSR5en8fzYvSND/IHyzpMKwrFLKAN+cjEH3Kg0wDHICjKf8Am+j/AHLHfvl8+Fl+keTtJ0gq9japE61owG4r1ox+LJiFG7kf6xlL9PCmvxZTzLUuxVK9d8uafr0BtNTgSeFuzqD93hlE8Ql7/wCdH0zj/nIpgcn5MPpdW8r6ndacKbR8zJGP9hJyb/hslGeWHIjIP5uUcTITkPMfzZepgHnP8z/PfkrWbfy8Gt9TuLlA0QWIhmBJQA0P2uSHLY54gEzjVfzZMhMc5D/SobTNU89/mqbjRLq5h0qGIhLqJVIl4N8J2b4irf5PD+TnkZajiH7qMTGX8UpcXB+P6spJM9vSBv8AxfV+P9K978meU7XylpNvotjUw26kAnqxJLuzf5TM3LIwiQN9/wCc1p7liuxV2KuxV2KuxV2KuxV4h+eulTeWdUsPzG0xKyWTiK6UftRNVKn/AGLtHy/4x/y5VH0S/oz+r+t+P9ymJo+97Do2rW+r2cOoWbc4J0WRGHcMKjLiKUikdgQhr+xivreS0uByimRkYeKsOJH/AAOQlGxSvnz8ttEFzY+Yfyt1CrG1aR7Yt14sf3cg/l4yejJ/s8rPqh/Sh/u4fj/Sp5j3PQfyB8ySan5cjsL0/wCn6axtZlP2hwJEfL/nn8P+wy++IcQ6plvv3rPz801m0WLXIATc6TcR3K03+EMFkB/yePxN/qZVLYg/5sv85AeWaVo0d7ovmPyfB8foOup2X/GNwJaJ+z9j93/LzlbIEen+of8Ajv8AufV9STt8HuH5R+Yh5g8s2N4STKsSxSV684x6blvd+Pqf7PMi7WXNNPOPlGy826bJo+phmtpSpbiSD8JDruP8pcrnEkbGv6TB8mW/5Tarquv6p5R027+rmxczRRliFddlR/h/bWNoV+L/ACshHNOEfTZ9Xq4ZcEv6zZxyiNv+JTGDyZ+bejEWlo90VjUcSsoZQAdgCxZT/q/y5Z/KEuoP/Krj/wB5OX+cg6kx8/8AM4/97NPLrzd5m87XWn/lz5gs/Ru1njlvZOQPqRRkv8SJ8KfD8X2vjdV4ccE80ZxuIMTP08MhKH+l4/V/xPqUzBFjiF/5v+6ew/mf+UGn+eRFcM7Wuo24pFcR/aAqTwb+ZeXxL+0nxcPtNkOEwPFA8Bj/AKX/AKS/EuJgbG42QX5afknbeUr+TWry6k1DUnXgssv7C/tcfdh8PL+X/Ww+uZ4sh4q+nh/3yblI3LcoX87vON8oi8n+XQX1bUhQlesUVaPIf5eX2eX7C8ny2UxjHF/pf6zMHh3/ANKyXyl5V0jyJoS6QzxpEEJneQgc2YUlkfl2b/iOV48Jlf8AFKf1f8T/AJrGMCfO3kn5N/mt5f8AJen3+h6hcsy215M1uURn5xE/CyMgaMKzKzfE6/by7HCx6iImPplxS/3v1f6WDPhvy+f+94mUyf8AOT2iSPwsbW7n26hF/UjSN/wXHDI44fVIf5o/6qyxI9EfqlX+l/30of7lTj/5yOV1/c6PdGVl5KtDuSaD/df2f8rKvEwDlL/Yxj/08kx4od9/6X/ilMfmz54ncTW3l9jbHajEhvn/AJrkfzWH+l+P81InCXLi/rMN/NDzF511qzg1S50n6lHpcy3SyGtQV6fa4/Dy+3/qLkfHgSKEv638P+54V8SI6S/3v+5V4vzD/NPzOptrTTIPq91DyV+HwGNhQ/vpZPRZmD8eP/CZKerxfSIkn+bLjlP+twxjD0f0v9knxANqv+txf73hYX5f/LfzAmsQeQPMV9Jp9ncKZ1jRuUbtueCcSsfNqH+b4v8AWxjnnKPDH0cP876uD/N9Uof0eOCBkJG2xH87h/3kv98930v/AJxu8qWdDPFJdELT965Irtvx+zXbKTilL6pSP9Wof7n1NXCTzJ/3P+5Yr5h0G0/Lrz7pOr2ECwaXex/U34bKrHkKt/wSN/sGyeOAieH/ADo8Xq/H/HmyA6PoDMhD4X/5yF8szaN5xvHiX00nK3UZXbZvtkf89Q+U4pcPLbgP/H0xNcnp3kD8rPP8emQavpHmED6wgcRuzypx7fFKGXl/k+l8H2MmdVlJ3jGY/pSjKf8AuZf9NWRzT68J/rHi/wB7L/doL847P8w59Aez8x2tveW0bLL9Yth8SFTTkyAL8LKfj4rlctRGR3icNfT/ADZf7Kf+8YmY7q/pfj/jr1b8tZoPzA8gQWd63qGW3NtMT1DJ8AJ/yuISTJ5I8Q8/q/zllv8AFhn5Eebrnytqs/5a68aSW7MbRzsGBPP0x/ksvKRP9kuTxz443/FH6vx/R/3KR6h7vx+P6Kf/APORP5bT69Zx+ZdGqur6X8aFerIp9Sg/y42/eJ/sk/aygyOOXH0/i/3sv+L/AKLC+Hd866pomo+ZNH/x5ql2dQMdwIriGp5Roakcz9lEZvhRY/gTl/rcbMmSRlvtGXpjKP8AueDh4I/53Fx/xNkpE8/p/h4f+I4eGD6L/wCcaotFvvK8NxY2sUd3GxinYAFmYHaR2b4vjT4v+C45E6eN8XO/4per/Nj/AEWBgOfemv57/l3H5p0GSa3VV1CyHrQPsD8HxNFy/lcf8NxyJhwnijzH83+b/wAdQB3Mb8u/85R6CNIt21MynUwnGWKNCxLrsaMPh/efazM4BV3GA/3P+a38I52Almvfn5r+q2kj6Lpn1K1YU+t3xCxqD8PR+MbN/k83/wBRsp8XEfSLzSr1Rj9P+dw/w/1uD+swBj/D6/8Acf539H/SvB/Lt35f0rVnj1sSaxZhS0SWxKIZWIr8DiJmX9n4V+P4ftJgkCY8MpHDEer0yjl/33B/nf7JelSPAB/N9f8Au+H/AGH+mZ/+Vuv+c7+E+SfLirpkILzrNMpWUQs3RCw+LizfaVef2vjyEc8ALgBmlxcPF6eD/P8AqhH/AGf9GDCOQEXGp/0vx/x9lHn7/nHG6XQ7rV7y/n1PWIYw68vs0UhpAqtyb+75/tZCWTJL1Srb+GP83+t/RQZSPPekdNp0Gs+SdH816DHH+kNDMczqoALGKi3Mb8fiq3D1P8tf9fHwxjNjr9X+cyrhNsm/MSaJho/5l6Uhm+plfVC9Wt5QUcf60bP+1/lZYRwy8j6Zf72X4/op5Gvx/RT7yfYroHmjUrGMf6JqqLqENAAAwpDdL7szPDJ/wWDGKHD/ADfp/qy/4n6UdPcynzL5w0ryzbm61i5jt46bcjuf9RB8T/7FcyIwM+X+m/h/0yREl5Nbf85E+WdKt/0d5ZtLq84M5WNEIFXZpGIPxNxaR2/ZwGEMQ9UhX+m/zfVwJ4Yx5n/j3+mQWi61+YeqW4tPL2mxaTZKzMrXBq1HZpWpy/yn+zmPHUYx9ETmr+KX8P8AQ/gYjJEfSDP+sjY/+cetV1mY3fmnW552loJY4aqjAV4qvI8Qq1/31h8bNLlw4f6v1R/0vB/u0nJI/wBH+r/NZ75a/Jvyv5djRbSxikkQ1Esyh5K/zc3Gx/1eOVflgfq4sn9Ynh/0kfR/poyaeAHn6v63/E/T/sWY/U4RWiL8XXYZOOCEeQjG/wCbERZgUweLyTD5Hgvb7ylZCa/vJFZ0dyAdzX4m+yi82biuMIDGblx5B/R4eKP9X/jygiPO5f1fqZtZvK8KNcKEmKguoNQGI+IA96HLgb/499TJE5JDsVeQfnJY3WgalYefNORnNifSu1Xq0DHc0/yat/wv8uU3wS8p+mX9ZIlXxel+XfMNn5gso9S05xJbygFSPxVh+yy/y5fKNKRSZMwUcm2GBD58/Of8yrnzNcDyX5OrcTSGlxJHuKD/AHVzH7P87Y5JDEN+Z/h/H8TM+j3lK7f8mP8ADOr6DearKbm+ubsCUbcFCjkipy/ZVv8AmzMS5S+ra/pj/NYizzfTOZaHxr+ZmmX/AJJ85XMOmTzo15+9tvQeh5SH+7cfy8vh/wCByMM04jny/neqMoNkZEPRdB/Lj8w9dENz5g1ZrWFeJMasSxA3PLj8KtTI/m8kvpiIf0vTH/YMRll09KdeSZj5r/MK+1hSWtNKh+qxN2LHZz/xPIk7gf50ky2e15cwUpoUmQxyAMjChB3BByEoiQo7hDoYEgQRxgKigAAbAAdKYxiIihySw/8AMr8ybbybaAhfXv5jxggXdmY9K/5OWCgLlsAyA6lJPyt8gXlvPJ5r8yt6utXY2B6Qof8AdSDttmOCch4jtH+GP++YmXF/vXqGXq7FXkH/ADkfo0h0q28xWg/0nSp1lBHXgSOf4hTlJ2kD/mySDRZ5Ya9pU2mR+ZZjHFDNCrtK1BQUrxLf5LbZPwATsBa8G7Fpfz78vRMH43H1Zjx+seiwj60rz/l/ysnGMAaEocX82LLhB6j8f0k9806hr92luvlRbdo5wWa4mYlVFPg4onxPyyMsnhmuEzP+lh/nSRfD0v8A3LyeT8jvNi63ceZ59ZhtLiRSXnhQkgUAYBH4qq8R/NlIy5L2jEf1pcUP9zOf+migTlewj/uo/wCyikX5Y/l/5q8xrdeYtP1x7dp5WiaVlJeURmgZjX4V/kVWbJnPkBsRxz/ncXD6P6MY+HP/AHiTOQP8J/H9Vl2r/wDOPOteYLb6rruvz3Sg8gpX4a9jRi2Qlkyy6Yx/m/770sDOZ/m/J6F+U3ki48l6GmjXUonaN3YMoIFGNQN8njJI9W3x4k2xb81Zz5Z8yaP5tJpbcjZzgbfDJXi7eIX/AJpxBqXvH+yiyiene9aRw4DruDQg/PLAbYr8KpNq3nDSNI5fX7yGEr1V3Ab/AIGvL/hcsjikejMQJYbqX/OQvlKyYoly1w/hChbCcdfUYx+KTCuZAYH+Z35gyedNNjj0LS75ru3lWeCf0yArKev83xLmHky4okHiiSPKTEyhE87+CYeVPzp836xaC5t9BN0EPpuyShTzXZ+SENwP+TlktRjH8/8AzYmcf9ispxHMT/zeKX+9R7/85BXukMv+JtBvLCCtGmHxqP8AgkjH/DZKGbDPYSqX82Q4f99xf7BAMT/OH9Yf9I/7h6N5e8/aJ5gtjeaddxSRAVarBSv+ur8WX/ZZacUvf/V9TM4z7/6vqY15o/PnyzoUhthM15cUP7u3HPcdiy/DiYcO8iID+kvBXPZ5nr//ADlZqFq3C10sJzNEEjnnTxMajAJYxv6j/sYqDEb+qX+xV4Na/NLz6gjtoV0ixYANKaoxB7qX5S8eP7Ua8v8ALyn83H/Jx4/6X1x/00uGH+6YnKP4R/vv+O/7CacaV5L8m/lTINW8zXqXOqOxZJJQWYEjcxQJ6jVry/fScm/y1yMdPPL6p8v5t+n/ADpT9WWUf5v0fxcCOCUt5f7L6f8Aipfj0xQk/wCf2veaGFr5H0iRg7cRcTg8QPH4R6a/7JmyyWbFi2/vJfzY+n/Yx9f+d6EmcI/0/wAfj+JVT8mPN/mxw/nPWGFvXl6Fv0+X7K0/2OVHUZZbRAw/0v4/9j/xaDkkeVQ/qo7T/wDnGXTNN1y11W2kD2cG7wSrzLGlN3P2vi+L4sqljlLaXrv6pcUoT/2LVR67vXQLLT1/3VCFA8FoB0+jLseniDcYj+tGLOMK5D/Sh8vfm/qcPlbWW8w6HrMN2k1zFcPp/IvR42V+VU5xpxZP2vSfhyT48vlHIDWQXj/h4pcMo/1Iz/3ceKP86Dd6xtL6P6R9X+k/3yS+cPzf1381ZY9OsrOdLBKM8FtVmc1pWSanFV/k+Hj/AK+QyZo49geC/wCKX1/5sYsTMR5f8VJObjyP538teXp72y4aTZKPUeGJqykU+KSeT4mbiv7PNv8AIyjHn4TcQd/8pk+uX83+pH/Sf1WMclchX9KX1/8AHfx6XtX5E6fLaeXUafUP0m0zmT1QSQtQP3QLfF8P7WZEpTkbnz/3v+aykSfqQf8AzkT5Dl82eWpPqlTdWRM8aj9qgKutP2m4E8P8rKZyMNx/nf1f+OsCaST/AJx38q+WdR8u2+pxWUL36Fo5pJFDsHU1258uHwsv2eOQlp4y3Nzv+GRlwf6T6f8ATcSJQHvv8fT9KTf85F6jJrmqaZ5CsCEWdhLLTsN0iFB2X42ywgY4+kAfzf5rIbDZiVtYXus/luhtlL3vl6+JQKu/EEs/+txZy2RlKqPL+d/x9Jlw7vVo/wDnIzQH0D9JesP0gI6fVqEOZaU4hf5ef7WZnh7cW3B/OZ8HXoi/yD8p3WmabPreqg/pLV5TcS12IUktGKf7NmzEgeI8XT+Fqu0Vf/ldOnnKDzfpc4hVlK3kZr8YoEXgAKdvi5N/lYAZQNDeM/8AYf8AFJBI+L0nL0ML89fldpvmtlu3LW2oRf3dzCeMg9mP7a/5LZjmBieKB4Jf7GX9ZAsbjZhEnmDzv+Xrf7mIjrmmdBNCKSr4c1/ay0akHbIPD/pR+hn4gP1Cv6UWGfmX+aMPnX9HjSrO7h1G0u1ZA6ECh67rgnKA9QlEpBjHcG301CzMis4oxAJHvkwbYKmFXYq7FXYq7FXYq7FXYq7FXYq7FXYqxT81Ln6v5W1NwKk2sq/8EpX+ORkaSEH+S9oLXyjpsQ/3zyPzZmY/rwRUs3yaHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXknkV/S/MHXYT+3HG/TwCD+OVQT0et5ah2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KreIrXviq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqtkcIvI9BkSaVvACrsiQloDIAK1TIlVuY7JsZKJpXA198mDfmgh1MBCuAriIquGXBDa5KKuySt4aQ7JK7CrsVf/9b1TirsVdirsVdirsVdirsVdirsVdiqWeYdFi1uxm06dmVJlK8kNGB7MrDoytvkTdbGv6SsF8lfkH5f8tk3Fwn6QvGNTLcDkfoU/DmOcZyb5CZ/0d+H/imJHFud135j/lWuqejrHl4rZa1YVaB0ACtT/dMg+zxbCI+EeKA/rR/n/wDHlHo3H+l/nMt8n6nqOoaZFcazbNZ31KSxkgjkNiyGMsvBvtLl8Zie8eL/ADgYS/0smXEDuP8AZelPskrsVdirsVdirsVdirw7XVjX839PaWhrZMBXsaS0p9+VVfzZdGSfmt5ZurNk85aD8OpWArIi9JoRu8Tj9pqfYyP93LiH0H+8j/vkRlw/H6mbeVfMdv5k0y31e1/urhAwB6g9GU/5St8OX0pFJvih2KuxV2KuxV2Kpbq+v2Gjp6uo3EdulCf3jBa08OW7f7HJxgZct2UYkvNNd/5yU8uWnKDS/V1C6GypChoT/rn/AJpwmMYbzlGP+6ZGIH1EMT1WD8zPzFtpI/Sh0zTblSvpyU5FT/PXk3/CZjS1MZCoQOT+lL/eS4oRazkHKIv+kwz8ldT806P5zt/J11cyfVbNpFeAbpxAZyV2+zvyTLRqCY16d/KPF/pvq/2TYMhIr0/6WPF/pvrfXmLW7FXhvnJP8K/mXpuuGi22px/VpD0HLdBU/wCyRv8AYZXD6iO/1Moo+4lHkj8wkKgLY+YUCt2AmTZT/sq/8Sxx7Ex/zo/75QL2eqa7pcerWM+nzjlHPGyMPZhxwzFimL518m3M+na/pAvKepSfR7o9K8CWtia/5BHD/IRcrjR/zx/svpmz5/EMz/5x9lbSbnWfKk1eVldF4wf5H2H/AAojyyBsIJsPZsmxeG/m95U1jQNdh8/+WU9eSNVjuYFG7KKgnb+Zfhf/AGOUDJ4UvV9E/wDYpEuHnyQ9x/zk095ALTSdJun1aT4VjZaKGO1eQ+Jgv+rmRLJiiOLiv+j/ABf53/HONJMRvf4/H9ZlP5NfltdaAk+va+fV13UTymY7lFJr6QP/AAPPj/Kqr9nMeJMzxHb+bFjd7vRNT1a10uE3N9KkEK9Wdgo/HMkRJ5JjEnk8r8w/85GadAXi0O2l1B468mUFUAH7X83H/W4YyMIfUf8ANj+P9zxM6jH6j/pXnXk3S/N/5gatdecdLlWxS5/ch2O4VQPgjBDNx/yv5uWY8s2/ojx1/O/h/wA7+cxlOjsL/wB6z+y/5xzhu5FuPMeo3F9IKGgJUV7/ABMWNP8AVVMEpZcn1EQ/ox9X/ER/2EmMpSlzNf1fxw/7BJLH8tdE8sfmBFYS2sc2n6haloluKScZYzyYr6vL4mp/xLK44uL0yMpV58HH/X8PgjL/AEqQLG+/9b8cL3qOzhjAVEUACgoB0GWxwwjyA+TGl4gjBqFFR7ZLwx3D5LQCrliUDrOmx6pZT2Ew5RzxshHsw45CYsKwH8hryVNFl0W7NbjS7h7cjvxB5Rn/AGW/HDCXELZSUvz78qvqGlJrtgCNR0lxcRFepAIMi/8AAjllU/QeL/Nl/VQDRZt5N8yw+ZdKt9VgYETIC3HejU+Nf9i2ZBFJkKYz+enlg695YuVi/wB6LYC4iPcNH8W3+svJcpmOvcxGyZ/lT5lPmPy3ZajK3KZogsm+/Jfgav8AlNTllxZSeK/85f6E6mw1tELIoeGSg8fiSp/4LMc7S94/3LEFJPyi/PfXrLS4PL2laQ2pG1VqsjEEKSSKhUYKFJ/ay45ccB6rs/zf+J4ZSZmUAPVxH+r/AMTwyegv+Yf5iarE4h8uxrA1VImfcg/Cdiyf8RyEtRhkKrIfx/UixM4HkJ/53/SMXnn5L+c7z8t/Mc3lzzFbvaQagwZI+ojZieBFC3wMPh/4HDjnGcdjy/nf75kCCO6no/8AzkN+Wc2qQp5t0UmPVdOAf4Orop5bU+Lkv2sps4zxDl/F/wAU1g0bZn+UH5gxeedCivTQXSfurhPBwNzTwk+1mVIA/FnIPHNd0qPyB5uudFvVB8ueZQQRtRHNVB/yfTkf/gP9XMaEeIGHKvpl/uP+IWAv0/6VA/l/5F/Mfye97pGgW6QQXMgP1mZlOyclRk4lqclfl9jGGqA24TOf83hlHg/0/DCX+nkgTrpf+9/H+ezKP/nHbV9VHq+YdduZZJN5VjJC7/sDkfs5M6jOdvRCJ/h/mr4kz5f71JtY/Lyy/J/W7PXrKA3OjyqILr1AHKMTtLuPh/myqMbPDk9d/TKv4v5rGI6S3t7f5n8oaP5201LLUoxPZtSROLEdvhdCnscsni2oXj/q8P8Av4zj/sUEdOX9V5xrX/OMHlyOxlbRI5IdSWkkEhkLcWX4gnBj6fFqcfi/4LKhjnDcSlOv4ZCPDL/SRjJjEGPUy/rcP+9jFnUWgXF6NN1mRPR1W3VVl5U3VwFuI34fCf5k4/tccmOfFHr/AA1wf7GXq9DaDe7LZoVmRonFVYEEex65cRaHmHlXyj5d/LWW9dtRVLO7NTbzOvFN96CvL/J+L9nDjwZJDhPrj/DszEJEd9PP7D83PLflyDUfK/7zU9Olkc2wgUNRJAWki+IqvGOT7GJxjh4ZmMCPxH6f4llEAblit1+Ynm3UZtM0XTUOl3IjNtDcTKwkkjYhQKKkvD4Uj+JV580+3kY54/VD95IfVxHHw/8AS2UI8X+f/msRlB3j6v6Xp4P9n6P929Q8rf8AONtqso1Lzhdy6vf9SJGJjH3/ALx/9l8P+RlUzky/WeCP82P/ABf/ABMY/wBZgTKX1H/N/wCPf9IvXbLQbGw/3kgiioAPgUDYdOgxhp4R5AKIgJhmQydirsVdirsVdirsVdiqjcW8dzG0Myh43BBU7gg9QRkJREhR6q8N1XR9S/KPVW1fRUefy3ctW4tkqTET1kQfsj/rnIY8nB6J/R/Dk/m/0WUZVseX87+ayHzfe6h+Y2mwQ+TL2NLOc0unBpIqn9nj9pf8rLskpY+Q47+mX8DI3D/eyZX5C/LnSvJdotrp0YMtP3kpA5ue5Zsx4YqPEd5/zv8AiWoBJvzcYW82j3h/3Vfx1PsQV/jk582cXoUsoiQuxoAK5YSxfPlx+TN/5tXUvMF+0kWsG4LWRckUSM/uxx7K2YpnKXqj/B/D/OUy6joo6r+eeu3Gmjy5BYTJ5iakMj8TxH7BlT/W/mzJ8fHXFf8Am/0mfHHn/sXo/wCWXl+w/L/R1tL+5jW8mb1J2dgCXbt1/ZwYscpeojc/7lREl6DFIsqiRDVWFQR4ZNitnuEt0MsrBEXckkAD5k4gWoFvJNe/O641O5fRvI1q9/eA8TcEUhQ9zXvx/wAr/hsZzhi+r1T/ANTj+Px/OZGo89z/ADYpp+Xf5VSabM2ueZZBfazLvzbdYx/JHX/iWY5Bym5cv4cf/FMCTLn/AKVLvJvmq80LzXf+WtekYx3LGezdzUcepjB8OP8AxHLoT4hR5wbL4h7mWz/mx5et7cXlxdCOAu0YdlIBZTQ0NMsjCzQMfmIo4Pd80y0LzxouuyGDS7yG4lAqURwWp/NxrWmSljMVlAj+0SRXmfSY9X0y5sJRVJonU/SDmPMWGD5o/KDQ9U863SaDq7sdE0V2BjGwdgTwV/5lrkZTMhwjr9Uv6LKUrFcv5z6Q1/yzaajpM2kGJfQkiZAoAp02oMicUQNtqYUwT8i9Tvbry1JplQt5p0sluC4JHwn4OYB5ZcJWLG/+x/4pmd91XzDpfnHzVGdEu44NOsn2nuYpPUaRO6Qx0Vo+X7XLIHLe0YyEv9srgh/nR+peOuQ/0xi9A8v6JbaFYw6ZZLwggUKo+Xf5t9rDCHCGKZZYrsVYH+dFpp155buoNUmSBePKN3IFHX4kI9+WQlAy5fw+pIiTyeL2X/OVc1rotvYWtsJdUjX03kcn0/h2Rgq/E7Mv7Pw5fcALP+l+n/ZNnp5n8f5ynY3P5meeiKy3MdpJSrRoLdKH+V34yMv+V6TZjfnekOG/9rHi8P8Anz9Mf+VrEZ/5vD/mx4v9lL/i3q3ln8gPLthCsuo25u7th+8M7mQV705BF/2XBcqOOWTecpn+j9H+4l/vpNZBPMks40/ybo+nKEtLOCMDpSMf0xGmhzr/AEyBEBOFRUHEAAeAy8RAFBk8jt/+dC86NETw0nXfiUfsrcDr8vUyOI16O71R/qsojp/pU/8AzF/KWx87zw3GozT+lApBgjeivXp9r7Lf5S8f9bIzM+UZcMD9Ua9X+b/x6M/6LGzyB4XyZrnklNNmubNGmhvmkKwWkI5sVqaGZ0dl+z/LyxjkMRd1EfVxcUJS/wAzhjw/j0st49a/rfVJHflz5HfUL24g1C+GhtAg9USVDsO5Tn9nDHiyb46yf0pfwojxS+nf+syPRtZ03yRqpt/LKL5mu5dy7Rksp7cH+L9r4vs/7PBKAjvn4TX80y/2UPpUgDedX72ex6f+bXnCNnluItGgcbJTi1P9iJZlb/gMmNX/AKnC/wClL/j/AKZf6RPi/wA0V/Sl/wAe/wCIT7yZ/wA406Ppcg1DzBI+rX53czGsfI9SEPxP/wA9Gb/VyqUcmX+8l/mxMv8Apr9f+l4Gs3L6vx+P81F+cPz48tfl/efoD0H5wqOSwIFRAeg/Z/4VcyceKMR0j/sv9M2RiP6v9UMo8hfmvoXndW/RExMqbtE44uB48atUf6uWSx8O+x/qqY7WzJq0265WxfLH5h/lnrvmC91rUdZEnq2kAktjFURSgE7AHl8Sx/s/zZjnVy5AmAH95j/3/wDU/wBOk5PhX8LyrynosFrZLrt7PYJErsojnV5ZWI6gWqniy/5UjKn+XkjAyPK4/wA6U/Cxf6fF+/4/6sZJA8on+tKUI/8ASqXG9w/Jn8+NNmuo9CuwyPM3CJkhiiiU70URxDknL/KeTLI4YD6RCP8ARiJf9NcuSUp/6SLLhHT0/wBGI9H+nlKT1vz7550jy+1vputAmLUSYq8apQ7Hmfpw8Antf+aiMbeZflxfj8uvN9z5MmcHTb4iazNahS24T25L8P8AsVwYrIo/VH/ZKBYrue+soYUO4OEsHi2ieSvMHkzzrI2hRK3l3UyHmUkUjYV5cRVWVq/Z/Zb7OUQycHoIkf5st/8Adf8AFKJ16f8ASph+a/5It5sv4/MGk3TWWrQoFVv2SFqU3X4kb4vtf8LieKJuNH+jL8f7GSNwbDJvyq8gf4L0VdLncTTu7SzP2Z3+181/1slEEi5df4V96KP5X+XDf/pU2MP1r+biKV8eP2a5V+Wj5/1b9DHgDKlUKKDYDMoBm3hV2KuxVoivXIkWqmtvGp5BVBPcAZX4Me6PyigAKuXJdirsVdirsVdirsVdirsVdirsVdirsVYR+dU3peUdSPjAy/ftkZJimn5c24t/L1hEOgt0/EcsEeSlkeTQ7FXYq7FXYq7FXYq7FXYq7ArsKuxV2KuxV2KuxV2KuxV2KuxV2KvI/KUzP+Y2rBhQi3QV9qimVDmno9cy1DsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsBVrIAJdirsAFKtypXUyJFpcoGMYhbaVAK074RFbbpiRaHAYgJXDLAhwycVbyYCHY0rsKuxV2Kv/9f1TgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXzj/zkXNL5X80aL5rt/h4n05G7UB6f8AWyETUveyiX0JBNFqNsssfxQzICPdWH9MkQjk8y/IuZrJ9X8vlg0en3rCMeCv8fH5LkYcknk9XybF2KuxVCajqdtpsDXV7IsMMYJZnIAAHepwxiTySBby/zJ/zk35Q0dKQTtfzHYR2y8t/d2Kxj/gsuOHh+oxj8eL/AHP+/wCFtOOuZH+b6/8Ac/77hSK3/MX8wfPKn/DWlrpdm2wuLsnkR4orBf8AhYpf9fMU6rGP7sSz/wBL08H+64P83xZf1WrxI/wjj/pS+j8f50kdpH/OPNtPINR863suqXjUJDMVjB8AK1P+fw5A+Ll+o8H9HH/xX/Ewgg8U/wDiYvUNH8n6Ro6Kmn2kMIXpxQAj/ZUrkI6eMen+m9TEQATrMlk8D/MDTY/Kn5j6V5jT4IdQJhmI6ciOG/8ArKcqiKNd/qTF75lqHYq8q/5yN8tS6p5cN/a1+s6dItwlPBT8f/C5VL0kHuUbMb/Ma+/xV5IsPONrvd2DRzkjqCp4TV/4lkp7SB/HqZ8i9m8uaums6db6jEapPGrg/Mb/AI5YWJFPBfzrs59F1eSe2X4ZWiv0YdecJ4Tgf60bZjjY+4/7GSYmk7vdSg0fz3pvmCM8bTXLYI3EEqXp8NeP7X+V8WTiOEkd/qTXR7lljB2KsV80ef8AQPKoMmpXEcUp/ZHxOf8AYL8WRhpYj1VCH9KoxZjHe/f/ABPOZ/zq1zzbI1h5GsGLHb6xMPhA/n/30n/PR2b/AIpbGebHj23yS/m/8d+v/TeFH+mpMY/0/wAfj6uBW0z8gp9XkF/5yv5bu4ZuTRRueA/yPUIWSn/GP0k/yMqlPLkG58OH83+L/qlH/ST/AKzEzlLy/H+k/wBLH/ORP5xabZ+UfKL6ZocS27Xbx268RuQ5o9X+0TxxjjEN+Z/nS+pYinonknQo9B0a002IUEUSg9tyKuf+CyyAoIT3Jq8l/Pi1awbSvNENeenXacun2HPFuuV8j7/SmL1aCZZo1lTdXAYfIioyxCpirsVdiry+1J8vfmBLCTS31m3EgHb1Ytm/2TLlcNrH+cyG4el3ECXEbQyDkjgqw9jsclIWKYvHvyUP+GNZ1byVMSFilNxbA94360/4XBjNx/q+llzHuew3NutxE8EgqkilT8iKYZCwxeKf847S/oq+1vyu5INpcl41PZCSvT/gcEDY9zM8no/5meW7fzD5fvbG5UEGF2UkVoygurD3yOQWGFPmv/nFTztFomqXOkX8iRQ3ClgzkKA6duTfzLlsYcR2Fz/2XCz4be+a7+evlLRwRLfJNIP2IP3hPyK/u/8Ahsu8Ejc8MP6x/wB7Hiknwz1ofF4N+c/5j2eu6jp/mHSbO5jmsJBWWWIqrLXkAT4/7LMP0XtITv6oxQOHobfVGi6imr2EF5T4Z4lcj/WG4yZIOzEingWpWP8AyqXz3Bc2jmPRdYJDx1+FXJodjt8LNyX/AFsjhJFwO/8ANTDuem/nR+XcXnfQpIYlrewAy2zAgHkB9mv8r5HICPUP4f8AcsP0JV/zj9+YB8w6ONLv2I1TTj6Mqt1IXZH/AONWzJ+ocQ6tst9/9M9XyLWl2v6TaavYzWGoKGtplKuCabH37ZCUOIUireC+X/zr0/8ALf6z5W1F5NRW0kItZLej1jO4ic1Wjx/Zy+MbHrMccv8AO9f9L0/8dbuHb1ekj/ZJvbebPzH888rry7bw6NYU/dvdiryV70KS/wDCxcf8tso/MwG0IyzfzpfTH/M9cI/7KbAZI/wi/wClL/jv/Hle2/JDzJqQ+seYfMV01z1C25KoteoHL/jVUwePnl9PBh/o1x8X9fg8L/f/ANZfGyD6TGH9Uf8AE8H+5VZv+cdppdn13UGWu4Lj6egx/MagfxQ/0sv+KkyOaZ5lONN/5x28rW3x3cUl7IRQtcSFqnxyuWOc/qlM/wBX0NJs8ySynTvy80bSpoJ9Nto7ZrflTgoBIYcSGf7RyA08R/vuL1/7pIjTIjChYOVBYdDQVyw4Yk8RA4h9MuGPFH+rJaVcvS7FVksqxLychVHc4gWkC1FNRt5DRJUYjwYYeA+a0Uu1XzdpGkAnULyCCi1o8ig0+RNcsjhlLcCXD/O/h/0zIYyen/EsJuP+cj/JEMnpDUOZ8Vjcgf7JkXJ+D0Jh/poy/wBxxRZDH3mP4/q8UWXaH5/0HXuI02+gmZxVVDgMf9g3F/8AhcrlilHmP9L6v9yxMCGRZWwdirsVdiqySNZFKOAVPUHIyiDsVeVeYPyansr1tb8l3R068c8pIjUxOfAp+zyymJnh+n14/wDU5f72SxkY8uX81B2P5z6to0r2fmnTJP3JCSXFqPUjr7qPiXLhnxy2N4ZH+HJ/xTImJ5+j+t9KV/mn+cflnW9DltrW4ZbxHSSNXidSSjBtiybZKWPqDCVfzZRZAV1ifinK/wDOR/l4W8S2aXN/clF5LBETRqbgluPf+Xlkp8EB65Qh/sv+O/7NBERzIH+6/H+cgp/za816qK6ZpkWmQHb1r+QLQePA8f8AiLZAZYH6BPP/AFRww/03/HkiuglP/Yx/H+ckOqzSXkvq+Z/M9tBQU4WQAJHceoMHBkJsRx4f6UvXNkBPuEP9k7TvNf5b6I/OFJ9Uux+26NKSfbn8OCWC/wC8nxf53p/0kGsw/nSv4sl/5XDr+rr6XlbQZ2WtFkuP3aD6PD/ZLg8fDDYGWT+jjH/SX+5RxQHfP+qHH8qPMvnArN511MrbEgmytBxT5PJ+1/w/+vkTlyT2iI4Y/wCmy/j/AD/81TMnYej/AHX4/wBM9O8u+WNP8u2q2OlwrBCvZRufdm+0zf5TYIYhD/ipfUxApN8vS8f/AOcjPLgm0lNftHEV/p55K1aEqdmT3ykgg8Q3/hkyjbx/8t9d1nzToh8o6XaR3DSStJLNOoZIwx6op/a/awZDAcxxy/hjHih/s4pkR73tP5YfkHYeS7lNVeeS4vwpUnYRgHsiU5Dj/rZGAndyI/qx4v8Ad8Xq/wBK1i3q5FdsyUpfpWh2WlCQWMKQiVi78ABVj1Y++VQxiHJAFJgcsKXiH5B6y0ut6/YMnEC5MlfckilMhGmRe35YxdiqFv8AUrbT4/WvJUhjH7TsFH3nJCJlySATyeP+fP8AnJXSdKLWGgg31+3woR/d1O32v2snwiG8un8MWzhA5/6Vg9r5AufOdwNV/MDV4oFbdbZZBsPACvpp/wAO2UE5c30jgx/0v+I/4tBjOXIVF6H5D8g+QPLN413pdzBPOwAX1ZY340/aj/lP+VkBoJn6xLIP5vB/uv5zEYJHoT8Hpg8x6ZXgLuDl4eqlf+JZlfl5gfTL/SybDhn3S+Ukek6SDkjAg9wcrohqIIVMCHYqxf8AMLyVB5u0qTTpDwl+1DINikg+w6kb5TMHmPqj9P8AxKFfyLZarYaRBa69Ist7EvF5EJIYA/CxLBfi4/aywTM9yOC/4fT/AL2UosjK/J5j+YWlebNM1Zj5G06CNZQGkueCFifDk55L/sVzGBx4zvE5J/w8XHPh/qcXoj/pkcQj0s/6b/dPN/zF/JjzQ9m3m3zFOt3cRFTLBHsfTr8fxr/LkhlJP0+HE/zfq/0q8ZPPb+q+gfyt0XQItIt9S0C2jhSeMEsoHLpuGf7XXJDBGBv6j/OkjgAOzNsvS7FUl1Lydo+p3C3t7ZwTXKfZkeNSw/2RFcxpaeEjZHP6v6X9b+cxMQeaUP5R8t+XtSbzMyxWd0YzGz8gikd/h+FS2WYdPRqN/wBX+FlDH3f8dZJpmrWuqQi5sZUmhPRkII/DL5RMTRZSiY7FFSRLIpRxVWBBB8D1ysi2L5Lb8vNI8rfmSLTXo4xo1xzlg9baM8twrlvhbi1ft/BlMMZyej1WP5v1zj/uv9L6kiPFszv81/LPlXX9HJ8rz2cepaYDNAtq8daL8bqEiPxfzfDhOmOH1ASj/O/49xeri/rKMZjuNvx/EnOlFPzh8hg3MXG8ClVJ6iaLYSKe3JhkswB9Uenq/wCOrPvD5zDavrmoyyThxqWkwBidySYCF3/2OMsvKXekz6vs/wAheZF8yaJaaqv+74lLDwalGH/BZaVkKT8kDrixY/qnn3QtJqL2+t42XqpkUt/wCln/AOFy3wZ93D/W9Mf9NLhbPCl/0l6P90xWf8/fLZdo7Fp7112pBEzf8S4/8RyEhGA9UoR/zvV/xP8AskcIHMgf7pBn85NVvRTSdAvJQejSUUfSD8WVHPhH8Rn/AFY/iKAYX/FL+qP+KRFt5v8APl39jRIYgTsXuANvdacsH5iF7Ryn/N4f9n9KOOPdI/7Fk/l678yzS/7l7a1ggof7uZnavbb01Wn+yxGXi24Zw/pSlj4f9LHikvEDyEo/1pR/3sWUZYh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV53+ftx6PlG8A/b4r95yMkxZj5Yh9HS7SM/swRj/hRjHkhM8krsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirx7y6jx/mbqKkbNbKx+W1P15XE7suj2HLGLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqlPOkKNLIQqICzE9ABuSfoxWnmw/5yN8mG6Nkb2jA8eZUhK1p9vMjwPOH9Xi9Tb4fnH5vRrO8hvYUubZxJDIAyspqCD0IOUGNbFrIpEYEOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVJfOOuroOj3mqsQPq0LuK9OQHwV/2eISGJfkRqOuat5eTVfMUplmvHMsQIAKxn7A2/Zb7S4Dk4zyjH+H0pJvyej4WLsVdirsVdirsVdirsVdirsVdirsVdirsirVMAS7ATSuyNq1kFapkaS4YYhDsIV1cbV1MCrssAVwGEBW+mTGyHYVdhV2KuxV//9D1TgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqs9ReXCo5daYUr8CHYq8Z/wCcqfLf6V8qNdoC0llIrin8rfA//GuUy2IP+arKfyM1s6z5Q065Y1dYhG3zQ8DlzKTHPyQuTqGs+Y9RXaOS94gDp8I8crjsVk9Q1fXLLRoTdajPHbxD9qRgo+ivU/5OXRgZbDdYxJ5PL9a/5yV0CFzaaJHPql12WBDxr06n4v8AhclOMMf1yEf9l/x3/dMjER3kf9L+P+KSwa7+aXmcE2Vpb6TA1aGTdgOx3/azHGqj/BGU/wClL0xYeIP4Rf8AWQN9+Rrzp9d/MHX5ZYSQGQOI46nelX+H/hMIlnzbDhh/RiOKXD/sf91NNznt/uR+P989A8jflP5P0ErfaFbRPJQUm5eofmrsWpy/ycoOko+vin/RyfT/AKT0x/00Ws4uHnd/0vxwvQemZIDJ4lL5Bl/M/ULjWdR1CRNNjdoraC3ahAQlfUkILUZvtccjOWT6R+7j/O/n/wCmTIy5D0f75C6ZrWo/lTrkWg61O93od+QttPIatG1acHP+sV/4lkoZDP0z+v8Ahl/PZiXFsf8ANk92VgwqOhwtbzb8/vLL615bkuLYf6VYutxGe44n4/8Ahfi/2OUz237kg0yf8vvMi+Y9DtNTWnKWIcgOzAcXH/BZcUyDI8WKHvrNLyCS1lFY5VZGHswochIWKV4l+R1ol7pGs+Sr3pbTyxhT2R60/wCBfI1xRZHknv8Azj9rRXTp/K93yF7pErROG/kJPpEf5PHbLIniFpO4tKP+chPM2mj6vpKB5tYRuaxxoXPpuCkgeh/aX4l/1eWQnEAcRMY/w+r+L8S/pRUR67MHl1ZJvIcRknji1bQbusUcjgScVb7IRjyb4W/l/ZbDwk1MCRr0yl/xbIjq9H1P/nI3Q7SxgNkWv9SlRf8AR4QSQxG4c0/m/ly8xERxTPAPhxLwgbnYf7JK+P5j+eV5OI9FsXGwDHnQ+PH48x/zQ/ycSf6Uv+Pf8Qw8SvpH+dJkvlb8g9D0tvrWqctTvCeRkuNxX/U/a/56c8pljlk3mT/Vj6Y/6b6v9z/VYbn6jxPRYLVLWIRWsaJGvRVAUAewXbLIwEPpAH9X8eplEDl/uUUMuQ8f/wCcgG9efQdPBp69+p/4Aof45CRZB6+ooKZJi3hViP5saSNU8sahbnqIGcHrQoOdR/wOVzGyQrfllrQ1ry5YX1as8CcvmBxOWplzZRgYuxV2KvPvzf0tvqltr9uP9I0m4Sfbr6ZPCcf8A3LKZbEH/Nl/nJGxZ7BMs0ayr9lgGHyIrlyHz9/zkBf3/kvzDp3nTT1Rl4m3dTUcj1o+/Rl+z/q5CBqW97sopx+Wv/OR6ebNTj0O4sXhupCRyRgyAAVq37WXSMKsE/0Yy+tlLh6X/nJF+aN3/wAq78+WXmeEstpqACXKgGnXgSfH/fmU4zRI/nMYd3e+gwY7uGo+KOVfvDD+mSIY8n59/mR5cbyn5lu9OugTHHMWFPhLRseYI/l5KcqgbHu9KQX2B+VXk/ye+kW+p6BawskqKTIwDvyHVXd+TVVv2crOlH8V5D/TPH/pY/RH/SsZYwDvv/sk0/NvymNe8sX2n26AzGIvGABXkvxCnvx+HDKAgLAGyRsx/wD5xt83fp3yxHaS1+s6ext3B60X7B/4HMm+veyl3qv/ADkV5RTXvK086itzZUnjYCp2Pxj/AIH4v9jlMxR4u5im35I+ah5l8q2V4z+pMkYikJ680+BsvLKTw/8ANKSb8r/zBh8zW0dLG7o7gUoa/DOAB+1+1lWI0eH8cKwLOtX/AOcl4b6ln5PsZ9QvH2BKEID706/8Ll0548f1G/6MUnhjzN/0YoQflf5587fvvNWpfUrZ9zbwVqAf2Tx4j/gmyn8zkl9AGMfzpfV/xSPFJ+n0D/ZvRfKn5PeXPLUKRW1qkkkbB/VlAZyw6NzP2f8AY5QMAO8rmffKMf8ASf8AFcTXw97OAMygKZOwq7FXYq7FUPdXkNpGZbh1jRRUsxAA+ZO2ERMthZ/qshEnlu8781fn95a0Rjb20x1C9+ysNsOdWP2R6g/d/wDA8ssOPhFzIhX876/9L/D/AJ/Cy4K57f7r8f1mKjXvzP8AN4J0+2i0e0enFpf7zie+/Jg3/A5jDVR/giZ/0pfT/wAT/sZMfEH8Iv8ApS/H+8Rdr+QGo6kS/mbW7q65blI2Krg8bNLaxiH9H1SU5Jnrw/1XlXnr8qofKnnKx003Nwmk6iVUOshDgk8GQv8AtfHx/wBhkoZsu8eI8X871f7ni/3yROXfL+s9g03/AJxd8p25ZrtZ7wk7GWU7f8i+HL/ZZRKGSe85yP8AVEY/7rxWo2eZP4/rcTKI/wAlvJ8cBtk0u24MACeALbf8WH95/wANkfyse+f+nn/xXCx4B5/OTBfO3/ONdh6QvvJtbDU4W5oQzcTQfZG/wH/KycRPFvEmf9GX49X+eyjceX3sg/Jj8xLrWYZNA8wAxa7Y/DKrbF1B4iVfH/KzKEhkHFH/ADo/zZNp3Fj/ADnqWBg7FXYq7FWmFRTFXjF7+R2uWt1cXWg65Nbi5YuySDkKn3+LKOPKNjwZP63/AEinxJDul/W/6RSef/nHnzHqFRfa4GDDc+iCff8Al/4llZ4/5mEfCP8A1TkxMpd0P9LH/iWP+Svybu1v7ry9c65cWcto44RRUX1EYchNH8f7X7fwtwycDkIuIgOH0ylwccoy/r+j/M4pswZgXGh/O9P/AEi9Btv+cZtAJ5alPd3rHqZZSP8AiHHDLxZfVOX+bGMf91x/7pgTI8yWL+XPy30jyZ56/Q80KT2WoQmS39YcirqTVAWyAx8Y4Z+v+l/OiojxDfenutr5f060PK3toY28VRQfvphGmgOg/wB1/ul4QxjzP+cPl3y3P9SurjndDYxwqZGB/wAoR8uP+yzMjjERZ4cf9b0/7Ft4O8iH9ZIJfz/hf/eLR9TnrUgiCgIHflVtv9jlJz4RznD/ADfV/uuBiJQ/nf6UcX++iy/8v/P9l51smvrFHjMbmOSOQUZWHUNlhroeJZADluhPzG/NDT/JMKm5Bmu5dooE3Zj2+S1wgCrOwCYx6nZ5F5n8o675y06680ecGNpZwQM9vaRkg9PgMn3/ALXx5jHMZ7Q9EP5389HFxbDb/fML/IzyTNq1xcWtvdT6bqcSLNDIhPFkbs6ftLj4kxvAj+lGX0ySJEcv9L/A9cuPOHnTyG3LzBHFrGmilZrcqkqDxMfw8/8Agf8AZ5aMwO04yxn+dHini/H+lSDfMGP9KPFKP+d+IvQvJX5h6P5wgFxpM4dh9qJvhkU+Dxt8X+y+zlsoVvzH86P0oMK8/wCkyfIMEq1HzPpmnCt5cxRU7M4B+6uWDGTyZiBLx7T/ADx5N8narqGqafPNd3N8QzxxISoIP7DfCv2jlEMXD9Uo/wBH+d/ncPEohXMhHw/nhretuYvLmhTzDtJKeKjwrT93/wAlVxlqMUespn+bGP8AxHiy/wBgjjgO+f8AV/47xrJYPzS1mJ2mktdLUAkKlGbYduPrt/yVyP5v+ZDl/Fk/49L/AKdL4lcoj/O/Ev8AcReNt+WvnrzbqMFvrD3LwzSMrSyklVVTRzRvs/5H8+QlrTPYf5sY/R/sPSg5Sdv+kHsmn/8AOKvlm1oXed2G5POlT92Q8Of87/YtYB72UWn5E+VLYb2nqMO7uxP/AApXJHATzlOX+l/4lNd9lo/kJ5QO4suJPhLIP+N8h+XP86f+w/32NeFCTf8AOOnlGT7NvKhPWk8n8Xw+DL+fP5Yv+qaOEjqf9j/xKWT/APONOjgk2V7e2/8AKFlJC/Lllwlljynf9aMf95wMgZDqf9i8/wDP+k+cfy4nsLuDV5L2KScRRRPUV/lR/wBkhuXHJx1OTlMR/wA3+JtGSXXd6HH+dt9ossdv5t0qaz5ivrRfvI6eO3xYxy458iYS/m5PSxBjLvh/WXecP+ckvLvl9YGtyb711LfuSPhH7IfkdmY/s/s5keGB9Rr+bw+ts4AOf+x9TGvL8nnb81R+kRqC6NorE8I7cgykf5bD4v8AgnX/AFMonmmNsca/2zIP9z/O/wA3g/rsTIx+kV/SkP8Ac/8AHeFUvptf/KXVLSS6v5dS0O9lELmfdo2OytXt/N8P2/iwQzSkeHJR/myj6P8Aiv8AdLGZltL1f0nul3axX9u9vMOUUqlWHiGFDjKNimt47+Tl1J5T1vUfIt7IDFG/r2hJ6o/xMg+/lx/1scZMhR/gZ1Y9z2vJMHYq8g81WH5marfz22mT2dlpwakci1LMp6H4gzK6/t8WX4vsZX+ZMdhDf+dI8Ufx/wAkkidcgP60vx/vHkH5weQL+xS2s9V1ebVdeu5QsUArxCn4eZDFmX4j/wASxObJXFPhhj/mx/EP9ynilW+0f4Yvo78q/IqeSdCg0gNzkWryN0qzbn/gfs4Md1uwDILzXLGxQy3dxFEg6s7gD8TmTHFKWwBPwbBAnoXzp/zkn5w8q+atNiXTr1bnUbOTkqRBmDKf7wGRR6a8acuXLKsmExN2I/wy3jxLKPDzr/TRSNPyij85Q2Gp+QrWXTLUpxnmuHI5Ej45I/3kjOnH4fspyzHMjjNRMs9/5vB/W4o4o/6Tja7MT6b/AB/W/wB4yL8rvPmn/lfe6l5T1q6ElnA4kt5VAYMWFXUcPh5N9rj/AD8syccSRUqhIfVxXFtjG9jQr+d6E8Pn7TLi8ubrytoU11dX6lJJihVWB2PP/J3/AGcxzHFA7yJv08Mfpj/Ua/RHqTf8MWK/lPceeG+t+UdLaGxaxkLv6wqyCQllVOXLkux/3Vlkc/CBwx8T+t/D/W9Uf90yGTblf9b+H/ZRl/unoS/kZqOrkt5p1u6u0b7UMR4JX5HkpH/PNcfFzS6jD/wv6uH+vHwv9n4qDOZ68H9X8Rj/AKeEmQ6R+RnlPSgCliszj9qcmQk+NJCyr/sVXKPAv6pTn/ncH+xxcEZf5zXw99n8fzYcMP8AYsxsdEstPUJaQRxKOyKB+oZZHBCPIBIiI8keMuGzJ2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXlv/ADkbIR5X9Bes1zFHXwryP/GuQkWUXpWnx+nbxp/Kij7hhjyYojJK7FXYq7FXYq7FXYq4ZEK7JK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8hsJuH5p3SEfasV/VHlQ5/FlWz17LWLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirCvznvHs/KGqTRVDi3YbdaMQjf8K2Amkh8weUP+cc7zzX5S/T9o5TUHdzFC4orxr8I4nszNy4/sNmPKZBsbxHplH+Jr397Pf+cXtV8yaZql15U1mKYWsERdRID+6ZSq8VY/syK/2f8n4P28vGoExX+l/nf57bxiQ830pJIsal3NFUEk+w65JiwiX86vKUXpiS/VBMSELRyBWIPBvjMfH4W/yst8Mk0DCX9XJjl/uZM+CzQ4f9NGX++ZtHIsih0IKkAgjwPTKmKpih2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5L/zknqZXy4miwH/StWuYraNR1NWDt9Hwqv8As8jI0L7mQ2emaJpcelWUFhAKR28axqPZQFGMRQYo7JK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWqZGldTI8NpcBgEVdgIVoZAK4YxFq0MAVwwjkreJCuG+TG6tjJRCt5NDsKuxV2KuxV//R9U4FdhV2KuxV2KuxV2KuxV2KrQwOwO4xTS7FDsVQ99dC0gkuGBYRIzkDqQoLUHvirGfy9/MvS/PNs8+mMyyQtxkifZ1Paq+DeOSlGuW4/nM5RrzZdkWDsVdirsVdirw782PrXknzZYeeVkZtOm42l2p3CKejDwVvt/6yf5eRjM8XCfpn9P8AXZxJuu97bFKkyCSMhlYAgjcUPQ5JgqYqkXnjSF1jRL2wIr6sEgA/ygKp/wAMBlc9woeFfkb+ZmneW/JV7Hfzxwy2UswiVjQuWHONUX7THmePw5dCHEL/ANM3cF7/AOmSL8oPO3muTR5NN8naX6lxNM8k17OaRKznbgG4qWWPj9p2/wBR8o8bHjO95Mn+px/2HFw/wy/pTxR/ptZnEfzpy/m/wfj/AD4M90v/AJx2m1qf9Kef9Qk1K6bcxIxWJf8AJB+FmVf8lYl/yMjKeXLz/cw/mx9Uv+Ih/m8Uv6bAylLn6f6Mfx/uf9M9Y0DyhpOgRiHSrWK3UD9hQD9/XIx08Y71Z/nS9Uv9kgRATrMlk8R/5yOskvLry/BekDTpL705gTQfFw48j/qh8rNn0/zgkC9u95555l1H8kvNyano6kaJf0/c1PAgf3kX+S8deSN/lLksOUj0Ss8P08X83+dH/fMoy6F9SWF7Dq1lHdwHlBcxh1Pirio/4U5IhiRT5z/Kpx+WvnS/0HX5mhiulrbMzERPUlgx/ZDMv7X7LckyOEyyCusfqj/xP49TKJM9u7+Flv8AzlLLYzeVEmYq0/1hPQKkE1IavCn2hxwyxnnv6UcJHPanpX5ewXVv5fsIr9ma6FvH6hbry4itcEZcW/egm09uII7iNoZQGRwVYHuCKEH6MZCxSHjf5I3E/l7WtW8k3VStvIbiAn+RjRv+CrHJ/s8jjlxD+r6WXT3PacsYuxV4ZAx8ofmo8THja69ByHh6i1b/AILmkn/BrlePax/nMhypFzsfK/5oiWQH6trlsEUjYCRB38W/d/8AJVcEKBI5fxf1uL8SUFMPzA/5x60nzlqTazNcz29zIqq3AgqeI4rsRyHw/wCVlZGQG4SEf60ZS/2UZw9LUeLoR/nR4/8AfRedeXfyE0G2813XlrVjNPGbZJ7Z2cqW/Zmrw4q5Vj/xLI1OexlUh9XDH0y/0/H/ALpnRIu+X1cLLP8AnHvy5p2lzanpU1tH+k9NuijSlfiKMT6bcm/1X48f2OOGOOM/Ud/630xl/VUxHN7jmUrsVdirsVeR/wDOQtnJbWmneY4lLjSrxJHVf5GI5k/Sir/s8qJojz9KQe96hpWpwapax3tqwkhlUOrDoQRXLiKUikZgQhNTslvrWa0b7M0bxn5MOOQkNleZf841Xwm8rC025WlxNEaGv7XqLX6HyUeTKQp6xhYpRq3mrS9IQy6hdQwKvXm4H4dcsjilLkCyECWL3357eTrKnqajE1a/Yq3Tx4jJjCfIf1pRiyGMnu+bFvMv/OR3lia3lsLBLjUXnRo+EMZoS4KcSZP+NUf/AFcqyRjEeuUB/s/9z6f9nFTER+oxj+P9L/skl0rzt+ZmtxR2+jaSthbxoFEl0DyIAoORm9Lkf9WDMcazGB6Iyzf6bgl/VlHghH+r4s0eLHoDP/Tf6aM/3Uf928X/ADMvvMGuXtxp+t3cmoXdm2yWyl4Ub9vdAqpxpxf4ft5KeflxcOH+jLh4/wAf500yl0NQ/o/zv+P/AOnZB+W/546L5IthFaaQDfcQJZudWZqfF9r4kXl+zkoYsYPFLjlL/N9P9VIjDrxX/mofzd+avmT83ANDsrOPhvII41LP8G5PNunw/wAuObJCO9cv4vql/sGM5AdP99JNPys8yfmH5qjk0fRNTSGTTlUGOZV5cd0pUxPy4svF+WGWoIG0Rk/pR4eL/Z5If7FBmQLAv/S/76SfJ/zjL5m8zaodR85X8UqsCHZGLOaAhAg9OKNF6f7HMWWWeTlHw/63hx/2OKU+L/OYykZf0f8AS/7mPoZr/wA4xzHT9O1DyxcfDdabdurL34t9lv8AgkfMiBsX3sq2t7XkmL5nSc/lF+YfoM5Gi618VKfCrOxCb/Z/dv8ADy/kbK8J5xPT6f8Ae/8AE/1mUe57J5x/MryvosD22tX0MazIUZAeTFWBDfAnJqcf8nMj8vKQ7v6xjD/dshjP9X+t6f8AdPlf8vfzj1byf9d8ueV4BqCXE0j2zBGZwfs+okY+0vppy9Nl+Fvif9vICccYuden+lwQ/H9X1f0kcQHPemX/AJaflhqH5pTXupefHu1mt3jSISVU13eRBG6/CnGi/D/M2Y88xz/RKO383h4P9hL8f6ZhKfH8P5vC+m9I8v2OjxLBYQRwogCgIoGw+WGGGMeQ/wA5AiAmWXpdirsVdirHvMfnvRfLkfqardxQ16AsCx+SD4ssjiJ35f0pelsGMny/rMCvP+cnPK6o4sfrF1MuypHEfiPgpwyjGH1SgPiigDuQkz+e/wAwfOsAi8v6YNLhlIH1qdtwp/bRXHh/Kj5jnVYx9AOY+70xl/S/g/00keJEfSDP+t9P/Eqtr/zjPDqIE3mnVLy/uCQW4vxT/V+MStT3Xh/schLJmnsZRhH+bEcX6Ywj/wAqpIM5S5n/ADY/w/73/YPRvK35X+XfKwB0myijkA/vCOT/APIx+T/8NlY045y4pn+dI8X+x+iP+bFr4fj/AFmWZlM2MD8xdCGqPoLXca38ZCmNjQ1IBoCfhJ+LJjGSLH/HmfASLYj/AM5FeVG1jy42pWu15pbC5jYdaKQZP+FXn/sMxZbES/zZfj+swZd+WnmRvMnl2x1aT+8nhUvT+cfBJ/w6tl5ZSFMnxYuxV4l+ddnJ5X1vTPPtrURwyLb3YXvG1aM382xZfi/4ryqPpl/X/wB0yid/e9ksL+G/gju7ZhJDKoZGG4IIqCMuIpBFInAh2KuxV2KuxV2KoF9Hs5LpdQeCNrpFKrKVHMA9VV6cguVeELv8f8SikHpXmmx1O7udNhYi7s2AljYUYA/YcfzI/wCyy5bW1j8f0fUzMdref/nVbfVtW8u6vH/eR36wn/Vkpt/wuVE0b8li9I12xnv7OS2tpjbySDj6gFSAevH/ACqd/wBnJkn+Gv8AOYjZj/kj8s9E8rK7WCCW4dizzyEPISf8vtlJwWbn+8l/SHp/0qK6nmhNc/MITPNp2ghZJoyUlupCFtoCRuzzN8Msi/75j/a+3xy+hH0j15P4cUR6v8/+GEf9l/QbeGvOX82P++/m/wC6S/yBr3lLyzbx6HZalBNdSOWkfkKySNu7ll+D4v2V5f5GShp5xFmt/q3j/pYx4uJfDI32+cf1sw1Ty5o/1g63fwxGaAcjM4FVCjryPQKuY8sImbNn+jfp/wBK1cNvCvzd/Pe28waRc6NoVtNLDcFYfrNKITyHwp/Ny48cvnwR2v1D+GLbsPMsfvfIfmDSrzSLzX7k2MV6Y7J/qxKui0AQSP8AzNmPjyn+AeHt6ZS9fF/S4GMZnp6HqN55F/L/AMioZ9fdJZG+IG8kMrkf5EP7Qr/xVlscOTJ9Upy/z5Yof7GUf91/mrwGfMn+tI8H/E/755t5rvYfNF5HqH5YaVcx3cDAm7iHoxED9j0/7tv+Ff8AyMq4oac+mRl/Oxx4ssf+K/3iLjj5G/6Mfo/H+legQflv528yRJJ5j1g2wdRygt1pTboSvFWOWfmMh+gDGP6X1f8AFf7NPiS6VBOdM/5x58uQFJL31ryVerTOSCfGmVmE5fVKX+b6GBs8yWaaX5K0bSqGzs4Y2H7QQFv+DPxZH8tHr6v63q/2P0o4QniqF6bDL4xA5Mm8mrgKYKV2FWM+ePP2neT7X6zqDVkeojiXd3I7IuERvc7D+cyEbVPJHmmXzNpy6hNaTWLMxHpTCjUFKOP8hsgJxl9B44/zkGjy3WeVfPem+ZZLq3sGb17GUxTRsAGBBKg/CWUo3H4W5f63HJ1tY9X+m/3wikimS4GLxr/nJe1Nzp+lRR/3r6jEiH3Ib+mVzNb9yQ9dmtI7iL0J1V4yKMGFQR0NQcZQEue7F8zW35G6f531/Xjbt9Sgsp1ghVVqvOhZ+S1+zy/lbKDGUdodP53+54v+OzUgjl+Px/nMA8yfll5p/LK6+vRiUIrAxXFsxZKjfhIqhZE+H+ZV/a+3lmPVmPpJOPi/hl9E/wDO4uCf9T6v6EWUcvD/AEf9zL8fiL1fW/zK038xvy8vGu2RNVtI0eSI/CRIpCiWNa8irf5P2eXB8vyQv1Dv/wBL/RZmPUf9It+S9N83/mhp8OoXOoPpmlqqxxpDUPJwHB5Wb/KbIHUSG2MRjX1ZJfzkHIf4dv6THfzv/KOLyNplv5h0y8ne+WZY3kkcliWBZCh6rx4fZyEJZBLikeK/L6P+OsYmV87fRvkjUm1PQrC9kcSST20Tsw6FmQM//DZcVlzQf5iebbryrpT6nZWUmoyqyr6UVa0P2pDRXPFfZcrOSEN5ngj/ADv+PfTFFgc3kR/Ovz/q8Mg0vy68TMeKPIrfDXoaS+mH4/zceGH85gA24pn+ifFh/wBKof79Jy4x/OP+yj/sI/75I/LX5RfmPJqUuuXFxBbXs5DGWSkjiv7CCnwKv+S37K5T+YMzfBx8P0+Jwwj/AJv1MfFN3w3/AFv4P6jLpPyb84ahX9O+ZJFgoCfSqvz3+Hiv+yy78xmO0Ywh/sv97Jl4k+lBjWo+Wfy38rSenqM0+tXw6x+oX3J478Sqo3L9lpcM8eQj97OQ/o/8c9c/870xSYE/XI/j8fz4xQQj8x63fI3kfQxp+lS27W8qyxgJKrFhzkeYRfFxP2omlf8Ay3+xmIJYo7RBzf1o8Uoz/oZYy9H9WeWMf6MWHHCP0jxP83/p7xf9PU78o/8AOOOvpaLp+u6q0dijchbWzMV3PI/FIEUH/nl/ssvjnykVH92P6XDx/wCw/wB9lnH+gy45cuX4/H856DpH5AeVdOmguvq5mngJYNKxbkSKVdW+FuP7H8uVHCZfVKU7+qO3D/sfxJhw3z3eiwW8cC8IlCKOygAfhl8YCPKgyAeU67Zjyz+YVjrQ2ttaiNpL4CZAGhLf8ZFVY0/2WCGxI7/VH/ffj+kkdz1vLUOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvJv+cgHWaHR7Akk3GpwjiO4FVb/AInkJsovWAABQdBk2LeKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvIbPifzUuAwAIsF4nuTRK/8LlXX8fzWXR69lrF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVj/5g6cNS8vajZUqZbWZQPco3D/hshPkqQ/kTqCX3kzTGUj93CIj7GMmOn3LkgElngUA1HU5ERANoXZNUm8w+WNP8w2Umn6lCssMqlSCBUV7qf2W/wBXMWWCB6CNfTKI+iX9H8epjKNsB/IjVrm2j1DyfqLl7nRZzHGzdWgfeA+/Gn+wR40zJEuIWef0y/zWw7i3q+Fi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqgLnWbK1b07ieKN+yu6qfuY5bHDOQsCUv6olJtjilIWBKX9UFFQzJMvKNgy+INcrII5tZiRzeO6iB5z/MyC2PxWPlyEzHw9eSnH/ZL+7b/nllWTpHv9Uv6sfx/slkP+KRP/ADkp5vn0bQE03TJHTU9Rmjii9M0cAEO5WnxfFT0/9nlolwer+ayjtu9D8m219aaPZ2+rP6l9HCizN4sBxYk92/m/ysgJcW52tiTad5JDsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2KtZCktZAq4d8MQreRVb06ZHkrtsVbA8MsEaVsZKKtjJBDsKuwq7FXYq//9L1TirsVdirsVee/nH+ZzeQ9NjmtofrN9dSCKCOhIJ7lqfEeP7Kr8TNxxBiN5cv9KyFdXm+jf8AORnmPS1X/FmiTrExAEsUbrse5R+QLf5PwYI6jDPYHgPv4o/5vF6v9lJPHA/0P9z/ALL/AIt6b5H/ADo8vecJBa2Mxju2r+5lHFzQVNP2TlphtYImP6K8PUepnuVsEINStjL9X9VPW6ceQ5ePTJcJq2fCat8vfnrcP5D82DW9B1A211doZZIg3IB1/Zlj+L91cfaTmjLz5fsfZjCWSPP1Y/4Yy+nh/ij/AJv8H0/148LKJIHkf538X4/h/wB7wMk8pf8AOVo1SGK0l0ya41VtikH2Wp+0gPJht+zlhOMCyTD+jw8X++UiPPcf0a4mZDzV5t83xNHo1o+iyQgsXu1DrJ0CxJTiyN+1y45j/mIf5P8AffzuISxcH+m+trEx/D6v60ZRXflx+Y83mF7jyn5ri+r61ErK6dFmjPwGSP8A5t/Z+PJ3HLG47fzo/wAUJMjUtx/nR/msQ86aTN+XWq23n3TYvTtg/wBV1GBKgMnIolyo/wCLFCSf5Lcf5nyjCeA8P+Tn/sZ/j6f89jE1t0P+6e9WF/Df28d3bMHhmUOjDoVYclP/AAOZBFKRSJxQ7FXYq7FUg87+VLfzXo9zo119i4QqD/Kw+KN/9g4VsqyRsbcx6o/1vx6VLzT8k/zLhtNEm0fzNOlte6I5t5DM4HJFJEbDluxVf3fFeX2V/my6A8UWP878f8V/E21xbj/OdrP/ADkrYzT/AFDynZT6tdVIDIpVK9jX7XH/AIDJTljx/XL/ADY/V+P6vExqMeZ/zYoFvKv5iefl463dJo1g+5hh/vKeBI/42bKPzUj/AHUa/pZfxxMfFPKI4f6UvqeA65+Wr6d5vbycimSSe4jjjlaoIViG9Wn7XKN/j/2WViZ4d+Y/0vGofdWl6ZBpdtHZ2iCOGJQqqBQAAUycICIof9JS/nIApGZar5YuP8U6V+YF55f0vUWslupHubZZatFJyJlEdD8P86/668MiNRKqAjl4PTwy+qMf639VmJkj+dw/wyZlb/nVrnk7U00n8wLZY4Zdku4QShPYkDbj/N+0mShlhlNf3cv5skgxlt9BZf8AnP5WPnXynKmm/vJ1CXVsVP2ivxrwP/FkZPHKcvp3/m/7n+JhyeU/mf8AmJ5f88/l56l5Mses2xipASPUEwIjkon2jE6M7cv9X9tculiJAmPo/nf1v4fx/uWZj1H4/ovTP+cd9fTUPI9jI7itqrwyEmlODHj9r+WL08aLE7sm8yeUNB8+WKi9SO6gYVjmQgkCvWKZPcfstlOTDZveE4/xR+r/AI8wMd2FaT/zjXotjqEV9PcXF1BbsHjgmbkgI6deq/5ORMck9pSuP+yn/WXfqTJ6+AAMvS7CryH8wCfLHnTSPMoIjtb0NY3JaoXf4oWZh/lfzfD+5X/WyuI9dfzx/so/iP8Asmce5nuree9F0q5jsL27jjupWCpFXk9T9kFE5Mtf8rjl/hmr5f1iI/7pBiatkOQYvGP+ckdPksrXTvNtoK3Ok3cbHw4MR1/2aIv+zyo7SB7/AE/j/ZJB3W/n/ci50TSvNumnn9SuobhGG44PQ1/4IR4ZHhl84shsXsVndR3kMdzCeUcqh1Psw5D8MsYPO/zblGiXekeaFX/eS7EMzDtDMDHJy9lPHj/lZVyl/W9P++iyH3obzEn+F/Otjr0QAstYUWVye3qD4rWX+Xk393y/l5fzYx9MiP53q/zv4vx/WUd344ovVMtYuxV2KuxVD3lnDewvbXKCSKQFWVhUEHqCMhKIkKKvFYf0r+UF/LFHDLfeVp35pw+J7cnqtO6f5/ayEMoHoyemvpyfwyj/ADZJjIHaW382T1Xyx500vzLbC80ydZIzsRWjA/yuh+JTmSYEef8ASj9KTAhKfOn5reX/ACfbtPqV0pcD4YYyGkY+ARTt/rPxX/KyQxGrPoH86X49X+azGM9fSP50vx6ngv5M/mLrenxagdE0Wa7S/u3nicVWNOW3AtT0yq/B/u1MxRmxQ2JJr+GPqnw/7KX+wYGUR3/5v4kztfJXn/zUzTeYNRGm2jdYIaVp4Gnwj/ZM/wDr4fzOQ7QjGH9KX1/8X/sof1UjIT9I4f8Adf8AFf7NEWv5KeTNMUvrd59ck/aaeYAeP2AcTp8uT6jP+rH0/wC6Qcc5c+L/AHDzT87Ne8q6JHYW/k2OycySOZ3VRLxCceCEPy+1zfE6QQ+oGX9acv8AeyigYxHmPtl/xTMR/wA5A+UtE/5RrSJJWrxLwwrECO9Hp6jf6rLjHT4Mf1EWP62WcJf18so/7GSeGEdyf86I4pf6aXA8+1/83df1rzhY6zoVnLY3UifVY4p2LJIW5IpIIij/AN2K3H7PJVfLBqYC+CRzYx6pY/p/2EZS/wB1xJjmH8J8SP8AN/6Rl/v2cWv5Ledtc9RdYvoLC3uW5zR2qBSxJq3P0hErN/lNyzEEz/BCOPi/il9cf91Ph/ocUWsSr6RGH+6/H+ckPmj8mtL8i+a9EmZfrGkXcgt5hNuDIaoWfwDKysv+o2GMSfTLe/VxR9P+YmIvY7vpXS/Kul6UwewtYYHC8eSIA1PDkByyUMEYGx95QBTxzTbGPyP+aso4cLPX4CUPb1qh3H+s0ifZ/wCLlyWKNenu9Uf6v4/3LKIe0alr1hpS+pqFxFbqO8jqo/4c5kwxylyBPwZCBO4B/rfwvErzzxoXlbz0Nft7yCTTNZtuE7RsG4SRU4SOEPIclH8v82VxwmJ4aq/VGX8P9KP83+mkQPL9Lfm//nLTSNPl+raDBJqEn8+6pXwH7TZfwxh9R/0v/FSTUY8z/pf+PPKfzV8z+bvPulLrGqacLTS7R+SScSCC5EVObfEVZiv7P8uYZz45H0fV/O/Hpa+MHl/pvqZ/+Qn5F+Xtb0SHzJrAa+uLrmSjkhFKsU6A8nb4eXJm4/F9jIzjLIdz6f5sfq/zp/8AEcP9ZjIXz/H+d9T0ry/+R2ieXvMh80aevpUi4RwKKIjEem8q778o/h4t+1yf+TjGOMxNX6P6Xql/nSl+P9L6oxjw/j/fSL0kADpmTVM28VS7VNesNLXnfXEcCju7AfryyOMy5bs4wMuTC/Mv59+VNDi5/XFupD9mK3/eMT/sfhX/AGTLkvCr6iIf1v8AifqTwd+zEj+b3nTzI3HyjoDJD/v+9PEGvRlHOJfh/wBaXMc6nCNo8eaX9D6Yy/p8PH/sp4mHHDpc/wDc/wBX8Til2seT/Nl9H6vn7zHDp1m53hgISoHUBqRKzL/qy5OObLk/u4xw/wBKX1x/2UvTL/hrOM5n6QIf7v8Aq8X/AB+TG9P1P8pdBuFS4a41OVGoZpQXSvjRiq/8CmROmlP653/RieGEP9JH6f8APkxOM9Tf4+mT6F8r2+g31rFqGiQ25gcAo8aKPxArVcq/KxhtQ/3X+6YnHw7dzIumXAK7Crz/AMy/nToHlnVm0XWHkt5VjEglZD6bA9AhXkxb/Y8eStkoREuRG31R/mshG+rMND1q21qzi1Gwf1LaZeSNQiorTod8iRSCKecfnh+Vlr5g0q51SwhVNZhAlSVdmb0/i4VH2iyjiuYxj4cuMXH+dw/7r+sxGxtPfyu80R+e/KsN1eAM8sbQXCnoWA4SV/4yL8X+zzImBIe9nJh35B3D+X77VvI1wT/oNwZbfkdzE/h7U4SfD/vxsGM8UfOPpkvMPa8kxQeqarbaVbPe30iw28QqzsaAD3wiPEaCQLS65h03zno7xIy3FhexsoYbgg1XkK91b/hsry4+h/ElIp5t+QmuXGlvdeQdUBF1pbM0TH9qFm5L/wAT5J/kN/k4Yz4431+mSTuLezZJi7FXYq7FXYq7FXYq8W/Na8/wH5lsPOkRpb3NLS9XsV6pJ/rKv/EFyuG0q6T/ANjL8f75nH70s89/mFN52uLGDyZaS3/1C6S5aQqViJQHgvM/5RxyyhDYniP82PqQSI89/wCjFPYvJfnfzQfU8wakNOgP+6LQb095PHB+YmfojHH/AEsnqmviH+ECH+ykr+bNHt/y28p3raQ8puLjinqyOWbm59P1Kt04qzN8OGJkN5SM/wCt9Mf6sViSeZMv6zGvL/k6x846wNFYM3l/Qoo19JSQsty4DyNKR8Ttu3P/AJuyoAgcINcfqySj9U/89EthXf6pf0kb+fn5e6NpvlSa90uzhtp7V42V4kCsByoRyX4v2sEcIgbF/wCdKU/91JjGNPS9AuY9Z8t281+vqx3FohlUivKqDmKd+WXyFjdlJ8+/mJ598tR3uleX9EiL6VYzCeZIVNWYGqRU+0zcvt8v5sicEYDnV/VKXq9P9ZmICPPqmP5laz5v8/6HJcQ6aLHS7Yi4V5WpKfTqQ6D9n4cjLPjv0CU6/wAp/Aw4x/DZ/pJn+RH5faH5r03/ABJrIfU74ylS1zUhSoVuIRmZXX4+XJv+BxyRllPqkTX8MfRH/O9MZ/5sZcCz9XM8X4/H9F75aWkVpGIrdFjjUbKoAA+QGShjEBUQI/1WNUr5al2KsQ1f80ND0fV10LUZvQuXQMpcEIa9B6h+Hlkox4+VWP4f4mcYcXL/AErLI5FkUOhBU9CMix5L8UOxVQurqO1ie4mIWOMFmY9AAKk4pAePeUPKr+f9cPnjWQTZQsY7CBhsUUmkzhv5m+L/ACson+8PD/kx9X9Of/Eokb26D/ZPaMuV4Vrd1H5F/MqK+ci303WYSszGgT1FBHJj9lW5BGdv9bIYhRMR/WjFlDfZMtZ/PK81K6ew8jae2ptFUPOQRECOyH4eX/Bf7HJzyQxbSNy/mx/H4/nJJjHnv/Ri8p1Tz95s89apZ2Z071LzSZmlaJKheYICeof2fTpleTPA19Qv+H+KSmcRy/0r3j8qPzAvPNCXdlq8AttT06URzKpqp5AlGX/gctM4zFx2v+GX8KJUdxt/RYz+U+tpZeb/ADBos2zXN0biKvcgfvVHi3F0b/UyEEkbe57K6BhRhUe+GUQdiwfFv/ORHlj9Febbn9HDgt1As/BRQd1lAC/a5cGkymHo2H0hMdnp/kf8+JJtEsdJ8t6VLeXsEEccgUcY1ZRwPxD+bjyy4yx4huef8MfqZHhH/ExYZ5881eaPzH1CPR5NKLjS5DJNBExILEcV5v8Assv7H+yyGTNAD+KF/wCmYykK5SF/6Zkn/OP/AOclrpEJ8oeYi9tcwzukTSCiLU7wu/7Derz+18OXwAyDbu+n+czA4vx9T6SBBFRuMi1rJZkgQySEKigkk7AU61xA7l5vIvMX59G6uW0nyTaPq16pKs4BES0/y/2v+I/62GcoYvrP+bH6mZ4Y89z/ADYoO1/KnzX5sYXXnLVGhiY1NpbbKB/KW+z/AMSyn8xkl9IGGP8AOl9f4/zmPiS6VD/dPQPKX5Y6D5U5NpVsqSOFDO3xMeNaGrfZPxfs8cqGnHOX7z/hnDLh/q+lr4fxL+Fl2ZI2Zuwq7FXYqwj84dAfWPL0/wBX/wB6rQrdQkbkPEfUHH3ZQy5VPbfuP/SSQaZJ5c1mPWtOt9Sh+xcRJIB4chUr/sW+HLVIpM8UOxV2KuxV2KuxVD3lz9WhkmoW9NS1B1NBXbAVDxHyT/zlBa69rKaLeWT23rSenG4PLcmgEg/Zy2QgRsf9N9Mm0iPS/wDOe7ZW1OxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5D+dKGfX/LUCbt9dD09laNifwyubIPXssYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5FAlfzTdzvSwA/XlQ5suj13LWLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqySMSKUPRgR9+CleRfkY36Cv9Z8nNUiyuTNEf+K5KUH+xyEDt/V9LLo9gyxiknm3UNR07TJrrR7cXl5GKpCTTl4ivywGcY7yuv4uH6v8Acy/3Kggc9/6v4kxPyl+eWha1/ouoSfovUk2ktrr92VI60kfijD/gW/ycsjAZBcCJx/o/V/pf+J4mQiJbx3/3TGbLXNO0v8zZZobiI2+p2A5OJF4c4zX7fLjy4pxyMcMgSCDZ9UY8MuJPCfN6Zeef9BtDxmv7dSP+LF/gctjgnLoyGKR5NWf5gaBeyrBbX9u8jUookFTXpQZI6aY3IKnDIdGRAg7jMdqdirsVdirsVdirsVdirsVdiqyUEqQvWhpirwDyl/zjNaalLdat5zM8t5PPIUj9Y/DHyPps8iHk7sv+V8K5imWTLvxTx16eUeP0/wDDYz9P8zhiiRMush/pf99xonzZ+RGk+VtOudb0W/vdPe1iaQBJiVqorvz5N8X+tlsJZobCZn/RyCP+94If7BMDIbXLf+r/AL3gYZ+V2rea/wAvrBvM+pWf17S9UYTXEqkmZQCQJH/4LlhjmgZevijfpjk/gSJgn1f6Zln5csn5p+b5/Ok2+m6aFis4n68iOXqMn7LK3xf8DjlHEeH+EeqX9JZd3c+gMsQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYFdjStZAhLsACtAUyICupgIVoD78jSt9ssCtjJRVvJodhV2KuxV2Kv/0/VOKuxV2KuxVQmtYp+JlRXKGq1AND4ivQ5VPHGX1AGvp4kVbV16AQtc8eA6lqU/HJnGJdLZVxPnz85YrbX57M+Rbf1dYhnVjc260VRuoDSKOJ+LKJCGmN8pn/Jx9X+mgtDGb/i/mxTD8u/zE826T5mi8o+dQjG5QvHIKV6EgAr8LLyHHMiGYZRy4CP83/Ys+Li6cK//AJyI8jW1jap5v0cG31W1mV+UaklySPt8enGnLk3w5SCccrB+r6oyl/uOL/ctUTwn9rDdM/I/VPzSj/xjrOoRJLfgFFjQkClYgrcivHjw+yvLIZJTJ9MYj+tL/iIy/wBkmRJO1B5t598lah+UuvxC1uC0ihZoZlBU9fssP9YNlmLIf4un+kTAl9T+U/zu0W98tw69qtxHbyceEqEjl6ij4wifaPL7S5lDGZcuX+xbOC+TzD8y/Otr5oa384+V7e4F3pDqzTNGVV4q/Etf2uLH7P8AKzZjSlDHPaQN+mUYsAYxPO/5z1LVdf0TzLpdvNK3K015RanccVYqxQkN+2sn7vl/q/y4cmO9v86P9aP8STHp/pUq/wCcf9VuLG3u/Jmpk/XNHlKqT+1Cx/dsvsv/ABuuTjLijf8Amy/rIJsX/mvXsLF2KuxVJfMdtq0sSnRpoopVNSJULBh/LVWQp/rfFlZkY8gJ/wBGRMP9L6ZLdd3+c8Z1HV/zh1yd4LGzttNg5FPUPEmlft8pXlZvh/33Fh/OQH0wnL+sJf8AVqH+m4mQyjpG/wCt/wAe4Iy/0snn+p/k9LoPnDS184XI1GDVHPrOagM/Ti5Y8m+Ir8Xw/wCplQlLJYl+74v9Tl/x2PCjeXPr/N9P/EvqzQ/LWnaHCLfTLeO3jUUARQNvoxhgjDlz/nS9Uv8ATMREBGXt5FZwvczkJFEpZmPQACpOZA3ZB8P+bPzCudc84Dznbo62VtcxLEwFPhQ1CV/mkUO2AyANMgaNPuGyuku4I7mP7Eqhx8mHIYWFK+KvNPzo/Ly58zWcOpaORHrGnSCa3bpWm7Rk/wCVT/gsoncTxDevqj/OigHh3DyTz7+aF7560NPKk2mTJrkkqJJ+7JUcWHKSNqfDyyWSeI+oEcX8Mf44M5GHP/Y/xwfSflrS/wBFaZa6eTU28EcVf9RQn8MlHluxYt5h/K3ye87+YNUsYA8IMjyGqrtuXkQFY3/2a5jjTAnYyH9GJ9H/ABUf8yUUCF/F87eRLY+bvMF15V0W8msvLN1NJcmL7LSKPtxp/kt/L/Jx5pzXMjilCPDEiR+nxP5sfx/V42yzEUK2/ifW+j6Tb6PZxadZoEt4FCIo7AYxFCmukdk0oa+v4LCFrm6kWKGMEs7kAADxJwxiZbDdIFvJvNv/ADknoenN9S0JX1bUGqqJAKry6byd/wDnmr5ZKEcYuZEf6P8AH/xMP87/AGTMxEfqP+lYT5w8p/mN+YemSXWuiDT7S3UzR2iD42dQaE7tIp41/vJV/wBTMOeo4vojUf8AVJcUZ/7nj/0mKEJfzmByX9Ir+lL6/wAf5sGdfkH5B0a10W119IhLqVwhaSaQ82BqQQjH7HT9nGUOOXFImf8AN4vpj/m/76SCLNnd69l6sa/MfQRr3l6/00irSwOFr/MByQ/7FviyvJy93qV41+WOq/44/Ly/8sTj/TbCJ4gDsdqyQmn2v3cicf8AYrhybxsfj/pJnLvei/kH5hOs+UrNpCTLbA271PeM0T/knwyd2iTIPzE8tHzJoN3pSmjyxngf8pTzT/hlyrJy2Y2xPS4B+YPkdbSUcLyNPSJ7pPB8KuD/ADcl5f7LGe44h09UWUjRsf1mXfl/rb6zo1vczVE6r6cobr6ifu5K/wCsy8ssvi3WTI8LF2KuxV2KsM89fmlofk+PjqcvKdhVYEHJ2B/yPD/WyXh8Q9VCP9L/AIlnGF83zbq+mRebdXfV0eLyzprbu7S8XcdeQhUrydv5V+DKsZlHbBxn+dKUuDFFnESH0WP6V8EFCXQPy20SX61Pf3OtMalbeFSlT/xbNXozfytyxngmf7ycID+dH97ln/u4x/zmBxkfVIf5vql/upx/3D0PRNa8/wDmOCGy8padF5e0qJRxaUVJHahkTk3L7XJYvi/bfK458cNscZZv6Uv+K+j/AGU5MRkA2iL/AKUvV/x3/dppcfkX5p1yg8xeYJZYq1McQIH+x34/8LkzqMx5CGP+r/x2MV8WZ7of1fxFNrP/AJxj8sRlXuzPdMN/3khofmMr4ckuc5f5rA2eZJYh+e35OaDoGkRaxo9oImguI/VoSQY2PFgQT/NxyuOLgPOZv0+qX/HUge973oVpZRWcR0+KOG3dQ6rGoUAMOXRdssGngOg/zhxS/wBNL1Jqtnm3/OQ9kYLHT9fiWr6ZexSE9wpPFvo5cGyXCAR/pUgsp8yfm35b8uW4nv72OrKGCIQ7kEch8CdNv5uOZgwyPP0f0peln4Z6+n+s8O/Nf82x5/0s2OkaXdkxSrNBcFTx+AmrcVH7S/D9rMXJPHE/Vch/CxJiPNNPKf5ofmZ5iskudL0+3mhYcBKxpRl+FufIr8Vfi45OWqxx5xmf6vFw/wC5Sckf5sv97/uUu87/AJZ/mT5mtP0rrNzAkthWaCKIgOCByPpyINm/1pcoOpJNiHBX8X8XD/VlKX+5YHISdhw/j+tP/ep75B/5xz8ua/p9rr+p3F3fSXUYkcSSUHI/bGw9b4X+H+9xn4uQ+qe38PCPVw/1pyyx/wBhFZEy5m/x/S4k88xf84weWJrKYaTbtFecD6RMrlQw6VDlvhb9vKzjkN7lP+j6fV/sYsaplnlD8n9A8vyC+gs40u5IkWT9pQQBz9MN9n4h9rCMAO8rl/NjL+FeEMh81eVbLzPpk2jagpNtOoDBdiKHkpXwKtlphtUfR/N/6RZUv8q+WbPyxpsOj6cpW3gUhQTU7nkxJ8WY8slCPCO/+kqM1TV7TSYGu7+ZIIE+08jBVHzZstjEnkkC3m3mH/nJHylpJ9OGd72TpS3UsK/654r/AMDyy04uH6jGPx45f7Dij/ppRbDCuZA/2X/Hf9kx2PzV5/8AzDQxaPajRdPc7XEtfU4f5Ib9r/VVcxjqYcsYOT+lL6Px/p2vxAPp3/pSR2lf84zaU5E/mG7udSnqGPNyFr3HH+XK5eLk+qX+bH8f71jIylzP+lZzoH5T+WdClW50+wiSZPsuQWI9xzLcW/ylyv8ALxPO5/1j6f8AS/TJjwBh/njzN5z1vUn8veTrRrOBDxl1CdSqjx9DmOJ4/wAyq7P+xx+3l35iEdo/vcn82P0w/rfw/wCn9P8ARk2cYjy9cv8AYx/3v4+hbo3/ADjlp8kgvfNV3ca1d7EmdyEB9kqzEf67tkZeJl+qXDH+bj9P+y/4mMGJMpfUf9L6fx/sWej8ufL62TaYljAtswoVCD9dMr/Kw/49/H/pmHAHlP5PSP5F816h5DmY/U5az2nL5VYA/wCr8P8AsFzIxyJFH+BuG49z0H84dR1nS/L8+peX5ViuLUeo3JeXJF+0qjxyQycBuoz/AK3F/veFYyroD/W4v96k2meYvMfm/wAl2t9ojwQ6ndpSSdjxWLjVXkVOEtXbj9n9jly/ZwSycJsRM/5sfTwx/wBPKPp/0ymVHl/xMf8ATfw/6Z8ufmSdM+urbxXdxqWpLKFubuVhwY1oUgRuTcFb9pm/2GJ45bzIP+1xHoh/n/8AExhFlIHqb/o/wQfbvlCwisdHs7a3AEaQRgUoB9kb7fzH4sjCNBrTWeISo0Z6MCD9Ipkzurxj/nHumhXus+U3b4rS6MiDvwfvT5cMjjNxZdG/NqN5d/MjTdWXaHUY/q7/AD3SpPb7aN/sMhHaR/0yI7vasuQ8s/5yQu5IvKU1vFStxJHEa+BYVpkZGkhmnkPSE0fQrGwiUKIoIwQPEgM5/wBkx5ZHGNkPNfzVhbyl5o03zpCKQOwtrojpxbZSfvwR9Mq6T/3SYnp3vZYpVlQSIaqwBB7EHcZahUxV2KuxV2KuxV2KvK/zU/J2PziZ9Qu7mVjFARbwbBEcAnkafa5f5WY8zPofSPVw16pIsrPyn83afo/km3vtSZLZLYNFIaAVZCV2/nZstx4x02v1SbOG2R+Q/wA19G87NLFpjsJoftJIOLU7MB/Ll0o1uCJKY1y3edf85Kavrw0uSCG0VNLR0LXDOCxINV4xqeSry/mzH8SP01O/51cMP+PIEgO+/wDYsb/I628+zaVLqGhGxW2u5mctccizMPhNOA+z/rY+Pwn6JZP6Vxj/ALqUU+J/Rv4/8eQn5o6v541a4j8lah9Vup5yJWjtajZTyCyFuPFduXxYyzjhsxOP48Uv8z1SSZ7cuD+qf+Kkqar+bHmbVrD/AAzomnSWv1MLDcPAebKqjhxQr9ltsJzY8Y2sE/6pH/eqZxj3g/0vV/uGVflZL5M8vhQ9rPb6gd2mu4jUt+0Q9OK/FlUcMMm5nHIf5t8P+wa+EHqD/W9H+xTP8+PNsl9ZReUtBPrX2qUH7s9Iq7k06K3/ABHL5nwxfL+az+kWifyAvLfRvL0ulXrJBPYXEiS8mCiux5VOOKJkLiCbUQMuVlnMH5ieXbiX0ItStWfpQTL/AM1ZkeDLu/H9VJxS/BH+5ZEjhxyU1B75TyayF+Kse83eTNL8zWslvqUCS1UhWIHIGmxV/tLmPPEJb8pfzooIYf8A849zynQJLKeRpDZ3MsKljUhVPwivhlwkZblslu9I1G/i0+3kvLg8YolLsfAAVOTpiBbwjzJ5589PZyecNN9KDRo/ijgdau8dePqPt+19rKxqADQjcfp8T/iWXGBtV/0np0bjz95YidG9NL6NDJTsK/vUH3ccM7/hYnyT2+/3DaY/1CIEW0J9OMbfZHwIPuwCoBAeWaR/zkdpq6HFd6gPV1dyyG0gBLFgeI+FvsL/AK2XUK4j6INhiOfIPPPzd0zzX5k05PMnmhEstPhmQRWa7uFc8Wkkdfi5cf5v+ATMU5hM+kcMf9Ul9Uv+Of7H+ux4r5ekfzpfU+kfKWkafpmmwQ6VEsNsUVlVfBgGqT+03+VhhjEP99L+JgBSYW+nW9s7ywxqjybsQACT/lHvhjjjE2AoDyH8uvMml6X5p1+G/uEgurq5j9NJPhLBVI+Dl9r4jk8cDPlvX81tEeLlulOp+X7q/wBV1fUdH/462lXkdzAo/bVkHqxf5SyqmUCRgeLuuMv6n/HGN1v/AKZmWgfn95av4T+kJ/0ddxj97BcAqykfaANKPv8A7L/JzOjj494mM4/1ox/3ZiyEOLeJifjGP+6eN+btO1H85dbu9W8vLzsdPRYouRKGXc8wrfss1W+1+xmJlnwGhv8AzuFhKVbDf+dwpZ+WzebtD1O78i6TEtjNeESlpSC0SUNShX7TccYZQBxAccvpj6eD/TpEq6W+i/y9/L2y/L+xuG9ZppZqS3E0nVioNW+X2sMIyu5Gyf8AYsRZ57vF/wAtfJFj51TzJeXkRNhcTvJbzkUIYF3Dxn/J5fHlUo2dj6ofxR/3yn7nsH5GXl7deVLR9ScySryRWNalFJWMkn7Xw/tfy5k8fFumRYb+ekWta5rel+VbeRoNKv2pK6VHIg1ZCw/lX4uOROUx9MfqP8SROhtzereVfKGm+V7NbDSoViiUU2+0T4s/2mOVwxCO/wDF/FL+JgBSeZel2KuxV2KuxV2KrJIw6lG3Ugg/TgItUm8peXz5fs/0cr84Y5HMXbijHmI/9ixb/Y5CIIFH/pJQnmWK7FXYq7FXYq7FXEA9cVY7a+QdDtdQOrwWcKXpqTIFANT3/wBbMaOCIN7/ANW/T/pWIiAyLMlk7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXkX5j1n89eXYD9lfUk+kFf6ZWebIcnruWMXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8iA4/mnQ9TY1H3NlY5suj13LGLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeQ3nHRvzQgaM8V1SyZXHiYz8ByuOxKQ9eyxDsVSbWvKWk64P9ydpDcbEAyIrEA+DMKjMaWCJN1v/ADo+iX+mj6mJiC8G/Of8r9C8t6hpWtxWix6X64iu0SoFGOzHwXGEOE8Nz9X8UpylKP8AVlL1JjHpct/6UntGl/l75ahgBs7G2MMgDA8A1RT4TU4JaWJ+qyf6UpcX+6YmAQfmL8ovLetWzwyWUMchB4PGvBlb9lwY+P2cRpxDePFD+rI/77iRwgctvi8K0D/nJa48m6Y2hXkL6lqVrO8KszFf3amiF34Mzt+z/NmcJiQ4pf7H+L/iXJ2O5/zmVaV/zlnaxsI/Mek3dgSKh1q4p48XSBqf6vPIwliy/RIf53DKMf8APhKX+5aozhLkf9zP/ZR/4lI/zY/PZfOdimieRlvHvJJFYyIpUgA/Y+Es3xf7FclPINPvxR/zf+PxjP8A0sWziGLqP83/AI89Z/JLVPMd7ogi82W7wXsBCB5KcpFp/eNQ9e2UDNHLvH/O24f90w4hLd6Jk0OxV2KuxV2KuxV2KpV5otrm60u6gsWKXLxOI2HUMR8NMiSRuFunwzp82oWuhapbXGotFNHKqz2MtQzgHeRCx+0rfbXjkzlnkF/XjP8AFfrj/m8P++bRIkd4/wBk9M1T/nJiw1HymfL+m2skN+8K2yCoK0oE5hvh+Jv5cJhCI53/AEaQAB/xKb/848/lxrPlm/8A0te3UVlayIA1r6gZnqPhZxX4GynHOcthGXB/OlHh/wBLFh6uVGv6T6WjdXHJSCD3GWFC7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXHIlXYArWQKXDACrsSFdkyFcMYhW8mEOwq7FXYq7FX/9T1TirsVdiqSeYfNdloDW63xZRdyiJGpVQx6cz+zXEb7fiTIC07xYsY1vyPb65eLc6lJJNbxqONsTSPkP8AdjKPtt/rcsqPEdr4Y/0fTKX9aX81TfJPrLT7eyQRWsaxINgFAA/DDHGI8tkPnT89vOVpofnvR7ugle0oZFBoQGPwg/8AEskI779WwD7XvmuW6avpE8a7rcQNT35LVcjMWGDzv/nHCZLryr+jpt3tJ5ImFelDVflhAsMzs8X/AOcpvNF1qWujS5IDFbWY+FyN3Lft8qfZ/ZRcgDA8vq/i/nMQR8WBfljNo+n6zG/mqNnsUUtwNd2p8HwftcmyRj4gq6SBxbPoCTzf5x8yafIPKWkQ22iiMqqzgAutDXgnw/s5X4mKA4YxlkH8Uoo4ojYAn+k+f9J8zamsKeXkjf4b5Jo0SvwyA8XVMt4wB7v9yz46fTHm22m8t+btJ82D91BfKtpdg/zMPg5j/W/a/n45CBqW38fqYju73tINcuYuxV2KuxV2KvMv+cgPK36a8ty3cA/0zT2FzEe9UPxgf6y5TP0kSHT/AHKQWU/l75jXzJoVnqgNWliXl/rAcX/4bLymQopvrGkwatZy6fdAtBOhjcDY0YUO+QkLDF5f5w/IzTk8nT+XdCjIkQmeIsQWaQb0Z/h+0PhzGMDEcXOX8X9VjVJd+Q35t6dcaTF5d1mdLXVLGsJSZuJYKfhKmTqy/Z45nwgcguPr/wBlP/S/U3iJly3/AKP8f+lexS6nawxG4klRYVFS5YUp48vs5EQJ2osfDlyo/J4t5k/NPUPPt63lfyFX091uL4ggIteJ9M/8bfawTyDD/Ty/wx/mpPo85f7l6v5S8qQeXdPg0+M+q0KcTK+7tuWJZuv2jlEcfWVGf86mrnueafZcl4L+afmG/wDP+tD8vvL1RboytfzjYKoNTHX/AD5/YyOSfAKH1z+llxcP9Yqv5s+WYPIsOjeYdHQRx6RIsLgd43Pxc/Hk3xP/AK2Uwj4Z/r/V/SksNj72Y6t+fPlTTolka79VmAIWJSx39/hT/h8zfCrmR8+L/ccX+yZ+Gf6Pz/4niYtefn1qesfuvKmkzXDMDSSQGg8DRfh/4fKDnxQ5nj/q/iUmNxHmhrb8ofM/nUmfzxfvHbMQRaw0G3gafCv/AA2VyzZMm0QMMf8AZS/zf+KlFichly9D0vyd+WeheUU46RapHJShkI5Of9m3xD/VXiuQjhA3PrP86X8P9WP0x/3TXwhlLqHBU7g5kEM3n/5bae3l3UNT8vkEQLL9at9tuEv2wP2fgkHHiuQxnav5np/zP4Vvb3PQssVxAOxxV82QaevkL81QoBSw1hWoB9mrg8g1fh4rJ8WVYuse5Me5lX5NSN5f8za55UloEEv1qLwo53AH04cfKu5PMe57QQGFDljF5d+VVND1rWPLDNy4TfWoyf5Zev08srhy9zM7hnujaKulvcGJqx3EplC0A4lgA9PZqcsYiv8AesE1yxUh8yeddH8sxetrF3FbKegdviP+qg+Nv9iuTjjMuX+ml6Y/6aTOMDL8cLxnzJ/zlzptrL6WjWj3SCoLyHgCf8hF5sw/1uGSqEeZ4/6v/FS/4lmIxHPf+r/x5jNx+Y35kfmE/DQbWSytTT4kUqKHuZn+I/7HKJayEdoeo/8AK2X/ABEf9iwOWMfp3/2UnWf/ADi55l1aZbzXL9FlY/Gal3AH8r5jyz5Mhvh/zpGP+5YHJI/8U9H0T/nF3yzZgPqJmvpRuTI5AP0L8X/D4nHOX1SP+b/xUuL/AHKDZ5ks/wBI/LzQNFZZNO0+3hlUUDhByH+zb4v+GwDTQB3uX9aUpR/0kpcP+xYiA/Hq/wB0yTMobM3YVdiqQeedDttc0W7068YJDNEyliQADTZqn3yEomQ25/wqBfJ4H5L/AD21az0+Hyvoumvqmp2hMLOrVjKqSEcMnLbj/NwRf58kcuOABnxf1Pplxf7P/cybCYj6uL+r+OL/AHKea3+X/wCYv5iQNHr93BpNm+31WGrEj/izgW5f7KVv9RcplqJSFQh6f52T0z/3M5x/0mJgchPIAf1vq/33+9/qKH5GflBpCC7i12waXUrGYxGScEo6/sSRK3w/Z/lyuhm3Mif52Pi+n/cz/wBMw2l5/wBF79b2UNvGIIUVIwKBQABTwplscURyA+SQKYn5K8iyeVtQv3glB027cTRw0/u3P95T/JbDCx6e76Zf71I7mY8lbbY5YY3zTS2ONYwEQBV8AMhGIiKG39X6WIFKuTS7CrsVdiry+61TQfzTub7yhfW9wP0ewaQsQgqDReBR2b/glyvJESHpkR/VH/VWM4/7FMo7bH7P+K/4lkflb8rfLnlhOOl2UUbGlXYcmNPF35NlA08f4ryH+dL/AIn6I/5kItXAPf8A1mWKAooOmZQFNiSah5z0rTtQi0e6uEjvLj+7jJ3b5ZMRsMxGxaeAg7jIsFrqSCAaE4FfNuh/nTc+QLzVdA1tJ9QvUuS1qiksWDktw5nkQN1+FUycZiUeKZ4OH6vx/wAVJsMuIXLZ7b+X/mTUPMOmrfapZPp8rEgRuakjs3iP9llYnGe8br+kwJifpv8AznnX/OQ2mSaXNpnnO1FJNPnVZCP5GPfxyF8Mvf6UxNF6rqaRa3o8qgcorm3JA8Q61GSmNkPEPyi0bU9c8h3mgaVcizuo7mSISsCaLX40+H4l5L+0uDjkBcaJ/pS/47JJkRy/H+6eW+afyFuNM1EaHaT/AFm9jtZLqYgUUcdwiV+L4l/abKfEkN5V6j9MfV/svR/uWG9PU/JX5uat5h0Sy8v+WYDJqyRCOedwRHCF+AMS32n4/s5kSyRh/TkfpjH/AH39FsMhHfmT/D/xSC17S9d8ieYtGP6UnvJr6XjMjk8DU70X+XGOoyEVPhr+bH+FkMkjseT1FfINxbed/wDFFqVW1ntjHOuwPIfYNO/L+bKo2DXf6uJqCVf85C6S8ujRaxbisunTLLUUB41o9OXw4ZHhIP8AmpBei6Bqa6pYQXyGomjV+3Ujfp75cVOzyz/nJC+LWmm6UASt1dqXoKnjH8ZoPHITNKEdb/8AORHlS3jELNcJwAWjQkdPh/hlsYj+dD5pAB6x+aT+dvzW8qedNFutGFwYJ5EJj9dCg5r8SUZvh5cshPFxD0kTr1ek+pIjfIxLMPyW84p5m8vwsSDcWwEEoHSqCgI9mXCshTPsWDsVdirsVdirsVaZQwoehwEK+VPKHlA655+u9Au3Y6VZTyXPoE/CWJ5dP9Y5SSTHh/039VN2KZ75y0WLyj540nWrICC2vT9XmVRQE0ouy/7HHHHgPCP4kw7nq/mfyvY+ZrF9M1NPUt5OoqQfmCO+TnDiHd/VYlgEnkzVvK1tFpWka9FY2LH04UngQvU/sRyVj5v/ALHlggckRtHFOv4pSnH/AE0fVFMSR0hKv4pcUf8AfcMkk89WcX5YaFLc2srXWvak4iN1LTmS2xK/yKv7KrgiCTxzoy/o/RH+pFI3Nndnv5U+SIvKmjRQH4rqYCWdz1Z2FTU/5OMB/EerBMvOnmO30CyaeRBLM3wxRAAs7HYKB4fzYTjjzkI17osqB5vC/L91qTa1PDoiLdeZZlrPO1BDaoT/AHUa/wAyr8OVkiNSIv8A1PDH/dzmyJrc7/zY/wA1BQfl1Y6d53XSvObPf/pFBIklTGnqn7QIQrUfs5KPFMEE+F/Rx/x/6aKN5eX9GL17U/yD8o3ls1vHYpbsRRZI6hgfEGu/+yyvwK3jKcf86Uv9jJqEK7/9NJj35Ra1qHl7WLjyDrDmb6upktZT1Mfgx+WZMcnGN/qHpk3E8Qvuez5Jgtf7J+RwFWLflx5dfQtNaKZeMk08sxHf42LCvvxyrENr71Qv5vuf8PTRAkCZ44iR4OwU19snI7Jiu89rZ2Xla5tZmRIvqrIoYgA0XYDl1xGP00OiRG2N/wDOP3mOyPk+1WWeNWgDKwLgFQD+0CfhyyMCe9JiShPMf5o3/mm4bQPIaerIarLesP3UY6HgT8LNkck449j68n+px/3ymo+cv5rA/wAqdOtPIms64NcVLi+sI/WWQrUmvxHh/LyY/azHjAT3kOX8P8MGPDxc3r35hW3+K/JVw5Uo01sJlXuCBzyyfKwqI/JXWv0x5Usbg/aWP02+aHjlgKZM4wsWJeffIGm+Z7CeK5gQ3BQmOQKA4cCqEOPi+1mPLEPqHpn/ADosTHq8l/5xavbmW91aDUHZ7qIorFutEJQV+7LhLi3720m93tmr+TdF1iQT6lZW9xIvRpI1Yj6WFcx5aeEjfI/0TKHF/W4DHj/zmoxBTGx063sIxDaRpFGOiooUfcMthijD6QIpEQOT57t/Mljpv5sX97rVwsEcEBSNn2FKdK/ScsjAzOzYIkq/5x/n7p99ZNoPlh/rMt0CksyAkIp604jkWbJzrGLJF/w+r/dJIEd9mY/kpq+jSaNF5btTJLLHEWm9SF0Vi326F1VSv7PHMeIBHOJP8UYy9f8AsfV/nNRIO1xP9V6fbWsVrGsEChIkACqooAB2AGTjERFDotUueBHZXdQzJ0JHT5YmAO56fStKuTS7FXYq7FWiQBU4qgdN1mz1PmbGaOcRMUfgwajDsePfJSiRzSY0j8ih2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpB5z852HlDT21XVWK26kLVQWNW6AKMIFllEWUB5N/M/QvN9ubjSrlWK7MjfC6/NG+Kn+V9nLJYiNx6x/Oj+PT/nMziPT1/0ossRgw5LuDlVNZeQ+Ymab8zdNjk+xHayFPmTv/wANlZ5rez2DLEOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5NcgD8z4iOpsWrX6OmVHmyA2es5axdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVargJpW8KuxV2KuxV2KuxV2KqFxMYgCqM9SBRabV7nkV+EYCVV8KuxV2KuxV2KuxV4/qITWPzSto4htptkzSN1HJyCg9vhbIS2PvTT2DJodirsVSfzV5ctvMemz6TeAGKdCvyP7L/NW3yrJHiH+5/rLVsN/JuPXtKt5vL2vwnhYEJBc1BWWOp4f5VVXJRyifP6x9X/SSTLi9/8AE9KyaHjP5ef849W3lzXbnzDqUq3cryO0ClahOR5eoef+7f8AV+z/ADZicBybTA4f5v1cX9b+iwIvnT1+e1inXjMiup7EA/ryyeGM/qET/WDIhStdJtLT/eaGOP8A1VA/UMENPCH0iI+CBEDkjMyGTsVdirsVdirsVdirsVdirzvzv+RnljzlI13f2/p3bjeaIlGJ/wAvj8L/AOzzFOCjcTKF/wAP1Q/0svp/zOFgY9d/x/RYHF/zh3oEUwkF5dFAalTx3/2QHLAY5OhA/pcPr/4lNHvZZZf843eVLbeSOeZqUrJMxy0DJ1nk/wA2XAkknrL5vRNG0i30azjsLMFYIV4qCS23+s3xZYL6kz/pS+qSfx6kwySuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK7CrqZGlW0yoxpLeDkreWoawdEtjJBDskrsVdirsVf/1fVOKuxV2KpX5j0OLXLCbTpwCsqFRUVoafA3+xb4sqnGx7vVH+sryf8AIrzbfWV3d+SPMkjtqNmxMLSMWLx+CM3VV+0n+Rlscniji6/xfiLYTxi+v8T2zFrdir5Y/Ob8lpdPh1TzdfXHrzNKjw9uIJ35/wCr9nMXimTvsB/skiyfc9X0r86fLWlaNaHVb6JLj0I+UaVZgaAfYTm2ZwxEi/p/rHhbDjPlH+sfxJgn/OP/AJ701vMmq6RZSlrW9lNxbEgrU/tji3xBqHKowoVzpiR8aRX/ADlrrUMGnWmmKivPPJzPjxXoP5vib4crMAPV/skB5p5l/J3zFcaTH5tmC/WVCubVRRkhUfA1O/8Al5QMnlWL6eL/AIr+ux4ur3zyH+b+m6rZ6Ta9Jr1WiIFAFkjA5IR/lZmcAA29Ir0tnAxP/nHvS7STUtciuIY5Jbe9LIzKGK1J+wxHw/7HMcYxLc7kMJB6t+YXlNfNOjz6bXjKQHib+WRfijb/AILJ5BYsc4+qKEJ+VvmiTzBo6NdjjfWxMFwp7SJ8Lf8ABfay2xLcdWUu9mOLFI/O2unQNGu9UUVa3iLAe/Rf+GxukhGaFem+sLe6YgtLGjEjpUgE4ApFFMMKEPe2iXkEltKKpKpVvkwochIWKV5L/wA49XDacuqeVZz+8067fgD14Oaj8cMDYZHk9iyTF2KvJPOv/OOWheatZXWpy0QcH14k2Dns6upX03/mb4ueYhxyG0Twx/2Uf6nplH/NY8PwSyb/AJxO8tNIGjuL1IR1iEoKn6SnL/hsn++5cfp/pR9X+64f9goBqrl/sf8AieH/AGL0TSdM8veQ7IWduYLKBRX4mCs1P2mLHk+W4tMRuLN/VL/j30xZxxk8v9N/x5LNR/O3yrYqGN6spOwWMFj92ZJxEc+GPxj/AL3iZ8B60GC+Zf8AnKC0tInfTbKaRACBLJ8ChjUJt/rZASx8r4v6v/HmQEO+/wCr/wAeYd+VE3nuG3uZ9F04etqEhlkurhafarx4eq8SlV/yVl/1MwxqIWSAck/p9PFw/wBWXDHg/wBNli18Y51x/j/Mj/s2Wan+SPmnzTbSSebNW5SBSUghqycgDwqGEUI/2MHP/LyUs2SQ5DHH+b/FL/NxS/3eXL/VQckjyqH9H/pH/j6r/wA47eT9BvtGNzcWsc2p20zxSvIORBU/BTny4/D/AC4DhE95b3/Dfo/0n0olC+e73KG3jgXhEoRfBQAPwyyMBHlQUBVyxXYq7FVvEV5U3yNdVXZJXYq8W/5yf0MS6JBrsG11p06OrDYhSd9/8lhlZ2NpBopZeal9V826B5styRa6xbiCVmoKtT4a1/abbGO0iO/1fxM+tPfMsa3jPm7U4PLnnXT/ADDIfRtLxZLKdn2AdT8Bb/J+zwbIQHqodf8AdMwOnenvmP8AP/ynoReN7wTyp+xCCxr8x8OZXg19REP91/pWYxd9D/df6V415p/5yV8x+ZpGsfKVq0ETEqHCmSU/6vEcUb/gsqnnx4u4/wBKX0/6X/imJnGP/FS/4li1t+RvnnzJL9evLaRnkPxPcyhW+dJT6n/C5iS1Ryfz5/1R6f8ANlPgj/pJNZy3/Ol/sf8AS8XD/sXp/wCX/wDzj/qXl6dbq4ttOeUUo0zSzEHxVB6EYbK64+cch/oyy44R/wClUMv+llKbCW/Q1/NlKP8Avcf++fQVtF6UaoAooP2RQV9h4ZlxiBy2ZK2SS7FXYqkeq+dNF0mq397bwMP2XlUN/wABXl/wuWjDKro1/Ol6Y/6aXpbBjJ+P870f7pjF7+fPk21B5ajG1NqIGJ/VkvBI58Mf86P+94kjEetD4/8AEsP8y/8AOVehW0Pp6DFLfXjGipxKqT8/iLf7HAYxh9Rj/mo4QOf+xeXeY3/Mr8zW+O1nisWIpAo4JT3Z+PL/AGWYctdEbQ/2IlOf+xYHOOUf9iOL/ZM+8kxec/ItkLTTvLdusY+2xuUDsf53kY/F/q5Xjy4hvw5jL+dwT/2MPC9LZAw7pn/O/wCrazVf+cqrnRZ/q2qaTGrjYiK9SQg+/pJKq/6rZmgwPTLD/hkJQ/2MuFTEDpKP9b/ieGMltz/zkvr+oW4u9B8vzND+1I4d1P8AqGJFr/w2VHNhh1s/5sP9N9X+6i18UfM/7ljOof8AOTvnFdhYJbkg05RvT5/Hko6nF5S/z2YyQPd/pkJp3mnU/O1Jde8zx6arbGFKoR/xFf8AhskcmU/3YgPjH/j82ZMq9PAP86P/AEkj9T8u+X9JVC/nW4BkND6JdyfmIZG4/wCs2IGo6mA/rH/ccSLyH+L/AE3/AEknL/kHH5hljutP81y3EgAaMs3NwDvtSbkP+BXEy1WMX/sv3mKP+5nFJ8aO5vb+KpcP+m4pI/8Awt+a/lHkmm38eq2y7KJficj5Sjb/AJG5SNYQayQv+lH6f9NDhn/sGnxj/EOL+r/vpemSIT89vNnl5CfNWhScF2MkNaU8T9pcMdThnt6oH+l9P+yTxwP86P8AuXp/5efmVpfnqzN7pbEFDxeNtmU+6/8AG2XShXLf+kmUKZdkGDxDQE/Q35r6haigiv7UTVPUsOJoP9kWyuO39rIcnt+WMXYq8F/PXT1h82+X9Tf4UaUR8j0qG6f8OMqrf3hlF7yop06ZYBTFgH5x/mDN5M0kSWMZlv7txDbgCoDtsGb9nv8AArfabEEDn/pf5zKNdXjH5f8AlfUPL/5jW51+UXF7d2rTys1CAWAJFT/Lx+1lPF4n1Dr6Y/7hAs83ua/m75YbUV0ZL6Jrt24BV3HL+XmPh5Zl+EQOn9Vn4Z8v6qYfmH5eXzDoN7prDkZYW4j/ACgOSU/2WY2Qbe71NRY5+QevHV/KtskrBp7WtvIO4KGg5e/HLOY97OW+7E/y3DeTfOus6DcMVsrhPrkTFaLQbyfH/kq3/EsrxmxXcUR32YbpOvap+YHmDUl8voUe9Ihe6NKQWqkrRGp9ub+VcE5cJ23l9MY/7qcmZlw+f83/AIpmn5Q+Wbv8vfMl75ceKSTT7pRNBccagldnDuB8Lf5ODHMHaX94P9l/Vawb27lT8zydT/MHQNNtz+8gDTP3AHxdR/qjJySHtuWISfzboi65pV1pr/7viZBTbenw/wDDZXPkrB/+cedVe68tixmNZbCaS3I6EBTVKjx4tkomwkp9578nya/e6VcxBeNlcmV67HjxI2/2VMqnzQyOTQ7CXeS3iYg13RTv92A4IHoEUgNY8kaNrEXpX9nDIvugH4rxbAdPA/0f6vpY8I/HpeLeSvJj+U/zFm0ywuHtLFozPHBuySoftR/EfhZf5vibJ45yA4eYv1cX+6i2gkD/AIp9D5cxdirsVdirsVdirsVYlpf5c2GneYLnzPCW+s3SBWU/ZB7sP9bKIwIPP0/zUJf+Z35byeb3sZ4Lj0ZLKZZQDUqwBBNQP2tsM+Lp/pf+PJss7RSqgHcjLQrx380EU+ePL/1ze0JcKD09Tfj9P2crO/p/zmQ3ZT+bP5fHzpYQ2sLLHcQzpIrtXYA/HT345HICN4sbZtbQ+jEkZNSqha/IUy4Kxvzn5DtvM0YLyyW9wn93LEaFcpnE84mj/SHFFbPR5d+Sdm3kzzHqPlfVaNeTUnjn7yJ8z/wWHH69ztOPpl/x1lzTv83pPLN3eWd1fatDYahp0ocdHYitTGY1+LLDgmTxR4f6XiHhZDHLnt/nHh/3zPPLnnzRPMXwaTexXLqASqt8VPHgeLf8Ll0scoiz/sTGf+44kSxkfgS/3LzX86Fby35k0fzdFsnqC2nI/lY7E/Qcxgal7wiP3vRPPXme90bTRdaPaNfXMrKqIvT4v2nP7K5M5Iw3lyQKHNhDeXPzA80xc9Svo9IjIJWO3HJ69ub9v9i+Q/My/giB/Syfxf5v/HUjIR9I4f63qSLyF/zkFZaJC2hec53XUrWVojKULBgDQM7L9k5kR/ei/SP6P49LZXHvsPx/Rim35z+e/wBJrF5K8vqt1qOpgHlX4Y0PxiSv81By/wAlcrnUBZ5/wx/pMK4Rv/msU8o/l5pmt2l7ZeZpbifX7FJOcU0p40UH05IU/bibKpSnljxcUuH+bH08H9CaJXPezX83+a8u0byTbQw6Pf3LOLS/vHt50ViAQrhR9n54xnLcAyFxUX832joeg2WiWy2mnRLDAo2VRT78MMQjy/038TACnmH5tfkjP5v1KHVNLuFtXYCK63ILxg1/ZHxNTs2VniifT/H/AFfT/pv96myOXV6pDpcSWQ09viiEfpH3FOH6su4dqV5h+RE36Mm1Xyodxp9yxQ/5Lk/8bDBDkyI2euZYxdgCvnvSb7T/AMrPMms6tr06JHesDBDEQ8jCparIp5J/z045HFCR5+iI/il9P+b/ADv81sjAnnsP50kBqP8AzlBrGqXH1HyxpgaRzRGctIxHY+nGEp/w65ZLLjx87P8AWMYR/wB9/uuJSYw57/H/AHsf97NC+YrT83L+y9S5mMSS7iGBQHp/IfSHwr/rS5R+erlHg/myqX+x9M5/6eEWHj10EPhL/Y+mc/8AT8DyefyBrVlqUR81RyWcd24VrmYcgK9yVLcW/wBbIjN4p23yH+dxR/3aBPiP/FPrf8tPyo0PyhaKdPVbiWUBmuGoxbwK/sqv+rkRg/n+r+j/AAx/zWPD37s8VQOm2XRgI8q+DJdliuxV2KuxV2KuxVayBwVbcHbAQqTeV/KGmeWIXt9JhEKSuZHpUlmPVmJ3OVwjw95/rLSd5arsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FXYq7FXYq7FXYq7FUo8zeWbHzLYSaZqkYlt5RuO4PZlPZl8cqnDiHd/SipDxZ/wDnD3Q+bPHfXSAmqgBNh4E0+L/hcpEco5Sh/pJf9VYtVS6Ef6X/AI8jIf8AnF+PT2V9J1m+t2XxZeviOASmXDNqAK4gR/N4Zf8AFybRkyR5EfKX/FMLn8g+ah53+oWesPLfw23P6xLWoT4f3f8Aw+JzT5kQlL+bH0w/rJ4pAdD/ALF6KfJP5jgKq63D8J6lDUj/ACtmrkhqsn8yH+x/462DL5R+TTeTvzNQ1j1m2O9aFabf8imyX5qf+pwP4/4ZFHH5R/2X/FNN5Z/NZfsatZbdAUH4k2zYPzUj/k4/6b/q6jj8o/OSsdH/ADVVv+OhYsv+qtf+oZcP5k/6mPnL/qvJTLyHzk0sX5qxEgyWMg612H0f3a4/mx/qf+yl/wBVGYmP5o/00l/6R/NBCK2tkwpvRx18f2cH5uP+pz/2X/Hk8cP5v+ykqJ5j/MeIfHpVvKa9pVXb/gsh+bh/MmPhk/4heOH82X+m/wCOu/xv+YMdPU8vo478bha/2ZH83j/m5f8ASZP+qTA5Id0vmf8Aqmtl/NLzjAwM/lmURmtOM4Y7f6itx/2S4RqsR/1X/Ox5I/7GcI/7tq8WFfx/6XJ/ufCWn88NThAN55fvIqgmoJbp/qxZaMuLrKUf60P+KlBEJxl3j/Nl/wAdbH/OQ1qqkzaZfJTxiP8ATJieI/xj5f8AHnJ4I/zvsVYP+cjdBZeU0V1FTqGhY0+4YOLH0lGTHhj/ADh8pI5P+cgvKDHi920bdKNDL1+hMnHHxcjD/Txj/uzFgBfJMLf87fKNweKajHX/ACldf+JouT8A98P+VuL/AIttGEn+b/p4f8UmVn+ZXly9H7jUbY08ZAp+5+OROIjul/VlGf8AuJSYyxEd3+mjL/cyTOLzRpU28d5bt8pUP8cj4Uu4/Jr4SiY9StZRWOWNh4hgf1HHw5DofknhPmriZG6MD9ORooIKpgQ7FXYq7FXkupurfmdaoRQixY18ak/0yut2Q5PWssYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KoXUdRh062kvLlgkMKF3Y9AFHI4gWkC3mH5C6ZPew3vnDUF43WsztIte0KnjCB/k/aZP8jjlQ9Rvu9Mf99/xP+agmy9Zy1XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYAFccElDWQpLsNWrYwgIdk1dirsVdirsVf/9b1TgV2FXYq7FXk35y+QbuaSLzj5cqmtad8XFf92xj7cZH7Tcf+DT4P5cxyfClxD6P8pH/ff8V/plB4d/8ATMu/Lvz7Z+ddLTUbQ0kFFmjP2kcfbRh/xHMqQpnIUneu6tHo9hcajMCY7eN5SB1IUcqDIWxAt45+X+iTfmtodzf+ZJ7k2t3OwjiVlVAiEheAAZvhb4fiyrJKU9geCv6P44mU5E8tmV+Xf+cf/KOiJRbJbh/5rj4z/wAC3wf8LlX5cy+omX9Uyx/7j1f7Np4b58Xz/wCJYf8AmR+Rg04W+u/l9ALbVLSXmY0P2wfD1W41X+X7LKzYj9yb3nH+L+OUf99/vmUTwfiUmO+T/LWt/mN5zOt+arRoLXTwFMcgIXmoHFEDdfi/ePx+DDLNHL6Y/wCd/R/oS/4n6mUpiWw6PoXWtKe8gK2jCG4UEI5AI/1HX9qNv2ly2Ua5VL+jL6ZR/moeH+VtL8p6VrVzrOrodP1rTecslsXpGTQ/vrZW+2si/ZVf2sjjwmQuMpeGP8nL6oS/mzl/NZRgTy+n+b/MZD/zjXYPLpt9r8wIbUruSRa7VUGg/wCG5ZKO5Pl6UEvZMtQwqz0C40fzPJe2KE2GpxE3AFKJNHThL/z2RuLcf2kyiJ4Tw9/qjz/zo/0U30/0rNcvQxv8xNFfW/L9/p0WzzQOFp3IHNR/smHHIT5Kwb/nG3zsmu+Xl0udv9M00+i6nrxH929P+F/1lyzmLZy73ruBg7FXkSonlv8AMti5CQa1aDjUdZYz9gH+biHb/ZZVAbkf534/zmY5PUdU1a10q3e8v5VhgQVZ3IAH05dGJlsGIFvNtW/5yT8nWMTPFdNcyglVjhUszEfy/s/S2W+DQ3MI/H/ex9TYcdczH5saj/NT8wPNx5eVdFFtZMQFnuzQ0r9ocyi/8CkuY0tVijtETzS/oj0/1ZcPpj/nZYsPEgOQlP8A3P8AvPV/yVRS/l1+Y2tsp1rXUtoh1S2B3B6g+mtr/wANyyI1OQ/TGOP+tw8Uf9L4sv8ApbBHiS6CI/3Uf99/0tTG1/5xw0g8Tql1dXrDc83oCf8AYDlT/J5ZCQyz3lL/AEo/4vjQZyPM/j/df7JmGkflP5a0k+pa2EIf+Zl5H/h8iNMOvFP+tIsOEe/+swD/AJyNRWs9J8uWqKi6jfIpCgAUUqvRf+MuT4IwGwA/qxbIgDyez2duttDHCgosahQB7CmWxFBCvkleI+SpD5W/MfU9BpxtdTjF1EO3IfE1B26uv+wyvHsK82Q3Hue3ZYxdirEfzK0vUdS0eSPSL79HXMf7wS7AEKD8DufsK382DinE3ACZ/myHFxf1eKMo8TKBIO33cX/FPIvKf/OTyJpIs9TgkvfMEbmERwAETEbJLzTkq8v2lRW5P9hODZYTCuKR8Pvj+PT/AKb6f6TM8PM+n+j+PT+PpZ15KPn3V9STVdfaGw0yhpZoAzkEbc3+0rV+L7bf6i5R4/HtCNY/50/ql/V/6Rh/Va/EvYCv6Uvq/H+k/qvUcsQ7FWDfnP5WvvM/lm60vSt7mTiVUkAMFIPDk2y/zf7HKpy4RfOv86X+b/SW6fMnnTyR528haXZXOqXcTWdrOrQQ+ryKOPjFEYLVV4fHxZkXGGeU+cSBD+KQx/6WU4S4vX/SZRmT05fxVH/ZSjLjTG7/AOcofN8zx21obZpXoB6ERYkntSTlv/qrl/jRA3iB/Wl/xEuFs441yiPjL/iuFDa75X87eedTsrLzOwszqJcwBwFUtGoJPpp9lmj/ANnmKdRx/wB2OXq/ih/pZzauOxt/xL1nyf8A84p6DpkYbWHe+nrU78U/1aL8RGQ4Jy+o8H9GH/FSa6J8v6r1/Q/Lmn6FALbTII7eIdkUD7z9pj/rZZDDGPv/AJ0vVL/TMgKTTL0uxV2KsJ84fm7oXlesNxN6932t4fjkJ8OK/Z/2WWHHQuVQh/Ol/wASzEK5+j+sxCTz9538xIH0LTI9NtXJH1i+YAgf789Kqt9n/Wyj8xD+ATzH3cOLi/rf8eionH+EGf8AuWE67qWnRlovOfm6eeQgh7bTgQo36F4gyn/VZVy/9/349Pv/AF8sf9L+9j/sm0cYreOPn/X/ANND1f6eMkDpfmf8pLIBRp13cU/3bPGXqetSHl4/8Ci5RLTCR9WTj/pcWSP+4xwcaUBf1X/SuUf97D/csb/M6TSvOEtr/hbS7uGyhBDiK34hgTWo4BlDb8fiZv2co/dY9oyhf8X8cv8ATcXHJIMK2Iv+LhH/AB5knkDyRrmikXWheXES6p8FxeyVI26hPsrkBPGdz4mf+jw8GJAMQf45/wCxgzz/AAF+Y+u1fVNajsUcV9O3WtPpp/xtmR+YyfwQhCv5x/6T/wByy8WXQRH9b8SaH/ONK6hx/wAQ61f36jcoWKr9HMy0xOTNL+IY/wCdHHH9sf8AZQYmUz1qJ/hiPxH/AGDM9C/JLyjogH1XTYWbrylrK1fnMXp/scp/LA/UZz/rS/3sOGH+xY8APPf+t/xP0s1gtooEEUShUHQAADLY4oxFACmanLp1tN/exI3zUH9YweDDuj/pUUHkP/ORH5YW2r+W5bvSraNLyzPrfu1CkoAfVB4j4qL8X+xyrw44zxDb+GX1LyeRQ+SvL6flu3mq6jWTU5KQoUYqFcOUXmleLP6YZn/ZbLPCN3ch/R9MoS/2PH/s2Qhu9K8nf846+XL3QLGW/jlttUmhR3kjmZWDkc9kYtGCvLoqZGMcl8UJTh/N2jw/7nj/ANmijzHEK/H81Mbr8uPOvlRVn8s6xJfRx/8AHtebggdg/wBn/hU/18t/M5I/WIZv50ojhn/spcX+zZDLL+Lhnfl6v9N/x6Cd+QvzZj8w3T+XPMNt9Q1hQeUMm6yDuY+X2v8AV+LJ1DNG47/zoy+qKaEhY/zovPPMWlR/lF54s9YsS0WjaqxjnQfZU1oR8lZ1kX/J5ZXhuJ4P9L+P9iiA6d76RVgwqOhy5i8S/OGN9E85+XfMURCrLKbSQnYUY0+P/Yzf8JlYNS94/H+9Zx7ntw3yxg7FXjf/ADlFYlvLcWqxD97YXUclfAE8T/w/p5WeYSDT1XQ75L+wt7yM1SaJHB9mAYZYgt6no9nqaol9Ck6xsHUOoajD7LrXoy/zZVOAlzv/ADZSh/uTFXzZ/wA5F2d5feeNM07S5TFdXdskPJaiiu8iNWn7PGvP/Iw8ZjZHT/iWQlwo78zfy603yhH5a0/TIwLltQjDS/tO1Y+bu3+t+zlMYcPqO8iPUxiH0ko+HfMmleM/lLG3l3zfr3lphwikcXkC9uLnen0Mi/7HKsZ9PuPCy6e5C/8AOQ3naZFh8n6GnravqVEPGnJY2P2a/s+oy/F9ninLHhjD1kf0Yy/i/H83+knaPq6/ws1/J78uF8iaKlhIQ95Iec7jcFz2UkK3FV+FcjjF7na/4f5kf4YtbNpriOFGklYKqAsxPYDqfltmQAyp4r+TtlJ5r8zap57uPitzI1taV/kU/Ew/2PBf+Cyo7yr+Z/ulkfse4Zah2KvIPJKDyz591XRDtDqMa3kIrtWp9RQP5tz/ALCLKsd1Xcfx/vWQ3Huev5axdirsVfJPnfzXqlt+YN1q0nIpo8qUjGx9EkIzD2dX/wCHXIDJ/wAS2CT6ssL+K/gjuYCGjlRXU/5LDkpydMKRWKHYqx7X/Puh6CpbUryKHiPslhy/4EfFlscUpdGYxkvNNR/5yZs3croOnXWoou3NVKrXtTZ2/wCEyE5Ysf1y/wBL/wAelBTwR+o/j/O4Upi/P3zlf3BisfLUvBAGZX58qHp8XCNR/wAC2VDV4O8z/qmP+5hHL/u2PiY/6Uv6p/4mM1Sb/nJXU9J4/p3Qbi0TmqvIxYKK+HOP4jT/ACslHNhmaid/5vp4v95/uWQlCXfH+t/0jF7lpOq2+q2sd9ZuJIJlDKw6EHJEUxIpGYEOxV5V/wA5DWjRaLb63ED6umXUUwI7KTxf/huGVSFEH/NZRO70zT7pLy3juYzVJUVwfZhyGWsSETirsVfKf542WtXnna3+sc7CzkeO1iuoqiqufiJdWWp+P41ymOaiRHbIP53+6ZCXdsXqFj+Tvkfyfbi91kRTOv257xweRP8AkMeH+x4s2AaeeX6jOf8AVPBH/TR9f+mmxGMz7z/sY/j+s8g87+adBs/MNjqX5cWzfXI5eDmJCsMpOyRInw15b/ZVckIjAfqsfxR4uPh/zvV/vmQAh1v+j9TNtV843n5j6bqflTWbBrHV7SAXUaAk1KUZevLdlbBknCQ4oX6T/F/sv5idiLjf+c9Q/J/zMPMXlmzvSf3ip6UgPUPH8DV+7llyJBmuLF8yf4S06+/NXUNG1OJZ7e9hd6MNwWUS1jP7LL/NmLwcQr6aPplH0pMbZh+UP5Dz+StcutVvpluIwojtSCeQU/aLq32WVfh+037WGMpyPq/h/isS4/6v8X+5QCTzTz85Py4Gt2r63psxs9UtInYSrsHQCrxyU6rxyRuB4o9fTKP8/wD48oJHJ4X5F0TzH5r07RtOisCNOtL0zm6rTkOYL1/1afayMskeQ4vE/wBgkzD7CReIA8MyUN4q7FXhOoebNN8mfmJcXF3Mq2d9ahnKnlxkHZwnJuXwH4f8vIwgQaO3F6vV6WwRPI7I3zF/zk/oVlGTp0cl1J2qOIr/AMSpl3DGPM/6X/ik8AHM/wClY7aa/wDmP+ZD0sEGkaY/+7KEEj2dv3h/2K5QdXEbYxx/0vq/2X0f7ph4o/hH+czLy3/zjroNi31vWDJqd6w+KSZjxr7IDX/g3bKDCeTeZ/zY+mP+m+r/AEvC1yBlzJ/H+yZhfeT4rLSbix8spFplzIh9OSKNRR+zGnXl9n+bDHEMfqiAZj+d+8l/V4p8X/EpiOHl/svX/puL6mPflZ+YlzqkknlvzIn1bzBZCkinpKgpS4jP2Ty+06r/AK6fB9nJjIZBxR/zo/zZNh33H+dH+b/x1nGu6DZ65aPYajGs1vIKMrCv3eB/ysqnjEv97L+awLzD8sLy48ma3P5B1NmaEgz6dK5ryj/ahH+VH8Tcf9b/ACcnjmZj1f3kPq/qfwyZ3xDzH+5ew5Jg7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsKuxV2KuxV2KuxV2KuxV2KuxV5F5c5Tfmlq770hsol36fEtu+335C92V7PXcmxdirsVdirsVdirsVdirsVdSuCrVb6anqBlfhRPQfIKotZQts0aH5qMgdPjP8ADD/Sx/UwMAeg+SBuPKuk3J5T2VvITXdokPXr1XB+Wh0AH9X0f7lj4UR0j8opdcflr5auBSTS7M/88EH6lxOnj/SH9Wc4f7mTMADlt/VQEv5M+UpNzpluK/yoB+rI/lh35P8Albk/4pBjfWX+mkllx/zj75SmIItmSn8khFfnlggRylP/AExUAjrL5oE/844eXVNYZbyJT2SYgV8emSvL0nL8f5zdGchyMvmvH/OPumqeSajqSkUIIuNxTpT4MeLN/P8Asl/xafFn3y/00v8Ailw/JKaL/ebX9WjHvcE/dstMAnnH8WI/1sP/AFdazOXQj/O4pf79ST8pvMdqT9V8yXjKeglqxH08+P8AwmWDNlH+pH/knGP/ABaBKX9A/wCb/wAea/wN59hqsWuxstducRJp7muA6nJ/Mxn5R/3rd4p7of6VTTy1+ZUBLJqdrJtsHjPXInVTP+Tj/mmP/FMTmP8ANj+P85gOoxeeYvPduWNpLqwsyYzQiIp8fIHfkr8g+R8fqYy/4XGUf9NxcXCx4/L/ADfxJ6VBf/mbw+O10ot7vJ/xq2T/ADA/1PN/p8X++Y8Y/mz+cP8Aim59f/Ma1qW0yxnA6CKRwf8Ah2wjUR6wzD445f7jiSJjun/sf+KWx+dvPMY5T6GhAFaJLU/L4j1x/MY/5uUf6X/iWQlHun/sVQfmtq8DBLry/eg9ynFvu3yP5jD/ADjH+tEoMoeY/rIq3/OGDre6df2yjqzQFgP+RfLJeNiPKcP9lH/dRRxQ/nD/AGSNsvzj8q3bcBqEUTeEtY/+ToUZkDCZcjGf9WcZf7GMuJmIXuKP+dH9bJtP1yw1IcrG4inA7xurf8QLZGWOUeYMfggwI52mGQYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KrVcN0NcUrsUOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVg35ueUtR83aQmi6ZKIUuLiMXLHr6A5NJw8W5+nlc5mI9Iu/T/V/pJBpmFhYw2FvHZ2yhIYVCIo6BVHFR/wOSjGhSETkldirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeS/n/APmXrXkK2srzRbdZ45JHExdSygAfAp4lePIsW5f5GMckYmpdfPg/2XDJIkBzT38p/PGrecdNN/q+nPpxBAQsSRKCK+oiMEdU6fzK37D/AAtkTkhP6LP87+bH+jx/x/0vTHhQZA8r/H9L+L/Ss9ySuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK1kVcemJVw2GCIoJbyxDsVdirsVdir//X9U4FdhV2KuxV2BXk2vflzqmha+vmfycyqk7KL2zNFWRa/HJGfsrJx/4bKIk4dq48R/hj9eL+p/RUS4ducf8Ac/1XpWu2C6lYXFk4+GeJ4z8mUrlk9wrzH/nF65aTyiIH629zPFT6RJ/zMyQSXruSQ7FWgAOmABW8KsU83/lpoPm0q+r2qyyKKB9wwH+sP45jzw2bBMP6v8X9ZiQCyDS9Lt9LtY7GzQRwQqERR0AHQZbCPCKTSLyaXYq7FXYq8fg/JKXQPNkfmXy7P6VvNIfrUDdODfHJwP7XJh8Kt9l/j5fDmLEzxnh+rHL/AE8f639GP86Pr/hUSI+L2DMpXYq8j/5yK0mRdKtfMtqeNzo1zHOD4ozKkg+/g3+ryyk7EH/Nl+P9j/npiaLLfOPk/TfzE0aK1vHf6pLwnRozQmoqh91ZX+zhyRkfpPB/skSvlyQ/lb8nfLHlnjJp9jH6y0/eSDm1R3q/Rv8AVygacfxXk/rfT/pfp4f63E18A9/9ZmwFNhmUBTY3kldirsVeefm9+Ws3nGG1utPm+r6lp0hmt2P2S1VajfTGnxZTPiHqjv8Azo/zlsjkk+g/nQ+lzDSfPdu2l3w+zMQTbye6SLyCf8Q/y8txzhl+k8Eh9WPJ6Zf7Lh/3v9HjZipbDY/zZen/AGX/ABX+yTvVPz18n6anOTUYpCQSFhrITtWn7sMAf9Zly7wiOfCP86P+99X+xZHGRzof50Zf7niYZ+W0WpedvN8vny7ga10yKFoLRXFGcHYMV/1ebO383FE/bzE4xKVR34fql/S/H+xajIHYdP4mYfmn5N17Wmgv/Ll+9pcWoYiL9iQ9Ry/yv2fi+HJnNPH9NSj/ABR/iZRyGPLr9TC7X8+NV1HTU0nTrJpfNysYpoSh4RlDxe4f/Ib+Xl8LN/k5YcmMDj+oH6Yx+ri/mJuNcX+x/pIuf8otW1yJrzz9rUhtgvOS3gYRwqBvR3PwlV/ylb/XyrxMuXaPDiif4Yjiy/1fxKcf6KOOcthUP6Mfq/H+meX+Z/NXlLyX5l03XvI8qyRQAxXcEauap9gsskw4u8iH9l/tor/tNhjp/DNSInH+dxRyyjL/ADP9N/p4+mCiPAaP38f4/wBN/sXo97/zk09ui3h0O7WwZ1VZ5DxBDfZoONKt+zxd8nHJikaEuL+rH6f9l/xKgxJ2P+dX/SX+6e0z6pb20IuLmRYY2ANZCF69tz9rDEGXLdAiTyU9H1uz1mH61p0yzw1K8kNRUdRXDOBiaKZRI5phkWLx788vyQPn1U1GymMepW8XppG3926gs/H/AIrkq/8AefEv7LfzZRMzHL1R/wBT/wB9H+H/ADZfV/OYmxy/0v8AxP4/0q38h/yTTydYi91iGNtXlPKpAYwrSgiV/iXl+0zL/qfFx5ZXGPGeKX+bGX+6lH+d/N/mR/zlrvT/APOvTpP0RFrloK3ejzx3ae6qwWdD/ktH8T/6mWy9JB7vT/my/EWwc2fWlzHdwpcQnlHIodT4hhUfhlzF5r+e/wCaU3kHTraawCveXE4ARxsY1+KbutOsa/7PJRIHNnCurDNM/wCchfNlyq3Y8sXE1i+6vF6hPHahV/SZX/42yo6rANieD+dK4/7j0f7tlxQI/i/rcUZR/wBLw/79Fan/AM5QS6VH6uo6Be2yk0BlPAE/6zxrlsMmCf0T4/6sI/73LNFRPIk/5v8Ax55v+YX/ADkhrnmj0tP0m3k0+1nIHwNWWSu1A9F4ry/lX4skckYC48x/FIf7n8SZCQh3/wBb/iGUeT/IPni1hppdjaac0m73FwRJOTWvJi/Jlbf9nMHxonfhnnl/Oy/Tw/zOD6WrxBz4eP8ArfxMug/IC91oet5v1m6vJG3aKJuEfyHb/hMtOXNLrHD/AEYjilw/zeP0/wC+XxJHrX9X+b+P6zOfLf5S+WfLyqLCwh5ruJJFEj1/4yScmH+xyk6aJ+q8n9Y+n/Sf3f8AsGrgHX1f1vV/x1k10LWCJpbn01iUVZnoFA9y2wGWR00DsIj+rGLaLLHdF/MryxqdwbHTb63edSRwBpUjb4SwVX/2PLMr8qYi6j/m8Mv9jH1MvCI5f7GmXZBg7FXYqkfnHWbjRdKudTtIRcy28bSCMvwqFHJvjo3Rf2f2sjYHO/8AN/H/ABX9WSR5oL8tPOY85aDba4EEbThuSDcKysUI3+XLJmr2TIAHZlOBipT26TxtDIA0bgqwPQgihB+jIyjYrvV8n6Z+TGoalrGoeQri6ls7K3lN9bHiWjdGIirSq/GqPH+38D+pmN4sjHhjRlE8Moy9H+f6Yy/r8P8ATUTNUzvy7/zjBbW2oxape6xc3j27Ajj8J5IQQpk5ysq/DxdV4v8A5a5ccmc7Slwf6aXp/o8UuH/YMpSndkn+jtLj/wBNKU/9y929ReXp1HKlad6fLLAEU8i/5yK8mS6jpI17R42GsaeQ8csez8Af3ibfEy8Ty/66zHJ8OXGP6sv5v+cgHh35MM1DzOv5s/lxdy3XE6zplZXVRShQluar4NBzX/Xy7MBtIbfj8SZyHV7D+T3mQ+Y/Kun6hI3OYwhJD3Lp+6cn3Zk5ZYUSST/nIjyydb8p3MkI/f2JW6jI7en/AHn/ACSL5RLaj3H/AHX4ixBpmPkjXP05ollqZILXEEbtTYciB6nX/izllySE9xQw783tL/SflPVLWlSbaRwPdB6qf8MmVT5fJVD8ktSGo+TtLmU1426xH5xn0T/xDLUlnGKHm3nDyJpdnrg/MPUZHJ063YmLYrVQ3Bkr9lvi+z9nllBhKUufo/q+r/Tfzf8AN/zlokvJ/wA0tVvPzO86WOheV5aw6d8RuF3VHYh5Jqjr6aqip/l5Zkn4e38R/hZk8PvQvkb8yrryB5q1LTtcup9R02LjHLPuwjeo/esP2V5c48tjlOSozIE/4f5rIyJ2l/ms486eYLS285+X/NWmSpNaXoaxlaM1BDn92TT/ACpOX+wykw4JEHa48X4/2KOHh59XpNp+XOkWuvTeaVjJ1KZQvJjUKKBP3Y/YLKvGv+t/NkOD1WST/Nj/AAxaqZVlyXnX5pfltf8Am0xtpl81jWN4JxQkSROQ3CgOzKw+1/KzZAznH6aN/wA7+H+lFIkRyZX5Q8q2flXTIdH09eMEIoK9SSeTu3+UzHlgxxob8/4kAJ1lqpFr/nPSPL0XrateQ2y025sAT8k+03+xXLI45S3H+m+mP+ml6WcYGX44Y/6aT50/M787tJuvMema55a5zz2BZJGccEdGqoTkx9TvJ9pE+3lZxiJv6/50Y/8AF8PD/u4s+GvP+r+P+Osu1X8wtYkh+s6rrdhpkJofTs/38m/Qc6tRv+Fw8Uz9MBj/AKWpl6v9JFRfQRh/SyHi/wBh/wASqeXvzV1KJHj0ez1DWGIWktxRVIFasiKPh5V/mblxys54D65An+bghwRj/wAV/nMOKN7m/wCrHhZBHrv5h60StpYW2nR9A87Fj/wC/FkfzEf4Yzn/AFvRH/iUCY6An+t6Xlfn/wAs6n5f80W935kvIZo9age1nlVAiqKBFrX+VvTbk2RBOSxwiF+qMYmUvxJQSekR/V4mLjzza6LYaVr2kXnDW9NY21xbkuRNCrExn/ffDgfT4/D/AJH2cyImY354z9UZSj6Zf1fr/wCIl/ns7I8wfqjb2G2/PjXfMUAbyxoU8jMBSSU0j37jZQd/8vIS1GKG1mZ/mxj9P9bh4/8AetfFAfzpfj+L6v8AeqkfkLz75ro3mLVBYWzCphtRRv8AZMPhrkRqch+iMcf9KX1/75fEPQCH+7TnS/8AnHHyvan1b1JL6Y7lp3JqfGgymWOc/qlI/wBX0f8AFMDZ5kl6PpmkWmlwra2MSQwqKBUUAD7ssjhjHkP87+L/AE31JApG5bSUBrOi2ms2slhqEaywSqVZWGxByE8YkEEW8W8hTz/lh5mfyffMW0fUHL2MjEniT0iJP/A/63xftYcczIcMvrh/sotkTYo9HvGTYOxVI/Ougpr+jXmluP8AeiF0Hzp8B/2L8WyrINv9l/pVYx+Q+svqHlW2hn/3osy9tID1BjJUV/2HHLAbZSeh4WLsVeRf85MaBe6r5Z9ayKgWcouHO4aigisZX9r4spkeEg/7L+akGkL5H/JTy5rWn2muam8+qzTxJJyuZCVBI+IBF7K3w8WZsE45J/XKX9WPoj/xX+l4FncuZJ/3P4/zmdyfl7p/16xuokSG307m8UEaBV9Rxw9RuP8AKv2V/n+LKxgETtQ/nfxSl/WlJiBTHbbTILPzvqXmXUHWC2itIbcM7BQS3xv168VT/hstjEylQ3/nMwCeTCPy988aL5U836holrdxtpF+RNAwPwpKftxV/ZH2v+Fy6GOQHAen0/1WfDtXUParvzpotn/vRewR08ZF/rlowyPQo8KXcwtdS8i/4gHmr9IWw1AxejX1l40PwhyD9l+P7vly48Mp/Ky4r/2P9L+j/wASjwz+DFmlp510O8oLW/tZSegSZCfuVsv8CfdL/SlfDl3FZ5v0WTzFo9xplrN6Buk9P1BvRWP7yn+snJcx5gjlz/pMTY/48r6Rp1l5b06HT4SsVtbIEXkQBQDuT+032mxx4yBQ3UC0h1/83vLmjExy3SyzD/dcXxtX5Ll3h1zqH9Zn4Z67MI/5XN5i8xTNbeU9IdgDQTXH2feoUpGrf60/+wyiWfFDbfJL+bH/AIn1T4f82H9ZBlEf0/x+P5qMn/LXzj5kjVfMetehESS8NovHbsvqD0lP/PRJf9bI/mMp+kQw/wBL65x/3Uv9JnR4kv4ah/uv+K/6WyeZ/nJ5M0PyDc6XPp4F3deqRNFO3MMu3AyIOKovL4f2ef8AsciMcuczKfH/AJv+l/i/03GsQeZ3v8fwvRfy3/I63imHmDzEiPeSH1Et13ijB3QAd+P8v2VyoY+P+hD+GP8AF/nMCL8v6L15rmC3IiLIh7LUD7hmZGBrYf6VlSJxQxPz5+Yul+SLZLrVS59VuMaRrydj34iqrt/lNkgAeZEf6yQL7nzZ+Yv5map5i1+21bRdOks7vTYvXDPX1GiUlyZF+D90y/s/F+18fxZQMmOB4om79Mpfwy/3X+n4mQnEbjf+l/Og9V/L7TPOPmiaz80X+rqunS8ZRbQLRWAO8T/5P7L/ALWSlmmTwiMIR/nfVLh/4r+b6kSmeVAJr+fukzLp1t5o08f6bosyzgjr6ZIEy/6v2Wf/ACFbIk8J4v8ANl+Px9SBsXouh6vDrFlBqNqaw3EayKfZhWn+xy47KRSYYEOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvKPJKK/wCYfmGavxenbrT5Rxb5Ac2R5PV8mxdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiryrUmZvzOtAoBC2Bqe9P33/GxGVdWXR6rlrF2KuxV2KuwHdUHPpdrcCk8Mb/6yA/rGY502M/ww/wBLFgYA8wPklc/kTQ5jzaygD/zLGAfvAwxwiP03D/hcpQ/3JSIgcvT/AFfT/uVJfJENtvYT3FqfBJGK/wDItyy5YDMcpGX/AAwRy/7KXqZ8R77/AK3r/wB0yC3Ro0CyMXYDdiAK/QMmEKuFXYq7FXYq7FXYq7FXYq7FXYq7FXYqxT80tYGj+WdRvC5iZbdwrLsQzAqhX35Yi+jKLwD/AJxE1TWJtRu439STTXjLF2qVEgIpQn4ebrjLNxHhJs/UkzvZ9VYsEL+kbf6x9T9RfrHHnwr8XGtOVPDDwmrTXVFYEOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Koe8s4byIwXMayxMKFXAZSPdW+E5CUBIUd1VIoliUIgCqoAAGwAHtkgKVUwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYFdiQrsiVdk1dirsVdirsVf/0PVOBXYVdirsVdirsVaYVFMCvnX8ufzL0r8uZNa0XXHaJo793iRVLMwfuoH7PFEwYY8UbNRr+c2VfkzOP/nJnyey1knmjPg0L1/AZfwA8pQ+aeAfzo/7L/iUzg/5yC8kyqGGpRrXsySA/d6eHwT/AEP9Pj/4pRjPl/po/wDFJxpf5p+WtXnjs7DUIZbiY0RFJqT8qYJYZR7v9NGX+5kssZjzr/TRl/uZMtypqdirsVdirsVdirsVdirsVdiqWeZNGi1rTrnTZxWO4ieNv9kCuVzFhWCfkHr095oj6Rf/AO9mkytayf6qk+mf+B+H/Y5OMuIWzlvu9OwsHYq7FXYq7FXYqgtR0m01KIwX0Uc8R/ZkUMPuYZRPFGfMX/uo/wBWX1RQYg80p0/8vPL2nP6lnp1tE/8AMsSg/Rt8P+xyv8rDqOP/AIYZZf8AdmTDwx13/rer/dMgRFQcVAAHYZkxiAKDYvySvFfzUth5I8xWHnu0UrBI/wBWvwo2ZH2SRvdf5v5vTyqHplXSf+6TDnXe9bubWz1qzMM6JcWlwoJVgGVlO42+yy5KcOIUf9jKUf8AZR4ZIkOjz/8AMb8rtJu/L8ml2Bs9HhZgzytEgFAeX2y0ZU8v2uf+TlA01f3cRkyD+KRnx/8AK31z/wBNxRYwxdYjil/O9XH/AKf6v9NxMUufPem/VLDyr5ahHmDU7NVRJSp9GN1XgsztTj8P7H7Cp+3luSEYD97v/teOX1y/my4Zer8fS2kAfV/pY/xMh0P8mG1V11XzvPJf37bmHkRCm5oqIvEMKHImU8nMnHj/AIccfTL/AD5MDKR8v6MXp+n6bb6dCttZxrDCvRUAAH0DLIQEBQYiIHJFZNk7FXYqhr+yjvbeS1mAaOVGRge4YcSMhKNilYt+Vd6z6ONPlr6unSPZtXuIzSP6PS4YYmwyl97Cvzt0+K/8y+WYblVeA3TBg4BUgmM8GB6huGQmL2/TwoAeo2Ov6XNctpdpcQNcwCjQo6l0A8Y1PJQv+rl3hGMbqo/7FeEvH4NDT80fOV5capyl0TRiIYoSfgeU/bJA6/EG5/zcY0fKcty9I2/ilw/V+P8Aj3CmQ6f6Zh9gnkv8rvMl3HrKNc3EMqyWhX956at8XF0rxSSJh8Dfa4ccEcBl9Zrg/h/hl/Nl/wAVxKIfzjT3vyd+Zuheb4+ek3Ku/eNvhcfNDmVLEQL5j+dFJgQLZXlbB2KvBP8AnJXWbhxZaPd280WjyXEbT3isKHqDEEU/ynl+84fFx4ZHxB9IJGQ/0ZcH+m4fV/mS9LOJA25E/wCl/wCPMk1X/nHnylqthGmnw/VZAgMVxCSG3FUdz+3/ADfFmN4MobxlLi/pHijL/if8zhahEjkSl/5DeY7+1utQ8la7MZb3TJKxO25aI+5+JuPwf8FmWJnIOI8/pk2E8Qt7PixQ97fQ2ML3V04jhjUszNsAB1JOICXzx+aP/ORv120u9M8sWjXFuVMMt4wIjHqApSMfzNX4GZv9g2SkYR9JPFk/mx4eH+txeri/3P8ATZmo7c5f7H/j3+5/rL/y48kfmboukwWtjdWttaKpeOF1DN8Z50kPDZt/5nzGhqCOUL/rS4eL+r6pf7xqMzWwB/rej/intvk2bWpbBf8AEccUd8pIPoklWApR9/slv5ctExPcAw/oy/H0sk/ySHnn5q/mxpXkuzlR5h+k3jPoxKAz1IPBnX9lOX82GOIfWeEfw8Uvql/R/nM4x6nZ4R+Tun+fvOdvcrYag1lpdxO0k8+3MyNRpPR4/vAzft8WiXKjqDH0xiJS/nSHoj/nf8TCcv6inIRyEf61fj8fzHsvln8gdP0W9i1Z768ub2Fg/OSTZqdnUD4lbBxZZfVL/NiPTw/5/FP/AGTWZSkbMpf7H/pL/ZPU3QOpVuh2ywi0vm/yNoCeUfzF1LyzxY2OrW7lC4oDUGVqfzKrc48pjuDE9EjcMj/5xpun05NV8qTt8enXbFB3KMeNf9X4E/4PLYGwk8nsuo2aX1tLayjkkqMhHiGFDgkLDF5b/wA456g0ekXXl+dqzaVdSQ078CSyGngzc8MTYtmTb1zJMENqUYltpUbcMjD8MjIWFeXf84z3pl8rm0fraXM0XboDy7f5RbGJZF61kmLGPzJ0GXX/AC9faZb/AN7NCwQeJpVfxyrIaCgvnvyH+Yn+G9OOg+XdElXzJJVJiwP2vs+ozEcgvL4uP2EyIOKPrMuO/wCH/e/j1pBgN+f9F6x+Vv5SJo+j3MPmBVuL7VGMl2GoQa1pH/w3L/W/1cq4Dk3ltf0/zoMTvz6vCPzV/JjWvI1yt3o3qXOjiUTIi1b02B25p/q/DywxzmHpnt/Nl/P/AM/+CajJw7Hk+tfK+pS6pplrfXEZilmiR2Q9QSKsMyIkHcf5rInuW6z5p0vRF5andQ29RUCRwCf9VK8m/wBiuXRxmQscv538P+m+llGBly/H+c8813/nJTyzp/JbZpLqQdOC8VP+zff/AITJeGBzI/zfXL/if9LJlwd5DBtT/wCcm9Y1aUWnlvT/AN49KcgXYGvgvw5WcuOHP1fFBMY+aY6d5R/MvzdvrOoHTLNzUrHQPT/JVfiDf6zLlX5uR+iMR/SlH/i+Pi/zYsRlPQcP9JM9X/5xe0m60947e4mbVH4kXNwTJuOv7v4dm/yubLlUvFO5l4hH8MvTD/fS/H0sCSd7s/0vx/xSRJ/ziTp9jpk8kt5LcagI2ZCAEQMAWX4PjkPxf8W5XWTmaH9GPq/2c/8AiYsaP4/49/x1OPyd8neUn0GLXr63iW7iqk73DEhZIzStJTxVvs5aNP4nWU7/AIb9P+xbDC+82mer/ntC8/6L8l2T6pcLQckHGIf7LLyMeH6tv6MfqZVGHP8A0sVj6f8AmZ5jUiae20iJqbIOT0PX4vi+LIfmT/BD/Oyf8R/0kjxO4V/WYn+Y/wDzj/Ouh3Or3+pXOpajbp6iBz8NBu6hDzP2f5eOVyyZDvMx/qxj/v8A0/7hiZSPP/SsY/KnyRF5j1OYLppXSr2xKCdo6qkoUK7xyMG4v6g+zy5ZVMR+myZD1R+r8Tikgcv+Ker/APOPetzQ2lz5R1A/6ZpMhQbUrGTsf+CzKgeIX1/iTzFvYMmxdirTAkUGxxV83H/FvnHzRdeVNS1dtPWzLSR+ivBpUJqlOBXnxX+Zvh+LIjPMj0CEP531f7/il/peBsEzXpofzvqZP+U2pa1pHmjUPKGs3zXsNvEJIWkHxGpBryPxfZP2eT4RklMerhsfVKKDIyG/+mZT+dHkceZtHM9vVb+xrNbsOvJfiI/2WVT29Q6f7lhdbo78p/O/+L9DivpNrpP3cw8HXYn/AGX2svO+4ZyHczTAwdiryLyCw8ueddW8vNVYb2l5CD0qf7yn3/8AC5Vj5V/NLLp7nruWsXYqxb8yNM1LVNCurPRvTN1IhULIKqwP209mZfstlWQ0OXH/AEf4v81INebyPyd+d+leQ9Ct/L+rpLLqloGjkhgQEKeTEKXJROX+ryy7GARZPB/Rlxcf+l/4uUWzhHM7f7r8f5ybH84vNvmhQvlLQ5I0b/d92aKB4oPhVv8Agm/1MrOpxR5cWY/zYj/dcHF/u4sOOA5XP/Yx/H+cxfzf+S3mrVEOreY71r1qgvBbgkgd/TRuMbcf5eOUyzzPQY4n/O/00Y+r/ZzQchPP0f1fV/xDynX4vLukvbGBLwTxTgTx3CcCU78Cv2WyUI3/ABRnf836o/6dIr+dfw4eB9S+VPyv8n31hBqNnZI8U6B1ZySaHx3yJ0985Tn/AJ3/ABLXKHvPx/4lPP8AlVvlcRmM6bbFT1rGCf8Agj8WR/Kx/p/6fJ/xSOD3/wCml/xTzHz7pn5V+X2Md/GguBt6Vq7lx8wj+mh/1mTLhojHfinj/rS4v9jKM5/71tGEjvh/WMv9z6v+JeeWXl3X9dvY5vIFtfWFkDtLcykKR/MOXxcf9Xnj+bMPSJTz/wCbHg/2PoUZa2BlP/S8P4/zk0ufJetWev2tt+Yl7NPYXVESaNzw5/77k/lVv5sIzzy+n+5l/N/nf1F4zIV9D3PR/wApvK+i0nhtIyw/bl+L/ifw/wDC5SNODzMp/wBY/wDEtfB7yzCBI0QCEAJ240p9FMvjAR2A4f8AYpqmC/mf+YMugLDpOioLjW75uEMVR8IPWaQfyrk7EBxHf+j/ADpNkQBuf+kmBeafyTEPlfUdT1RzeeYJIzM0pqQGWj+nCP2fs8eWYsuKR45bfzY/wwiwsk2f+kWXfl95j1LzZ5Hgn0phFqIjEHOTcBkAQye/w/F/rZkynW49f9FkTRvm8+/Mv8oDo2jNrF9qFzeaw00SpIXKqC7hSET+XfKxly3ZNf0Y/SkTkev+bF9CaVbvbWkMEp5SRxorMepIFCSf8o5MbsFeWCOUfvFDAeIr+vK8mKM/qEZV9PEOJat8+fmHc6np/wCYhm0K0W/lewCywE0HA81buvbjgJhG+PiMf6P4l/uGQqt0V+Sf5l2egCbynr6nTJY5me2jm2ARzy9Ln9n4W+y32Xy/CBkjcfVX870yZAcY9L2zU47bU9PmjcrLbyxODQ1BBBruMjONiiwp5/8A8443bTeVlt2qVtbieFCf5VbkP+J4g2mT1LJMXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXlX5dp6nnbzHOdyHhSvsEXb8MrHNJD1XLEOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5FccpfzTiA6RWJJ+kPT9eV3uy6PXcsYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2BXlX/ADkN5dufMPlyWws2JuOSukaryL0/Yp9of6y5RPJwdR/nH/c+r/dQl/WTdD8f7H/pFV/5x08tTaB5Tgt7uF4LmR3d0dSrVJoKq242GSxkS9Q3tiDb08kKKnoMuS8Y/LZZvNvnLUvNk1Ra2lbO3HyJDn3ysyJNDp9X9JlI1s9I1Tz3omk3i6bf3kMF04BCSMFJB6dcyI4jLl/x5kIEhPY5FkUOhBU9CMr5NZX4q7FWE2fn6WPzKfK2owqkskZmgkQ1VkHUOG3V8QQR/EK/nfxf1GVCmbYsXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqg7jVLW1NLmaOM+DsF/4kcnHHKXIE/BlwE77pFqH5m+XNPr9Z1CBSPBwf1ZPwZVdM/CKQXH/OQPlCA8DeF2H8kbv/xBWxOOusP9PFEsfD1j/mniQI/5yI0W4qunWt/eyVpxggLGnj8RXb/hspnPHD6pwj/W4o/7uMI/7JEuCP8AFG/5v8f+llwqcP5za1eVFl5cvTvQGWsf0kPH/wAbZE6jDViUp/1YcUP9Pill/wByxlKA6yP+ZL/dR44tH8wPPkzf6P5fEaVp+9lBPzqjfZ/2OAajF3ZZf1Rw/wCxnGKZSj3T/wBj/wAdXRal+Zt+xpa2Fkh6cnLkfMYjUx6Y5y/rS8P/AI6pyCtokn+twtN5e/M6f7Wp2EW9fhiY/R8Qb4cYamX+px/zpf8AEyT4u30w/wA7i/3slkPkj8yJP7/zDDFv/uu2RtvCjxr/AMSyMs2TpDF/nTn/AMTlauOXdD5y/wB9Fevkr8xrc/D5jhlHX47NPu+WRGfL1hhP/JTJ/wBU4oOSfdD58P8A07XReW/zL5l31i0I3oPq4/hhOef+pw/5WS/30VGSX82P+m/46sOk/mhAf3d/YzA/zRUphGon1xj/ADZoOSR/hH+mSXzPY/m8lsxsbizkY1P7pQrgf5HqnicI1Rj9WOvj4v8AsYy4mccp/m/j/TLPyI/ODX9c1Gbyr5ptmF9aqSZuPEin7MyfZ5N+yy5acsJi47E/wx+n/jrIyEvx+OF7xgQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsVdhVwyIV2SV2KuxV//R9UjIhXZJXYq7FXYq7FXYq8J836LaeWvzCtNcvYUksdVQwu0gBVJegb4vh+JQuY8cYkTGW/8AFFIAOxeu3PlHR7kUnsraQf5USH9a5E6aHdX9W4/7lgIDuHySp/ym8pu/qtpNmX8fRWn3Upg/KQ/p/wDK3L/xbHgHn85f7m0ZpP5faBpE31nTrC3t5h0eONVI+RUZKOnjHv2/nSlP/dyky4QmPmDWYdEsJ9Tuf7q3Qu3yAzJpmBbyTyr/AM5J2moOp1ezlsradwlvMQWVyTQVP/G2TuEjUT6x/DJsqJ5f7J7Q0yKhlJAQCtfbrXIU1vDJNX1f82tWvLDQ9TbTtEsGCNJB/eyv33DI6p/wn+vjPJKG0BH+lkl6uH+p/wBJQl/SbJEw+mr/AJ31/wCl/wCkkNrHl/z5+WoGpaVfya3p0QrLBPUsFHUryLNT/VbnlY1MhtlETD/VI/V/nfxf6biiw8U8peu/4v4v+K/2T1P8tvzAtPPOlrqdmCjA8ZIz1Rh9ofL+XLpDu3UimW5Fi7FXDIhXZJXYq8n1a2HkjzhHra1XTdYpBcb0VJv91ysP+LOPHllWPY8P871R/rfxRZRN7f6V6wDXcZaxdiqHu7yG0jM1y6xxjqzkAD6TthjEy5b/ANVIiTsGL335t+VrJzHPqVuGHg3L8U5DLhp5H/pKMf8AY8XE2eFLn+kLrT82PK94aQalbsf9an/EuOP5efOvtj+tRikWS2moW94vK3kSRfFWB/VlRiRz2ayCETkUOxV2KuxVJvNfli08z6bNpF+CYJ1oaGhHcMPdTlc42O5FICz8vX+heX00jRJlku7ePhDJcgkdfh9QJ8Xwr8OSEiBZ/ef7HiSD37/7F5/o35BTapcHU/P17JqlzyJSFXYQr8l+Bv8AYqqL/rZXOeTLsT4UP5seH/pH/ff0kykZeQ/mx/H4/nJn5st/MHlZ4bD8v9IthA4/eSUVQD4cVKt/sm5ZXA48J+mc5S/i9U+L/P4uL/TyixiYw3rj/H87i4v9Mw7Wvz281eSLqKDzZY27rOKhYH+Mf7H/AJqzLhljMbxnj/H9aTaJCX8Mofj+tNT0vz15m8wapa6trF5HoWkNKBDbts8orSgDDk3Kv2m+DB4xltjFx/iyS/H+5TGV/T/ppPorFqdiqjNOkVPUYLyIUVNKk9AK/tYpVsUMIsB+hvNU9sB+41SMTKf+LYxwk/4KPj/wOVx2JH+cm7HuY/8AnePq97oF+G4mLUFBPsQR/wASxlzUPPvyH8uL/j3XJrirtbmUAkdS70av+x5ZEEn8SW3sfnzW7byF5buLywiSL0l4woooObGiCi/5WSxwjD/dS/nS/rSl6pf5yYRAYx+T/wCUtrp1kda1xFutV1AerI0gDcQ/xcBy+fxZScfjbz3/AJsWEhxc3kfmOxsj+bFtY6Ioto0miSQRHiC43k+z/k/s5dGPhio3FlEcI2fXGWIdirAPz30tdR8n6gjdY4/VXtuh5DISCoT8u/zK0X9CabbXl/Cl20CLwZxWoHAV7A/62ZEcMiL/AEx/3P1Nvhk7/pixbzhGNC/MrSdYhIEWpxmFyOhNCFJPfkD/AMLmNH0khgHueWMVjKHHFhUHtkDESFH/AEslLwj/AJyB1y0tL/StFkikeJ5frMsdulXkKfDHGFX9pm7/ABZSMcMY24MN/VKox/3KYxAH8y02H/OQ6aZIg8x6ReaZbyUCSuOS79OWycf9X7WZOOeKe0Jf6YcH++mmPDLr/phwvXbS6ju4UuITyjkUMp8QRUYsXkX5s/mxqVpdr5U8rW8ravMQvqMhCqD+1GzfC3+t9lcHiwgLNH+iyEgPP+igLf8AIBrTRL28vJDqHmW4gbjNKeQRyPsx8uW/7PL/AIDjmNPimeKe9fTj/h/zv5/9X6Wsknc7/wBFjH5P/nRpfkOwTyt5ktZ7C4iclpClVJY/adfhkX/Yo+ZGEQyC4yF/0v8Aio/7/gbY8MuR/H+b/wAS+gtB826V5hi9bSbqK5SlfgYEj/WX7S/7JctljMRZ/wBN/D/pvpWUCE4yDB45+cFsdM80eX/MKbBZzbv22f8AmP8AL+zlXKXwSEDpMA0b82rmKM8Y9QtPUI7EgA/8aYw2seagbPcctQ8f0uL/AAt+Y89uBxtdbg9Vd6D1I/tUH7TN/wA1ZXDax/nJidq/znsGWIaZagjxwFXkP/OP9rd6fJren3cTRCO/d0JFAQ5LbH9rKscxLYdE8VvX8uQ7FVBbOFZDMqKJD1YAV+/KvDiDdBUDquvWWk1kvriOFAtSHYA0HcDrlsYyJ2ZxiS811r/nIfTzMLLy9bS6lcNsOIIWvh0Zm/2K45BCI9ZH+bwy/wB16WVCPM/6Vhfmn8xPNjpXVL630WJgSYYvjuAB/kDlIp/ymaD/AGGMcp/ghUf4cmT0x/zYz9c/83BP+skE9I1/NlL/AIjhnKX/ACq/zmL6D+Xup+apPX06xnkRyWN7qDlQa9xD+3y/ymuv9fMOeYSPM55f7X6MX+dL6v8ASZcX/CmozB/nT/2Mf9N9f/S2f9V6f5e/5xtsy4ufMk5u5B0jjHpxj22+Liv8vwp/kYBCcu7H/Rj/AMVww/3PF/TYGz/R/oxeqaF5T0vQUEWm28cIApVVFaf632stjgjHz/pS9SiICcZkMlC5uo7aNppmCRoCSzGgAHiTiBaQLeL+Z/8AnIP9IXJ0TyHbNqd+TxMvE+kvYt/lj/Kbin+tkskoYh6zf9GP4/3P+mZnhhz9X9GP4/3P+medeUfyuvtQ8yS6B52uXg9b/SlgiakcrMauAy/DyX/JzGjklMVH93X1Rl9f+Z6pMRIkbekfzX075d8r6d5dtls9LgSCJR0Ub/7I/aOMMQj7/wCdL6mAjSb5elSngWeNopBVXBU/IihyJFileR/kvK/l/VtV8nTH4LeUz24/yHO9MjjNjf8Ah9LLotm9Py1+Ziyt8MWr23H5uv8A1zggKJH+co3eiefdXk0jQ72/hr6kMLstOtabZZdIDzr/AJxkutY1DQptR1e4edZ5iYuZqQB9vfwZsJymZ3ZSkZc3smLB4p+elu3lrUdN88Wez28ohnA/aRj3yoemX9dlHn71vkvVLDW/OeoeaxKkdjBBHCsjkKCzDk25/lXJiB4qG/8AOZcJOw3emWHnzQtSuv0daXsM1zT7CsCT8v2Wy6WKQG4QcZDzvygF8p+fr7RR8FrqaC4iHbkPtBf+GzGx/wA3uQNx7nsuWsXYq8n/ADs06bTJbHzlYgmXTpAJgvUxMfjr/krlV8Mr6S9MkxNH3vS9H1WDVrSK/tWDwzKHUjwIy47KRSzWtctNFtmvdQkWKFBUsxp93icYxtMY28zbzN5l8+P6Pl9H0zTd63kgBZx/xWh/z/1cqOcDaH7yf9L6IpMgOXq/3LIPKP5P6J5e/wBIaIXV+3xPcTDkzNXkXCt8KfF/L8X+VlPgce8/X/R/yX+k/i/z2oji57/7n/Ss7VQuwzIERHkyaZlQcmNAMkryrz9+Z3kK2L2esmG7kA3REEhr4c16N/ssidHE7y4Yf7Gf+xZnCOtD/dMA1X/nKSOC3TT/ACjpxogCoZa8QB0Cxp8R/wCCyz93jHPjr/M/3SajHz/2MVkfl/z153tzeeb9SGj6K27A0jqD0HGqtx/4yv8A8HlUdTPJthj/AJ3/AB71Tl/m+lHiE7RHD+P9N/vXov5bfl75E0t+OhvbahexirSmVJpN+/wllT/YquQnozzycU/63ph/pP8AiuJrOLqfx/mvUkRUHFQAB2ywRA5JYr+aHl+LXPL15ayrVliaRD3DIOasvvtkMkevcry3zlrUutflbbXIdg7mGOVgTWgbg9Sv7PHJmZjuNmw8/e9esriz8uaDHOzcbW1t1YmvYKD1P82GIJ5sQLLyvyt+WrefI7vzXrRkt72/atoUYqYol/uTt/N9rjlBlKR4oEw4Pp/pfzlMjfp2r6WQ/lB5tvLo3flPzE3PVNOYqS3+7Yj9h9/tbZfxDJG/82UUn1C/9M9JsNOt9Pi+r2kaxRCpCoABU+wyMICIobNQFcnmv/ORepDTvL8Vy1eKXcLEDeoVuZH/AAuEi2yKAj/5yES3Ed1q2lXlnp0xAS5Zarv0L+C/6vLDDJimeGMvV/SHp/zWXoOwJ/zo+n/dPXba5S5jWeI8o3AZSO4IqDh5NZDwjS/zB0XRPN2taxr85hlV1tYUKkngoBY7f5WRhDjN2I1/O/HE2iPF3D+swz8yvPflbzH5nsdUFvLeWgRoZl9Mjmf91+n/ADNvkZ4439QF/wAWOXqiwoXVj/NRujw+cdKllbytZ3FpojwyMUvm5IqgEl0P2lbj9hcjHVCuH1Z/5sq4Zf6b+b/WSMgrrP8Arf8AFf8AFPVf+cc7ZofJ9sz/AGpWkkr48jkwxJenZNDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiry/wDK1Wl8x+Y7mnwm7VQf9VRtlcSyIeoZYxdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirySKrfmk/gtiP1f25X1ZdHreWMXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqo3MhjjZx1AJ6E/gPiyMjsqTeW75tQRriSFY35EFgGBJG1QHRW40/ymyqBEuX+64v9zKX+9ZH8fxJ/l7FD30bvbypFtIyMF+ZG344Dsrza/ux+U3lEXQiWWdXBloaBnkJLvXvkMW3Pqyjud3mXnP8tr7zlqS+an064ntr+ABYkkVZImA+CUh/hZG+1x+HKJ5N/wCMfzZRhKX+bP8Aj4WEpAd/+aOP8RTv/nHPzPrcv1ryneUT9Gv9uT4nC14mEAfD/suXwfyNmT4vGAed/wAUuKPp/qfVxf6RsMrF9f6XF/uf+PRfQeSYOxV4/wCYo/X/ADQ0xUG8dnIx+VaZX1ZdEq/Ne483eT9SXzhHeCbSIpVVrVQRxjY0+MfZZv8AK5fb45OOcj0kDg/nR/HEmMzyPDX+yez6Lq0Or2UOoWprDOgdT7MK5IimJ2R2BDsVdirsVdirsVdirsVdirsVdirsVQs+oW9vvPKkY/ymA/WclGEpcgT8GQiT3pTqfnzQtMXneX1vGp7mRf4HJDFI8gngKQ3H55+T4ACdSiav8lXP0hAzZIYT3w/zpxh/upMjiP8AR/00f1oQ/n95Ylf0dOkuL+elfTtraV2/FEH/AA2VzEYfXLHD+tPi/wCmXGx4QOZiP6P87+rwiSHb82tZuAzWHly+kX9kyskRI8Sj/Ev+rlUs+EfxTl/VxS4f82bEyh/S/wBJKP8Asmx5985TAmPy8yHsJJ16+/HthGfH3ZZf1RH/AHyTOA5if+bwrH138yJtk0yzir3M9afMZEaiN/TM/wBb0/7JIkAOXF/ncKxYPzOvFKNJptoDty4uzAeK8Sy/8FkvzHdjP+dOMof7Hgkwjk/o/wCmPp/2MuJsfl/55vUYX/mT0uVBxt7ZBTxpJ+7kX/Y5Hx8t7Rww/wBNl/2OWP8Avpf5qjJLuhD4eL/uuFzfkLbXTiTVdV1K9IGwln6HxqoVv+GxGTP0nwf8Lhwf7GUpw/2LLjlVAmP9X6f9LLjRlt+QXleKjTRS3BFf72V2Br4gnIcM5fVOZP8AOieD/ctdHvl8+FObT8pPK1oaw6bAD8if1nI/l4nnxT/rGSDAHn98k5svK2lWJL2tnBE3ikSg/eBXH8tDkQJf1vX/ALviSYA86TRIljFEAA9sshjjD6QIf1QIpGy/LUuxV2KuxV2KuxV2KuxV2KoZbKBJTOqKJWFC4AqR7t1yoYog8QA4j/FXqY8Iu0TlrJ2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK7CrsVdir//0vVOBXYVdirsVdiqyWVYlLuaKoJJPYDriFSPyz540jzN6o0i5S49BuL8a7H6cnKBizlDhRPmHyzY+YbY2epxCWIkMK7EEdGU9VbMaePi8iPplH6mBCZQQrDGsSfZUBR8hsMtVeTQVOFULaajbXlTbSpKF2PBg1PnxyUoSj9QMf6wZSgRzti35yW73HlLUoo/tGA/gRXKpckB5H558tpq35Uafe2lFexijmX7+L/7LKzHhIP+mT1euflTr0fmjyrZ3Uh5l4RHLXxUcHBy6QtZCnjflO0/5VN+YUml3Hw6XrG0DdgSaxr/ALFvgyvCb9J5j/ZIjyp9KuiupRxVT1GWEWh4R+RED6P5t8w6JGf9GjkDqOwJY9v9XK4GhTLo96y1i7FXYq7FXYqlPmTy9a+YLGXTb1eUUopt1B7Mv+UpyqceLy/myUhF6ZZGxtYrUuZDEoXm3U0FKnLBfVXmWufmJrPmW/k0LyIiEQnjcX8orFGf5Ix+3J/wX+pjPIMe1eJk/m/wR/ryZ2I+cv8AYx/rIix/Iuyu6XHmm7udYujQkzSMsYPhHAhVVT/JbllUjlntKXBH/U8cYwh+P6UeBjKcpbE7fzY+iP8AsWW2P5eeX7EAW2n26AdKRr/TKvysDzHF/WMp/wC6ajjBX3/kTQ76MxXFjA6Ht6Y/WBXANLAchw/1TJJgCxYfkhpenyG68vz3GmXBNQYnJT5GF/hK/wCTl48SHKRkP5uT1x/47/WZiUhyP+bL1RXr5w1ryqwi81wCaxG36Qt6lQOxuYPtx/5ci/BkhljI1L93kP0/6lP+rk/h/qzZWJf0P9x/pv4f89nthfwX8K3Vo6ywyAMrqQQQe6kZYYkbFBFInAh2KuxV2Koa+v4LCF7q7dYoYxyZ3ICgeJJ6YQLSBbxzUvzf1nzfcPpX5e23qorcJL6UUjX3j/5u5N/kYJ5I4tv7zJ/Nj9P4/wBj/WZWI/0z/sWI/l5+VDaz5rudR125N+mmMBNI5qrzU5FF5dIo8x5meQ1Lr9Uf5sf5iJEnmmJeL8x/PLX0pUaBoA2c0CswPL7X8vIcsslGyIR/zuFJH8IZjr//ADkh5b0qf0LYTXwU0d7dQyrvT7bFVb/Y5kGAjtIxgf5v1f7lTEDmQHqFncrdQJcICFkUMARQ0IruPHKubBC6tpVleCO4voll+qt6sZYVKsB9pP8AKyEo31I/zpR/0387/OVQ8teaNP8AMdubvTJRLGrFG6ghh1VgfiBy0imUo0k35mQTRWMWsWorPp0qzbbkpXjOv/IvKZHhN/5v+mWLHvz2AvfKq6xa7/VZYboHr8IIJwy2PxUbFJPyUAu/Nev6pGtIpjFRtqVI5sBTBHu7kEUzH86/Kt15k8uzWun1a6iZZo0H7RQ14ZHIaF8/539VF086m/P7UL2wi0LRNOuB5gZRCwdCFjYDgX/664Zac2MDiBv+bFnxQ5g3/ReP/lhbXcP5kWsF6xku1um9ViaksAzOcBlxb97G75vuLJodirGPzMtJLvy3qMMRo5t3oR7DkfwyMjQV4H5c/Kjyufy/PmG/VvrjQs/q8yCJK8UVB9n7Xw5V4cibs3/D/NXgs9UT5y1axtfLeheneR3OqaTLC0io3JqMaPU/yr9n7WXSxyFSltf9XibeGXM9X0paTi4hSUdHUMPpFcLUrYqhbizt5HWeZELx7qzAVX5E9MpOGMjZAMh9Mq9THhBL58873dx+cPmaPy5pJroenOGuJx0ZgfiAPf8AlT/g8lmPD6R/eH/YtkjW3V9DWdslrClvGKJGoUD2UUGSApi428RkEpReYFA1BWnz65HhF3t/WRSvliWPebhoUdm9x5jW3+qKPia4VSu/b4x1/wBX4spOljkPIcX876Zf6f8Ah/0yBj4zyH4/pPmn8vte8sT/AJjLcaGRp+mqCsa8iBK5+EcU+yqyMfst/k5bHHKHpiTL+dxS/h/z/VJsEeHYfe+t8LB5h/zkRbcvLJvQKtZzwzVHgrb5VLoyixP8xb/6l5s8s+Z4iGhulEJbsS9P+axhG0vgy8nveWNby38+NPe3sbXzPais+kTrMfeM/BIPxyo7EHp9Mkh6PpWox6jaxXkJrHMiupHgwrlpUikXihaSFFTsMiI9yUvvvMOnWFPrl1DBXp6kir/xMrl8MM5/SJS/qgyZjHI7gS+TEPNX54+WfLyb3SXcxG0duyufpcHgv/Bcv8nD4Jj9Xo/rfV/pPq/3v9JeCue3+6/0ryDXf+cidR8wtJb6dIml2w6SGpcivZqfa/1eOVmQG0fV/Sl+JcP+zZChyon+kx+2nsrqZWube91u9rVWYMqNX/V5SMv+yzEyZAfrnw/zo4/+Kl/xDXKQ/ilf9X/inoOieT/N2uRmG0gg8vWDgV9NSJWHu/8AfN/suP8Ar5CE4j+6jf8AtmT1f6Xi+j/NhNgJV9I/zpPQPKP5M6D5dP1gxfXL0nkZ7j42r4qG+Ff9b7f+Vh8Hj3yHxL/h/g/0v8X+fxf5rEji+rf/AHP+l/4pnqqFFB0zJEQNgzXZJXYqwP8ANz8x5PI2mLeW9s91PK/pxqAeIPjIR9lf+JYBKI+o1/vkgjq8p0vyH56/NBluvNt02n6SxqLeP4WYeHpj/iU3/AZXLVSntiHBH/VPx6p/5vBBfFJ+n0/j8f0XuflHyTpXlO0Fjo8CwxDqerMfF3PxMchjxCO/1S/nS+r/AI7/AFWIjTGvzX0G5km03XtNQveWNygIUVJjkPCSv+Sv2sMiIHi7/TL/AHrISp6GpqKnrl6G6jFWJefT5mjgSTyqIHnDDkk2wI7/ABclys5OD+HxB/RPq/H+m/qshLh6cf4/rQeB+eNT8++WdZg846nZWsMgpbVjbkjcvsiRfUZl/wBbkuRhnjxfTOF/wy/j/qzUT35V8f8AiZN/md5f893VpB5t1q4giW1ZWjSD7UQc/b5AfFx/12x8eztHg/pS/wB99SBM3yEB+Px9b0zR/JGsr5fvmvdWk1JL20LRq42BK8/hP2vi+zhnkmR6uD/NCSZda+S//nGfUVuPKq2vHi9rLJG3zrWuTjSC9ZySHlf5+w6vqWjDRNH083zXh4s3aOhqH6rRv8pvhynJOER6rv8Ah4RL/exl/pV4gOfF/m28dk/5x2vPLnlq51nW5ma4hUP9Wic8aVC/vH/ab/V/4PIDJM/0MZ/h/i/3XBFYyJ8npv5Sflp5b1XSNP8AMUFr6F2vxho3atQaUYk7r/k4jGQbEp/53q4lMaO3F80z/O2w+rx2Xmy0P77TZlLsvUxMeLioyw+mV9/pkyGxenWF6l7bx3MRqkqhlPsRXLWJ2RGKobULCG/t5LS4UPDKpVge4IpkJR4hSvm3zF5g81/k7dJptlwutGkcm3V6E0J/u/8Afi8cceahwzHL+JnGXeLr+JCah5x1zVtRi1PzlpN1JpygNFbwqeFf5nH2m/2WVTz48np4vDj/ALv/ADkHJE7cnplj/wA5E+WIEWGdLizCgDg8LAAU6fCMyYRhVRlD/cp4YnkYq93/AM5JeTrdOS3Esp/lSJ6/8OEX/hstGMdZQ/03F/uOJIgO+I/03+9il7f85J6bc7aXp1/dHt+64j/hfUb/AIXKZZMUfqnH/N/4/KDG4D+If5v/AB4w/wByoXP5gecPNNtJaadobQRTqyF7hiKAilf2W/4XKjqcfKPHP+r+P98jjiOVn8f5rGPLn/OLM8sI/TV0kfLdkhWp37F2/wCJZR65b1GH9KXqmxsny/3SXaRdaT+THmKfTbtBqEEyBrdkAaVGrQREfss2XRwg/wB7sR/F/BKP9RsEAR6v9N/xxnc2m+cfzJUreN+gtFkoDEN55F/ym/YVv9j/ALLBLLxjhxxB/wBsyD0/5kPx/WYmf83/AE0v97H8f1maeRPyp0LySpOkwUnYcXmc8nYe5+yP9iq4IYzHckzP+lj/AJsPo/339JiAzPMhKX6+obT7lW6GGQH5cWyJ5KHln5YeXI/MH5dHSX6TiZVPuGPA/wDBLlR3DIsZfzJPrXkOHSblibqO+h0+47GnOg5f6yjJylYv+cGRPXvevy+b9M0LUbLyvIGjnuIv3NFASiCnHnVfi+H7Kq2ThEV/V/h9XF93D/smIixfWEXSPzFsboCo1K0eE+POM8gflwyuIonzUBlXnD8w9H8qW7T6hOocbLEpBdmpsioPi+LMkQPM+kfzpJED12eUfnHr935j/L9dXvrN7VjcxuI23IQE8Hfw5LmNKUZH03X0+r+JAIPJUvfzs8u6poUuia3bz2PqWvFBPEeBPH92UZOX7XFuXw5LghONRkDX8P0yjw/1/SkAHkR/VTz8i/O2nxeTYpL28V2s1f1BXk6IrELyjXlJxVf8n7OW8EiLP9Xi/h/0/wBKmJ5/7JQ/KrSLLzNrOseaPSjnsbi4pbNIlSeP25E5jZW+zmJLFGZ4ZCM6/wA6PExmAdj0ZV+aXkaLW9CmSxjWO8t6TwFAAQ8fxgbfzfZxOMQ3iK4f9yx5bsJ8xfmsdc8pWtjpv7zW9WH1X0h1RgeE7uP2VX+bMmRERxdP4f6X9FtIrd6z5Q0BPL+k2ulJ0t4lT6QN/wAcrgKDWnOWK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8t/JdzNea9P2OoMv3KvtlUGRepZaxdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiryPTY+X5p3jClFsUrXxpHSn35X1ZdHrmWMXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqt5ZAStK4CmECkOySuxV5f/zkVCX8seoQTDFcwvLQV+AE8z+OVS7u/wBKQhfOf5z6doVhDpvl0i+1a4jVbaGIcqchxRn4/CvH+XLzEYhc9gP9k2GPDvLb/fI38jvy+ufK+nS3msD/AHMX8hknJoSN9k5gtyX9rMaB4zxHbi+mP0+n+q1c93puXq7FXkLhLr81QKVNvp1fA1JH3/C+VHcs+il/zkj5ii/Qy+WbX99qWpyIkcS7txru5H8vKi/9c5ZIVHiOwCAKFvRfI+hvoWiWWlyfbt4URvmB8X45GHLdjafZNXYq7FXYq7FXYq8g/wCcgl83WtlBqflKaRUtyTPHF9ojbi1P21/mXI/mPB5iPCf4pR4uH/iYp4+F555F/OP8yNaVTDZJcwqeLSOnAVrTqvzwy1uKOxFy/omX/SDIZYdQP9Mz6TWvzPnjkeO1soGRahG5OWrTZCpT4sgdVGtoS/08f9zJEsgPKP8Askalr+aEkal7jS46jf8Adylh9HxKTg/Mn/U/9NOPD/sJcaYz8oy/rGUf9yvTyT59vP3l15iWGv7EVpHQCnSpb7Vf9bEajIf4cUPjkn/01j/vkeJLugPh4sf9n6mz+TV9cFX1HX9RuKGpX1Aq/wCxVRt/wWE5cx6wh/wuHhS/3U4f7FY5Zjrw/wDCxwf7H1K6f84++Wmoblbi4O5PqzOwJPiCcH7w85z/AM30f7lgbPWX+aeFNdO/Jjypp44w6fCd6/EORr/sspOnB+ozn/WnL/e8LDgB52finNr5G0K1bnBp9sjjowhQH7+NcI0sO6/6xlP/AHRkkxB2O/8AW9SbW1lDarxhQKDvt45OGGEPpEY/1QGYFIjL1dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsCuxAV2FXYq/wD/0/VOBXYVdirsVdiqD1e3a5s54FFWkjdQD0PIEUyMuSh8g/kdLqXknz6uk6nG1t9b5xMjdDWrxkfzfEPgbI48gkNmUZWH2VljF2KvJvzwmu9Tk03ypY3a2japMyzENRvTUVoB9r4/iX+VmwGUoi4jf+GTONgWP9MwzXv+cXJdJtmu/Kmo3CXka8uMjCjEb7FAvFm/2WUxzZse9iY/ijHih/vpcTATnHkzD8ivOV5568u3FlrXxXNuzWsj9SwK/bP+V8WWyImPeGct3m0fm5PLHlXX/JOrMou7JmS3D/tpI448B+1x+1gj6o+76v6KQLF9zI/+cTb2eytb/wAvX1Unt3SVUbrxkHUf5PIcv9lhjLiFsTuHpH5r/llb+etPEPL0L6BudvOOqMPGm/Fv+F+1lU4kHij9Q/2TDluOjANP/OzUvIgOjfmFayerCtIryAckmAHw1rxXm383/Brl+PLDLzPh5B9WOX/HOL/iP6TYJRl/Ql/N/H4/qph/zjtotzP+kvNt7G0LatOWjRga+mCSG+L4viZspjISO3qr08TEm3tOXIdirsVdirsVdirB/wA2dcuLHS1sdObjf6jKtrCR1Bc/vJP+eceRMuEX3f7plHbfuTvyd5WtvK+mxaZaj4Y1HJu7OftyP/lM2QhCvj9TFPctVAatrVnpEJudQmSCIdWkYAfRXvkowMuW7KMSeTzTVv8AnJnypYyGKCSW74/aaGMso+nJGAj9UoxZ8IH1ERZp5D8+ad5108anpLExcihDCjAjsw/4bIyjXn/SYyjXn/Sb8/x6zJo88flwRtqDABBMAVoftbP8Bbj/ADfDlMiBzj4n9H8Sj/sfUwuunH/RfMsH/OOvni4Zp751jgVzI0UcwUn9pxBHEGhR2+yv2V5ZEazJEVEZIRH82Xpj/mSycc1GWXLcf6Xhh/VjxPpD8sb2zm0WG1sppZTaj0pBPtMrLsVnT9lv81y6zIWSMl/xx+mTKVnfnf8AEy/Fi7FUq0fzNp2svNHp06TvbtwlCEHi3g2SlAx5s5QMeaMvrGC+he1u41lhkFGRwCpHgVb4TlUo8QosENZaRa6Ratb6XDHAiglUjUKtfku3XIxgIDZAFPjYfmveados/lnS1YX95cytcSAVZgxKiNP2uXEZZGQiOLv/ANi3cQG70HyB+TWv+YbCKz1knS9GU8jbx7STE/aeY/5X+VmNDKT/AHe3F9WSX8f9Rq4z/Dtf1S/ie2+XvLvlrRQfL+nR26yRqrPD8LOR1SSQH4m/1my0aUVxEcf9KXqR4W11/nNfmfrGqaJ5futR0JUe7t1DhWBYcQf3nwr/ACr8X+rkxMY9yOL/AGMf9iziQOe6n+Xv5iWfmnQYNbkdISw4zBjxCyL/AHi/Gen7S/5GW8HF9Nn/AGSTAnlu8pv/ADdZeQPNR1XSJPW0LUiBchK+lHKTx9RJKemenL4eXw8spxDgPASP50fVxyj/AEZfzUxFek/8Vwf6V7fonmPTPM9vJJp0qXNuCUdl3Xcbr/wOTnCvSWJjTCBpLXmg6t5KkqZ7SNlh8WjYGS1I/wCB9N/8pWygn03/ADfq/wA3/ioqe9h3/OJ90ZbfU1YFSk0YIptXjx+0f2vgyYPx/wB0pL6ByxioraRK/qqihz1NBX78q8MA3QRT5481/lZbeUPOmjazpcj8r+9f1OZqASK0B/yg7ZGNg7m7+lMQfe+jcvV2KoLWrX65Y3Ft/v2J0/4JSv8AHIy5K+c/JHkLW/O2hafp63K2/ltfU9ZU/vHdJXVgf9anw/yZTKcvoA/5KS/h/wCPJlI8h/pnovmr8ndEsPKl/p2j2ywymBm5jd2MY9QcnPxHlkPC4fVvKX86X+9/msQKZT+VuqHVPLOnXbsGd7dAxH8yji6/7FhxzLZFleKGN+ePKUnmiwbTVu5rJHPxtBQFl7oWYMQP9XjkJGY+ih/WHH/pfVHhRZHLb/ZK/lHydp3lOyXT9LiEcSjcj7THu7t1ZjlePHw785H6pJAT3L1dirsVSLzd5Q07zZYnTNXj9W3Zg1KlSCOhBX4sqnDiHMw/pR4f99xRQQkmi/kz5T0do5bPToBLCQUdl5MCOjc35NyykacDcmcv605cP+k+j/YseD8WzjMtmwP88yq+TdTMnT0h/wATSmQkLSHlv5xRy23kXy9qxqJLR7ZverIH/wCZeQG9JB3fQunzie3jlU8g6K1fmK5aEFIvOmtaHa2Mtjr91DBDcIUZZGAJDCmyfab/AIHJeDLINv8ATfTHi/ry9LKOMy5fj/TPAvyv/PNPKsFz5enEmqx28lLJrdSSyEnYlhyVV/Y+DHjiB6+HGY+mW/HxKZD+LY/7pmf+O/zG8xgHRNJjsYSNnuTuQe/FitMqOqx/wCeT+l/CjxI9AT/Skwz8y7DXdJsfr3nfXmBYUSysyFZiex+z8C/ts3PLI5cstwI4I/zvqn/m/wBKX9eLOM5nfbH/AFfq/H+cxv8ALz8gtS868NSukbT9KkoVeVy8zrXlyRKJXl+zI3Ff2+D5izzSyH0mWQj6smT6Yy/3U/6sf6vixapSJO1n+lL8fj+e930z/nHTyfY8S1q88i7c5ZHYn3K1WP8A4FMj4B6ymf6vDD/cRjL/AGUmBjfMy+fD/uOFkWmflT5Y0xhJa6fArrsDwBP44fy0evFP+tKUl4B7/wCsyaCzhtxxhRUA7KAMtGKMeQDICkRlqXYVdiqGur63s153MiRqO7sFH3nDGBPK2QiSlflzztpHmR5U0i6juWgIEnA1oTWn/ETkpQMeaDGnkUmu6loX5ofo7VZmk0rU0/crJvGGoCgQH4QyyD0/9bKeLxBwmpcB7opB4hXOvJ7H5n8y2nlnTptW1BuNvbryag3J6KqDuzN8K5ZEWgC3k1r+dfmzUIDqth5ckfSqc1cyDmydeap8LHkvxfCjf7LKpanDHb1n+lwnh/3Mo+n/AIay48fL1/1v4f8Ac/756P5C/MLS/Otn9c0x/iSglib7cbfyuuXSjW/MfwyRKNeaYeatVi06wkeS4S0eQGOKSQ0USMCI/wDhsiImX0+o/wA1Ygnk8K8yflj5x0GxXzNY6vLe31uRM8QJKMvVuArxdeP7PH7GVfmskd5iIh/FH+KH9b0r4srs8v5r1/8ALDz7B520aLVItpvsTJ/LIAOa/jyy4hZCmG/85Fec9D0/R5dC1YyfWrqL1IQicgCp+B2JKqvxDj/NkTDiHOMa/ncX+9jJRG+oj83nGifm7rHm7ywPKmmaVJfXPo+jLOdkoPsN/KH4gN8T5HLkxxHqJ4j/AAxH4l/sIplKI33J/m/j/jqK/LCw8+ebNLW0tNTSxtLJjbsoFXBUdH8fhbAc8uUYxNj6pKch6CP9ZO/yCtNS8peZdU8qauwZ3UXCN/Pvx5D/AFlPLGE+IfzSPqii7G73G/8AMGn6cype3MULPsodwpP/AARy+OOR5ApECeQKNMyBfVLDhSta7ffkKY10eQfm/wDnVoFlpl3o9rJ9dvJonj4w/EqkinKRxt8P2vh5ZOWOh6tv6P8AGz4K3O39FiP5PeRvM3mTy9arNqLWOilTwjgp6jCprzft8WY/jTG0AI/7ZL6v81jxkctv6X8b3JvJ1mNEfy8oJtmiMXxGp3H2mJ6ty+LBKJIo7n+d/SYMX/I3W3utHfSLo1u9Lme2kB60U/uz/wADlkTYtmd93pGSYpL5s802nlnT5NTvmpHGDQd2b9lEHdmwgWyjG3nvkLyXc+Z7r/F/mkFpZDytrdh8Ma/sEr/NmKT4p/2sfT/T/wCOolK/c9a4ilKbZcYgoQtxpdpc7TwxyD/KUH9Yys6eB6R+UWJiPJ5VqP5g2D30mm+StHXU7+FijSpGscKHoec9Pi3/AJeP+vkJ4MGP6xGcv9TjHjn/AL7/AH/D/EyMIR58/wCbER4v9N/CkflOHzlrvnFotXvVhttOVJJ4bXaIM+6Wp2+NuPLmzcv9fJjJQ4Yxhj/oyEZS4f8Aipfw+pnxmqoR/o/V6Xvoy4Bgxn8w7LV77Rp7Xy+yx30oCqzGlAT8ZDfzccEpmG4HEkGnjf5lfk9ZeVvJk19CDPq0Txyy3TEl61o5Q/sjk2Y9G+KRuZP+bH+igc7O7vIn52+cL21dzpK6jDY8YpvRek1afDJ6fxcuSjl8K5kyz4x9QnAS/wApH1wj/sYcP+dNtMo9RL+tH1f7Dh/370Pyj+eWgeYrgadIZLDUDQehcrwJP8qN9kn/ACW4P/kZbECY4oGOQf0fq/0v/E8TEREt4kT/AN1+P6spPR8rYJZ5lcJpd2/YQSn7kbAUhh35ArTydYk/teof+Sj5GKlh+raDb6N53ewviI9O114biFuwuYXDmP8Al5S/Z/2a5TGN+nlR4o/1fx/uEx3+HqZ3+a3kMeatL5Wp9PU7M+taSjZldd+Ff5ZKccnO4niHOH+yh/FH8f75hy37nzpqOtah5rMHmTzNeNCyA29ra2Q/0iRlPGSg+L0lZ/tyNy/yEyyWQk8Uawxh/lJf72P8cv8ASxi3GR5/3cR/F/xLPfyqsvK0mtLY6np1xba3w5xC+cycwNy6cvh57H/hsqEBmF8cs1fVGQ4P9i1UJi7M6/nPQPz/AIZZvJ19BBC0xZVBCblQCHMlO6rx+LJTIiN9ltjtrrGnw/llDc62IZHFjwjDhX/eFSkAA+L4+XFv8nGWET3I3/nfTL/T/V/xTMxs33er1JV5K/5xy0DVvLdnc38c9tqM0Ikkkjcq1X+OjRtyj+yePHhlURL6oSkOL+H0yxf7ni/2bVvdgkf6Xh/H+c9S/L3yL/g7T20xLqa7j5lkMxBKCgX004hfh2rlmMSA9XD/AMk48H++l6kizz/2PpSvzf8Am3Y6PP8AonS421LV2BC28O9D/wAXONkWv2syJAYxczX9H+OX9WLZVby2/o/xPPfyy8rT+T/OBl8xwxpcaxEz2zJ9iKSpea1T9nnxP+fLMTHU9qI4PVGMv5v87+sgeryr6Y/0H0FmSxdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiryz8jmQya6IzVV1SVfHoqDrlcNmUnqeWMXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8l8ukTfmfq5JIMVnEKU8Vg3r9OVDmyPJ61lrF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KreO9e+ViO9lNrssQ7FXYqhr+wg1CCS0ukEkEqlXVtwQRQg5CURIUVY55U/LDy/5WdptIs0hlb9vdm+QZ+XEf6uURwAbkymR9PEeLh/3LERplmZTJ2KuxV5P+ZflHXbfXbXzj5URJ7yKJreaBzQOhqVNf5lJ/4jlBn4Zsgzgf5v1Rkolw+ap+XH5SSWF6/mnzQ/1vXbj4t90hrv6cX+UtePL/gMHqyniltD+HH/AMV/xP8ApvUgniN/6WP8x6pmQl2KuxV2KuxV2KuxVoiux6YCFU4LeOBeMShF8AKD8MjGIHJCrk0uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2BXYVdirsVf/U9UjArsKuxV2KuxV2KvDfz705NN17y/5m+yI7tIJDTsTzBJ/1eeY9er3j/ZJiN3uXXLwh2FXzl/zkX5e1PRtcsPP9qoltrJ4ldUB5KFJfnIfiXg393y+H7Sp+1lPiVKjt/Nlf+x4f4f8AZcSRLfd7TcedtPPl6TzNbSLJZLbtMGBpUAE8d/2uXw8f5vhzIMN6ZcO9MI/5xn0Z7PysL+ZeMmoTyXG/XiTwQ/7JU5f7LKI73/pfx/nMbZF5t/Jvy75rv49V1S353MZG4JAYL0WQftDK5YbOxMeL6uFiY2xfzTFB5K882GugrDY6rEbOdiPhDrRoTX7KcgOPLJwjR4R/F6o/77+t/wAfbIC9v9K9J0jzTpmsPLHptzHctBQSekwYKTWgZl25fD9nMiUTDY7H+b/F/pfqRKJjz/0v8X+l+pMLqygul4XCLIvgwB/XmPkxRn9QEv6zAi0h8yeftC8qwltTuooAg+xUFtuyxr8WZMMBrb0x/wBLH8f1W0Yyf+PMBf8A5yY0u6dY9FsLy/Dd446Cvh8WRnLHDaUo/wCb6mJ4Y8yuH51+YBcKZPLV6tmSAz0JcAmhPpgcT/weVfmsH86X9avR96TKHef9K9fjkDqG3FQDQ9d/EZYwX4q7FXYqwXzLB9d836NAw/d28N3c/SBFAP8AgfWyo86/H8TIcmdZaxeffm/+Z0fkbTlMKGbU7wmK0iAryfb4j/kpzXb9t+KftfCRQFnYBlEDmejBfL35AXnmV49Z/MG8murpzzNqrURQdxG5X+X+WPin7PxZjyyZMvXw4fzYjhn/AMd4v9P/AJzGU5S8o/0Xr2k+SNF0qH6tZWUEcXgEG/zqMgNPEdOL+lL1SYCADyHynB/yrPz9PobjjpGvVltj+yso39P26tH/AMicuwnYx/mfT/U/H+5bY7iu71Re95Yxdirz7zxpN1olyPN2hqWliA+uwL/u+EfaNP8Af8K/EjfaZfgym/CN/wCTn9Uf5kv9Vj/v/wDTfzkxlXP6fx6mYaHrdrrdnFqNg4kt51DKR4HsfBl+yy/stl5FKRSH8webNL8uxG41W5jt0AJ+NgCafyr1OSjjMuTKMCXzR5I/MhPK3mjUYvLNlJqFrrEgNqlDFuCz0HMfYX1HXl/Kq5TAxhfESeD/AFP97/0l/mIsAb71/N9T0mT8/wC80F1j846JdadG+wmQiVK/dGP+Bdn/AMjJwy4smwMoS/m5ISj/AMf/AOlSIyhPlcCfpjIS/wCOy/0sGb6jOvn3y40nly+MAu0/dXCA1WjfGpU8WX7LRuvwtjPih9NEj/Sy/H+xZEGJfPur/kfq35YvH5utr63uHtGDcJVI5EijAV5VZvsp/rZjQMpH1xjKP8Xq4v8AiGMbJ5cX856Lp/8AzlLov1SuowTxaipKvbohYigryDfy/wCtmaIwkLEhGP8AS+r/AGLYIxPWh/SeS+ffzrtrvzNZeatCs5Ibu0HGUS0AlSlAG4FqfAzry/l4/wAuVDhibB4gfq/h/wBLx/8AEfwoFR87+r/jv/SLItU/Onzl5k043kX1TR9LmBQTSMCzjo4jVvVlf+XlDB/xHJHKOUISn/OlL6Yf58/Cwf5s5zn/AEWY2+mPF/Sl9Mf9NwQl/U9UnnP5e6Lf3GtrpNsISbpDJHLdq3p8VBaSaOOXir/Cn7Sfsfs/FmOcnEKH7yj9OOcoQ4/6fDKH+dH/AGMmsS/z6/mylw/7z/Szi9o17RfJWjW7ab5t1T65fXMRCtWqRV+ENFDF+7i4t9jl8XHJDTTkNzHHX044+iP/ABU/6TIY5HmYwr6Y/RH/AEjHf+cafOY8v6zc+Trl1e3uXLwSA/CXA24f5M8Y5L/lf6+Wx3FHaQ/EkVY/qvcfOMZ0jUbTzMn91H/o11/xhkYcJf8AnhN8Tf8AFTyZVyP9f0/5/wDD/p/p/wBKxienf/uv4WE/kvAmgebPMvlsfComS6iX/Ikq3/CrJCuOMbf1fSvR7VlrF2KvLPz4hRIdGvXYqINWtqkGlFYtz+L/AGOVyu/myiHqfTLGLsVaIB2wEKwP8sfId35Na/szMsumyzma1QCjR8yTIjf5P2OH+yb9rK4GVVL+H6ZX9X/E/wDHlBPJl+s2091aTQWkginkRlRyKhWI2JXwyR5bf7L6Uh4x/wA44anfaVNqXkrWFYXVjKZUNDx4MeL0f7PFn/eJ/Nzb+XBCYkO7+j/F+IpMrD3XLGLsVdirsVdirTELudsVQt9qNvYQm5vJUhhUVLuwVR82b4cIiZbDdkImWweaaj+dI1WdtL8k2zandiimcgrbxk93k+0/H+Vf9jywZJQxfUbn/Djh6pf6b6Y/j6UkCPPf+jH/AIr8f1mfeVdNu9O0+K21K4N3dipklO1WYlyFH7KJXii/yZCMjLeVRP8ANj9Mf6LF5j/zlHqDp5et9MhYiS+vIoyq7lkAZ2FO/wAfpYZGhbKLf/OSWm/VvITW0Y5JbvbrXuAp4V/41ysch+P4WL0jyo63ug2UkbFVmtIWDDYgNGpB+e+WdFLzTR/+cXtAt7przVZp9SYsSqztsB/l8OPqH/W+D/IymQyZPrlf9X0/7KUpz/0koNZEpfUf9L6P+Kl/snqGj+UdJ0ZQmnWkMAUUHBADT50wR08BvVn+dL1S/wBkogAnGZLN5n53/IPQPOWptrOqGf12QJRHAX4RxDBSrfFTMaUJnlL+rHh4uGX+m+n+h/skG3odhZx2NvHawikcSqij2UcRl0RwikonJq7FUv1TXLHSUMt/PHAg3q7Af8SyUMZly3ZxgZcnn2r/APORnlKwZo4rlrmQdBChYH5N9nJHGB9RjH48XD/mx9TLgrmQP9l/uWPr+dvmjzIzf4Q0GSSEdJro8VP+xrEtf+e+UnUYYbevIf5uMfT/AKSOWXD/AFoQYccBtvP+r/DL/Sy/2XAsj8l/mZ5prcazqqaQv7MFsKkAncM0bL/sWaWXI/mpn6IRj/SyfV/WjxRyy/rf3X9RPiHoAP8Adf7/AP3cf6qIi/5xe0qQKb+/vLhj9ur0DE9dgNsiZZpc5V/Vj/xUptZMu9jH5RaWPy7/ADFv/Km5tb2LnbsepC1mjHL9rinrRt/lrhxmxv8AVH0/j+t9bIbj3PTPzu/L1fNeivPagrqliDPauuzcl+Mxgj/fnH/guORn6Txj+D/c/wDHfqY8t+55n5k87L+Y/l/y9pfIC5vNQihvF7hohSTkP5ZOfqZbkO238QbSO59GW1rHbRrDCoSNAFVVFAAOgAHbERAFNb528i6+lt+bOq2GkKv1S5VlcDpzjQO7CnRvVEi/8FkQPDFf6VnVCntPnLypa+ddFk06+QqJV5LX7SOAeD/6yHK5jiFx6eqP/EyYHyeOfk9+cuneV9Fn0TzZclLqwneJQwLMU7IoHxNxYOv/AAOZUR4ovbl6uL0ttGW6XfkH580y384ajpGmF107U3MtsrinFlBcgr+zyX4U/wBVchGPCKu6+mX89BG1c6e1/mNZKNOfU4NMi1XULYVgjdAxqxAbiWHKij4uK/ayjJCBNzBI/o8X+z4f4f60ZcLURH+L8f7p88+VvMfnTyz5jubCx02G0utYpKtvIaIpHI84/j/1/h+L+TDjy4wPSJTr6Yy9E/8AZRgzjOIGwJEf4f4v94mHk6Lz/peu6no1i9rb3shF7KrgFW5H/dZ/ZHxfHhhmAG0Sd/p/iivH3C/6LHvzF87a7LrdlcXkf6M1uNXtnljIKMjGglBH+u//AAuWRmL4ocQv+GQ+mTISrlt/Rk9ltv8AnGvQriL1NVnub66dd5nkPUj7SD/hvtZRIZJ7ykR/NjEeiH4/zWqRlLmTbB38patDrCflhrGpyy6XcxGa3eMfGoTmyRuf5OKcXVm4/Zf4cs8bIRXphkHp4vq44/7D/i/6zZxyI6A/zv53+5evaR+TPlvStNm0u1tQBcRNFJMd5WDChPqH4gf2vh+HKfAvckyn/Ol/DL+hH6YtXCwLTvy287/l+Wi8qXcd7ptSVt7jYgE1ov7Nf9Xjlkc8oCpx8T+lFmMhA3HH/u0zb899Q8vLTzfpE9oAQDLH8SVOXwy48hoGUD/NkEgxlyuP9ZKdN84afonnhNZhl4aP5htg6swIBlU8On7Lch/w+VwFEx258XNkB0e8ySLGpdzRRUknsBljW8a0ZZPzU19tVuVp5e0yQpbxnpNID/esP5f2v+BT+fKch4jwD/kpL/eM5bbf6Z6vrOr2uiWb392eFvCtWIFaD5LlsQOW0f8AcsAk3lb8ytC80MYtLukkmAqUOzf8CctljI32l/SizlCt+f8AVZQ681K+NcpO7Bjv1Kw8kaLO9hEsUFrFJNTxIBclj9oszZXDGIeZP1S/ikoCSfkppZt/L0Wo3BD3mpM13O/dmkJZa/6qcVyQ5mR6/wC5imXNn+WIdirDPzkeJfKGqev9k2zgf61Pg/4fjkZDZIDy3RZx+X19ovmGRhFpesWUFveciAElVAYpz/xu38vqZDDd1/P9Uf638xkBe3441T82fPHlDzpYz6dYJLf6lEpMM9rAzGN1+Jf33w/umb4X48kxyYoYzxmUMeT3+qf9H0xlGX+m9KDERO5jGX+y/wBj6Zf6Z6Z+T/muXzP5as9QuEZJuHpvy/aZPgaRD+0r05f63Jf2ctMgeW6yRf5qamumeV9TuWrX6rKi068nUxp/wzrgKAu/K/SRpPlnTbMChW2jZv8AWceo/wDwz5GHJSlX5yeS5vNGin6hRdSsnFzat35p8XAf8ZF+H/W45Cfp9Y5w/wBz/F/xSLrfuRH5afmNaedNOWVSI7+EBbqA7NHIPhf4D8XBm5cG/wBj9rMggEcQ+mX0/j8cTOUeo+k/jheYflz5Ss9D/NDVbORVcLA1xa8h9gSujusY/wAnm68v5cxox4hR34Cxqx7mR/8AOQ2lNZ29h5ws0/0zSbqN2YdTCT8an/J9Th/seWS+mQPf6ZKNi9WtLuHULWO6jIaGdA6k91Ych/wuWGN7LTzy4/KLyTY3n6YuI44+D+rxeWkKvWvL02PAfF+z9nKxppy9IOQw/wBT/h/q/Txf7Lj/AKSBjkdvUf6P8P8AxSJ1389PLemMLe0mOo3bbLBZj1WJ/wBZf3f/AA/L/JzIlAYxczHHH+kfV/pP4f8AP4Y/0mzgreREf91/pf8AiuFJZrPzv56PGYjQNJbqikPcup/mcfDHyH+r/lo2UfmL/uh/yUyjh/0kPx/RysRkr6R/nS/4j8S/rM68n+QdK8pwejpkIVz9uVt5HPi8h+JshHFR4j65fzpf73+a1gIX8zvLc2uaQ4sAP0jbMtxat0IljPNaf6y1X/KyU9vUP4f9z/FFldbp75dvp77T7e6u4zBcSxq0kbbFWI+Nf+CyYkJCxy/hUlMskrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVaY0FfDFXln5DRAw6zcgUWfVbhgPAUUj6d8ph+pJeqZch2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvJPIju/5h+YW6pwgFfkkYA/4llY5pp63liHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7BatVwCQK03hKuwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq0TTfFVP6xH/Mv3jDRTShLqlrCOUs0aAdywH6zk44pHkJfKTYMUjyEvkUHL5t0eI8ZL22VvAzID93LCcEx0l/pZMTAjmCGl846Mx4Le25NK7Sr/AFyPhnuXgKKTXLCSnC4iavSjr/XBwHzY8JRKXcUn2XU/Ig4KK0rA16YEOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv/9X1TgV2FXYq7FXYq7FXlH/OS9mZvKEsyD4reaGUEdqNxY/8C+VS2I97KL0by/eG9061uyamWGN6/wCsobLAgpjhQlXmG402KylXWXiSzdSsnrEBSCN68/hODwvEHDV/j6v6P9ZkIGW3N4ZoX/OP2i6/WbRdYmm8uvKWNshJUsPiaPn8Pw7j9jnx/byqXjwHBxR4f531ej/NlKHH+OFZcYHDf++/3MuF79p9hDp9vHZ2yiOGFQiKOgVRxUD6MnGPCKYU89/ML84otDuV0PQ4DqOtSbCGPdU95mH2f9XLSY4xxT2/mx/ik2UALl/pf5zy38zfy91e70KfXfO+qg3cdJIbJWCxKa7xqK/E/Alfh+L/AC8o48mTcREMY/hr18P87j/h/HpTcpdKiPx9f/STKtH/AD08neXtMgsfLVs9xcNGG+q2kR2biCyySMPib9nl+9fJjFDCOKcowH8UpGMpy/2XD/mynD+ijgjDmRH/AGUvx/Wkui1H8yPPw/cRp5d05q/E4JmIO23L4lb/AGMWQGqB/uo8f+2ZPo/zP4Zf5sZ/1kHIP4R/nS/H+8/zk78tf846+XtOf63qofU7xt2kuCWFa1qE+zlcsc8m85E/0Y+mP/FNe8vqN/7l6ZZaZbWKCO1iSJBsAigD8MnDDGHIAJAAReXJdirsVdirsVYvqdg58zWF8KcFtrmI793MMi7d/hhfKj9SejKMtQlWpeWtP1O4t7u9gSaezYvA7CpRjSrJ/wACuUyxCVE3t5y/2X87/OQRbBf+cgPPGseTNCTVNDCiQTqsjMoYBCG7H+Z+C8suExE7i7ZRKU/k7+ecnmmePRNbg+r6nJF6sbL9iRKFqr4NxGSMoy3jt/R/4lmQDuNv6P8AxKZ/85B+UZdb0EahYgi/0txcxMPtALvIAf8AV+L/AFkXMeZ4SJd31f1WsGjbMfIXmqHzVotrrEJB9eMFwOzj4ZV/2L1y8imUhSeySLGpZyAoG5O2BDyvXv8AnIPR7e6Om6NBNq8y19T6uKotNjVyOJH+V9j/ACsnIQh/eS4P6Nccvv8A+KZ8MY/Uf82I4vx/snk/ln80NUm1Wfy35ICwQ6jL6kYnofq7kH6xHGV+FuVOSf8ACZWJjGKA8av7v+D0/wBOP9FbEf6fD9L1ry5+Q9lFdHVfM076xftQ1n3RT/kRfZymQnl+s0P9Tx+mDTImX1f6WKr+bujJpsemeZrSID9C3KyOqCn7hyEnCqPh+FaN/krywCAgRVC/TL/eS/03+6ZRAHkr/nxr0lh5LvbyzCSCZEQFhUcJCEZwD+1wf4P8vLJRB+ocX/Ffwy/zWQHf0W/84/6SNE8l2frsB6gedidgA5NOv+TjAE/P0o5se/5yd1jTp9BGk+tXUTLHLDClWZuJINQv7PFmyc4kDiPp/rMuEgXyeH+abe/1a2t/P9yscNpJItpItuaPRBwd5D+y8ijj/wADlJIBoCr/AIpeqHH/AEYKee23+yQ/kH65rOt3Hljy59XS2vzIqS3EQZxEA24dxyVmi+2q/bfDMCtwM0h/Fcvq/n/Vw/0v56D7oz/H1s3/AC/0ry5+W2vahpvnVI3mtgstpPIpYMtTtHF8a82+Fv8AIbl8eAY/HHrv0fVGUuHF/veL+r6oz/mo4OPn0/0v/Hv6nrWfmvqmt+ebZfN2k2TWOmaYCI5ySs0iOeLsoX4eCqP2fscm+Nsj4kMcqhf82UvT4X9GPB+P81lxCJ9N7fVL+H/NQf5Q6h5J08Xdp5rSKWcANDM4MheNwP3dF5cZV/5q/ly04PE3kSK/nS4I/wBZZY+Ln/sj6f6zDPOWk22i60mp+VvXj08urwSSIycHBqIwX+0vIckbIxlwmuKOQj6ZRlx8Uf6TGJo1YL64/Lvzhb+fPLy3FyAJHUwXMZps9ODj/Vf7S5bOIkNuR/H+xZSHc8Stteu/KX5pwx6hU+skdm7/AO/IyPTgmdj+1xSFpf8ALRshjlfP/O/r/wDH/q/zlB4vx/E+pcsYOxV5l/zkTAknlSRn6pPbstPH1FX/AIixyuTKL0i2kEkSPv8AEoO/Xcd8mGJVcKuxV2KuxVDJZQpM1yqKJnAVnAFSB9kE9fhyAgAbQicml2KrJJFjBZyAo7nGrUC2P6t+Ynl/Str2/gjP+uD/AMR5ZaMMj0/03p/3TYMZYpe/n5opf0NHiuNTnOwW3jJH/Bn4crmYY/qlCPx4pf7FBAjzI/zfUxbzdpPnv8y7dbIW6aLYcw59SVubjdeMiRb04ty9Nl48v28p/M1/dCcj/O9OL/df7qEp/wBVfE4fpv8ArfT/AMf/ANKxzzD/AM4qa5dwq8Wtm6mjA4RXCuEB8Axefiv/ADyyEtRnIo1OP8UYzlxf6WUYxn/nSixOWZ57/GX4/wBynWiaR+a/liFIoU0+5t4VA9JFVagdBVI4m5f7LIY88Yf5Iwv6pR4f9N6Mkv8AcI8QD+H/AEvp/wB8mLfm159s6G+8tkr39Nq/d8TZkfm8HXxB/m/8dZcUBz4gwTV/zft9R832uq+Y9PuYLbS4TSAryImY1WVgNqceLJ/q4Lx5P4uGB/nfxf0Ujgl1qP8ASZr+dmuRed/y7l1rSGkW3Dq5DKQWCNxYEfyq3xcv8nGZo7Uf4V5ct3oH5NammpeUtMmjJYLbpGa+MY9I/wDEMkxLNckh2KuxV2KsZ82fmHonlSEz6vdJF4JWrsfBI1+JssjiJ35D+dL6WwYyfIfzpfS8r1H/AJyUu79408s6TLMkrFY5bkiNGI7Jvx/5K4OPGP5+Svqjjj9P+xnL/TQgoEf6Uz/RH/SX+9R40z8z/M6lri7tdIt5BUCEc2APbmPi/wCGbKTqT/BDh/pZJf7Lh9f+5ix4+4f6ZVsP+catNnYXHmK8udSnrU83IWvccf5crkcuT6pbfzYhgTKXM/6V6LpHkHQtICLY2MEZjA4sIwWFP8sjlX/ZZWNNEc/Vf1cRMuL/ADfp/wBijgCfhQooNhl8YiIobMkjn86aXBq6eXpZuOoSIJEjII5Df7L04k/D9nllojYvb+r/ABM+Ha0+wMHkn57+TZLi2i83aUeGq6QRKpHVo1PJ0Pjx+0n+y/myk+mXF/myQNjf+megeTfMsHmfSbbVrcgrcRhiBuA1PjT/AGLfDl8hTOQp8r/m9oT/AJdecrfVIFK6bNcJdoo6B1NZkHh/Nx/k/wBXMfFt6e76f6qIHo9V84/85GaVPZix8mu2oaxdUSJEjaiFh9p+YXkV/lXl8WZUwMY4pGNf0Tx8X+l/6SZkCPOv+K/H+meceRvJuqflj5z0q8151eTVfUVyN+Lv8JBdv2uT8nb/AFsxseTj5jh/ijxMI7831qRXLUPmPQ9F8t6H+YerQ+ZliEbgzQNOfgBch3+18J6v9rKI4PFFbmv4fp4k8HExv8xbrylpmqf4l8q6gG1KO4jdIY1KxqqUVwhUcW6cstjgliP8Hhj+G+KX+d6uNmIGHd/Vt9Y6Jqkeq2UF/CRwnjWQU3+0OVP9j0ywimBFPmz89/Nuur5iju9MsHt/0ORxvCCQwelCTT0+HL9n4v2soGXGJUN8n8Uf+O/75RMDl6v5yH1/yBrzahpmueY9UZ49TaOCSW3qhRHHNFqv7OEZp3sBjv6eH1shKRPSH9VnXmb/AJxn0JtNnktmuJL9ImMTvIWPIfENj/M2VSEx6jIzryajZ5kyZf8Akl5oGu+XLdJT/pdmPq8yk1YMnwjl/rLmVd797bLv72N3tw+o/mtbJbUK2NkwlPWnMNt7H4lys7H3sXsuWIYl+YP5i2HkqxN9efvGqFWJCOTE+x/Z/wArJCPU7f0qZxjfN8lfmV+dOpeebyOOaErp8bAi2UmjUPVyvxFsE5Rqht/S/iSZAbJt5y81an5z06wtNK0SW1bTDyRo1ZgB4L8HJfiXlmKcmHHyl/puH/dtZnAcmR6h+bXnfzHovqxG1tbeWQWTBQTKzsOL1DcuHf4uK5kHMByje3FxSPp/zfo/3Mm0yrkP86X4/wB4yz8vvyC8w6Lf2t7qWrH6takOsEPKhNasjV4rxb9v4PiyqGbLVADHE/V6uLj/AM3hj/spNQyT5bV+P6MXu9ysTIVn4lD15Up9NcsMeLbmtW8n/OH8uooLQeZ/Lsa2uq6eRNyjHHmi/bRlXY/DlEY+Cbj9J9Mo/wAKx9J2Zbpv5laV+hLXW9TuIrZLiJWIdgPi6MAPtfazMEDLl/x1s4CeTf5kuuoeUr+S3PNJbR2UjuCvIU/1lymZ2YDmxTTPzKi8u+V9GhtoGvdRu4ESC3joC3EULEt9lFp9rCDGIuWwH831yZUOZUpPzo1nQZFbzXo0lnZuQPWjYOq16c+PL/jXDHNimaHHA/7YPq/2MVuJ2Fj+s9QbV4TZfpK3rNCY/UX09ywpyHDx5Yy9PNjT5/8AzR89+avMOg3jrp62WjPSPnOT6j8iFTgnjy/1sgc0DtESn/tn0wTxROws/wBL+FEv/wA48yal5d+tatez3upLbK1shakcVF5JEE+Ll/L+zlUp5JCyRwj6ccR9X9f+l+OJBkTz6fwxehfll6Or+ToF0tY7Sd4TC/FB8Mij0nZ0HH4/2sl4UY7xETf+y/rS9S8IHLr6mXeVfLlv5c0yDSLOvo2y8VLdTvyZj7sx5ZZCNBiwX88LuS/hsvKtnvcapcIGp2jjIkdz/k8lXGZoMxyt6dHGEUIOgAA+jCNmK/JK8088/k9Hq93+ndAuX0rWgN5odlkHhOi8eX+t/wAHyyiIliN463+rHL6Jf7rh/wBJKP8AQ4vWgEx5f6X+GTBpPIn5jR69D5lk+o3F9bRGEMGKiRTX7aKir+3kfzFG/DmB/FGJjwS/perJxMhk/o/b9X+yT3U2/MnWIZLG5sNP+ryqVcM5KkHrs2SOojIUceT/AE3D/uZJjkif4T/nFbp/5PeY9XjRPMeryQwIoVLez+BVUDiE5eHH4f2sIy5aqPDh/wBnP8f58UeJLpUP9km9h/zjn5WgPO7Se9bxnmY/8Q4YJCc/rnP/ADfTH/Zcf+6RImR3Mvn+Jf7Jm2h+TtH0H/jlWcFsSNzGgDH5vTk3+ybIx08Im+Z/nSMpcP8AV45S4P8ANYCIH44v9lJPMyWbsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVUrk0ic/5J/VgKvLv+cebZk0u+nY1Et/NQ+y0XIQKSXq2WIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiryP8uiy+evMSj7FYyT70QD/AI2yuLI8nrmWMXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqsJr9GYU58R9zJrIVSVwauZUZ2xXZah2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqskdYxyYgAdSceagPPfMX58eVtFYwC6+t3IPH0rYGRifDkv7v8A4bLZYuHeZGMf0j6v9JH1R/zuFs4OHeVQ/H4+rhSAfmD578xjloGjLZ27D4ZbtqN8+Hwsv+q0WY/5nGPpE83+wj+P6k5MeOI5CU/9jH8f6ZFx+S/Pmq0fVdaS0HdLWMVH0t8JwHNM/TGEP6x40cZrYRjv/Wl/plx/IdZR/pOsak7t9orMVB/2K7DBLJnP8UR/yTj/ALrijJiZTu7+z/jy63/5xx8sAVuzdXbHvLO23y4cMScxG+TJ/mcMf9jKORM5SlzlP/Y/76KKh/5x48mROJVsSSOzTSsPpVpCuV+FI855CPfGP+4hGX+yQR7/APTSj/uUd/yo3ygTU6dESNt6/wBcTg/pZP8Albk/4pr4POf+nl/xTj+Rnk89dNi+4/1yI0/9LL/p5MhGu/5qc/5EeUJlobBF91Zh+psn4Uhynl/0/wDx1kd+9Czf84+eVnp6Uc8JGwMc7gj5VLZYDlH+Uzf6aP8AxKiUxylMfEf8StT8k0tF46frWr24HZbqq/8AAMmJnmH8UZ/8Nxxy/wC+gzM5HmTP+twy/wB6q/8AKv8AzRa/7x+YZmA/3/Ckh++i5LxMp+rwZf1cfhf7mSPFn/tf+k4f98vGk+frX7GoWd0oH7cBQ/ehyJzyGxxxn/SjklH/AGKRMDnHj/zuFQj8xfmBbmk+kWs6jvHcUJ+QYYfzEP4o5B/VHGtjur+r6ls35n+Y7Q0ufLl21OpiZXH0ccPj4T/qo/rY/wDjyieM/wCqf6T/AI8pv+eEsA/0ny/rKeJW25D71bIHU4R/HEf1vSkiPef86PD/AL5pPz/sSKvpWrIfA2h/rhGown/KY/8ATMOKJ6j8fFfH/wA5AaMwrJZ6jGR2a1b78Iy4z/Hj/wBMmweobH/OQfl5x8Md4W6cfqz1/Vk7h/Oh/puJRw94UX/5yH0YEhLW+egqSLdtvny44RLF1nAf6b/exZHg/nR/2X/EqC/85MeXD9qC9B6U9D+PPjk/3f8AqmP/AKWf9U0kQ/nQ/wBl/wASuT/nJzykTSRriM9Pii/5pZskIRPKUP8ApZ/1TSIA/wAUP9l/xKY23/OQ3k2cf73BP9ZGH8MHhecVOOuRB/03/EpzZfm55VvTxg1K3Y+HKn68IwTPIfbFEcZlyZJaara3ih7aZJAe6sD+o5WYkMTEhGZFi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/1vVIwK7CrsVdirsVdirEfzZsFv8AyvqMDECtu5qelQKjK5hIeReRv+clNL03QbLS/QuLvUoYhG0caE7qeK7/AOrxy/0gXIiLYREbk0nUfmD8yfOpYaZaxaJYuKCWepkA8VHj/wA8v9nlH5uP+Ticn9KX0f8AEf7r+qxGQD6Rf9KX4/4pMtH/AOcdrGSddQ81XlxrN2vaZj6VetPT+JmX/JZuH+RkJHLl2nLhj/qeP0/7L/iYwl/SYSlKfM/5sfTH8f1eF6b/ALj/AC/af7qs7OIeyIo/4VVy3HiraITGHQPGPzT/AOcj9OtrOTTfKshutTk+BXRSVWvUq37Tfy/Dl8gMe8uH+rf+6Z0I86Yh+WXlnz76ROl2senSXRLy31yOUrV8OXxL/q8MwBniZcQEs2T+dL6I/wC8YDIOdcZ/nS+lntn/AM412eov9d8231xql21a1YqgJ/lH2qf6vDJSOXJ9R4P6OP8AHD/sP85BlKXM/wClR/5AaLY6Ta32mRQxrdWN3JEzhQHKE8oeb/ab4cjDFE+o/V/pv9L/ADWRj1euZlMXYq7FXlf58+aPNHl3TYbrytF6lHPrtwLlVA2+D+U/tNkDnjjPqo3/ADvp/H+ckTENzv8A1ng8P/OU3nizKJcw2xLnb1YmUkV/yZFy+OeEugP9Uy/4+2DJGXQf5vF/xT6Q/J78xn8+aP8ApG4h+r3EbmOVR9nkP99klm45XKidv9LL6o/7n/csDXRnmLF2KoK709bi4guCxBgLEAdDyUpQ/fyyJG6UNrPmjTdFeGLUbiOB7hxHEHYAsx6KMtjAy5JjElNsgxfO353fmHfeaLm6/L/y7Ym8fiPXkP7JHx/B+yvHb4myGScIizvL+HhZ2IjvSP8A5xQ8sRPqV1qmoy/6dYD6tHCx3UNXmwDfF/k4KMt/4Qggnfo+oZYllUxuKqwII9jkiLYvFPylkn8meadR8j3P+8kxa7s/ChNXQf7H/iGRxysUf4PSyG49yH8+t5q/MHXpfKFgr6ZpFuAbi4INZVP8rD4WVv2EVv5ueD8wB6Yb5P4uL+H/AIiP9L6pIGQDaP1fxf0Uh/N7XtO/KvRR5P8ALcRivrqMGSeg5cTs7s/2mkk/4XDixxh6j68n4/0v9CKYAR3Tfy/+Vq6d5Dtr7TABrEXG/WSnxF1+P06/y+n8OU1R4+e/+xYx2NvZfKPmKPzFpVvqsP2Z0DEeB6OP9i2ZZDKQpMb6yiv4JLW4UPDKpV1PcEUIyuUbFMXgX5xlPM2qaL5B0uXnahx65Vg1BGAgEhXuq/a5ftYJkwjXf/smZFD3vZdd0JP0BPpFktEFsYY18AF4IMBHDH3MOTyL/nGvyzp19azarqEZm1m3kMMjTHkUCjioQN9n4fhyMo+IeKRMx/DH+FMvVud2GfnNY2fkufU9Gep0/VYxcW6A1EdwpqfgX7Kt/n9nDCBrh/mHij/Sj/MTHlR6fS88j81aldxWeu6Lbiyn0iNYZbmOgBqeKO6U+1xPx/a5/t5IGMDte/8ADXHHj/r/ANJNgHbr/pWQee7PRNPsrbzAdX/TXmBpI3dCQ8fGnMxunxcVX7P8n7HBcTjyE3Ph4D/DH6v9NH/iY/5yaN3Kj/R/H/HHocHlvzr+YGlJd65qVvpnl+dAxihASkfgdlXj/rStkfEl9GKAh/DxS/Epf7hiZHlEAfj8fxReY6eLWGP9D+XrI32s6fdl4buFQVeMHYT8h8S7ZCQjD1TNfwyx/VCX9T/jqTUef+l/npndefNa8/3a6D5llFjZTMyRiOMBRKn2Fdv2fi+HllpMSKxxgK9X9L/MTd7AAfxf005/JSys7HW4tO1ISSRXhZGDSMAt1EeW6oVV1kX7HLn+1gjInayP4o8Po/rx/wCkVvbu/i/mso/5yx8rllsPMUJ4NCxidwNxX44iT/LyXjkb4Ze//esYnd6z+VHnOPzf5fttRrWYKI5geodRRq/632syCsgzHAxecf8AOQfH/CF2zdEaNh81cNkJBIZr5aulutMtZ16PBGw+lRkgpTLChotTc4qxzWfzD0DRlLX9/BGRsV5hmH+wTk3/AAuWjDLu/wBN6f8AdNnhy/6S9LD73/nIny6vJbBZ7yQfsxRk1/2WRIjH6pQCmIHMj/dIJPzn17UiW0fQLiWOn2pCV/4iGyrx8XfKR/oj8SYcUK/il/VH4kugv/zS1UEpb6fpy9vVLO1P9gW/4ZFyP5qP8OOcv60uCP8ApZeFP/S8TLxADtG/60v+kZKqfl9581Mf7l/MXoA/sWcIX/kt+6b/AITH8xlJ9McWP+txZf8AYy4v9jlQch6CA+HH/u/VH/Tuh/5x9tLhues6nf3xPZ5SB/wnxf8ADZEyzyFGfD/wuPB/upTQZzPM8v5v/H+NP9I/JXyrpdGisY3df25Ku30lsrOCz6jOf9aXpa+G+dy/rFHecrW/0nRbh/KNvEL8LWNAgAPjQLxq3H7OSEY4vVw3X4/rMxUd6t8+6H+Zn5qa9qB0a0RYruNeTB4QlBX7TmX4cvGtgRYjCd/zeP8A4qLZ48SNoxP9Xi/4pm6W35zacBO01leqB/dUQH6SEg/4WXKxq+hxGP8AS4uL/c5Zy/2DAZf6P2/9XFP/AB7+akL1m0q0ooqQHUD7/WZsl+Zif4Z/6Wf/ABLbz5RP+y/4pbH+fnma0JXUdJgJX7Xp3CVoOu3qNvlviY+oyj/N/wCOoAj1EwhvLn54eWILi7n1mzminvnDys6rKtAOCKOHL4FXMcYceTcm/wCbGUeHh/zkGET1/qxkGX+ZhoXnvyu+k+XtRt7K1lpUqAAFrydDHVOHL9rLJaeeONQHH/N4jLh/0/DNIxyH0i/x/OR3l/zH5V/LnRrPR5NRhKiiIVYuXYnchIvVZV5f7FcnDBkiPVt/W9H+l4+HiU4pDnt/W9L0dHDqGU1U0IPscDUuJA3OKvPPOf56+WfKjGG6uPWuACRHD8RqP2SR8Kn/AFsuGE8z6P63/Es+CufpecL5y/MD80C6eW4V0rSGqvry1DH5P9r/AJFr8P8APmPLVRjtjByS/nfzf95H/O40eKB9Iv8ApS/HD/u1vlH/AJxm1TTL9dR1a4sr1wwY+vHLLX3p6kCs3/GTnmPOWTIfWNv+GShL/Ywy/wC7YGRl9QjK/wCLilx/7l6t5/8Ayn0jzvaR2t+rRNBX0nhPEoT1oPs8f8llwnFwj93+7r+GIjw/50fT/seFQK5en+qpyeZPLn5ZaXBpd9ehEt04oJG5SsK13Vfir/wK5mY8UpCzv/OnL0tggT/xUmUaBrttrtjFqdiS1vOoZCRQ0+XbIHb/AI6xIR1zOIInlboilj8gK4oY75F892XnG0e9sQ6COQxsr0BBH+qWHFv2cJAHL1fP/fMpCnlH/OReqWGnT2Ov2V7Aur6ZKCIAwLshI5LxX4h0/aweFKJ4q9B+r6Y/50eP6v8ANZCBG/T/AEv/AEkmtj/zlLoF5Ghhtrx3IHMJFyCk+6lq5KRhHnKIQeEczT10CLVLSjqTFPHuGFDRh0I7GhyogEMHkH5JLN5V1zVfJNx/cxP9YtvDgx6D/Y8f+Bxxysf1PSy5j3Mp/PDyKnm7y5cW6qGuoAZYT3DLuQP9ZfhyvIK9Xd/uWJS38hbfQr3QbbUNOs7eC9iX0Z2SMBw67PV2HqfF9r7WDwIA8Q3/AIvUZT/0vFKfB/mqYAIP/nJOx46XZauoo1jdxuWHUKTRsslsUx5vWbS5S6hSePdZFDD5MKjLEPnD81vy402z87afqWrO8unalKVlDsaKw+yoPZMx+EyJjf1fTJIBls9d1T8s/K1rpU8IsbaKERPVygqoofi9RviH+tyyH5aPnxfzuKX/ABXC1+GGP/8AON/mMan5dNgXEjafK0INa1StYzmX726QZ/5u8vx69pVzpsoBE8TKPnT4fxyqcbDB4/5Z9bzH5GuNHm31LRpCFruaxHnGf+BquCcrAkzPe9i8qa2muaXb6ipqJYwT86Uf/hsuYyFF47+YmnXXkfU5fM3le9tbf6yKXFvO4Cs3+/ESv2v+GyvHGePbh48Z/wAzg/3LOII6WP8AS/8AEsO/K/8AMh9Kur3WTaXWs6zfH959XQhEUHYc2DN9r/J44nJAG8ko4/5sY+uX+6j/ALHjYylH+IiP9GPq/H+yehyXP5i+cQsaQx6HYyfaYmstPvZlb/kVidSD/dxJ/pZPp/3v+4l/WXxAPpH+dL8f7xHaZ/zjpo6/vdZmn1CevItK5Ar/AKoyuQyZPrl/mxYkk8yzXR/y60DRt7GyhjYd+AJ+9siNNHrc/wCseJhwBkQRQKACmXDGByA+TN80+cPJo8t+f7In4NJ1C5WbiPsiQE1FO3xZVEH6e76f6rKPc+mcyWKR+cPLaeZNMm0yR2jMq/C6mhVhujj/AFWyEr/h2UGuTxWf83NS8s2lz5P1eE3usRho4m/ZeMg0kkP+SuHjjONy2/hlH+k2Ag7n/Sor8jfyd06602HXtbT61NIS0UUlTHGK/sIfhygg5NiT4Y+mN/7pqlZ2P+le063py3Omz2SgBXiZAB4UoABlpjtQS+bP+cf9dsLXWZzr1zHC+nwmCD1mCgfGefDn+1kowOSutNlGXwesfmH5+8q6noV5YSajbsZoXVQG5b02px5fFyy2enkR/wAej/xSfCI/tikX5R/nB5b0/wArWdrf3kcM9vGUdGJ5bE7/AOywxxEi/wDdFeG0D+Z35kad5y0eOx0flIJr2GNSVID0IcmP+ZV/bynIBHqDX83+FaA83ukEfpxLH/KoH3CmIGzU8s8nTt5U8433luT4bPUa3dr4Bv8AdyD/AIlkcew4f5n+5Zjcf1XqzuEUsxoo3J+WWMHk/kBG82ear7zZJU2lrW0tPA0/vJB/xHK5HilXSH+6TLu7nrJIAqemWIQTaxZq4iaeMOdgOQr+vJjHLuLMY5HoUdkGDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsBV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqhdTkEVpM56LG5+4E4Crzz/nHxuflxpKEepdTtv3q3XIxFJL03JodirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiryT8uRTzz5ip0JjP07D+GQiyL1vJsXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYFUiCPlmvkCDvyZtihG2SBsIXgUzKhHhQ3lqHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVkkixqXcgKOpOKvM/Nv57aXpcp03RkfVdS+yIoByAP8AlyD4f+BychHGLmeD+j/Gz4RH6tv90kUXkLzd+YH77zjdtp2nNuLG1NGI/wCLn+L/AIbl/qLlH5iUtsY8GP8Aqkv72X+5/wB5/Vkg5D/D6P6X8f4/HC9F8rfl1oXlaIRaTZxRMBT1OIZz/ryt+8b/AILKo6ePM+uX86Xq/wBL/DD/ADIxauEc+f8ASkyelBTMhm7CrsVdirsVdirsVdirsVdirsVdirsVdirsVaKA9siYgoWein8o+7IeHHuHyC0Glt413VQPkBg8KI6R+UVAAX8RkuAdw+TK3cB4YPDj3D5BbUJdPt5v7yNG+ag5WdNA/wAMflFCDufK2l3aGOe1hdT1BRf6ZH8pjH8IYmIKQ6j+T/lXUF4z6dB8wvE/euH8tHpcP6pYjGByY7e/847eXy3q6Y91p8g6G3lK/wCf/BZMeJAVGcv+Snrj/vWYMhyJ/H+lQsf5U+cNKBXR/McpTqFuYxIflzcy/D/sckc+Ycxjyf8ASr/cQ/6esvEkBXoP+w/3s5f7N0fmL8yNB+DUtOt9WjWtZbZwjEfJuA/4GDH81H+OM8Z/o+uH+w8eX+mnBlxx6gj+qfT/AL+X+5Rek/8AOQWjO62utxXGl3R2K3CELX2fq3/AZdDgyfRIS/o/TP8A33+ykoiJciP6v8X4/wBK9C0rzDp+rKJLC4jmU7jgwJ+7rkjAjmpgRzTLIMHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq//1/VIyIV2SV2KuxV2KuxVQu7SK8ia3uFDxSAqynoQeoORkLFKkXlv8vtD8t1bSbSKBm3LBfi/4JvizHjp4jc+v+t6mIiAmGueZNO0KA3WqXEdvCoqWdgPu8f9jmZGBlybYwJ5PJ7/AP5yDuNbdrHyJpk+pT7gTupWFT2Y/wAy/wCs8WRnkx4vqPHP/U8f44v9LCX9ZTwx5+o/zY/j8fzlPTvyU1rzVKL/APMLUHnFeQs4GKxL7Erx/wCF/wCDbKJZcmXYfucf+zl+P6fFL+qgzMv6H9GP4/4r+su8+eQLfyhqGneZ9EskkstPBSaBFFeJ/wB3DxZcpEIwNS+k/wAX1ev+mwiAOfV6t5c8z6f5itVvNMlWWJgOh3HsR2IzPMOFslEhOMiweWeTWjtfP2uWsZ2lhhlK/wCUdifuyqAr5sjyZl5s886R5TtzdazcpAnYE/EfZEHxNmTDGZe7+dL6UxgT/wAVJ5RN/wA5D6n5lnaz8iaVJd8TQzS7KPoHwr/snyueXHi53OX82P44v9wgyjD+n/Rimlvp/wCampD1bi6sbLwQKW+8rlf5o/w4/wDTST4vdEf53qegeSDr31Ix+ZxD9bViA0P2WXs3H9k/5OHi8TnHg/oyqTHivpT50/5yt8pQwa3ZaszhYboCKReQDDiackRj04t9r7OVxgY7DaP8Pp9EP9KoBL6F/LPy+ugeX7PTldZBHGKOoABB+IHb/JOShGhvsf4kcmVZarsVdirAPzm/LVPPejtaxEJewn1IHPZh+yT/ACtlOSx6o8whKfyG/MKXzDpz6Pqg4arph9GVSd2C/CJKfRxy/iEhxDr/ALpmdxb0qLTreGZrmONFmk+04Ucmp/M3U5QMUQeIAWf4mFDm+N/zx8py+TvOf1qzu2tIb4mcOpIK1PFxRftfFk8U5Q2H+b/N/wA5nCRHJ7H5I/5yQ0m8ubLQZo7jnKFjW5lUBXalOdPtUZsuqJ/ijKX8XCyoHrabfnt5fuYorXzdpQIvtKkDtTqYSf3gPjxzHvglxd/pkwiaLJ9f/Mqy0by6nmgI9xbOqFRFufj+f2VU/aZsu2B3PCyAF7+n8f5r52sdbH5u/mDaXNxZkWCKA8TfEOCg7yEBV+Jspy8J2BO/+ZL/AHTGRHJ9aR2cMcAtUULCF4BR04048aeFMkI0KQ8v/J+R9E1XV/KEp+C1m9eCv++5TX4R/LyxgfT/AFfSy6PWMmxYbZfldpVn5jk82w+oL+VCrCo4bijNwpy5N/rZRGBB5+n+bX++QyLWNbtNIiFxfyiGEsF5NWlW2UV7f7LMiMb2ZAW+ePzntde8jaxJrflQm3stUCrPItCqyE0Df5HL7XLKceTwjw/VfqjGQTGXDt/unjOueXdVbVPquqMZ5bpgqXMxYJyO/wADv8LL+z/Jh8Y5Oe8h/DErxGZ75D+HiVo9FsNNii1LUpkmkjuDDeWhIVqD4RJGEK814/F8P7eIEyP4hjn/ABR4vRP+mkA9fpP+xZJp35z6T5fsTpml6Ra3ssTOsV1cxrX0yeSB46cmdf8AjLj+Xxc58U5f0eKMJf0/Vxf9Mo/1lOOHUcfw9P8AW9f/ABxmH5Y+RZPOWnNrHmPVQNCjZm+qQs8caEnkyvy4qi8m+yvL/XwGeSXoj+7j/OuMp8P+y/2c/wDNW5H0j0/1Zfj/AGUm10L/AJVf5gW+Evq+WNVjMAmjIPAP9irr/L9rl+3kIDfgltk/hl+P41jseE7MOTRbLQtQvfK+t3aG2uVM9ncq4YJIKmN3f7Ssy/C+SEZSHdlh/s/+k1AJ57SCjpHnCBuUspK6hG8cqlFJBmiNOQKj4VuYhjX8Qofxc/8ATRTfX0j8ep9E+fdd8vebvKstvc31vCbqAPHzlVSHA5J8LHl9r4cungmRYBNfxV6f9Mk4yP8Aiv4P9M+SPKX5gaj5K1KCaJmEUEodk3ow+y4p9llZfsNkseTav4T9SjJ0fTdt/wA5aeU5UrItyjgfZ9MH8Q2T4B/OijhHe8s/Pv8AOvSvOVlFbaV9aQxmp5fCjA9Q6faLLkJDukD/ADo1/vkbDkbY5o//ADkr5o0vTodLtXi9OBQquyVag6cjXj8P+rkxkiByiT/Sl6f9L6P92zEwOgL13ylpP5hed9Oh1NPMUMNnOoYeggLqe6njGvFl/l9XKpajID6YQH9b6Zf6fx/9yxlOUeQh/nf8ejNPR/zjrLqLep5g13UL4+HPiv3Ey0/2PHInNnl/EMd/VHHHh/3PBD/pUwOSZ2uh/Rjwf76Uf9gyDRPyB8paVRjaC4kH7U5Lmv8AstsxzgMvqlOf+dw/7hr4e8k/j+azPT9H07TSILO3jh4jbigAp4VpjHDAdB/nf8eZCFJoBTpmQBSW8kqySRUBZyAo6k4qHn3mj8+fKflxzBc3gmmHVIBzI+bL8H/DZd4J/iqH9b/ifV/sm3wyOfp/rMKv/wDnLHSpf3Wh2NzezHovGn4Dm2RIxw3lL8f1pKREcyor+a/5kap8Wn6AIUf7DSVIA8W5ccx/zeEchKf9X/pFh4kK5SP9JTtrT839Yl9cvaacSKElErT3qJ5MgNTHnHHZP8UhKE/9NKWJj4oPKP8AnfT/ALqSD1X8lfzM1QVutfVgeqrNKq0PX4EjVcn+by/zeH+r4cJf6aPq/wBk2eNPmOEf1fR/uYvMvN35KeZ/Jy/pDU+V5YBgZXglYkDxbkOS/wCtwbIfmpE1Ljhf8X1xl/spf7LgYeISd7/rfj/fReteQ/yK8keb9Ih1a0+sFJR8XKU8gw2dX9+WCWPIP8pI/CKJAjraS/mD/wA4lsWSXynJRTQPHM52/wAoP4f5OQEskOf7z+lH0z/0rGyPNGeRf+cSLOOBj5pkZ56/CLeSikf5YaP7X+q2IOSe++H+j6ZS/wBPGS7yHWH+l/48zHSf+cXvKemX8Woxi4doWDqkjgpUfZ5AIrHj/rYfDn1lcfd6v9Pxf71QK6n/AGP/ABL18CnTMkMkPe2iXkL28leEilTTY0IoaHEq+Yvzo/JPTfJdlbeYNKVpEt7hTcCU8iyk8h17fs5jCMgfUePj/wA1ERvvu9/8geb9L80aal5opBt1olAvEKQN0C/5OZXhiGwr/NZEUnl/JNFBJJaoJJlUlEJ4hmA+FeXbk37WRJr/AI79SvDJPLv5mee7h/0rcDQLAHiIoWDMw+aPyP8ArM3+wyP5sn+6iY/0sg4Jx/08Yz/0kIx/pJGU/wAAr+lL6v8Aiv8AcJ/5b/5x48u6I41HWpH1G5Xcy3LfCP8AYn4f+CyuWPJmPrMp/wBGP44mBBn9XqerWawrEq23EQgDjwpxp248dqZeIcO3JNUqSxrKpjf7LAgj2O2ClfOPkrywbDzHrHkG+uLi2huj9Zt5IJDGxHhX7JHE/ZyEJT4fSeCUP6MZ/wC69f8ApZQl/TZAmtuj0zyv+Q/lTy6oZbUXM4G81yfUYnx+L4E/2CLlJwcf1mUz/pYf6WP++lP+s1GPFz9X4/mvJPLn5j6P+Vmr6zosyC5tjL6tqIqNuf8AdRf9jMmGEVU6jX84fwt3AK9W1Motvzk85ySQanNopi0Z3VWNCX4ueIk/m+H/AFcH5nFyHF/Wl+OFROB29X9ZN/ze5+XNW0rztajikcgt7rtWOTpz/wBXIj0y/r/7pEefveuwyrPGJE3VwCPkRlhDF435NjXyL54vPL77Werj61beAep5pTx+1kMXIx/mf7lkNxXczv8ANfQv035Zv7IDkxhLKPdPjH6sGQbMW/yr8wDXfLlledG9IIw8GT4GH4ZayknGueWtP1xY01KBJxE4dOQ6MOhGU5MYlzv/ADWKPlgSWMwuoMbChU9KdKUywxBFKw7yz5A0HyDLd6lZt9WiuiGk9RwI0A7JXjxX/WyGLFLlcpj+GNfT/W/nJhEnYbsd8wf85HeXrAm30oS6lddAkCGhP+uR/wARVsyZRjDeZEfx/pf9kzMRH6iIvJLfUvN6+ZHWyhTR314EhJd1pvvQ/ZfMWGaNHgHH/RkgT7hf9ZkPkz8sPMl3dXXl6+1iW2hsWBKQgjkJPj5Ifh+Ft8Y58lekRh/O4vVwrxyroHomg/8AOPflvTX+sXiPfz9eVwxYf8B9lv8AZcsrOOU/rkZf0Y+j/j/+llFqIJ5kl6LY6db2EQgtI0hiXoqKFH3DLIYow5Cv91/nS+qSQKRWXJdirsVdirxz/nJvRZbjQodVtdprCdZBTc0O1f8AYtTKZmiCkFl/5TedR5u0GDUHI+sKOEoHZ12Nf9b7WXllIfazTAwfNf5y/lHqNtqNz50E/q2wkVpI1qHEX2XQN4ccxeOQO/I+ni/46kHdk+hfmRreq2xPkfTYptIsQsY9R+LOQKlYx/k5f4kMXpqc6+qUf4P+KZXGO1Gf9KJT248yS/mT5YnXy/I1rqKEJNCW4OpU/vIS/wCx6i/YkyU5GA4o+oH/AE3D/R4v44r9O43/AB/uniH5V6D5dsvMt/pvnKBLcqB6KXbVo1dwZP7tm4/tft5VHH4w2Mj/AJ0sU5f5vol/mMeDxOV/Phl/vHoHnmHyi0J0Xyfp9rfaxcqVT0FDLGD9qV5F+FeOQnp44hcjP+jHjlOUpf1eJfDEfq/zY/Uz7yL+UGi6HpUFtdWcMl2IwJXZQxLd9zkfy8Zbyvfzk1mAKrpH5P6Ppmqrq8PM+kSYYSaxRFupiT9nJDEeRPoj9Ma/3Uv4k78un81nTGgr1zJZPKPzZMVzZ2nnLSGEk+kzhmK9fTrwnjYfa5L/ACtlUvTIE9fT/pvpkzGxR/5neeCNEgttGPqX2sgRW4Hg4+OT5KuWyPAL7lA4d+5lvkryzF5a0m30uEAeig5Ed2O7t/smyuEaDBDefPKMnmqwFhHdy2XxBi8WxIHVDuuzYZSkPpof1kgkctks8q/k55c8tlZre1Wa6FD60/xuT/N8fwq3+oq5X4ZlvMyyH+kTw/6X/iuJgRfP1f1mc5eydirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqC1kgWU5bp6T1+XE4CkMB/5x6QL5VjYGoaec/8Ow/hkYpk9LybF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvJ/y7hX/HPmJ+rD0QfYEsQPwysc0l6xliHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7Ad1dSmACldj1V2SV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KsN88fmho3k5ON9Jzu2+xbx/FIxP2RwH2eX8zZMQ2s+iP8AOkyEdrOzAoND81/me/r62z6PoTUK20ZpLIK/7tb7S8lyg6gnbF6R/qkvr/zEDJ/N2/pfxPTvKfkbSPKkAttJt1iAG7Uq5/13PxHK44QDZ9U/50vq/wCOsBGmQ5kMmiK4Fbwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUr1ny1putJ6WpW8dwg6B1ByieCMufP+d/EggFg1/8AkD5ekYzad61hKejW8hUA/wCqMYwnD6JSH9b1/wC6UEgbE/7pJZfJ/wCYHlchdB1BNStF3Ed0AH+XKq1H+zyX5mY+uIn/AEsf1/6X/jsmzxCeYjL+l9Ml4/OvWNA+DzbotxCFoGmtxzT5/wAtP+erZIajDLazjl/NyR/E/wDpUjih/U/rfiP+5Zt5V/NPy55nomlX0cku37piUfft6cnFj/seWZBwyAsesfzoET/03B9P+dwsjjIF8/6vq/49/pmXZU1uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv/9D1QOuRCt5JXYq7FXYq7FVG4uI7aNppiFjQFmJ6AAVJONKHjGsf85Cvqk0mleSbGbULvdVl40jB/n/ylXDOcMX1Gz/Ni2Hhjz9X9GK7yv8AkTNq0w1vz/cPqF824ty37qOv7NB9r/Y8V/1sxpSnm5/u8f8ANj6Zf5383/d/0muUjLnt/Ri9g03TLbTYFtbKJIYEFFRFCqB7KuShjEOX/Hv86X1SUbIvLlWugcFWFQeoyJFq8z1v8mIorg6n5UuX0m+JJbhvE1evOLplUePF9Hrj/qeT6P8ANWJMeX+ll9KRvrn5j6VILXlpmoHoD6gRvmQXX/iOXDPX1Y5/8k5f8dk3DfcxP+aeH/imEah5s138vtUlv9QhivfNOthVigiP7uJASErx+J2ZvsLy/wBnkISFmUgYQH0x/il/Sl+OJjY5kcP82LEvzR/J3zjLYnzlr0i3NyxDzQLUmJNuIoPh4r9l1X7P+XlZ1BkdxwY/4f8Aj8f4fxxtZyEncUH0h+SnmHTNe8t2t3pUUcAChJI0AHF12cEf8NloxRhy6pMQOTPsmh2KvIf+cifyui836NJqEKk6jYxs8dCaMo+KSMj7P2fiX9rKMlj1d31R/wB8go7/AJx082p5h8p2ynaazH1eQdTVPsk/6y/FmQWcnqGBi7FXYq7FXhX5k6Vdfl95lT8wNLQvYT0i1CNfAmnq8f8AhuX8/wDrZRA8EqP0z+mX82SYkDY9XtOk6rb6tax31m4kgmUMjDoQcyDGlIp47/zkR+TF/wCeRFqelODc2yFBC2wYVLVB/m3zFnIwN1cf4uH62JJHm83/ACr/AC+82XfmrT4/Mts6WmlqWUuoC8QCECsPtNz+LI+NCZ4YgCX8XCOGf9aa8YO3J9JebPM+n6KkcWrhltLomFpCKxry2pM37CvWnJvhzK4Yy9JIBP0x/n/1f4eL+j9TMRB6j+jH+c82/KW/bylrN35D1RuUUjG4sGNODxtVmjT/AIlx/wBb+XIRHiR4Zc4emUZJ5j+q9lisoIW5xoqse4AGQhhhA2AB/VDBEZerxn8w7o6F+YGh6hE3AXyvbSgftCvwV/2TJkI7E+bKIezZNi7FUt1/RYdasZ9OuRWOdGQ+1Rs3zU/Flc48Q/3KvLfIUhlguvy182DncQIRCzb+tAfsSIT+1HgP76NnaQ+r+jL+cyPqF931f8U8w/MK31aGNfIGsyQQWNmTNHezHdoRsgT9ppF5ceK/HgB4uQ4sw+r+H/P40j1ch6h+ON5A+mx38XpWUZMsFTNMxJDIW4pMEb4uK1+P7WEmtzxG/wDSRl/W/pf0kc/5xv8A0n+mek/l1oWj+RPM76f51SGa1nt+cFwwDRUYF/UHL+ZfhRlXkr/AmQjj8bY2JD+Hi4f9NLih/WQIcWx5j+H8cKUSefjpiap5N8tBbzStSnCwMwKsCxFAnLj9qnH4suA4BUt5D+KJ/H+wZjbbmgmvNdmkt/Jfmu4ksdOgFSrgfCADwb/L+L4fh5ZEZfFj6OE/0pDhl/nfxoEzIUP9yidD0MeZtPOiaFpon1O2YyPeliPgBPp7N8PFlH/B5VOQHqJmZH+H64/0kGvMy/00E5j8jG8trLzfrs5axuLgQXyw0jMJUmJHfj8PHkPjbESINR4cYP8Adyj/AMe+jjUc+kAfp4WT+VNZ9G5m0j8ttJgvZUkf/chOtQFJqnxuf2f5mf4/5MhOGOP97efL/qfFxR9P9H6P630f10SEY8/3kv8AYfj/AEv9Zges6dL5z1K+m826nbQX2nsqMvAKJFDFJBCyiLk0aj4F4s/2cuESd8cYw/nRvg4f91xf6dlXHyofj/Z/7Jm+g69otoTY/l5oDX84+BbydSyk03Pxj4V/a+Jv9hlU4Ysf94Tml/N/h/0sP+Iix4YR53P8fj+ayry9/wA40nVZv0p51uDPcOeRhioqD/JJA/Z/ycfVPlWGP82P1f8AHWMiZeX9Vh/mTyPpv5Veao7i+thc+WtRUxsHXl6ZP2vi+18P2vh+LhjGAn6J/wCbLilD/cMogH0lkkSzflBeR63o8hvPJuoMGkVfiEJenGVWXl8P8v8AN9j7eX45GB8Of+bk/wB7L8f0o/xpjt6Zf5snuvlzzLp/mSzTU9JmE9rJXi4qNwaEEMFZSp/ZbLZRMdj/AMUpFJtgYoO+1O1sE9S7lSFPF2Cj/hsYwMuQZAE8mC+a/wA+vK/l5ShuRdXAG0UHxsT4fD8K/wCyy44q+qof1v8AiWZxkfV6WF/4w/M3zePrXl6xi0yxYHg9zQuRT4Wo/wDN/wAYuOY35uA2hE5v6Xq4f831Qh/s5MPFA+kcf9b/AHvqh/vkksvyR89edJ2fz1qskNqpqIonB5H2jj/0dF/yuLN/kYPzWWe0B4P9YcP+xhLjn/nzY+LI7D0f6X1f6WXq/rTZ35f/AOcZPJ+kEPJA93IO87lq/wCwXjH/AMLlHgyl9UpH+r6P+Pf7Jhw95Jeg6R5Q0nRh/uPtIYKfyIAfvyUdPAb1/pvUkRA5JzmQAydhV2BVG5to7qNoJlDRuCrKehBFCDkZREhRV4b+VCTeRPN995Imatlcg3NpX33YL4/D9v8Ay0bBiNij/AyBse57xljF2KuxV2KuxVJfOOgxa9pF3pkyhxPE6gH+ah4fc2VTjY/2SvIv+cT9XhGj3eht8N1Z3DFlPUq32Wp/rBlycRtaelvd8khhH5nfmXF5Fis5Zo/VW7uFhPxceKn7cnTfjthFdWcQDzY5/wA5LalDb+TpuR/eTPGsXxUPImtR48VyNdfUK/m/75AH2Mw/LHQ20Py7Y2LszssKkl+tWHIj/Y5GMjIWd2N2yrJqwD8yfywj82vbahZSmz1WykVopx14g1eN/Ecfs/8ANLZSeKJ4oV/NlGX0yj+P9iiyNwm3nzyU3mzS/wBGG7mtGNCZITQnahDj9pW/lyZMxvA8Ev8ATf8AEpsjls+RfzX/ACss/wAv5IZbXU0u5zJ8cYIEqAHkCQvPfb9rj/qYIxyDeVb/AMX/AEnLi/H1piJDeX/Ef7561pP/ADlxo8aRWs1lccUAVpKhjsN3oo3/AJsyOCFbkfL0sjT2nXdLtvN+hyWpFYbyCqFhuCw5RvTsVbi2Y2SNjbf+awLFPyO8zzalpL6RqBpqOlSG2lB60XZH8fiX4eX83LLRLiHF3s5b796A/wCcidHcaPF5ksqrfaRKkysKV4khXB/mWvH4cqPpIl/myYg0XoHlzVo/Mej29/T93eQKxHs67jLDupDyH8mfONn5V1C/8jarMI5re5kMDNsrISXO5+Efzf7LDiBlHzH8LMR4h7mfa3+dPlXRmMdzfxs4/Zj+M/8ACZcMJ61H+sU+ERzoMEu/zx1vzXOdP8i6a7k7fWbhSFUfzcfsj/JZ3/2GUZM2PH/tkv5sfxxf7n+sxMoj+n+Px/NRFr+Q+o+Y3S9896pLeSA1+rwnjEP8mtP+Iqv+tlHjZMo2rDj/AJsfXL/ieL+t4rAykf6I/mx/H/Ff1np3l7yPo3l2MRaXaRQgdwo5H3Zz8RxjgiN/qP8AOl6mIiAwX8/rBrW2sfM8A/e6Zcox/wBRjxav+TkjsR/pWyLNodO+salb67a0KywFJe1QaPE3+Vx+JcNUff8A7pDI8tQ7FXYq7FXYq7FUs8yaLFrmnXGmT/YuIyh9qj4T/sW+LK5xsK8J8l29z+WfmG0t7vlFp+rAwyKfsrOh4K6lu0lOX+q+QwT4vT/nR/nf1GYN7PokGuXsEJqdhHqFtLZzCscyFGB8GFMhOPEKV5n/AM496VfaLpl3pV/btAILqT0ywpyUmvIZXimJcuY+pbB+CW6/Zp5C882esWq8bHXCbe4UbAS1HCSn+Uzf8SyeP0kx/hPqiyj3PUNS8paRqjtJfWcEzyUDM8akmnSrEV+HK5YIk3W/85rMQd3aH5R0nQqnS7SK2LdfTULX7sYYYxN9f50iZy/2SeEBOcyEuxV2KvLPzO07/DMVz5itUD2FwvDUraoAdG/di4hB+FbheXxf79+H9vKQK9Jswn/N/wAlL+dH+j/PTHu/Ef6Tz7/nGCxj1y7uNVuZWm/RwENqj7+mj1YFfD7PH/gslIGRF78H+6TIk/B9KZYxdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVS7X24adcsN6QyH/hWyJ5JDCP8AnHvfyfaN3aS4J9v30g/hjFD0jJK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXlP5Yn1vOPmeYAgLLAntsJK/TtlceaS9WyxDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqpyyrGpdyAqgkk7AAe+KaeN6t+Zms+d72TRfy9QC3jJSfUpAQinuIK/abj9huPJ/tpxT96wnkGI1XiZf5v8Mf6/wCOH6uHiZGo/wBOX+xj+P8ApHjZR5F/J7TPLTG9uSb/AFR6GS5n+Jie/AH7C5jmByHiyHj/AKP8Efx/SayOI3LcvQMyUuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVx2yJNKtVuQrkYT4xYSdl2WIdirsVdirsVdirsVaIB2OQlEHYqwDzj+SnlvzMxuZ7f6vd9fXtz6b18W4/BI3+VIj5QMPBvjJx/0Y/R/pf4f+SXAwEa5en+r/xP0/75iV/5I87eTInu/LmqtqNtCtfq12KkgDoj/Z6fy8MuGoyD+8EMg/nR9E/+K/2f+a2+LL+ICf8AsZf8V/s0J+V//OTNnqoXTvNS/UdQJIDkERsCfh+19hv2f5cyQI5N4V/V/wCPMwBP6f8ASvdIZUmQSRkMrDYg1H35UdmsqmKHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq/wD/0fU65EHdK7JIdirsVdirsVU5YUmQxyAMjAgg9CD1yJF7KgdG8u6fosZh02COBGJYhFA3PfK4Yow5IEQEyy5LsVdirsVSrzPpc+q6Zc2FpKbeaaNkSUdVJH2siSQNv9km6fJt7+SsehedNN0PX7mSa11BGPrqSp9UhlCI55/FzCL8X865WM2Se1yhMefF6Egyl19X1PUpP+cYlt9Qi1nTtYuUvbehheZVl48RxQHkV5BV+HIE5SbJhk/rRlHi/wBlP/Tf5zDildkg/wBaP/HnsNhaz3Onpb6ysbzvGEnVKlGJHGSnL9hv5Wy0jiG4r+j/ADf9Kk7vnG3eT8ivOLrOHby1qdeLdQhryr/rR/Zf+ZMOCV+iXT6f6X4/i/pMoG/SXo/nL/nIjR9KkGn6GrarqMi/BHButT05v/zTl8ojGLmeEMjER+rb+iltl5N8/ecQtz5g1I6TbPRvq9qKOB2DP2b/AGX+wzH/ADMpf3cY44/zsnrn/pZf8cYHIT9IEP63ql+P9K9O8uaGvlzTBZXN3Ldxx8maa6YFuJ+I83+H4V/yv2clHil9dTl/Rjwf7Hikiyee5/oj/evlLTvzItfy18333+Fpf0npd4DSIVVfUYjgFNPj9Nzx5L9tGyeMcA4Z/wAP831fj+k2AVtL/YvY9N1P81tTQXpgsbVGWohevLfpy+1T/gsrGqieUDIfzuLh/wB9/vYoGQfzf9MZRepeV5tSm0+J9bjjivyD6ixEsoINBxJ/mX4sInxCwDH+jL6mJTfJIdiqE1PTYNTtpLK7QSQTKUdT0IIochKPEKRTyfyV5I82eRNTXStKkhu/LTy8v3xIkiVj8YTj1Zf+BZv2EyMcxHplGU/5uSPDw/5/q/3kv6yePoR/nPY8tV2KqF3aQ3cTQXKLJE4oysAQR4EHY5CUBIUd0EW+TPzi/KnWvJOqJ5j8uiWXTIXEsQDFjbsDy9MoTy9DkPhb7HH4H/y6/GMTUyZfwxlI/XD+ZKf8Mv4eH+P+D+KEZeIRz/h+niP+xfTfkbzE/mPRbTWJojC9zEHKEg0r3BH7LfaT/Jy6weSkJ/hQ8J/5yVU29/5c1BNmivTv1PWJhT7shyNsg91Xpv1ybFvFXYqw/wA/eR/8QRxXlk/1fVrI87acdj+1G/jFJ9l1yiQMTxR+r+KP8+P83/iV5bhgnnjyvY/mTor3+pVs9Z0tGV0c/DHIvxuHHVopP2JP5MZxv1w6/wAMv9zP+bKKkdRy/HFGTznUZ738w4oLryhpYtrzS7cpdSEKqtyQq9skLf3vJeXDl8XxZCRx4/p4p3H1R/hhD+dKXF9X9X/N9Snhj9Pqv6v5v/SbDrjyrbatoMk9xeySX1pCJbcTPxj9NDwurEI/91dQSOjJHy/eo8fBPiywmcjYo1EemI/yX8GXj+qfB9MuL6f6TYbl51/N/mfzv+KZJcw3H5qWFjo/krSxYw2HxT3G0aerxXkoKDkzcl+Bvid+Su6JlREMJ9NzyH1fzp/6ef8Avpf1eJgaj9N/j+mxi3/LbXtThn1kzrcajpkxF1bztSReB5A1c8ZUkp/k5ZLMZ+ojjxn08UfV/XjKH9BJkZb/AF3+OGTK/P8A570DzHY2d35aE1tq7oIbi3tlKngK7MU+FmjkHJP505ZPwxh3iYxxn/Tf6T/YzZUIbg8N/wCned6pNrejWa6Xq80i2N1J6r2oYeoSAAGkT7Sctvtf5T8HwxymQ7on/KV9X9X6VEyfKJ/i4Xo35fRebNU0OG1i1K18vaKBxEhZYpZAAP3tarI7NX429WJHwQMt/Ch4kv4sn1+r+ZL6v8zhxS4UgS/hjdfVL8cfB/R9Ka+af+cftCGg3N5o92+sa5GgkJjmRi5JHNvTT1WpxLN9rm38+QyY8uP15OICR9Xo9P8App+uX9b/AGMWuUJj1S4v9L/xUeL/AGbCvyy/ObzH5JVdCjjjkjQkCCdfTYE1NPU+Fh/ssuxzgRdA3/Fj+v8A4mTKMgR/O/pR/HC9li/5yA16Cq33l65DCh/d7inWtfDjkfzGE8jL/OCDkx/0/wDSpD55/OG286aNPot5od8JZR+6PAHjIK8HH+q3/CZXkliIviA4fUwlOA68mAfl7+YHmC206f8AL2bSm1IzcgkEjFHRftyL/sf7xPscP8vLJZcc4WeI/wA2WP1/72f0/wBT+i2eJEizZ/q/9IyUvKXnzzf+UE8mjXFoEjuR6qQXRJVdz+8jZHVfioVdeXxv+xzw4c0ZjlI8Pl4Uv8/jjxcP4/nohMSH8W308Xpl/s+H0PaLG+/NTXoEmj/R9jFKoYOPjPFvskf3q/Z+L7WA6noMZv8AnSl6f91/vUmdbcNSH84/8ekutf8AnHdtZka8866jNqNw2/FGKIPDiuVnJlycyMX9GPqYmcpc9h/NizTyx+VHlfy21NPsoRMKHk9HevZvj+ydv2ch+WHOXFP+sfT/AMT/AKZgIe8/1mbgUzJAZOwq7FUPd3kNnGZrl1jjXqzEAfecIiZckiJPJhWrfnh5R0oEz6jExFfhjPI7GnRcuOnkOdD+sYtnhEc6FebFNf8A+cpvLGnqpsRPemo5emhUKD3Jl4fFT9n+b+XImERtKUf831f8d/339FAiBzP+l9T1Xy7r1pr9hDqunuJLa4QOjex6g/5Sn4XX9lvhysimBFJngQ8c/PuyuNHn03zzYryk0uYLMvjFIeLfrZf+emVXwyvpL0yTE7vW7G8ivoI7q3YPFKodCO4Ycgfuy3kpCIxQ7FXYq7FXYq+XNSll/K/81Prkg46ZrB+1+zSUjn/q+hOOX+p/rZXiPOPd+If8Sygb2/H4/hfUYNcsYsO/NXyxpXmLQbi01x0gtwvMTPT90w+zIpPf9niv2/sftZVLGZ/T9f8AD/x7+h/O/wBN/CoiTyfJWkefp7rVbaDWnk1m10sstlCFNJX2SEuPtcNuXxcm4cUyeSXGP3lQ/wBU4f4v8708XH9PE2SlxfVwj+dw/wAT3S1s/wAyvObCW4mj0GyI+wgrJQ9f5t+P2eWRGqvbHHb/AFTJ/uosBk6RH+dJ6V5A8oTeVbBrC4vJb92laT1ZvtfFT4OrfCuTE5S3nRP9FSSebKMKGHfmVo/mHVdPEHle8SyuCSHLrXkjDiQr0ZkZftcl/wCCXIGZhuAJ/wC6j/V/g/06eIx5Uf6zzvyT/wA4taTpxa58ySHU7lmqCaqlPdKtyNf5sxyMmX6/R/RieL/Z8MJRYH1c+L5vTYPLvl+0uY9OjsoFl4FkHpCnEfAfipx7/ZwDS476cXvPH/WQMYHcyZFCDiooB2zLAZvnz82Ybn8tfNdt5/sEL2F3+4vIw1ByIPxH/WUKyfa/eo382Qxy4JcJvhn6vx/U+r+rKaYy6Hr+Px/nPUfPIPmjyheHRQLo3loWg6gPyHJaV/ap9nl+39rDk9I36fzfUp2eBflwn5rTafFoWnIbKyt6qJLhAhArWilx6jcf2OKcP8vBHWx/hj4kv538P+fxej/ff0FGWuln+kP+KZXZf84sSXuopqfmPUXvHdi09AVZtqJxftv9vKeLLI3tj/q+rhQTIvTdA/JfyrogBtrGN3H7co5n6efw/wDC4/lxLmZT+P8AxLHhZlbWkVsgigRY0HRVAA+4ZaMcY8gAyCsABtkhEAUFbyapT5p0OPXtLutLm+xcRMnyJHwt/sW+LK5iwrF/yS1qTUfLcMFz/vTYs9pJ84jwH/JPhkgbFspb7s+yTF2KuxV2KuxV2KuxVi/5g+SLXzjpcmnXI4uPiikHVJB9hx/xt/k5Tkje4+qP0/8AE/5yGL/lJ57u7tpvK/mOketaeQhJP98nRJUr9pqL8X832/5suEvEHEP86P8ANk2H1bj/ADnqGLB2KoDUtGs9UVUv4Y7hUYOokUMAw6MAw+1lU8Ylz6fzTKP+5VHgUy1XYq7FXYqgtV1W20m2e+vpFit4lLO7GgAGEC0gW8ltorv83r1bq5V4PKVs9Y4js126kjlIP2Ylb9n/AGH2+fCnJPi9EP8Akpk/3kPx/Sl/AmUq2H+dL/ex/H/HZv5c/LHSvLmr3Gt6Wpga6jCPEu0dQQeap2bbBjgYbX6f5v8AN/zmAFMwy5LsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqG1CFZ7eWJ/sujKfkRQ5CXJXmP8AzjNO0vlCNGNRHPMB4UZvVoPblJhCS9XySHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8v/KFVk1fzJdqKepqHH/gAf4u2Vjn+P6SS9QyxDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiryf/AJyM1y4tdCj0exbjc6tOlrsaHi28lPZuPpv/AJDtiZcItlHZnnk/yraeVtLg0ixULHAoBI/ab9uQ+7t8WU44cI8/ql/W/Hpj/RYhPMuV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVZJIsY5OQB740mkg1L8wdA0xuF7qFtE47NKoP/A1rlowy7v8Aes/DPXb+t6P90xm6/wCcgvJsDFEvvVcdo43P3Eoqt/sWxOLh5mA/zoz/AOmXGnw65mI+PF/uOJT/AOV8+XZ46ql26ttQW7nrlUjj5HJi/wBNKP8AvWNRH8UPn/x1g/nm5/LzzqoTUzLYzxgrFK0Jj47dOnxCvxcWzG/Ljnjnj/qxl9X9f/ikcAPKUP8ATPN/K/5heYfImq/orRrpdW08EBIy1VYE7CNm+JG/Z4/z5leOQP3o/wCL/wBN/G2Wf4t30N5Q/OnSdakWw1HlpmqHY21yOBJ/4rduKv8A8SwxAyC8Z4x/sv8ASsBES3jv/uv9K9GBrkWDsVdirsVdirsFK7CrsVdirsVdirsVdir/AP/S9UjIhXZJXYq7FXYq7FXYLV2FXYq7FXYq7FWmYKKnoMVeR/mjaW35geWDrfl9i93pspmtZApB5xGkgTbkQ3H4f8vjlOT0Hi29H1f1Un0n3M1/LzzlB5v0e31SFlMjIomUH7EgH7xD4fF/wuXkfb9KZRplGBi8c/5yC/LnX/PUNtp+ktELJCZJA+zcwCEKmn2eLceOY+SZj/Dx/wBJBl8Xjn5CafqvlvV5b+0s1vGikFrdx0/ewgkD1Y+X7Pw/Hg44bGW8T9Mv5kv6UWW3M/6b+bJ9jZkoYX+aXkGfzvpY0mC9ksFLhnZATzWhBidQ8XJN+X2srlKY+iv6XF/xXDJIJHJ575Q/5xQ0XQ7mC/vLqa8mgcOFKqsZKkFap8bdv9+ZjiGSX1GPD/NiJcX+n4v95FgL6/d/x6T3C5uoraMyzuscajdmIAHzJ2zMAvYbsqtJdP8APeh6jefo2zvYZruhIjRwSQOtKbZbLFICyNmcoEc2QZUwdirsVdirsVdirsCpBfeddBtS8V1f2kbJVXV5kBB/lZS3L/Y5cdNMizGXCf50fT/xLPw5dxYqv55+WTcLpulNLfS7KEtYiwHbqeC8f8r7OVnHHEKJhjr6Y3/ueAS/0qDAQG5iK/h/6ReiQTetGslCvIA0OxFR0PvkQWLxX89HXVfMnlvQI/ic3QnenUKGRa/Ljzb/AGOQny/2LIbB7fljF2KuxVSnkMaM6jkVBIA707YCaV84XX5q+YLjVBrNroE8bQERXPGtJYqmscgI4sV+1DJ+z/qNlMs2AGrl6/qjIRlD+t/W/wB2k5MY79/5yc2f5ueXJ9QGvaSxs72NRHeWci8DNHXqn7LT232k4/E68ky2GEQ+ipYj9UY/w/7bGH83+f8A0f6TOMAPpoxP83+H+lw/7pLPzk/Kmy1S9g8zW1yItEumV7kLUorsCEvSAePpyVRbhl4sq/H8fL4KOCUDwx6/T/Qn/M/own/B9UeL+Dh4WABuvx+Jfz/4Ur8v+e9M8iavqdl5IRtUS+9EwW8QYxpIoZJOTsPUdVajclbg6P8Ab+HnloIxD94Rt9Pq4py4v6X0f1/rl9P9JlQiPV/xUvx/pkD5t0BLS4bzF+Yl8BeXKD/cdaEK7AbxxzOvwqq/zN/w+CHHPeNabEf4v45/5v8AO/rf7BIBP+1x/wB0xuPyt5mulm80eVtPOlWMcHAcPtMm/OQc/id2X7bLlIzQgaHFkHF9WT18Ev8AcwaxMRPps1/FL1M18rf84uDWbWLWbnVmZ7lFlDIpY/EA27uVav8Axthkckjvwf51z/3vCgmRO9f7tNI/+catE0PV7ZdRMt7pdyDDV3KFJiKx19LiWik48U+JeEvH7fLBWSXpMj/RljEf86PDl8Xh/nIiCeZ/q8P/AB7i/rJvr3/OM1vZMNQ8l3c2m30dStXLKdvsA/3if63J/wDVyUTkxfSfE/nRycMf9zHg/wA2UP8AOWJlHkb/AK3/AB2P/FJZ5RSz/MU3XlHzxbKnmGyUgTqoV2UfD6isv7S/C3+Wnx4nHGY44fu5/wAXD/O/pR/HD/CzIEvUPT/O4VfyJ541TyHqa+RPN7kwuAlnd9qH4UVi3Vf2f8nMiExlG/oyj6v6X4/h/nMxLj/rD/ZIz8v9b1TyL5lk8oeZZ2uLW+/e2VxISat3jq3Tl9nj+y3H+fBCXiD1ADLDyjHigvEZDf6gof8AOQ/km6sJYfP/AJfJi1CxIM3EDdBt6rfzcF+F1P2ovt/ZyoHwpX/DP+H+n/x7/d/1mETRS/zraWv5z+Sk8xWSBda05TyRTvUUM0X+rIv7yL/K+Dn9vJZY8J4hy/i/q/8AHf8AcrMVuPx/0iln/ONv5vSW4i8s6w4NvISLdyd0ev8AcvXojfaT+Vv+FyAeL3/w/wBOP/Hfx/C2fV7/APdPp7INT5z/AD50XX/K2rL550i5drT1YTNCCaIYwY0JX7JiZWdX/wAp8gM8onhP0n6f99GTIZCNuhe/aNqsOrWcOoWxrDcRrIh9mHLLCKQRSOwISPzj5hfy/pk2oxQvcyRr8EUYJZmOyjbovL7TYDIR+rZI83iFl+UHmP8AMmZtb853UllbzAGO1iJHFOysn2R/svjyo55z2h6Mf86X8f4/pIMyeW0WZr5B/LvyQscd/HaxzIoPK4ILEE05FW+FuTD+XIx0ZnuTKfx4I/7FRhMhfP8ApJpc6v5Be3bTjNpyx3w9MohjUuG+H9ji3f7X7OWS7PrnGv5spfXH+pKfF/sWZwE8x/V+n/YsB/La5uPyo8xyeStXYnSdQf1LCY/Z5E09M/ys3wq/+Xxf4UbDilxjhP8AeQ/2cfx/vooibFdz6CybFKfNOiRa7plzpc4qlxGyH5kfCf8AYt8WV5BYVgv5Ba403l86Venhd6XK8Eit1UVJj/2P7K/6mWRPEARvbMi9x1egWuu2N3K1vbzxyTJ9pVYEj5gHJyxyAsgqcZAsphkGDsVdirsVeT/85G+Qm80eX/rNsvK709jOg7lQP30Y/wBZRy/1lXKJ+k8Xd9X9X/jqLpmf5e+Z7fzJodrqdsQQ8ahwP2XUBZE/2Lf8LmQQzkKU/P8A+X9j53s00/U2kWBJBJSNuPIgEcX8V3ymYJ5HgYbpdaflXpWgaZPbeW4I7W9eJ1inI5OrlSEfm3xfC3xZT4Ijv/eS/pfjhixEa35/1mM/kH581HU0u/LnmNydX0+Qg8/tMh7/AOVxb9r+VlzME+McQ/zm47i3sGBg7FXYqkXmXzppHlqP1dXuo7cEVAY7n5IPiOTjjMtx/pmcYEvJvMn/ADlfodkxj0mCW8YVHL7K1/2XxUyXhwjzP+l/4qTLhiOZ/wBKgtL/AOcifMNyTcPocrQMnwBKjev2nkcfCv8Ak8coOow3Vn/dT/0v0/7NhGcDtv8A5vrYZ+YH/OSF7rlnPoU+lQBZlKyK7mQ79COHHg6t8SN+y/HJzGMjcT/nRl6cUof0/XGbL09RIf1vT/vXoH/OLHmbUbrR30S/tpkjsifTmcUUqxr6NG+Lkrcm/a+Fv2f2qhljPYG5D+b/ADWsTEuT3bJgK7CrsVdirsVdirsVeYeQrCXQPNusaUTS2uuN5Evb4jwkp/sspx93838RZXt7np+XMXYq7FXYq7FXYq7FXYq8/wDzI/LEeYpItY0uT6rrVrQwzDoaGvpyD9pcxyDA8Uf86P8AP/48jcGwlvl383zZTDR/OURsNQU8fVIPoyH+ZH+yOWZEJRy/TtL+LHL62wAS5f6V6XbXkN0nqQOsinoVII/DCYkc2JBCvgQ7FXYqg7vVLWyHK5mSMdfjYD9eSESWQiSwPW/zt0yFvquiRyapdk8VSAErX/Kk+zTBPhx/WRH+j9U0mIj9RpLIfy81vzncLe+d5RHZI3KPT4T8Pt67j7X+f2colOWQVH9zj/nf5Wf/ABH49H8TEzvYeiP+yl+PxH+J6pbW0drGsEChI0AVVUUAAFAAB0GTjERFBir5NLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVUrpeUTqOpUj8MBV4x+QWuWegeV7830nCOwvZhIW/ZHwqv/ABHDAWzq3s1vcJcRpNGao6hgfYioxYK2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVZLII0Zz+yCfuGKvOvyMQy6Xe6gRT67qFzMv+qW4p+rKoJL0jLUOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvGPzfg+s+c/K8L/3Xrs1PcFSP1ZXLfZIez5Yh2KuxV2KoK51W1tXWG4lSOSSvFWYAtTrxBOTjjlLcAlnGBluASjQa75Bg7FXYq7FXYq7FXYq7FVkkioOTEAe+NWkC21IYVHTFC7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqxzzR590XyxGX1e6jgNNkJq5+Ua8pD/wOWRxki+n86XpizECf+KYJP8AnjdasTF5S0m5vj/v2QcI/o3+If7JcplmxQ2MuP8Ao4/+kf8AeouA63/V/wCK/wCkWo7H8yteZWuJ7bS4SalIxyanhy65H8yf4If52T/iFGTuj/pleH8iVvWaXXtUvb3malBIUT5FV6/8Lg8TNL+IY/8Ahcf99/0kjjl38P8AV/4pPNK/JLyhprc49Oidj3lrJ+EpZf8Ahcq/L39Upz/zuD/plwMK77/H9X0sn0/yvpemgiytIIK/77iVf+IjH8rj/miR/nS9cv8ATS4pMRAdw+SPFrEOiL9wywYo90fkzq1G40izuRSeCOQf5Sg/8SGJwxPQIoMK89fkzonmS0dIbdLW9C1imiARlYfZ+xxqMp8Dg3hY/o36ZJqtw+ftK81EagfJ/wCY0AniDGFLphSeFiaIwm+0yftcmy6o5vUP3eX/AFSPo9f9KMfRJt2n/Rn/AAyj/v3qb/4x/LQ+vFI2v+XUWvFqfWIl8Q9OUqqv+sv+QmEaitswr/bo/T/nR/4r/TseP+f/AKaP++j+P6z0ryX590rzhaC80qUP/PGaB0P8rp9pcyJQI3G8f4ZfwplCvP8ApMlyDB2KuxV2KuxV2KuxV2KuxV2KuxV//9P1TkQrsNq7CrsVdirsVdirsVdirsVSjzbb30+lXMelP6d6Ym9FvBqfDkZSMdx6kg08+/Iz8z5PM9tLo+sfBrNiSkobq4Bp6lD3X7L5OxIcQ6s5b7h6hftxt5T4Ix/DIFrDzD/nG2c3HlZkkPIJdTqPlUH9ZbAAykwbytqUf5Z/mNd6DKSmmasVkj5UorsSyGvhyLx/6uOEbcPd9KYixXV9IZNg7FXi3nFf+Veeb4fNMSU0vUwILwjor1HCU/dlOOoy4T/H6o/1mUN9u/6f6z2SKZJkEkZDIwBBHQg9MuQkvmnzxpHla2N3q9ykCKNgT8THwSMfE7ey5OOMy9387+FlGBO/+y/heTn89fMfmpzH5F0aSW3rT6zc/CvzAqsf/JV/9TK5Z8UNvVkn/Nj/ANIzl/p/CQZQHfP/AHP4/rSg1b/kj5g83zm+8+6k7J2tbZiEp4Ejgo/2K/7PKjnyz2j+4j/s/wAf1pTQckjsPR+Px/OeheVfyg8teVrhL7S7RY7qNSqyEktQji25/mGRjho2TOX9Y+n/AErWI13s2zIZuxV2KuxV2KuxVC6jfW9jA9zeSLFAikszmgA71JwgE7BIFvAdI/L38rfNGqstjfNNcvIX9AylQxJqUTnGrSqx/lkZsplpMgF8Vj+jLHKX+x4v9PwrLER1/wBKYf7z1PcdC8q6ZoEQg0u2it0H++1AP0kbnIQwRibrf+dL1T/00vUxEQE3zIS8K8vynzJ+a93eg8odKt/SHhUgpt/spGyuXNkRT3XLGLsVdirsVULm5itY2nnYJGgJZjsAB4nAI3ySN3zJ+Zmt+VPMF5PZ+XrFtVvrqpLW6lSko+ETLKB8QZftrxZP28onhhi3lLgP8MY+r/Ml/W/0yTCMeZ4T/DwsR0/Q08v3kGlfmjcXS2CRF7eGKXmgNSfTkSIsycqn7PH4/wBvLRKeWNAywx/pQ4eP/O+n/TxmkcUhW8P836v91/uOL+ozLRPMepeYGfTPyq0xdMslp6l5IoDkdP7xuXFv8lWlf/LTKax4j6R4+X+dL1cP+m+mP9fh/qseKMOXrn/S/wCPS/3X+kegeSP+ce9N0uU6n5hc6rqbnkzy1Kg9fhQ/a3/abBKMsu8z/mx+n/Ol+IsTc/q/0r1kW6en6NB6dOPHtTpTLxEAUlivkuxbQZrjQD/vPGxmtvaNyS0X/PKT/hXwQO1H+D/c/wAKejItU02LUbd7aaoVqbqaEEGqsp7Mp+LDKNoRiigp1ySvIvzw8qSWgj88aN8Gp6ZRnp/uyIH41f8Am4rlN+HLiHI+mUf98o2KF/Mi88t+ffLdpPe3cdnd3CiW1ZmAYSDrH/NTl8OWywyPqh/B/soM+A9GJeXxN+anlOXSro/87Foj1hkrRjx+wa/a+Ljxf/Y5HIeWSPT6ll/ODIvLMx/N7ypJ5c1i5ktdVtXCXPAfGeJ+BnQ8eSt9l/8ALwzJkOKBiOL+tw/1fTKPDxf539VEiauO1/jvi88/L2Of8mvOj6Nqz87K9UR+r0VlY/u5aHpxYcX/ANljimZjhlt/R/g4kw9Qr8cSY+cvy/sPLnm6SznIh0zXFZ4Junoz15pwf9lfU/4R2ymMT9I+qHqx/wBX+b/vWMR05V9L1z8sPPFzPI3ljzAPT1e0GzHpNGNklQ/tNT7eZIl4gv8A00f5smR33/00Wda3pEGr2c2n3ahoZ0KMD4MKZCceIU1kW8w/Iu8l0Vr3yNfkm40yQtETuGhc1Tif8n+XDCXFHzj6ZM+Yvu9L1xq0264WLyX8r/zcvde17UfLOuRLDd28jmHiCAUU0KkN8XLj8XLJcUZix0+r+JkSDyeo6leGytpbkIZPSUtwXqaCtB75GwObF8Y+ao9V/MPzjBNexvpsOpERQ+sCQEX4duX7X/G+VHIJ/R66ZcV/TvT37yn/AM40eVtBMc80TXl1HQ85WPGo7iJfh/2LcsrGKR+qUv6sfRD/AIv/AGUWrh35n+r/AA/8V/sk6/Of8vv8X6KyW22oWh9a2YbHmu/Cvg3TJz9PqH8H+5Zclf8AKDz2PN2jJLP8OoW1IblD1DrtX/Z/8SzIJB3HVskOvexv82f+cgIPI16NJgtHurwpy/lUV+x/lP8A7HDEw6n/AEqiurxGz07XPN/mRTq7S6Hba43JQlQGKj4BSq8uTfzZjxzcxh/2R/33/EJjkP8ADs918h/848aH5UvBqnOW6vUYMkjsV4kf5KH4uX+XywCM7syP9WPp4v6/1cX+xaRd2T+P6T1fL2TsVdirsVWOgdSrbg7UwEWrxv8ALq5HkjzVfeTLgcLW8Y3dm3QHl9uIDpyyOLcV/M/3LMbj+r/uXs+TYOxV5N598qnSfNWmecLFKKZPQvOJA+BhRZX/AJuOUR9Euvr/AN3/AMeUGvimvmb88/LehH0ln+uXHT07f4z/ALI/ZX/ZNmYcXD9REP63/ExbPDrnsxx/zj8za4tPK2hysG+zLcVCkf8AJKP/AJL5j/mcQ29WQj+GP/HI5Z/6aMGHFDzP/Ff5vH/vW30D8z9fIS+vrbS4Gpy+r7uB4CgZq/8ARzgGpl/DCv6WTh/4rL/0yikZO6IH9b/pLL/vEysP+cfdEfnPrzzardSCjS3Dk/8AABfs/wCt9rK5Rnk+uR/qx9MY/j/SsJXLmf8Aess078tfLunRJBb2EAWOlKoCajoST1yH5aHMji/pSMmvwoqPnH8u7PzaYIr+SQWUFSbeM8Uc/s+pT4uK/wAuXEEConwx/Fwj1f5sv4WzfkDX9VF+Xfy+0Ly6P9xVlDCx6sFq3/Bvyb/hsp/LwP1ev/hnr/2MvTH/ADYo4AyICnTMkRA5Mm8krsVdirsVdirsVdiqDOl27XQvyg+sqhjD9+JIYr8qjIcO9qjMmrsVdirsVdirsVdirsVdiqWa35esdcgNrqMKTRMKUYV+49RlM8Ql/wAV/Egi3ntx+Qtrbyepod/d6eP5I5CV/wCBquIOWHKXF/wwcf8AxX+5ZCUh1/03qU0/KbzVDtB5muFX/KiDf8SkyX5jP3Yf9LH/AKpM/Fl5f6WP/Etj8rfNzNzl8z3BY9QIgo+gLJthGozd2Ef5sZf9O4L4sv6H+kj/AMdXv+TmqXhA1HXr2VB2U0/Xyx8bN0MIf1YcP++4WIyTHcP6o4UbYfkRoELepeGe8b/i6QsP+BysxnL6pS/zfSwsnmSzXR/Lun6LH6WnQRwL/kKB9564wwxjv1/nS9UlApM8vS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq+WPP35VeZx5mk0rSY3OhandJcuVoFBG7iQ/aVV3/18xRn4Bwb8X8O0vVH+t9CPE4du99Q2tutvEkKbKihR8gKDMgbJVskrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVSTznqg0vR7u7IJKxMFA6lmHBAP9k2BIQv5daC2haDZ6e/94kYLf6zfG3/AAzZCHJFslyxXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXjn5rrx86+WpARy9Vx9HXpkCyD2PJsXYq7FXYq8n/Pj8npPP1rDcWMgiv7UniWFQyn7S/CGbl+0uUTMonij6v50f+JQTTAtH/I7z75X4XPlzWENQCY5OaLXwMTiVW/2Srln5zN/HHxP8+OX/AKa8HB/mTZeNPrv8ZS/2M4+lEXf56+bvKF4NJ8xWUF7cKAz/AFYkvxPcqnwqf9Zcs8fGRc4ywfzeKUeH/ZSl/u08cf4gcfxj/wAVN7v5Y11Ne06DU443iWdAwSQUYV7MMjYPI8X9JBrpum2FDsVdirsVSzzDr9poFjLqeoOI7eBSzE/w92wgWkC3zLqFx53/ADsuXbTeWn6HGx9NiSqtT7JJX4pW/wBX7GQlquD04/UR9XD/AMX/AApOWto/6Z7T+RmkaxpPlyO0193e5WR+PqElglaICW3p/LjHMcvqKDLi5vRMkh2KuxV2KuxV2KuxV2KuxV2KuxV2BXYVdiqV+YfMdj5etH1HU5RDbxipY/wHVj/krkoxvZMY2+X/AMx/+cnb/UZJLXQ5fqNiDT1FFZnHsW+GL/Y/F/l5PjEfpo/0pfT/AJsf+L/0sWzYf8V9X+w/H+av/ILX/KOuaqLbVraWTWHqyXF3KJVdurcUYKqP/Jy9V/8ALyieDxd5Slk/2uvChwf5spSl/VlLh/osTHi6k/0a/wCkuL/PfVsUKRDjEoVfAADBGAjy2YKmTV2KuxV2KuxV2KuxV43/AM5C/lR/ijTjq2mr/uRtVJIGxdB8RG3V1+0mYshwHiH+d/xX/FI5J9+Q/mv/ABH5Wt2mblcWwMEoPWqfCOX+suZR387bJd/exf8ANn8rrvTXPm3yTyttVjIMkUWyygn4iyL1b+b+fMaJOA7f3R+qP1cP9X+i1xlw/wDEvUvJt3qd3pUE2uRrFfMgMioaiv8An+zl4mJ7gGP9GTK78k8ySHYq7FXYq7FXYq7FXYq7FXYq/wD/1PVGRHNLVDWvbIV6rVdlqHYq7FXYq7FXYq7FXYq7FXzZ+edlL5A8zWXnjSlKxysFuAo2JH2uX+tHlOP0y4f4ZJga+L3jT/MFprmkDVbVw1tNCXDe1Dyr/q5dKNbJIovL/wDnGy7htfL99dzMI7ZbyZgxNFCg9a/y5CAvbmki9mG/nx5r8j+dLRZ7PU0i1e0JMbiKU8qH+6LInH7XxI2SlglE8Q4P6UeOP+59UuJTAju/03/E8SP8gf8AOQ+o3umWuladpdzqmqRRhJZK8UqNgzPRv2f2mZcMsuOO8j6j/DEer8f5slMo9b/qx/H+8eu+RNQ80Xxlk8zW1vaRmnpJC5Zvf1OXw/8AA5AZBPlGUP8AhnD6v9Kx4hLkCP6zH/zq84eXY9HudG1OX1Z50IWKIhpA37Df5PFv5slPFYs+j+bKTIQ79nmX5bXn5k6zpqaJbA2dpEg9O6mTixQ/YCsefL4f5Uyv85E7QHiZP4v+K/hh/u/6qjKOYF/j8fzmf+Xf+cdtMgvF1bzHPJq96N/3393Xx4MWZ/8AVZuH+RkJRyZfrP8Amx/4v0/7GEGuRM+f+l/H/HXrNvbxwIIoVCIooAooB8gMshARFRqP9VKtlivPvzu0vV73y7M+g3D29zb/AL08Ni6ruyV/4bInIce4/wA5MZmO4QP/ADj151k80eWo5LyUzXtu7RzFvtVB+Gv0ZYTe/eylvv3vT8iwdirsVdiry780fzP1LyPqNpLJaGTQ32uJ1BJUk8R8uP2v8rGOSN8J2lL6Zfwsxw8jzYt+Z+q23n7W9E8t2Nzy066H1mbhUhlH2Fant/NgycURQ2v0pIMR73rWn+RdC0545rSwtopYfsOsSBlNKVD05cv8rlmPHBEVV/6aX+y3aREBM9X1i00i3a91CVYYE+07GgGZUYmRoM4i3m/mr/nIryxpdlJNYXK3d0ARHEgNS3avIL8OWcFc6+bYId6F/wCcefKl7Y2d35g1ZeF5qsvq8SKEJ1Wv+tXlmJCXEb6fTFrJt6/lyHYq7FWN+dvPumeTbM3uqShRT4EH2nP8qLkoxtnGNvmfzz+bNx5sLSazO1npJoY7KEgyyjtzP7Kt/lYJTJ2h6I/xZJfX/mxZ33bD+d/Ei/J3l3zb5riW28u2w0LR+8oqsjjxeb++lb/Jj4pmJHJGJ/djxMn+qS9f+yl6Y/5nrahMR+nc/wA6X/Ffw/5j03Tf+cYfLcMD/pJpr67lUhpZXOzEfbRF49/9+M+GUcmTecjf9H6f87j4pT/2P9VhK5bkmX4/03+yRXlj8xNJ8mWz+XvMV7Ak9hRI3Tf1I/8AdZ4RhuMqj4XXMnFhJHIYz/FH0w/zo8XDxRk3DGT/AEP538P+chLr/nIuG6LL5e0u81AdFkCFUJ+dG2/4HGU8UPqlv/Nj6vx/pUExjzN/1fx/vWO6n/zlDqGjN6eq6O0D0Pwl6GvbbwyccuKfLj/0rIHGf57D7b/nKfXtQ1OJraxgkapVYl5FiD+yH/5twSljG5BFR+q/+Op4o9x+f/HWcp+efnic1h8sTFfcSH8RGuUDWYD14v6s4/8AEyYiePulL+rL/q3NMNF/5yQEN4unebdNm0h3NBI/IoD/AJfNI2C/5S88ux5MeX6Jer+bIx/3X8P+dFA4ZbR2/oyr/jvD/pXrvKz16xYRus9rcIV5KQykMKbFcjOHQsSKfPn5e+R9GTzBP5R8ywmS5sZTLYsxIBjry4/5Q+y2Y4h4o5kcHplGJQY8QvfZP/PMcf5YeaYvN8Ef+43UALe5RKDi37MgHwr/AJWWYhwnh/hl9P8ARkmPcxjzX+aGgeU/OUXmXQp1uoLuMR30UQrt+zIH/u2f/J5ZdDH4Zo+mJ8/VGf8ASg2CNbH+J6J+a/kq0/Mry3Hquk0a6RBPbPT4mFORj/m+L/iWY2UcB4h0+r+lFqOxYjoFzH+a3kubQbwU1zTFotftck/u5B+18XHi+TyCwJx6MpDqET5SgPn/AMvQz27G380aH+6LHZuSdEf+aOVRxxlY/eR3v6o/z/8Ajyn+cHp35eeeY/NNoyzL6Oo2x9O5hOxVx3H+Q32kbLrBHFH6SkjqGI/mtat5X1qw872pKxq4t73iKgxN9liP8k5TH0y/r/7pjHn73rEE6TxrLGao4DA+xFQctQ8S/N+zXyx5s0fzfEOETyiG5YbA12Uv/sTlMRwy/rpifte3o6yKGU1UgEH55cQh4h/zkve6UumRTLcxR6tYyrLCnIciAfjHEZHwTGpAVX830s4xI3TD8pf+cgLLzekqaq8FjLGVVA8oBk2+JgG4/tfy5kCHH9IJZGN/S9fjkWRQ6EFT0IylrLxa/hXyB5+iu4/3el66pSQdFEw6H2ZsqxCiY/50UxF7PXLvQrG8mW6uII5JVFFZlBIHsTkZ4IyNkW1mILz38/tHD6NHrUQPr6ZMkqleoWtHxI4SCOnpZh6HomopqVlBexmqzRq4PzFcurdSj8KHYq7FXYq7FXl/56eW5Z7CLzLpw/3JaO4njK1qyA/vI9v8n4spJ4ZCX+bJI2KfWH5paFJosGvXd3FbwzRh6O4DV/bQJXmxVv2VzLGInl/pv4f9N9LZ4Z/49/C8/uvzb8w+eJzY+QbUpag8WvZ1oB4lA3w/8Sb/AFcqnljj2H7zJ/sPx/W/0jEyEf6Z/wBgjIvyButY4z+a9XuryQ7tGjcU+Qys5cs+scY/mxDHjkf6P9VnXlj8sPL/AJa+LTbONJOnMjk3/BP/AMa5SNPE/VeT/hnr/wBj9LXwD3/1mVgU6ZkAUzbySuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK7CrsVdirsVdirsVU5ZViRpH2VASfkBXFXk3k3/nJDy/5k1KXSpK2bpXg8zAK9Dxop/mzI8IEek8Z/m1w/6X1ept4AeW/+x/S9Xt7mO5QSwsroehUgj6CMoII57NZCtgQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUo1fQU1WaBp3PowN6npDozD7Bc9wv8uVyBlt/pv+JSm+WIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirx/wDN5AvmzyzKPtG4kXpUUAH/ADVlZ5sg9gyxi7FXYq7FXYq8s85+edT1bVj5O8nlReKK3d2RVbdT2H7LT/5P/N3ETn4f9Ocvpj/vp/0WV8PPcn6Y/wDFMm8kfl5ZeV7dlUm5u5jynuJfieRu5JPQf5OVCBkeKfrkf9LH+jD+iwO/1bsrVQooBQDLQldhV1e2KuxV2KvA/wA2Lu68+earbyNYBmsLVkmvmU0BBoeJP+Sv7P8ANkMk+EUOc0k0Pe9y07T4NOgS0tVEcMYCqoFAAMYQERQYjZFZNLsVdirHta876bo+o2mj3Tn65fEiJFUnYd2/lX/KyQjYuxGv538X9VkBe7IcixdirsVdirsVdirsVQ15cfV4ZJwrSempbggqzUBPFF/adv2V/myKvKND/wCcgY5NXXR/MOnXGjrcEi2luNg+/FeYZV4Fv8lnXLMcoZfoPHX+y/qswBLl/sv4nsANdxkWCySVY1LuaKoJJPYDrir530tJfzs8yy3N7yXy5ppKxR7gSP4sfslv2v8AU4plWWRPojt/O/nM5HoP85Kvy+/LHRrT8w9U0bXIFuPTQS2ay7qUJ5V4fZkZVP8Asfiyrw+ONG/R9XD6P9z6mHDxD3PcV/Kny0upx65HYRR3sNODoOIFP+K04xk/5TLywxwCJ2v+rfpYCIHL8f5qcWvmbTrrUJtHhnR763UNJEPtKDShPbvmXwmrbeE1aMttStrssttKkjJswVgxB96HbAYEc7QQQ7U9Rg022kvbtgkEKl3Y9AFHInABagW+Rr786vPHmTWH1jy76q6ZFOkMcSKGQ8jxRZNviaSnx/yf5OGWpjj22r+kPq/z/wCH+i2eKIben/OH+/8A4X11a3PJFSUgTlAzLUVFeu3zwVtbXXVFYoeWWv5stH5l1mx1Jo4dI0mKNmkNahmNPiP+U3w8cIIPpH+mtnQO3+yRnkr8+PLnm7Um0jT5GE9CU5qVDgdeGTlAVsRL+ckwFWDbP766js4Jbic0jiQux9lHJvwyqraw+XvyB8w3Wi6wby4QjStdnlSNtgokRjTb/Zcf9l/k5CEhfB3fSzG+z6pyxg7FXYq7FXYq7FXYq7FXYq7FXYq7FX//1fU46mn+e2RHNK7JIdirsVdirsVdirsBCpR5qt7+40y4h0hxFfNGRC56BuxwGRjuBxf0Ug0+YtB8/wDn/wDLnUml82RXV1pZcJM0lXVQekkM45Rr/NxVuDfYxhrIZDwy4RL3RjKMv6no/HqiyGUS2l6f83h/3P4/mvpzyv5p07zPZJqWkzLPbv3HUHurqfiVl/lbLJRMeaJRpgn/ADkpZJc+TLpn/wB1NHIPmDT/AI2ymSA8rfU9a/KXSWtlja90HU7cmEivKGSRNwx/l3wQy/wT2r6Zfz2Ql0l/D9Mnqf5D+VVj8j29jqcQK3YeR0YdVkPIBv8AY5GIEwf6TA7sl0/8qPKtgFW30u1+E1BaJXNf9eUM3/DZV+Vh14v9PP8A3PFw/wCxa+Af9JXL/dIDz1+aPl/8v4vTuiv1px8FvCBzPhVV+wv+U3+w5ZlYtNGAsCOOHub4Y9v5kfx9LArS68//AJmkvGf0DornY0PrOvty+L4l/wBVf8jI/mumIcf+2S+j8f1P9OviV9I/zpM18nfkZoPl1xcyIb286maf4jXxCfZXKvCMjczx/wBH+FrIvnu9FVQooNgMyAKS3hV2KuxVayhwVYVB64CFeC2lvD+VXnpgx9HRNbX4T+yswP2f8nf/AIkuV4tvR3eqP9VlAXt/pURJ/wA5V6PFqTW0lpP+jVkMf1sbio6nh/L/ALLnx/YzKAh9PF+893o/03Fxf7Bnwx5X6vd6f+L/ANi9ttbqO6iS4hYNHIAykdCCKg5Xya6pJfNnnvSPKaRy61cC2SYlULAmpFK/ZDfZ5YxjxdyRG0V5d81aZ5jg+taRcJcxA0LIeh9wdxhlAx5qYkK2v6Hba5ZTaZfJzgnUqw+ff5rlM4cQpgQ+Wvyy0n/An5oHQ7tjInGSKFm/lYCSM+3wjBD1DfnFkN31dd3cNpGZrh1jjUVLMQFA9y22XAE7DdQCeTx78yvzd0DWYJPLOlwHXLyb4RFECUBH7TSj+X+Zfh/y8GaEYR9Z4f6MT6/9j/ufq/osjED6v9LH60n/ACm/5xsj0udda8yhZLgHlHbLuiHtzJ+2y5h0cnP0Y/5v8U/6381q5vf1QIAqigHTMsCmTmYIOTGgwqwXzZ+dflfywrC7vEknQf3MPxuT4UX4U/56MuW+EeZqH9b6v9J9f+xbfCI5+n+t9X+k+p4rqP8Azkp5m8z3D23lO0S2hXdpZKMVX+eR3/coP9j/AMFkZZYQ2AlM/wAP9L+pCP8AvpSQSBsBxfj+b/xTza7sNc/MDWHW8vkuGiFZJ3bjCgHUIW4q3+qq/HlU8kjtX/JOP8P9fh9MVJMvf/Nj9MXoPlc+VPLEi2+kWE3mTV12MwUmIN4Jy+HiuUTxxH99L/knFjKIH1n/ADYvQAn5m+aVVYxBoVoT2oZOPhSj0b/Yrlg1AG2OH+dL6f638Hp/zJo8Svpj/nS/4n/jslmpfkdqAsZrzVtb1K/nSMsIoH4ciBX01B9Xly/1f9hic+fnxQw/zuGEpf7iWD/cMhmn38A/ijEf8RKP+5edaQv5d22kPdSo8GuW78vQvOUrMyH+6ICrCyyL/kLx/wBhgGAz9fH4kJfzuHF6f4vRGUp/7OaBC97v+t6P9h/0mzWx1Hz157tVh0O2i0LSn+H1KUcr4otOX/A8cjHLCG2KPH/Slw8H+m/6TQJiP0j/ADk2svyJ8reW4zqPm25N7K2xluXIWvgFrkhhyZz6if6uP0qIyn/SQ3mX8hvLPmix/SHk10t72KhhlhclKjpz+0w/1sjLBPCbF/1Zf72bEwMN97TX8ovzNv57pvJ3myP0NZtForsf78D9pfF+PxfDy5r8eZMZjKOIf50f5rYSJC+R/ii9I8yeV9P8yWjWGqwrNC3ZgCQezIf2WX+bMfJiE/8Aio/U1kW8Y8gXV1+VnmOTyjqZY6PfScrKZiSAxoBHy/mb4V4/z/62WYp8Y4Zf3kP9lFmDYruZV+eHki61G0j8w6EOOsaceaMuxZBUun+V/q5XI+GeIf5zEGjbzvyb+V1/+a9j+nPM+qySxyFlWCM0CMpK/Gn2Rx/lw5J5J8uGEP4dvqZTlI9wVfyu8kaeJdX/AC71q1he6iBeK44DkUOwf1D8Q4twb4f5sq4BMcXLIPOX1/7lBiCL7mc/kHrjQWE3lPUXpqGlStEUY7mOp9Jlr1Xj8OZUDxRv/Tf0WRFi/wDTMT/NDS7j8tfM0PnjSwfqF0wju416VPXb/K+0v+XlOM8B4f4T9KIGtuhQeueYI/L2uQ+fvLbq2l3xjj1CIVPEvv6rj9n4fi5fz5OB8M8P+Tn9P9f8f7FIFGudvQvN+hy2d1F578sn1HCj6zEm4nh7sOP2nRfiTIn90d/7s/V/Rl/P/wCKQPSaPI/V/wAUy2ePT/PGhvGjCW0vYiK9aEjw/mjb9nJ5IWK/0qJCmLfkjrly1pceWtT/AN7dHlMBP80dT6L+/wAI48sMZcYv/Tf1mUt901/Oby4Nf8r3tsF5SJGZY/8AWT49voByvJsL7mCI/KbzANe8s2N7Xk/pBHJ/nT4H/wCGGXXbKTyP/nIj8ufLGl6fd+YGDfpW4dQi+pUcmNS3p/a48VbKfDlzuXD+P4kCN77vOfLPm/8ALbTtJjsdV0u4ur0KA8o2LE9Sn71eKq32Phw/lwdzMg/0eL0/7GUE+GO//df9IvYf+cf/AM0dG1mWXyxollNaQWymWP1pvUJBbf4W+JOv2VZ1y8gAfVPIf52SMY/7KP8AxKSBXMz/AKwj/vWU/mPo1n5/0m50q1fhqdk3NFPwujruu32uEq/Ydfgf4fjyicTXHHp/F/uo/wBGf9FiQRuEd+T/AJyHmfQ43mr9btf3FwD1DptU/wCsvxZdd797KQ697KPMOkJrOn3GnS/ZuI2SvgSNj/sW+LK5iwwef/kLrMj6ZNoF5td6VM0JUmp4V+A/L9nDE8QtnIdXqOSYOxV2KuxV2KvHfzJPnvzDqT+XfL8S2WlsvGS8enxBh8YU/F8P7PGNef8AO6ZUc4j6RGU5/wBIej/TS9H+m4v6MU+II7AXL+kPR/xP+6k8s0r8qbb8vfM0Ft5qtG1XTroqtvOgYqsjHjSaCvFviP2W/wBdMp4uP0zJxV/DGXonH+tw8f8Apf8AP9PqYAg7S9J/h/my/wB8+q9P0+3sIVt7ONYol6KgCgfQMvhjEPp2SBSKyxLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirRAOx6YCFeS6//AM4y+UNWeaZYHt55iW5xuQFJNSUQ/CMxvDkPplKP83l/0kw4a5JDb/8AOOusaAtfLWv3NuRuFcVWvhQfs5aM+cc+CY/m+r1M/EmNhR/ncSOhj/NbQigY2eqxCgb9hiK9akr8X+xw/m+s8Zj/AMLPF/ueJfE74/6X8S/3KJ/5Xxd6Wxj8x6NdWnHYyKKr86z+gv8AwLtko5sUjXFUv5so/T/pJSl/sGQMD14ZS+mMv+PSjL/YJ9Zfnz5UulUvdNAW3Akjcf8ADorx/wDD5cMd8jE/Hw/+mvAzOOuRB+cf93GDILP8xfL14B6OoWx5CoBkC1/4Mrj4R9/9Uxn/ALkyYyxmPd/myjP/AHMkxi8y6ZNvFdwN8pEP8cRikekv9LJjRRC6patus0Zp/lD+uA45dx+SeEqy3EbfZZT8iMjRRSrgQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXkH52EReYPK0xO319k3oPtemO+Q6sovX8mxdirsVdirC/zZ86nyhoM19B8V5KRDbJ1LSv8KUH7XH7dP8nEUNz09TKPf3KP5R+Rv8J6OiXNX1K6Pr3ch3YyP8RUn/iv7H/DftZRDf1HnP8A2Mf4fx/OYc9+9nWXpdirsVfInnjzh5i8h+dLiS1v572G09KW6WQj0ykpT90Ia8U4+oioy/H+3hhmlylw7/wxj9H+f9X4/iZiR67/AOa+tradZ40mTdXUMPkRUYGC55Ail2NFAJJ9hirx3/nHWI6our+bJB8Wp30nA9+EZ238OTlf9jlY5+70/j/Yplzey5Yh2KuxVRnnS3jaeYhY0BZiegAFWJ/1RirxD8u1uvzC8waj58j/AHdvBG9lpvMVAIG85HdeR5Mv+Wyfs5VM3Khyh/spfzfx/RTI9B0/3Sffll+a815JfaJ5teG21bTpSrmoVXQ/YkTkf8145kR/eC4j+tH+az4eLl/pXomjeYdP1pGk02eO4RG4sY2BAPgaYJQMdiwIpM8ih2KuxV4X5/8Azy1u28xSeUPKmni5vYuILtU7kB2PFfsoqv8AabE5YQFy4pf0f+J/i4mdxiN7La2/5r3ERmvr3T9OUbktQ0HzHqrkI6mRPpx8f9b/AKShJlGZO3CD/S/6RkxTW/zM83aHtN5k0aUg/ZUF2J8HEUTcR/wOZPiTGxxCP9acYf7rPBs5c4w/00o/7rJF6VfaW/n/AMktN5wtY7W79F5QwYEIVUvHcxOCxRGHxcWb7H28wpCOQ8UOKFfTxemX9OP8PFCX/Hv5snGNSNix+P8Ac/j+kv8A+ccPMd5rvlCCbUCWkhkeFXbq6IfgY/6ob0/9hl5lxf75lI2nv5y68+heUdTv4f7xYCi+xkIhB/2PqcsFoCE/IrQF0Xyhp6bepcRC4cjuZv33/Cq/HK4Ct/P/AI6ikg/Pny5c28dt550Za6loriRxv8cG/qo3H4iE5M3+p6mC+CXF0l6Zf72X+9/0v81QaN/6Z6J5Q80WvmnSrfWrEkwXKclr1BBKup91cMuXyFJkKfI3nfz9dv521seW+TXl/wAbCJk60UpFMU/ymaHijfy/HkRIY9+71f534/2TO+FnX5CeVr3yh5+v9BuJzM0enpLLuSC7+g//AAStIy8v5ciMkpD1dWAka3Zh/wA5U6pNbeWobCFzGt9dxwyNWg4UZzy9uSo3+xyXFTKKtB+YPkf8rdJGlabPHNLCopDCeckslONXZfhDsw+Nm+yv+xXDDS8AudD+KUpcPF/mx/3H/SUmQxVz9P8Auv8ASfV/vWC/ktqmq+a/zJvtY1qNraeK05iDccVb0khRgftfun5fF+38eQ8Xi+n6Sw4r5Pp3JsXif5Yadb6r5v8ANxuUWWAzwxFWAKmnqVBr/lJlEoCWx3B/4pMhbH9S02x80fmRp1t5YhSK20X47ueFQq1B5LFVPhbf93/wX8mIgMPpjsZ/w+r6f4/q/o/7xHDwbBm3/OQ3nEaN5fk0m0Zv0nqlIIFj3YgkCb6Gj/d/6z5cdhZrb+d+P85nEdVqflB/zolv5aB46hbRiaNxtxuKmX7Q/Z5u0fL+X48xqNcX8X1f5v8AM/0n+ya7pkf5T+cJfM2jLJe0XUbVmtrpOhEsZ4tVe3JeLZlXxCx/F6myXezXFg7FXYq7FXYq7FXYq7FXYq7Bauwq/wD/1vU475Ec1XZJXYFdhV2KuxV2KuxV2Koe8s4byJra5QSRSAqysKgg9QwPbITgJCjurxPzH5A1D8tL1vM/kdDJYtT63p4qQV7yQj+Zf5f2P9T4MqhkOH0yueE/xfxYvx/P/wBP/OTGXDsfp/3KVfnL+bmjea/JMy6bMBdSSRK8DbSKa1Klf2uLL+zmVKG1jeP86LZw1vzD2/RtKhfSba0uo1kVYUBVwGFQB2bKDASG+7UUTqerWOh2pub6WO3toxuzEKoAy6EL2CYxJ5PGbz8zPMv5jXMmmeQIvqumqSkmpTAge/oe/wDLx5S/8YshPNHGeGI8XL/sIf1v+Pf5sJsuMQ2Hrl/sI/j8RZT5E/IrR/Lch1C/LanqrHk1zcfEa/8AFaNy4/63xP8A5WUHHLJvkPH/AEY/R/x//O/zYwaiDLeW/wDuXpoAUUHTMgCmTeFXYq7FXYq7FXYKtWD/AJu+RE86aBNp6gG6QepAfCRRVRXsJPs5Tkj/ABDnD8SV4n/zj/bab5r8ual5A1RAl2jtIpIHIVoqyDl8XqQyL8f+QypjPGJjiH1fwy/H8MmRFi+5n3/OPXmG8t1vfJOtPW+0aTggP7UP2UIP7QVv2v5Hjy4S4xxf6b+spNi/81hH56/mLonnLS77RSr2up6XOGiEwoZACYpOH8v83Fv5VwGIkBKJ46+r8cXq9SeEHcG6+r8fxPO/yo8xa1Zay9v5GK8ri2Rpo5iOAYAeowqeI4yP8DfyYfE8MbiWQfwxj9Sbr+m9k0GT8zPM1u0tpqVgiKzRs8QDUZT8S1Xktd/5cEtRKO3h/wCmP/Hoqchjtwx/H+c89/OP8ufM/lx7TzVq+pC6uRMsPqxLxaM0JjNVC8tlbKo5ZcVkQhf08Pq+n+f/AA/7phGRv+H8fzvS9Vtf+cd/0sY5/NOsXuqIoqsbMUXfejVeRv8AgeGGWTNkH1DHE/w44/8ASMP9PimspSPXhH82I4f+O/7F6Z5a8kaP5aj9PSLWK3FNyqjkf9Z/tN9ORhgjE3zl/Ol6pMBEJd5o/NPy95Zjdr+8j9SPrGpDOT/KEHfM0YTzPp/rfjibxiPXb+s8/H5767r9I/K+hzy8ukk2y0/n+H9nKJajFHa5ZD/NiGHHCP8AOn/VY954XzHeW/1n8wNUi0rThWtpaNWWUfyqAW5M32fibh/kYRlyT/u4+DH/AFTJ+OL/AHDOJkfpHB/Sl+P+JeF6pqeg3lz6FtbyWumxmoAo9zKRWnOZ/wB3Fy/bVV4J/JLlZhXUn+dkl/vMUeH/ADOP1/zsv8LCgP539aX/ABH0fj62S+Vvyb846/Yzy6TG9ppkx5LFPIVMgH2NqLz+E/AzKqNlI1AG0Qcn87JER/3XF/sYcTAZa2Fn+l+OBOvy/wDIPlm0klsfPNxPYX8Bq9vIeMbL+yUdPt5bCM8o9EgP50fonH+txsogy5Gv50X01Zv5c8maephaCytAoYVIWoI2J5fEeWTxabuF/wBL/jywx93+mYZrP/OSOixuLbQoZ9UuGNAsKELX/Xbr/sVbLp8GP65D/N9X/Hf9kzIjH6j/AKX1JOrfmb58LAcPL+nN0Jr6pH/J7l/yIyj82Dtijx/7Zk+n/Zen/SQy8P8AOYHJX0j/ADpfj/S8Mf8APddf84y2VnafXLC6lfXYmEyXMxBVnXcq6fZ4M37Tc3/y2zHMch9RrJ/Ox8Pon/pvVxf7D+hFjZJs+v8Ao/zv9/8A7Jm/5W/mEfMtu9hfoLfVrOizxbAEfszReMT5mCiLj6f6P8yX81skOo2/o/zZfzWS+ZvKOmeZoFtdXgW4iVuSq1djSldspnj4xzMf6pYEMI0j8nT5V1eDUfK1w1vZuxF3bOxZGSh4mPb4XVv+usETPH6f7yB/nfVH+koJG3P+sjvzY/Lt/M1rHf6URDrliwltpehJU8vSdv5W/wAr4eX+Qz4JAwPHH/Oj/Pj/AMV/0igHhNj/AKSR/wCVnnoebNMDXA4alan0buIihWRfhJ49lk+0n/A/s5kWJDiHI/jhbCOo6qv5meRofOOkyWZ+G6jHqW0g2KSL8SGvgzfC2UzH8Q+qH44WtI/yW8/TeYbCTSdZ+DWdPYxXCNsWAPFZaf5X2X/yv9bLrExxDlJsO4thet6+PyV1+6meKSXQ9UX1Yo4+iTA/Ggr8I5f8R45XhIHokeXqj/VWNHYsF88an511iY/mDZ2r6VaxxiISLT1DExoHkB+Jxv8A3nD4Ph/kwR1EBL0b36eKQ9Epf7n/AHajIL9P+ml/F/vUy1f8nG0vTbbz9Z6lNqtxDJHc3DV/vIgQx4GrSBo1+3yf7PL7HHI+JkhK58MOP0/u/wCHi/pfTOEv6kUEyB3fQksGmee9CCmktjfQgjxAI2P+S8bf8C+Ty472/wBLL/fIkOj5otdIvPJ97qHlq7X6wII2b0zuJ7Rt39Mf79g/vov+eiZTxcUfVtXpl/Ql/Dl/H8KQbG/+d/xbP/8AnHnz19XkbybdyeogBmsZuzxH4vT/ANaP4tv9ZP2cygeIb/XH0y/pR/nsj9zLrexvPJ3mKe6VCnly9KLsw4xTud5fT/3XFK59N2+yjcX+xlOOXD6N/wDa5fw/8K4v9x/pGMd/T/pf+J/nf1UD594+S/NNl5vX4bK+pZXvYAneC4P+rx4t/kf62MdpV/P9Uf6//Hv+KWJ6d/8AunrDosqlW3VhQ/I5YRbF43+TqXHlLXNS8k3isU5tdWr0PExsdwP2QV+H/ZcsrxzsUfqj6eH/AHybse55h/zlR5E1Cw1T/EySPLY3JVCKkiJgKcf5VVqck/2WPiG+E8vqj/N/6SSJnl/pXpn5Q/k55PtNJh1VRHqck6B2mmoyg0qVWM/CnFv5viyB00pfXZ/mxjxQj/sfVL/c/wBFjLGb33/H+ySL8mLSDWPzD13XLBUWxt1MEfpgBSWbiCAvw/EsDtkhERPCPTX8KSK25PU/PfkV9ZA1HSJTZazAP3U6/tD/AH1P/PE1P2vs48JgeKHM/VGX0T/4/wDzZIBINj/pJ4Lof5mXXkzzc76nF9UN3IE1CA/Z5k0W8g/yW+1/wWWYZRI2+k/6bFP+Z/UbIkS5cv8AcyfVUUqyqHQgqwBBHgemTay8Y8xj/A/5gWusgUsNaX0JqUAEpKoGP+y9Nv8AZyZTj2Jj3+qP4/H1RZxF7Pa8uYOxV2KuxV2KuxVYyK9OQBpkTEFV+SV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KrGUMKEVByuUBIUaP9b1KkWpeRNC1Ml7ywtpXPVmiUn/gqVyn8tDoOD/hZli/3HCwjAR5bf1fSx+5/IzypOSfqfpkggcHZQK/ygHjiMHDyM/8ATSl/ukcFdZf6aSWv/wA45+V+sazx0/llP8cnwzHKUg2xNd/zUG/5xw0ErxWe7Ud6SDf5/DvjeYfxn5S/4tn4ku//AHX/ABSiP+cbdKX+6v75PlIv/NGS8TUf6p/scn/VdHjZBykf9l/xS0/kBPB/vDrl/F41avhToU+zgGTUdZxn/m5f99nmxllyn+L/AKaf9VVWL8m9djLAeY72jUpuaj/gnbCcmXoYf50D/wAU18U++Pyl/wAUqD8otfZAsvmK8LDvsf15HxM3+1/6WUWUJzj/ADf9kvP5SeYAR6fmO6UDoDGp/jkvFzf7X/sv+JbvGl+Ix/4lFW35a+ZIQVHmS5IP/FMZIP8AsuXbD4mX/a/9L/0iwlOR6j/SR/46nGn+UNeg+K4164lO2wt7dRt/rRSN/wAPhM8l/wCRr+bwZf8AdRzx/wBy13L+h/pZf9VGUafbS28Ijnme4cdXcKpP0RJGn/C5K758Mf6vFw/7OU5f7Jmi8KHYq7FVkkSyji24yJFqvySuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvIP+ckrZl0ix1NFqbG+hlqOw3HX/X4ZTLYj/S/j/SsgXrNtcJcxJPHujqGHyIqMuY8lbFXYCrsKvINXh/xh+YUGnyDlYaDELhx2M709OvjxXg2VZN/T3+qX9WKTyp6/lqHYqovcxpIImZRI3RSdzTrQd8IB5ppq8u47SGS4lNEjUsx9gK4AgPjWVJPN87SNvd+ZtTUICNhbwnqT/LyeP/kVlM5bk93pj/WkzJ/4l9mwxLCixoKKgCgewFBlg2YMd/Mu9ksfLWp3MB4yx2kxU+B4NQ4SaTFIvyC0xbDyZpyIa84zIfmzM22RiFLIfOnnrS/Jtouoa1IYoGcICFLVYgmlF/1ctjHiPQf1jwqBbz6w/wCcmNJ1WVodH0/UL/iesEQO3jRmVschx4/qnAf6b/iVPCOvN6N5Z1i/1WE3F/ZNYAn92kjhpCCOsiJ8MTf5PNm/1crEoy+njr+dKPBxf1fVKf8ApoxWweV/50eH/fS/2XCwX/nIXzBcQ6TD5c00n69rMy2y06hCf3xH/Cx/7PCZcIvuUbbvMvzi88X/AJBis/y88r/6OiW8YeYbOxcsp4n9nky8nb/LwYZCA/nT/i/rMoyA5bySPyP+S8V752TR9Zma9+q2y3F6eRI9Q/Yty/2mC1j5/wCyyqUpz5+jj/03B/xTA2eb6z0zSrXS4FtLGJIYUFFVAAAB8snCAhy/H9ZAiI8kbliXYq7FXj35sJqHle/j1ryjYLPrOqEWskxBPEABk+H7PxcPtN/IuY4MMcuKXEb+mP8ABx/8V/x5RQ3Ny/opdY/kFqXmThd+fdUnu2IDG2ibjGp8K/Z+H7Pwr/s8lLLlyd2GP82P1fj+txpM5S/oD+bH8f8AFM+0X8nvKmjqq2umW9VNQ0iCRqj/AC5eTZT+Vj/EZz/rTlwy/rQjw4v9g18APPr/ADv+J+lhv50ea7nV5k/Lvy4A9/qC8blx9mGE/b50+yzL/wAJ/rLmUaxRvv8ATCP4/H+lbfpF9/0vSPJXlO28p6RbaLZ/3VsgWvdmPxPIf8p3LNkYRob/AOcxSr84NEk1rynqVhAvOV4GKKNyWX94lP8AK5JgyGhfctoX8j9fi1rylp7xtyeCFYJB3V4h6ZVvoXlltMpJN+d/nqSwtV8raQvrazq4MESCnwI/wPK/8vwn4OX/ABq2A1EWd/6P86SRsLP+ay38ufJqeUNAtdCR+ZgQ8n8XYl5CP8nm7cf8nK4A1v8A9I/0WsMF/K7/AJx6tfKGrXGvXswvLt3cwVWgQMSeW/KsvFuPLKhGUzc6HD/DH1cUv58v+J/2S7nmv1j8vfNGmebbvzN5YktyupRxxyi4qSnAKKp/MP3a/DlgyGB3j4n831cCeKunH8eFmmueRoPNujJpPmgLcPQM7R/CBIP24v5ftYJx4xf92f6J4uH/AIr+kpQXlP8AJnyv5XZZtPsk+sJuJZPjeviC+yt/qKuV/lwfqJyf1vp/0keGMv8AP4mHAOu/9b8cLHbz8rtdsPN1x5l8vXkMEGooqXQlQvInHj/vOtPTbl6Y/vG+D/KyYlKBrhE+L6ZXwxj/AFoxlGX9Xg+r+Lh+ts4j5H+txen/AEr1eRxGhYnZQT92ZCHzF5T1XWrjT9Wbyzbu95r+qTLHcD7MUYJ5yl/2fhk+DKfFGPzkK4Y/zpMjMD/evU9MtdC/Jfy4BcyAyH4nbrJPKeyj7Tfyr/KuTxYyblL/ADpfzf6P4+pYRvf/AE0ki/K7yVqPmPVD5/8ANy0uJAPqVuekUe5Riv7LfF8H7XL4/wCXKpS8Y92KH0/0pfj/AEyCeL3D6XteZCHj9syeS/zCkhJKWPmKLmOyi5jPxe1ZF/4d8rx9Y/50f876mURYr/OewZYxdirsVdirsVdirsVdirsVdgV2FX//1/U65Acyldk0OxV2KuxV2KuxV2KuxV2KtEA7YFeZefPyq8mzS/4k1uNLX0GEkkgbgrFTy/eKPhdmPw/zNmMNMSagTAS+qPp4f9l9P+agQvkw7X/+cj59au/0L+X1o19dNt6rAhB7hP5V/mbjmZOUMI9XqP8ADGP49Taajz9X9VGWP5C6n5mmj1Hz/qUl2wo31SP4Y1PXjyH8v2fhX/Z5jSyZMu22HH/Nj9X4/r8XD/NYSnKQr6B/Nj+P+Kez6ZpdrpdulnYxLDBGKKiAAAewGShjEBQ/6S/rfzkAUjMtV2KuxV2KuxV2KuxVSnnSBDLKwVBuSxoAPcnGrSAttbuK7T1bd1kQ91II+8YSKWqecH8mYbbzrF5z02X0FIf6xCAaOzKyclI2+Jm5OrftLzzFjGUDQrg/2Uf6P0/QxFhiX52eQvMEGtw+afJcbteXML2tx6ZAI5D00l6r8XFvtfsPFG+DxBhN7kT/AJsZS9X+bxfV/wAUkT4f7GbD8oNM1vS7WHzXEt9qUUSrLcHZy1Pi/eLxZgp+wzf62JxcXq/u5S+rh9Ef9JH0MSL35f1fT/uWF6n/AM4m6S96bvSLy4sI2FCiGu37QDt8VGwAZYfSQf631f7FRY5PUvInkjTvIuljS9OqIUJkd3O7MQOcjn5Ll2OJHM8ciyAee+ffz28tSy/oK0tG1+65/wBzEnJA6nb4iG5Ny/32j5blxwA/engH9E+v/Yyhw/6ZnKIH1Hh/qoJfzK/MvWqrpHl9LSMD7V0SD9HqNBX/AIBsqGqxD6RPJ/Vvh/2Mf+nqOOPQSP8AW+n/AHMP925Pyw8+ebGL+adXNpbv1t7U9v5dgsat/lfvcfzOSX0RGL+lL6/9jKUpf58/81fFl0qH+7/H+ejP+Vf/AJe/l231rV3SW5pUG5bm5PiI/HANLLJvMmf9b0w/48gYjPnv/WY15s/5yQuzDJF5YtFt7NBxFzP8Ip0Bhj/a/wAhcuj4cNo+v+r6YR/rSbBwjl6/9y8o0nS9X8+X3o6VFJqF9LT1b25rxjFdzGG+FFX+Zvj/AJEV8oy5f5x45fw44/R/x7/YR/n8bCU+/wBf9H+H8f7F9J/lh+ROj+SYRc3CLeamRV53WvE0+IQKfsD/ACvtt/wuUjFx75PV/tf8Ef638+X9b0/zf5zXV8/+O/j+kq6b+f8A5XniuDd3H1SW2dkaKUHkQp4ho1UfFy/l+0v7ebCOOxceHh98Y8P+yl/sOJu4L5H/AHv/ABX+x4niH5v63ffmrOmpeXdPm+p6akjGdlpzFQ1f8rjw+BV5/tZiZMmOEtjxE/Vwj8f7JrlKI5blMfyR8o6V+Y00935puZbzUYipELtRSlBRh/MFb4WVfs/DlmQTn1rGP4Y/j0Mp3Lrt/RfS2ieV9M0KIQ6ZbRwKooOCgGnu32m/2TZXDBGO/M/zpeqTWIgJtmQyYX+bvl691/y3eWWmSNHclQ6cDQtwPMxH/JkUccrnMwFjp9X9X+JIkQ8r8pxy6l5dsfN2grx1vR4/q9zEOs0cezxSD+ZkXmn+XkL8M8Q3xz/vP+LZcjff9T3Tyzr9vr+nQapaf3VwgYeIPRlPurfDl5DEik0xQ7FXjv5k6Xd+R9V/x5oa1gfimowDo6V/v1/ldf2m/wBn/PyogfDNf5Of+xn/AMe/H1Jia59f909X0zUodSto721YPDMgdT4hhUZkHZSKeRfm1pk3lLWbTz/paHhGwiv1T9qI7eo6jrx/m/1cx4kY5b/Tk/2M/wDjyxNfFl3nLQtO/Mry0wtXEiSp6tvIOzqPgP8AwXwsuHNDr1j/ALL+j/nJMaLBvL3556Cvlk2XmuQC9hV7Se3oWeTiOFQo/wB+L+03FeXLLhiGSN+mMZecYcP9WP8AxLMxvfYX+PpeZflx548yzRP5I8qxRLb3LzSQy3S0b0WrUUJaNvhH7Kv+1kPEiI1XjSHplwy9H+k9HD/pkcQrlx1+PpZz+Tujat5B8yDy95hvHMVxbk2qKx9FnJ5uoDfZdf2ePH/hsjjyymOE7cH8P8X+mQJGQ938LLvz40CaO1h836WANR0hvU/14j8M0b/zLx+Lj/Ly/myMhRs+q/TKP9FjE0f908V846RPod3ZeY9Bk9Kyuj9csiOiSmhmsyf2VanwL9j7SftNkYSOM1z4P538WL/jjLka7v8AcPpbyJ5qtfPfl+LUWRSlwhSaLqAw+CSM/wCf2cyJxEtkSigtY8q/pnR7zyleFmX0z9XlepJWtYaser28gWN/5k9Nv22yiRMhv/eQ9X9f+bL/ADvpn/S4v6KDv+Px/nf8eU/yZ80za3oi2+obajp7m1uFPXknwox/1k/a/ablmQCJCx1ZS7+9nXopz9XiOdKVoK0+eQ4RdsEq81+WbTzPps+kX68oLheJp1B6hh/lK3xZGcOId382S08bX/nFS3hP1e21a6jsGoZIQNmPj9rj/wAEr5GM80dhIV/O9UZR/wA3/j8VEpgVf4/q8T1jyN5B0vyXZfo/R4/TjY8nYmrO1AOTt9H+rhhDh5njP86X4+lQyXLleXfnT+Uuk+crT67cyrZ30KEJcMQBTc+nJXqv/DLmOcUieKH+dH+Gf/Ey/po4SeST/ln+aUWm6TDoupytqOpW9YlFojSDgoAj5uo48uP/AAmZBkALnWH+jI+v+twxbZAfxVD8fzWVfmh5Z/xj5XmQQsl4ifWLdWFHWRAWQezN9n/ZZj5P50f4fVy4eKP8Xpn+Ppa+XL8f6ZHflP5u/wAU+XbTUXJ9cL6c1eokT4H5e7fa/wBlmSykzHAxdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVU5iwRjHu4Bp8+2AlXzv5v/NZ9X0rU/KfmqEabqyIWhJr6cvE804M3Rm4/B+y+NxyC4dPqjL6v94zFS5f6WT1z8pNbXWfK+n3QbkfRVGr1qnwb/dhRIMwxYuxV2KvLPyZt2ur/Xdbl3kub4xivULEOAGVg2UlHed/K/nDWtRU6LqqadpojAICc3L1NTuF/Z/4t/2GE5pw2jGEv6WSv+Jn/uP85MZmPLh/zhx/7qKH0v8AKbU4ZBNqGv6hcMOqh+Cn6PiYf8Fg8TLLmccP6sI/9I/7FjxSPUf5seH/AIplWgeR9O0SU3UCvJckUM0rl3oevxP9nl/k4aJ3kZTP9L6f9LH0qbO5JLGf+cgdafTPKd0kBpNdFbdf+eh4N/wuSJplFhH5Q+Wo7nzV6gAMGhWUVtHTp60g5zE/5XxvlEY8v9Mg7PoDMhCQefdNOp6Df2S/amt5FH0g5CfJWJ/8496zHqHlCziWgltOUMi9wysTuO2xybKTA/8AnKLzLBq0Vr5M08fWNSmmVyqmvACoHMDu3LBMcMeI7LVBFf8AOJNrPY6fqlhPQi3uglR0qAQ9PuXIDfpW3+ch77liHjOutHe/mrp9tdiqW1k8kII25mteP+UtOWQq/gkJ/wDm3+TNj+YEKSM/1e/h/u5lFdq14OP2lyqUSDxR5/7pgR1CL/Kz8rIPI1vKWla6v7kgzTv1NPsr/qrkoiRPFLeR/mpsnmzzLkuxV2KuxVqgOCrVvCqGvI5ZIXS2cRyspCuV5AHsxSq8qfy8lwHZIYv5E/Ley8p+tdB2utSu2LXF1JTm5JrSn2Y4/wCVFyoQJPFLef8AsYf0Ysd+Z3ZjlyWmAYUPQ4CFfPEt9d/lF5mvLdgV0TWmLwSn7EU7V+3/AJPI/wDA/wCrkMMv4P4h/d/0v6LKG+3+lZv+Vn5Vvos0nmLX7gajrdzv69eSoh+ysPL7PIftL+z8K5A8WQ8U/TX04/5n+l/H+cwJJNnb+i9Ry9LsVdirsVdirsVee/nt5n/w75UvJ0bhNKnpRkGhq/w1H+qMQyi8q8u/nJbeUtF0/wAseU4f0pqbR1kVQaLI45ncfa+I/FkQBiHFk6+r0/UyIEd5f7FmPkb8qNS1e9XzP5+k+s3o+KG1O8cXcfD9nkvhlMpHNz9GIfTH+d/Xa5S4vIfzXsoAGwy8BW8KvNPz88uPqXl57+0Um+05luYGX7QKGpp/scql6SJcuFQa3ZV5B8zR+ZtEtNWjNTPGC3+sBxcf8FlxDKQpkOBi7ArsKuxV2KuxV2BXYVdirsVf/9D1MpqSMrB3Ur8mrsCuySuxV2KuxV2KuxV2KuxVjnnryPY+c9NbSNT5egzK3wGhBU1U5XOJI2PCgju2QPkD8rNF8ixOmjxFXlpzdzyYgdBy/lyuGOt5HjP85AFMxzIZOxV2KuxV2KuxVCSajbxzLavIizOCVQkciB1Kr1OHgJF/7JkImrReBi7FXnX/ADkCJD5L1ERVr6YO1RsGDHpkTKvJMWP/APOMXlCXRvLw1J7lpl1ACQRVqsfEsvw/5Tft4BKcvq5fw/zlJPX/ADU41nz7NP550/yxpjFo4Y5ZbwDoAUIhVz/rfF/rccnI8I/rsuQ9703Fg7FXYFeF/mF+Yll530/WfLOnXL2F5p4LM7mgdIz++A4/Fx/ZxNxAMPUf4o/9JNgBG8Us/wCcen8t+T/K41vVJoYLi6lk/fS8Q5VTxVY/92cPh5ZGGA5Dxc6/i/hj/pvTxf0kDGZG/wDZfTH/AE0mS33/ADkto8kr2ugWd5qs6dPQiPA/7P4pAv8Alellkzjx/XOMf9l/xMJf5skERHMj8fj+HiY15q/NvzyLM3MtlDoVm54ie4JZxX9lU+Jmen/FS5COohL6IzmR/O9Mf63qjD/dSZRlE/SCf634j/vnikQ1u5v59etIZNZQKS1xNEWUHvIgbl9n9jK8maJNZKJ/mxlKMY/6X+H/AEjCUxylv/puB7l+WX5N6N5ptIvMGtXZ1SRwCYgeMcZ7xmNfs8f5fhyMsczzrHj/AIY4/wCKP9dZAnn/ALH6XqeteZvLn5fWP+kvDZwqPgjQAM1B0SNfic5di04H0iv50pf76SYY+7Z4fcf85BeYPOGpJougtb6PDcMRFcXNSzjoApYPGrN/q/7PLfEiNoR8aY/pR4f63D6f9/8A1WXEP4Rxkfzj/vP+k/6qbX//ADit69rJfT6hJda6zCT1JAPTLA8irK3Jjy+zyZv9hmB+85+j/hcf+L9H+4i0kk7n/S/ws8/LLz0L4P5Z1yBLHV7YcWgA4pItKepD+yysP2VzJhCEo3AV/Oj/ABRbKBFx2/o/zXnsPk7/AAX5slsrUi3a6JudOlOyl/8AdllJ4pIvw8f9XKYWPPg/h/nYv+KWPL3f7KL3ny7rS6xaLc8THJ9mRD1Rx9uM/wCqcyAQdwgsP/MXyp5nv7mLVPK2pG1lhWht5P7p961YUccm+z8S/wDA5CWWcOQjkj/NqPH/AJs5f8XBRMx/my/rf8V/0j/WT/yTrWp6pY11u0ayvojwkXYoxH+7IWUtyRv+FyQnGe8eL+rKJjKH9H1D1KSDyv8Azvx6nnYYfl552dWXjpGvUNeipMOv/Bcv+JZDGOcP9L/VZRF7Mn0Key8oatPpJuI1srxjNCjOKxyE/vouvwq32kX/AFsnjhIDh32+mX9H+b/mpECR7v8Acsa/P/Wta0ObTb/TrmSCw9YLcBKU3I4lz4dsRlMTW2/9HiWE6+Pk9igmSdFljIZGAYEdCDuDkqa1l5ZxXsL21woeKRSrKdwQRQg5CURIUVeW/l/PL5J1ufyZeE/UZiZtPdtxQ/bt+Xiv7K/81Y45cQo/XD/ZQ/nM7secf9y9R1Cwhv7d7W4UPFKpVgehBFMZxEhRa3kP5MyNoV/qvkO7YgQSNLbnoTE/UIf8n/mrBA3H+r6WzmL7mLeafy00j8uNfstbe2F3o9w3o3AnAkKOx+Gb4hx/yv8AY/5WUcHEeGZkb9UZXKPq/m+hgBxbHe2ZfnRoNr+jrfX9IlgttR0siS3PNUDIN/RG6qVYfYXLo4TjPFCJ4R9UYj+H+czjAjcA/wClYJ+YX5v6X520e1j0eGaXX42SWMRKSYnU/H8fdW/ycnkEYeviAr/Zf0JJNR3v/NZV+XOm6l+ZFsNV803heKMmM2UQ4KrDZvrI+0W/a45Gc5ZNhWPFL+b6py/zv4WMpE/0Yn+b/Ew6z8vy27al+V+otQLW60t22NQS4RD/AJX/ADV/NlZJlH+lj+r+nFINj+oh/wAg/N02ga8NHmqllqJZTG3+67hPhf5c2H/Df5OXQlYr/OjJPMf7KL6oyTW8l1mM+SfOUWrp8Gl6zSG4/lWYf3Mh8OX83/NWVY9iY9/qj/voso77PWga7jLWKlLPHEKyMFHuaYQCUgMe1z8yPL2iKTqF/BEf5S4LfQg+I5YMMufL+lL0R/00mwYj7v63pYPf/wDOT/lK2L+ibq5VOrRQnj/wUpixMIjnKAP831S/3EZR/wBkjgHfH+r6v+J4f9kky/8AOQ2oeaqWnkrSppZ2NDLOPgT3PA8f+Cf/AGDZVPLjx8yZ/wBGPp/4qX+5/rKTCPfP+j9H++l/vU80n8mLjWHXUfPV4+oXPX0FJWBfYIOuUGWTJz/dQ/mx+v8AzpsDIn+iP5sXpOj+X7DRo/Q06COCMdkUD7/HGGGMOX+m/iYiICYkA7Hpl6WJ+Uvy6sPKt5eXmmvKq3zeo8LMDGrVJLRrSq8uX82VQiY7X6f4Y19P+d/0igWy3LUuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVwwBXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVYP+Zn5U6X59s/QvV9O5T+6nUDkp/42T/JbMbJj/ij6Zf7GX9b/imJHV4h+Uf5sn8uLm48neZUYWtvMwWYKfgJP7a/yN9r/IzJxETHdL/Y/wBVtFS8i+mNJ1qz1iBbrTpknhboyMCPwyUoGOx2QQQj8ixdirzfyj+Wl5oevXd7Jc+ppcshnhtx+zI323fb9n9j4sojKQ9PKI/i/nf0f5yeI8uj0jL0OxV2KvIfz2jkvb3QdOKlrea+Ben+SKgZXM9O9IL0jRfLNhozzy2EQie6f1JSK/E1KV3yMIcPf/nfwopNsuVxAOxxV4jqn5X+a/L2qXt15HuYIbPUm5SRyjeNj1eP72bKIZJY9uHxP5u/+6QJkdLTf8uPyLt/LzTanrExvtYuQwec/s8gQ3pV6Nv9rIGMsh4p7fzYx/gXeRs82YeQvIOn+SrJtP0zmUdzIzOasS3i2WY4kfUeM/zq4VA+LJ8uSg5NNtnuEu3iQ3EYKrIVHIA9QrdaZWcYvi6/zkV1RmWJdirsVdirsVdirsVdirsVdirsVSjzR5msvLWny6rqTFLaEAsQCTuadBiBaQLSiaPQfzM0UoCt3YTinIdVb2/kdchmw/D+bKKzh0LzSxufN/5TsbJ7aXW/LwJETRfFNEv8rL14r/lfB/lpkI6qIFZv3f8Atv8ABL8f05Rl/XXxAfq2/pMg0/8A5yZ8o3DmK8knsZRsVuIWBB/55ermXGAlvGUJ/wBUy/30Yx/2TIRBFgg/6b/ieH/ZJyv55+UZiEtb4XEjfZSJHZj8l4YyxcO8jCP9Ljj/ALwyXhrnQ+P/ABLObW4FxEsqgqGANGFDv4jKQQeTAhXwq4mm5xV5753/ADo0PysTah/rmoE8Vt4Pibl2WQryEf8Aq/b/AMjJmAiLmeAfV6vq/wBL/vpcMP6bPhreXp/3X4/rcLwXz1deaPzN1+w0HVYjYW9yQ6QVPwoOszhvi58f5lX/AFMx5ZxKPo/zeL+P/O9PFFTLbb8f576J8hflXonkiHhpkI9Yj45W3c/T+z8lyuOGjcvXL/c/1YtQizPMlk7FXYqpXEC3EbwyCquCp+RFDkSLCvG/+cb9UEMeqeXK1Gn3b8KfyOTRf9jTGPJmRs9pyTB2KuxV2KuxV2BXYVdirsCuwq//0fU475Ec1XZJXYq7FXYq7FXYq7FXYq7FXYq7FXYqtVg246YpK7FDsVdirsVY750886Z5OsxqGsSGKAsFBCltz7LhAvuH9ZkI282/ObyK/mS0g88eV5mXUrOMSxshNJIx8dKfssq/8bI+USlLFLiG8fplH/ff8UizEvNPOH56+YNb0GDVtHuvqrwVgvYUUcgxFFn5/aVJP2OPHg2XnJwnYDhn/F9fq/m/8S23w8q3/wBgl/5W+bvN2gaefNFjK2p6aJCt1bsWZkPX1Pi/yfi5L/s8E9UbrJ9J+mf4+licpP1bj+d/NfSvlrzZo35j6PIbVhJBMhjmib7S8hQo4xy4tvI/TJjKHxt43pV95y/K03PlfTdNfUbeSRms5QSQob/VH7P8vw5RDUwiKyX4g/h/nsRkA2lz/wB29F/Jb8ubzy/Hca35gb1Nb1Fucx68B2jBxiTM8R2/mxW73eoZersVdgV8Qfm/Zz3WtX+t+X7K5t7aFmW6levFiTwJpTiqN/LlMckImhLjv+H+YniAOxtlX/OMP5daH5ot59T1v/SZbOQKkMh+BQRy5FO4/wAn7GHJCWTayIfzY+n/AGf/ABHDP+ksgS98fz15L8qRG2S8sbRF2McTJUH/AIxwcmr/ALHL8eiMOUeAn+LJ6ZS/z8p4p/6ZkMJG1cP9aof7r6nkf5y+ePKfnYWosrqe5ltn5CKGFmR9xyDq/Bvs/wAuQzRMR9WOA/ijKX+5nH0ol6Rzj/VZtpH546DZ26WsWnX1vAoCgC1IUDp0XKoeCBQlD5xWoAbFgPnP8ztG8sTLr/kr1IrqR6XFs8bJHID+2yN9l/8AKXLcYGPYShkxH/JxlGXD/V/msoVHrE/0b/HCmvkny15X/M9P8Z67Iwu+ZM0BmHpKVpQcWHII38vPK545zPOXhn6Y16v82X/HWUoGXLir+F6v5o/LnQvN2mx2U8SekigwSRUVo/5WhdO3+T9lsrOn4Pp/dzj/ABf8VH+L/dNJjXlTFPKfm6/8k3kflXzcxeFzxsr41pIO0U7H7Mq5k45+Lsdso+qP8/8ApRZj1/1v90yvz3+X9t5niW4hb6vqcHxW9wmzKfAkfaRv5cqlExPFHaf+xn/Rkw5GwwfUpJPOVpJ5X1sC08z2IEtvINg5X7EsL9+XH41wn1jjhtKH1R/3v9X+azu/UOn1R/H8LMvyx80rrVq8F0no6tbER3cZFDzUUElO6yL8XLJxAI4o8j/sZIPezfJMXHFXz7+Y35decvPU9zPfSJaWNmDJaxIeXNlBoaj4lZl/azHnmP8ADGuD+KXDx/5nCvidwqv5yafkV5D8vX+mRaxPEbnVFYrM07FmSRTvQN9nJSgZ+qRMwfpjfoTON7nd6p5v8v2/mDS7jTbuP1Y5Y2HHpvT4KHs3LDkhxBjTwjyLr35g6ObTRrrTbltMtJQGkVaSGOtApMoZXRf8ni3D9vEaqBFeri/ilwyl/seH0/1uNl4o68W/8XDKf+9/2XE+kFNRXLUMR/Mnyo+v6YTZnhqNqRNbP3Ei/EBXwb7OUz29Q/h/2Uf5qg1u3+XHnRPNOmrLJ8F7B+7uYzsVkXZqjwb7WXWCLHIspDr3sU/OKxfQbyx88WQPOykEdyF6tC/wmvjxykHhlfSfpl/WRE7sl88+WofzE8utZW1wY4rlVkSRQGBp8S1/ya/y5LLEjlV/0lIIeM/lH+Sfl/zFp93BrCzNqlpM0MtZTQEfYZUHHanxfFyyEuPIOLimP6Pp4P8AZRnL/SyiiQJ3uW/9X/iV35f6hD+XXm6TSLuJYba64xNUCiSDaOVG/wB9zr/w3LBiiJc+f8PF9X9KLOIt6PrFqfI3mBdct/h0jU2CXaj7KSnaO49g32XyWM8J4ekvp/oy/moj3f6X+shfz88py3enxeZ9IPHU9LImRl6sg+J19/5sB9EuL/NkgGi8SuPS8z3smoaYAl1cwC+ipsVuIf7+Mcf5qZE+jcdJcX+ZJmduXT/cPpz8sfOS+btBttUNBMy8ZVHaRdnH8cyixkjvOnlWDzRpc2l3G3qCqN3Vxuki+6tlGSNjbmPVFi8rsbnzZ5ktP8OWmoJp2q6aTHc1UlpE6RTRn+VlyXjSrijGM79MuI/RNsM63AG/+xkp2f8AzjqSr3XmrWbm4XdnCyFE9yST/wAa4PEzz2sY/wCr65f71iJzJ51/VYeNN0W8vm0b8uNJi1C5i2lvbqrxL2qvM+m3+tx/4LK8sI4/rM8+Q/5OMuD/AHPB/spf57GURHneSf8ANv8A3f0su8t/843SXk6XvnO8N5wNUtYRwhX24gIOP+TGif67ZCpy2AGCMvqjjrxZf15/77jyy/psbJ22gP5sfx/xX9Z7XpekWmlQLa2MSQwoKBUUAD6Bl0MUYcv+Pf6ZIFI3LkuxVDXl/b2UZmupFijUVLMQAB9OSjEy5bpESUBonmfT9c5tpswnSM0LICVr/kyU9N/9gzZEjh2uP9WMoylH+tGPqh/nKRXd/mmMv9N/NTjFDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdXFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYFdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV4T+bWi2/lfzHbebJohLpl9S1v0IBX4hxSVv8AiXL/ACcxuASPDL+P1R/ozUC9j1Yx5i/IbzHoF+upfl/dsLWZuSp6hX0wfiH+S8eTjnyYfSeKcf6P8X9eMlE5Q25/j+JlWj+dvzD8rwj/ABLpn1+3WvKWAgyADuVX4WyY1UJfWJYf6Vej/fJGSMuYMGW+Xvz38s6y3oSzmzuO8dyChr/rN8JzJjj494EZP6v1f6VnwX9JE/x/NZ/b3cVyokhdXQ9CpBH4ZUQRzYEEK+BDsVdiqjLbRTFWkVWKGqkgEg+K16HISgDzQrZNLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqX67odprlnJp2oRiW2mHF0PQjK5x4hSKt4PDpmvfkhdSyafC2peVpm5sq7yQkn4jt7f7FsjjzCPoybfzcn8P+d/xLKMgNpf6Z655S/MzQfNaKdMu43lIqYmYLIPENG3xbZlnEQLHqj/ADo+qLM4zzHqH86P49Ke3mjWd9tdwRy/66Bv+JDMCWlxk2Ywv+dwx4miUBLmAsg0bTrAc4YIYuPcKq0+nDDSwB9MY/JMMYG0R/pUj1781fLehA/Xb6IMv7KtyPy+Dlvmd4Muvp/ren/jzcMZ939ZhGp/85IWcv7ny5Y3OozHwQqg+Zozf8CuQnPHj+uUf81iTCPMoE+WvP8A5+qNanTR9LlpWGMn1Sv+Vx+Ll/rSxf6mU/mTL+6jwf7ZL8cX+ljD/hq+Kf4Rwf0v4v8Aiv8Acf1mX+W/y/8AK35bwLctxSRmEf1m5YFyzdFDt8Kcv5VC/wCVkIac5Dcv3svq9X0/5sP539bjn/SRGBke8/j6Y/iTGfy5VfNPnvWPM1edtZhbO3YbrUf3nH6Arf7LJyHqruWXd3PassQ7FXYq7FULqGo2+nW73l46xQRKWd2NAAO5OIFpAt8+/wDOMMranrvmDWoFpZzyqEPavJ3/AOInK+RruUl9GZYh2KuxV2KuxV2KuxV2KuxV2Kv/0vUy9T/n2yoHcpX5Yh2FXYq1v2xVvFXYq7FXYqg7vVLWyZEupo4nlPFA7BSx/lQMfiP+rhEDLlf+ayESeW6MwMXYql+uWMl/Yz2kEhhkljZVdeqkigYZE2BsoLxL/nGnWdQtb3VvK2tSySXVpIGX1GJPGpRuPL4vtLyyQyHILLMy4hb33Fg7FUq8x+ZLHy5ZSalqkgito+rHxPQAd2b+XJRjbKMbYh5T/Pjyr5mm+rWl16cxNAkw4Fj/AJHLZss8E9Kl/VZ+H3bq+v3mgefl1DyaZVkuoko6kfYb9lh4lG+1xzFy4rje39H8f0mBhtbAvyT83S+XbmX8uPM49O6gJ+rO/wBmSM/sKT/k/Y/yMnjPixv+KPplFP1C+55DN+XVxLc69NoLNJHY3LxzwruXhY8uSBh8TxtX4f8AJzGMzAer6T9X9CX8MmN1+P8AZvW/+cV/Jl7pFjeXd0Q1jeFTCAQQwA+JyP2W/ZZWycZcXpIUm0580fk/qGj6lJ5l8hzLaXTCstsf7uU15EU+yvLBAyw8v3mL+b/FD+oxjIw84/zf+Jek+U73U73T0m1y3W1vTUPGjcht3Df5Xhl3EJbgSH9b0yTYPK/85O8krsVdirsVSzWtDttXsZ9NuFBhuEZGFB+0Ovzyk4xVDa/90inxP5V8hXVp51byPeXMttBLKyP6bEB1UF02qqtyUfabnk4ZJ8Pp9EmcZEDbZ9VaV+Tnkzy6gIsbeo/3ZcUkNf8AWn5cf9jlEdLxc+PIffL/AHOLgh/posI4TL+dP/TS/wBj9P8AsXlOsfmknk/zukEdxbyeX5uKtHGFZYRuKpwGzcvi+H9jL8eAQ9JjGH82XDGMv8+f/FN3BXpoR+HA9Zj/ADp8mSbDUYKDxBH61y38p5R/2LDw/c8E/Ovz/wD4s12Hy9pcsC6S7RqZ0CmpenORnI5KI6/Zys4xj2EQMn+b/msowrYAb/1Ut1f8lNN8ua9ZWF3qBfR9QHH6xGBUSV2jcAsqq23xf6uVx8TeP93L/O4Zf7hiBIbcn1l5W0FNB06HS4XMkVugRCwAPEdK8fhP+tTJw4h9VH+qDD/dSn/umHP8ftk7zT5Xs/M1jJp2oIGjcbHurfsuh7MuQnDi/rD6ZJLzzy75o1PyNqMflnzQ/rWEoC2d6aip7Qzns37PLLMeTxPTL+9H+z/pRZj1f1/90zTzl5It/MsUcqsYL6Ah4LhPtIw6f6yN+0uVyiQeKO0x/pZf0ZMOTxzydf6jq/5iXD300MN5YKsDxIxUTgVWSRf5mWgbi2SBPOIq/wC8jf8Asv6TO9tv86NvovLGDxbSvzH1HRPPd35f8zTf6Jd8fqJIAUVPwJ8I+1IPh5N+2uMZ8e2w4Px9X1NgIkK5EPacWt5FFbjyH5zZyeGl659n+VZx2Phy/wCacqx7enp9UWcdxT13LWDsVdirsVeN+cUfyD5qt/M1uKabqjLb3a9Arn7Ev8v+y/1sqxnhPCeU/VH+jNnDfbver6np1vq9nJZ3IDwToVYHoQRkpx4hTCnmP5D3UmlnUvKFy3KTS5yI+v8AduSyca/s8uWMJWN/4fSzO4SnzprVr+XnnSDWzMsWn6ohjvEBBIdfsSmNf3n+y/1sOKBBr+Gf0y/h4/630soxNb8j9Mv4eL+swj88/OvlzzukbeXfXuNVgICvDCSrr9rizf3nw/aT4MhliMR4jKH9KPF/pZfzP9kxNR5mKd+W9S8/ee9Dj0sWsVtZ+l6Mk9yCWcr8PJUPxBv8rIz1EJj0x8b+lfDGMv6zE5AeQv8ApX6U4/LX8uJLuW4t/M1/c3d3Zv6fprMwiaMj4HCofiVl+H/W5JkzkyZBueAfTKNR4uL+vwpkZHns8b1i0f8ALrzxHZVK2lvdCSMEVpHIaH5r6ZyGM8Qo9PSyiejMvMeoal+UvmaFLa5ki8tahMLkhVDCh+3Hv8Xw1+NVb7HF8nhmR6Dw+n+KX81Yy6bf5w4n03peq22q2yXtk6y28oDIy7gg5aRTAimH+fPI1xe3EOv6C4g1i16E7LMneCb2/lb9nMc3jPFHe/7yP87+r/SQDw/77+kwHzvD5t/MqeLy9HayaXp6gNdu/wC0a0KI6/bXj8SL/wAHhlqRyx8Up/6Xg/rcSeMDlzP+xeu+UPJ9h5U0+PTNNQJFGACaDkx7u57s2OPGI+cv4pMQKT3LkuxVh/mr809C8tt6F3cCS66CCH45CfDgnT/ZZZwUOKVQh/OkzED12/rMXXzb5y82kLodiNKszT/SLvdyP8iFco/MQ/gBzf0pejEjjiOQ4/63pim2l/lDatMt75iuJdXulNR65/dA/wCRbr+7/wCC5ZE8c9pSqP8AqeP0w/zpfXJiZSlzP+bH0x/48zyCBLdBFEoRBsABQD5AZKMBEUNv6qhWyauxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwWrsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpX5i8vWfmGxl0zUYxJbzCjA/gR/lL1yucOIIIt5Z5A8x3HkTU28jeZZawddPuX2Dp/vl3b9pfs/8L/LlmKRy7H+9h9Uf5/8ATi2A8W38Q/2T2bYjAQwSHXvIuia6jJqNnDNy6kqA3/Brxb/hsxjp49PR/V9P/Hf9ix4QwG6/INdPYz+U9SutLmBqE5F4/lwqpp/rc/8AVy0Tyw5S8Qfzcn/FcM4/9Kv85mJyjyNj+bL8cP8AsJKKXv5o+X2Czw2eswA/aQiNyB/yIUN/sXw/mR/HCUP6WM8XF/sss/8ApVBRkB5x/wA6J/4qX+5xRRVv+f1pZkxeY9PvNMkU0JdCyfP1Ph2/1eWWwnjntGcb/my9M/8ASeqf+mjFI4ZbA8/53p/49/sWYaR+Zvl3V9rO/hYgAkFuOx6fb45YcUgngLJILiOdecTB1PdTUfhlZBHPZiQQq4EOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KtMwUVPQYCaVplDCh3BwECXNXnnm78ifK3mZmnmtfq9y3+7rc+m1fGi/AT/rJmOMJxm8cjjP9H1Q/0v1f6SUWAjXL0/1fx/uWNv8A84/6pAClj5l1JIqUCO5NB2FUdPs/6uXeLm6yhM/1JQ/38mfiZO8H/Nl/xa1P+cbIrg89U1e+uWP2viAB+/m3/DY+LnlsZRH9US/38pR/2CmczzP4/wA6UmS6H+QflPSN1tPXeoPKZi5qO/xZT4Jl9cpT/wBj/uWBjfOyzqw0q106P0rOKOFPBFCj8MsjijHkP+K/031MgKRmXJec/nh+Wknn/QjYWsgjuoX9aLl9liAR6b+HKv2v2WyqZlHeO9fVH+d/x7+apJHJf+R/5f3Hkfy7Hpl8UN40jyylDUVY/CK0WvFAuRgTLcjhvpL6v9ir0PL1dirsVSzXdesdBtWv9UnS3t06u5oP6s3+SvxNhjEyND8f1pfTH/OZRiTyeEef9S1f852i0bygkkOhoxM97KCkcntGPtSov8v7Tfb45XkzDGeGH7zIfq4foh/QlP8AH9HjQZcO0fUf4v5v+m/H++eu/lp+X1n5E0iPSLI86EvJIQAXc9Wan+T8K/5OQhEjc/Ufx6WIFMty5LsVdirsVdirsVdirsVdirsVf//T9TjvkBzSuyaHYq7FXYq7FXYq7FXYq8q/5yEhMOj22rGNZYrG7jkmVk5D0mrFJt/s8omASL6+ni+mUf8AP+qKQB1VNQ0LX7KyTU/Il6J7eRVkW1uiZUZSKr9XnctJEOP2E5cP9XLPElj+oeP/ALHLD/OjweL/AJ/r/rMuIjn6/wCt9f8ApvTxf5/Ek/kn/nIiK9v10LzVaPpeosQq8gQhJ+z9vdOX7DcmVsuiYZBcD/my+r8f0UgCX0/6V7TkGt4X+Y0A8iedrHzqCRp99/ot3QdCRRHPtsjf7CTKYbS4f5/qj+Px9bOHd3vcUcOoZdwdwcuYL8VfP/8Azku8msanoflRWKQ3twDJT3YRj/gV55XKVAgMuQTf8xP+cbNH1myD6FGLPUYFAjZdlYr/AL89/wDKzH4JY947/wA6P/EfzWsDh5PJDqMn5VfmHFJeT+srRQreOP8Ai1V9Rz/qv+8/1MyMRJ+ra26O/Pa30B+Yn5VaR+Y1tFd+oYbtVDW91EakA/Glf50/a+0rfyvlc8coy4oHgn/sZf8AE/1v9jJrNg7bFf8AlL+VMXkCzmge4a9urp/UmmZePI04heNW2/1nbJQEpbz4d/4Y+qP+mlGHF/pYrZPNl2j6DaaKkkVigiikkMhVfshm+3xX9nk3xUX9rJQhw7dP4f6KAEzyxLsVdirsVdirsVdir5l/5yk8q3ej6jaeeNKZo5FIikZeqsK+nJ/sl+H/AK6ymMuCX+yj/W/iWJosg8q/849WPmGzg1nzNqNzqVzcxrLyEhCAOA4Clg0jf63Jf9XGcs09jLw/6MYx/wCkP9LH/OWRkdiSP6v4lH/ScKN8z/k15BsdKnsSbe0umQhJZZgXVx8S/bZm48vtqv7ORGknXF65f1vTCf8AuYJ8GXPf1fTxemEv96x/8j7/AMo6vZNo+tW1kup2R9IuwWkygnjKj/ZY7fH/AMH+1k/yoyCwDf8AFG/4knCDvX9Z6w/5T+UryIL+j7d4x0Kj+KnKzpQP50fjLia/DAPd82Hed/8AnHHQbvT55NGjktr2NGeEI5KlwKqCj8/tfZwETiL4pzr1cMvX/pfpSLHIn+r/AAsu/JzzWfMvly2uZmBuoh6M46EOnwnkOxZaN/ssyib372yW+/ezC9tzcQSQqxRnUqHXqpIpyX/KX7WA30YB4H5OmuTfXX5befAbgTFpLW4ck8q/EBG5/a/aT+T4kyq/HG+2WH+mj+P9nBmT4m/8QS1Pz1v/AMttSm8p6tC1/bWMgRZ60k9IgFOQ+y3FSPizIhOMh69p/TxR+iU0gg/Vz/oph+Rxs/N3mjX9dWPnbNPFJA7AhgeUjCh+0rcftf5PwPlEo+r3fxR/H8TGX3PobLWKXajoVjqTRyXkEczRMGQuoYqR0KFvsnKZYoyNnn/O/iYmIKJvJJY4We2QSSAfCpbiCf8AWo1MtOzJ5F+cdvr+r6TJbzQWcCxuJo5Gno6lKkOlfhLcfhysm9xGe38XpkyjZ5CXziwHR/8AnLO/traKC7sEuJUAVnWQjkR8NaBG4n9rMjjh14h/pf8AimRr3J3Yf85V3N3+7i0SWa4NaLHITUDv/dVyJyYYizKUfhDh/wBP4kUHgrc/7n/dcST+Vvz09bXm1jzlLPaiFDHBaQxn015Hd5qvyeT9n4lb/Y/DkoTGT6ZQhi98pzn/AF+GEo/6Xh/4qUTxigRGP+dLi/rcMfx/RZ7P/wA5N6Ex46fa3l12qkWxPtuxOCRxx+qUR/V/49wMSIg1KQH4/wA1i3nP809T896fPodh5fuXWVdnkBBVhuki7L8StmPkzYQPqJ/myj/O/wBkvFAd9/w/zXqv5PjWo/L1vb+Y4jFeQj0/iNWZFA4M/wDlU+H/AGOSjkE99x/W/wB0xMr35PNP+ciNG1by/cr5v8uzvaGdBbXjp1Ar+7lOzMNvh5J8SfD/ADZGMzil09f876eL8er/AEyYyr4/znaH/wA4y6TfaRJe3l3JqWpXkPOO4LEIGYc0dRXk/L4ebSs3w/sLleTxZnikeX+Tj6v82Up/7HhhDg/psTxE+r8fj/N/qsf/AC+/5yBtPKyweX9b0/0jaE281ytBQoStSnDkzbfH8WW48WKW44Yzn6vpZgQPlf8ApV/mz8wPMuh2TarBqttf6bfxkrECElRZPs8EU8kdVbLYzmNpQjAD6cmP/d/w8Tbv/NHp/ij/ALphPkH839a0Gdm0aFtRhihaqup5qrMHPqOnLnxkPwN/ltkTkjA3Pe/4v5381gZgfVv/ALFl/wDzkNpq+atA03z9YqPijWO4Vanjy3Ff+McnON+X+TlUvTL+v+I/6aP+5a+RRH11PzK/LJ1oJNV0TjUVqxVB9v8Am4ywcv8AWli/yclk6S/zZfj/AEs2U+/8fj+JMfy/8xzeRrKx1i0Z5vKOo0EitUtaTE8JN/8AfXqjj/zf9swnR4J7/wCp5P539GX4/q/xpB/hP+bL/in0RBMk6LLGQyMAwI3BB3GWMFXFDsVea+dPzw0jy/cHS7FH1PVjVRbWw5EN/JI68uLf5Kq7/wAyrk5AYxxTIgP9l+P63D/R4mZiBvLb/dfj8epIofLXnjz4OXmG4Gj6ZJT/AEa3/vWHhJJ8XH/ZM3+ouUfmJS/u48A/1TJ9X+bD6v8Apl/nMfE/mjh/pS+v8f6T+qzfyl+Vmg+V/wB5Y24a4P2ppPjkJ/13yrweI3O8kv6X/E/Sw4b57swzIpk7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVY95y8k6b5usmsNUj5Kd0cbMh/mjfqrZTPHxbjaQ+mSCLYFpT+cfIkn1K5hbXNJWgjlQj10UdA6n7fHJDOOWUcB/wBUiOKEv638TPjv6uf86P8Avmc6L54tdUnSzEVxBcMpbhLEy9BU/EfhyQnCQ9MoT/zvV/pPqY2DyIP+6/0rJckrsVQ91ZQ3SGOeNZFPUMAf15VLHGexAKCLYdrH5L+VdUqZrGNHYU5R/CR/wOVDBW8TOH9U+n/SsOCuVx/qsZn/AOcflsgW8vare2LAGi8y6g9vhJXLRkzR5SE/+GR/33qbROY6/wCm9X4/0rQ0L8ytBYNZX1rqsKAD0514saD+ZfS/4aXJfmJcpwv+dLHL/ipf9OpI8Tvjf9WXq/2fBH/Yycn5veZ9K/d6/wCXLkkD+8tSZVP+xQSKv/I3ANThPMzw/wBHIP8Af5fy/wDuWdwPPjhXlx/7P91FXi/5yO8votNQhvLN60YTQ0APhWv/ABrl0DjyfTOB+MuL/YxnH/ZoHDLlKP8Avv8AY8ae2X54eULsVTUYgT2YMD+K5Z4MjyqX+dFlwFPdP896HqLcLS9gkbwDiuCWGUeYTLFIdE6iuI5RWNww9iDlZBa6VcCHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqpyyLGpZyFUdSdsQLSBfJjmr/AJk+XdIFb2/gT2Dhj9ycsu8GXdX9b0f7pkIFiV3+etvcyG28u6fd6nJTZo0Kp/wbdvllMp44fVIH+jj9f/HV9I5n/S+pYzfmP5gqqCz0WA0ozVmlAPXiP7vl/kyLkPzF/RAy/pZDwR/0n1f7qLEZB0H+mP8Avfqj/nIuw/I3S5Zlv/Mk0+tXi0INy5Makf77twfTVT/K3Ncrl4mTacvR/qeMeFD/ADv4pS/pR8L+kspGXM/5sfTD/S/ji/mvRba2itoxDAoSNRRVUAAAeAGTjARFDb+qxApXyxLsVdirsVdirsVdirsVdirsCuwq/wD/1PVGQ71byQKuxV2FXYq7FXYq7FXYqhNU0+DUraWyu1D28yFJFPQqwoRkJx4hSvn/AMl/m3p/5aJe+UtVnN4LGQmxaCkhkjc1WFnU8RKjNx48fg+JPi4quWxia/efuzD6uLi+n+dH8Q/3TaY/zvRX1cX4/wCJQes+TfN35wXdvd6jbRaVpKSc4+Sj1uPvt6hZv8rgnL4+GYRyxJ/dRv8A2z6Yy/H9H/TNZmP4R/nPpVECKFHQbZlBDFfzQ8nR+b/L93pDgeq6FoSe0igmI/8ABfC3+RyynINrH8Pq/H9ZUg/ILzg+v+W4oLs/6fp5NrOp61T4Y2Yfa+KOn2v2lbL74hfezkOve9LxYPDv+ckbKbT59E83RKXi0q7BmA68GZHB/wBXlHx/2eUk1Lf+P0piaNPYrfW7O4shqkUqtaMnqCQEceNK8q5eYkGkmJunhX5T+XbT8yr7zD5l1iASWWoTLbQBuvCMfaQ/ssq+h8S/t8sxskBM1/M/i/pfj/dMZgE+56d+XHke98nxTaY94bvTFKm1WQfvIxv6kTv0dPscP9llkZTIqVH+lH+L/M/48niJ57/0mbZYh2KuxV2KuxV2KuxV2KuxVgH5m6noGq2reUNVn/0nUwI4o4wWfkCGjeiBuCpIqtyb4fhyE8ZMb2jX0yl/O/o/zuL6fT/OSY7PB/I9z5w16yf8tILn6lcWEx9Z2YrILcFYjFGV+J0jZ/U4/DyXinPhh/MGgYjikfTxen0/1uLhl/RlOHHNkMhAsf6b+Z+P9M9n0P8A5x28qaega4ge9mHWS4ctU+PD+7/4XKJYpT+uUz/VPB/ufV/ppSaiDLmZH4/8Swn87Pyp0fy+bTzTp1ihtbWULeW8YoHjY/3m32WX7PL/ACl/lyAhwGrmIz9PFxS44y/oyTEV5AvR/J3kjT7X6trHl26nispVEnoli8bqwqvwP/dFeX7OZPrGxlxx/peuX9aM/qZEkbXf9b1f7Jn+TQ8cUp+X/nrhuuk+Y9wP2UulP/CrLy/4KT/ivKsQq4/50f6v838f0WUdxX+dH8fj+B7HlrF59+bv5fSebLBJ9Ob0dWsm9W2k6Go3Mdf8r4WX+V+OY8rieOPOP1f0of8AFf8AHorZG4eF+TvMMnmnz5a2uu2qtczWsljfo67MYw7er7PxSH4v9bhkpiOTcfx8MvT/AASZyAPxfSPkvyXZ+UrVrLTlVYGbkPhAalOkjD7fH9lv5f8Agsjjhw/8Vv6v83+H/N+priKZJmQlJvMXmzTPLlubvVrhIIwNqn4j/qIPic/6q5OMDLfoPql/DH/OZxgT/wAV/C8nf8yvNfnu4Nr5PtDaaeTQ3sw341K805fD/sU5Orft5VLUQhtEeNkH+kjL8fzv4f4FMox5es/7H8f1v9KirL8h7RyL7zlqMt9OxqQ78I6+G5+LbK/3uXmeD+jj/m/1mJMpbf7liM3mHyf+X3m2RrVYbrTLmIB1jUSmCaM0HAty+GX/AFvt/wCriNMLrJ/Wjxer+txRj/xDLw+kv9l6mWQfmxr+qLz8q+XJGjf7MsxEakeOwVSP+euVg6fGdhx/wy8KH+/jGco/50GETjjy4pf1Rw+r+tGM/wDZcCKSz/MnWCouotKsI+54mVgPZWMitx/1kyBGM/5Hj/4fKP8Au8Xr/wBinjB24eL/AIYf+Il/vWYeW/KupWDLLqd8lwFqSiW8UabinVV9QcW+L7eWxxjlw44R/mxEpf7Kcv8AeMavpH+jw/8AHuJObnzNpVn8M91BGelC6g/dXMmOAjkK+HC2jGT0UJPPGiR1531uKdf3i/1y0YJHoWXgTPRgf5kfm75Rk0m80iW8S4kubd0CxKZd2BCEmMMilW+L4myvJg29XDD+sfV6f6P1MfD76j+P5v1PL/y8/P3VNG8sQ6VpukTX89lWJpRUoOTM0KskSM32fh48l+zkDmxQ+uVE/wAPpj/spS/3iDOA3le/9WP+z9X+4YNpPk/zB598yT6RqRGmPqDm+kR1Kgn4jWONviLfG/w/62Y/iCQ9AB9X+k/zv5n+6Y8XENvx/vmZ3/5OWX5Y6va6jrsZ1TQZQI5XYH9zISAshRf2P+bsAJn6Mhr+bKP0/wBRjEXtL/NZx568rWnkW7tfzB8rKqWsfFLuGP7EkD7GRP2aqvxf8C/7OSjj8M8J/u5+mUZevgl/xP4/iZQjwmvxFEfl7Ivn5tZgtbY23lW6RkjVloZJpTWa5Tl9jjTkir8Kuyv9vEgV4cd+D1cX83+ZCP8ARj+PSpI+kdP4v97H+i8P/KrzZN+WnmyXT9Rp9UZ2tLpe1A3ESgftem3xf5SNIn7WWwImKP8AH+P+Oshvs9i/JOytIrnXvIF9SW09UzQodw0MopVD/wAY/Qb4f22Z8hw8cKP8Pp/pQl/0l6kEWGa/lVdXOjy3XkvUmLzacQ1rIesls390fdoW/dv/ALHLIT4hv9Q9Mv8Aiv8AOU+oX/my/wCKZN5x886V5RtTe6vMsSfsr1Zj4InVstjDi/4pMY3/AMU8jttc83/m47jSWbRfL4NPWNRLKKn7BHxdv2eHD+dvs5VLUCJ4cQ45fxZJfRD8f50v6i8fD9O/9KX4/H9F6b5G/K/RPJcdNKg/fsKPO/xSP41c9AzfsrxXKI4d+KRM5/zpfw/1Y/w/1vVL+k113/j8f9JMxzJS7FXYq7FXYq7FXYq7ArsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpfrktxBYXEtnxFykTtHz+zyAJTn/k8vtZEmt+aQxb8nfOl55x8vRatqMax3BZ0bgKK3E/aQEt/q/ab4lbJWDyTJnOLF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2BXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirqYKV2FXYq7FXYq7FXYq7FUNcWFvcDjNGjg9mUH9eUyxRlzAKCEj1D8uPL2oqVurCBwf8gD9WVDSwHIcH9X0sBjA3Y/cfkF5OmNRYKjeKswp8t8RgI5Syj/O/wCOp4fMhJj/AM48Wtm3qaNql/YsKkBZSV3/AMlfTy8ZMw5SEh/NyQ4/91KUf9gz45jr/pvV/vox/wBi0Py98/6YrHS/MQmH7KXMAIPsXInZf9ZcP5jL/FHFP+qZQl/pYQxf7KaZZZE8oEf8qv8AcQ/3zkl/Naxqzrp14B2qVP0USLAdVf8Ak5D+rKP++yzTLKP5v+lMv99JS/5WR5+sWpf+XxKvjA/9XbH8ziH1DJD8f0YojOP8XEP9L/x5Xtv+chbaOqappl7auv2qxlh/woywTxSH1j+rKMmUeGXX7JJlb/8AOQflKc8GuJIyf54nH/GuWRxiX8UP9PGP6VEb5GP+mjFPbH81/K19T0dTtQTuA8qof+ShXD4Munr/AKpE/wDccSZQI7j/AFZRn/uZJrD5u0ab+6vrZv8AVmQ/8bZL8vP+bP8A0slGOR5A/IphFfQTDlFIjDxDA/qyowkOYPyQYSHQ/JEKwO46ZFg3irsVdirsVWNIq9SBhpNFBXWv2FqvKe4iQf5TgfxyQxyPQshAnZLrr8wPL9r/AH+o2sff4pkH62yz8vMdJfJlLFKPMFI7r88vJ9rUPqUZp14K7D70RlweCf6H+nh/ueLiU4yO7/NlGf8AuDJKLj/nJHyjF8MU0szeEcZJPy5FcHABzlD/AGX/ABKmAAux/sv99FCP/wA5E2jsFstMv7gEVqIyv/Eh/wAbZV4mH+eP80cf+5kwuFXxfZ/xLf8AytzzRd0aw8uXHE/79PHbsaqGysanCeRnL+rH8SQZwqxxH4OTX/zM1NuEGmWlhGT9uaXkQPkh5f8AJJsRqYkemGQn+l6Y/wCll4X+xyqMkekT/nH/AHvpl/pZrl8gefNVFNW8wfVkrutpGAf9jMFgYf7JXx8fIfpjix/1v3v+wn4v+xywU5DvQgP9n/uo8Uf9Oug/5x402dzLq9/fX7NufVmp+KBW/wCGx480hRnX9HHH0/7Mz/2PAgzkeZO38P8A0lxSj/p2R6L+TnlfSJBPb2MbSjo8lXP3vlJwCX1Gc/60jwsODvuX9Ysxt7aK3XhCioo7KAB9wy6MBHkAyApWyxLsVdirsVdirsVdirsVdirsVdirsVdirsVf/9X1RkRzS3hQ7AFdhV2Kuwq7FXYq01abdcVeKfml5Q816noN9Nf6pGsMKvMLe2iKc0WpEUk7PzIZP2ePHn/Nxyrx8g5Rhj/pRlKWXh/0vBH/AH/0+ln4h6AQ/pR4uOUfx/ReV6pofldPK1h5p8vRNZatDIJuDl5fUMZo4MtHjHxfvEX4P5MrEOE/V4n86OSWOMuH+ji9HF/pJsdonn/pjHi/0v8Axx7Xov8Azkb5Tu4ITd3awTuimRSrcVYj405U/Zb4czRjvlX9GN+r/iW04x0I/q/xPQNE8zabrierplxHcKP5GB+8dcEsZjzYSgY801yDB4nYSL5J/MqSyRQlj5giElTUATJXZP8AWP2v8uXKse1x7vVH+qzG4ruezXFwlujTTMERASzMaAAdak5aBbEC3mE/5qWXnG7k8vaHYPqtsxMdzMaLAqnZ/jIb1P8AY5DMIAcMjcz/AA4/qj/S4v4eFMgBsfUf5sf+KY/c/wDONc3CTTbLWLmHR5DU23UAE1KD/JysTzAcNwI/nS4uNiJzG21f7J675V8s2XljTodI05OFvAtF8SepY/5THfJQjwj/AHUkAJxlqXYq7FXYq7FWiQNz0xVKNR82aTph4X15bwMO0kqKf+BZq5aMMyLqX9ajw/6Zn4cudGv538P+mVdH8y6brSs2mXMNyF+16Tq1PnxOQMSObExpj/5s+ZdS8t+XbnUtFh9e8jACrQtSpoZOA+1w+1xys5BDeX4/rKCBzfLl558/NDzIjiE3YibqIoiop02NOS/8FjLtCEP5g/pUss4B6D4PVv8AnHT8o9S0O5n8xeZom+vuoWIytycBvtt+0ymnw/F8X2sqGU5jZ4tvp4v97xf9IseLi33/AM5KPz4lvfIXnCz88aVbuysgS4ahEbEfB6buvLi0iHj8XD7K8OWSxzEJUT9fq4f91w/7tkCB8UYv/OXcVuqm80tgXUMOFwrDf2CfD/svizJHAf58P60P+keL/NZUD/OH9Yf9Iotf+cqfLOswvZanaTxwzKUcUDihFD044zxQkK4uf84cP++ky4I1z+xB/kb+dei6bFP5e1G69O2glP1OWX4axMSRGx/ZZcYYzIdDIen+v/VTw8Xdt/sn0Dp2p22oxCeylSaI9GQgj7xkZQMeezXKJjzY1+aPk0ebNEmsUoLpP3tu3dZU+JCD25fZ/wBXMfICPUOcPUxBpR/LDzynmbRlnuKx3lp+5ukc7rIg4uzb14t9rk3+V/Ll3PccizlH7WZRSrKokQgqwBBHQg9MWDEV/K7SF8yL5ujUpfqpU0PwsSpjLFf5uJzHGMiVg+n+b/SRSt54/MzRfJcHr6rMFc/ZiX4nY/5KDMyOO9+Q/nSbBC/J5l/jvzv+YZ4+Vrb9D6Z1+t3A+JgP5Kqyj/nmr/665RLUxBrGDml/O/gj/vf9P6v6C8YH0+v+lL6f+J/3f9VjtxpXk3yzP9e82alL5i1boVVi6A7/AAn4uP8AsZZW/wBTGeHJP+9l4Yj/AJOPol/xX9Xgjiimpy+s8Ffwx/h/H/JKLJbHVfPPnDjHodumi6OlAhYcWK/s025fZ/lVU/1shHPGPpxR4/6UuHh/38f93/WY+II/SOL8fj/ikwtP+cf5NRJfzRqdxfEk0UMQACa0q3LEzyy68H9X8RR4kz1r+r/NT3UfyJ8tNpcunWVssMjL8E25dXX4kfkf8r7X82UnB1uUpf0j/seFhw0kehfn1pukaYLLzAznWLRjBLDEhLOU2Eq/ZVVkX4viZczIAEX6ccf5v83/ADI+r/Y8LeYg78g6Pzf+YHmtuWh6fFpdi24mu6l6eIQ/zf8AGD/Z5WNTD+CMs39L6Yf7Hhj/AKXLl/qsOOPQcf8ASl6I/wBb8eLFVX8o/MusBl8x67M8bneO3HBaeH8v/CLj42U/zMX9X1S/03DD/ZcSPEke6H9X8R/3KL03/nHHyvaj/SklumrWsrk/hlJxzl9Upn+r6GJBl1KNX8jfJEX2rKLr3dvu+3hGlP8AOy/P/jqRA+ZTKy0ryZ5ZUpAtlachQsWQE/8APRzy/wCGyyOg4/4ZZP63Fl/3fFwpGnJ3on/TSYpb/mJ+X35dWU8OkXEbl3aVooWaVnc/8WHmv/BPxXLYaUwviP8AW4jj4v6vBHg/3P8AWkzGIjn/ALqMp/6Xi4v9M8i/OL8ytO1/VtL8xaJPNbtAAkzqhVlBPI/vK/HxUuvHBXDL0mG/9bj/AM6PD/ueJI9J2Mf99/pWfedP+cmPKN/pctjHDLfeshQxOoUdOrNVssngiR6iP836uL/eo4B1P+leIeXfM0FzNaaX5ou5pdFiBeO3haoBJqsUhbj8P+V+xkeKUxw34f8ASrinKH+ay3ltdf7L/cvrPyf570c2axhrbT7VAFhQzx14+6o3FP8Agsli0pAqMZ/50fq/pfz/APTxinwJVsJ/L8f7J8r/APOQ9vYSeapr3R54rmOdVlcxMG4uBwcMVLeHLKOA4zUvTv6f89rMSOeyP/KHz7IPNuk3FwRzCCzd22DRkFIiW7sofj8X8i5Mc/f/ALplzewf85C+br3ylqWmalolu0mo8ZUD8SyFGFDE6r1bl8aZATjCVy7vp+ni/pf5rWJCPP8A0qH/AC4/J288zSr5r/MFnubuQhordyQqL+zzT/iK/wDB5XOcs/8AQxfzY/x/j/ZMTIy8o/zXoXmX8xNP0OaPQNICXGrSERxWsdKLX9qXj8MUSr8WZAgMcbO0f4Y/xT/q/wDFM+GhZ/0v85m8IYKBIQXoKkdK99sAYqmFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUk87XRtdEvZl2KwSEfccBSGKf84+2TWvk2wVhQurPT5scjFS9GyaHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq6mRpXZJXYq7FXYq7FXYq7FXYqsaNWFGAIOVSxxPMD5KUtuvK+lXQpcWdvJ/rRKf1jIfl4dAB/V9H+5YDGB0HyCQ335QeVL3eXTYFPjGpjP/AAURQ5EaYDkZ/wCnnL/dylFeH+t/p5R/3MknvP8AnHzylc1/0aRK/wAs8o+nd+uJxHpKQ/0k/wDdRZfP/df7pBt/zjf5dUUhkuoh/kzv/XCIZBynL/Sw/wCJY+rv+yKFn/5x4RdrPV76EdvjJp+K5aMmaPKQP9aMf+JZRMh1v/Ni3F+RurQArD5ivAD2YE/j6mS/MZx/M/0sf+Ik3DLLy/0sVh/IvWZFKv5mvwD1ClwP+T+A5sx/1Mf5kf8AdcMWoykeo/0v/EygiLf8ibqJPTfzBqjLSm0v9eWQ48/86H+kn/1VUZMnU/7v/qpJQk/5x59VaPrWoNvXdh/TLBm1A/iHyl/vpTbTmmeZP4/rNxf8442Y2m1O+cd6SU/Vlcp5pfxfZxNBMuhr4JH5k/Kb8vPKwE/mC8k59Sss3Jm/2FOeSGDNkG85f1vp/wB3KUW3glMWSf63/STFrPzf+Utu49HTrmVVP95xkZdu5VpF5D/J44jRw/iyf5suKP8As8WL/cyT4Uesh/s4/wC5iyax/Nz8qoz8NikJbqWswOniVDZL8lj/AJ0Z/wBaeeX/AE1ip08Jc5Qn/W8SX+6gzXRPzN/L+4Cx2FzaJ3AMZQA/6zoqhv8AZYB2fEbgQ+eP9fExjh6Cv9jFnNhqmnXYrZTQSD/itlP/ABA5LwOHfhr+lw/75AxkdPsTLCh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuGAK7CrsVdirsVdir/9b1QMgOaW8khwxV2Kpdea9Y2dxDZXM8cdxcVEUbMAz068EPxNkxEndkIkphXKjJDBfzO/NzTPy/iie/DyzTH4Y0pWg6sa9Fy2AB5nh/2TKMb57Ml8ueY7TzBp0OrWTcreZA4Ph4g+64JCjSCKYv/wAry8pfXv0Wb9BPy4VIPDlWlPW/u/8AhstGE/0f6tx4/wDSsvDPl82bTwRX0DRSUeKVSD4EMP6ZjyjYprL5+8k+b9J/LC71jyxr8oWxgl9W2Vl5MyyD4kRVHxf7LjkceLxI1Lh9PplKX4/3LOMeIdNv5zA9F8xOmrXOn6Fokdxb6tKZbX68vE0358C32l5Hlx+LKBDD1vNwfT4f+54WJED/ALZSeN+SnnXTZZfMWmG10q4iUuIbZjRwByII+z/wWSjqZY/pjPg/i4pcX+wT4lchUffxM5/LXzT+Yet6VFq3+g3cLkjg3KOT4TQguoaPll51Av6JH+ljnHh/0k/UmUx/Nv8Aqnh/3SYf85A6HeXGjWvmSySmo6TKk/FdzTb1EBH2lU5VKXARL/NkxEq3YXBqnm/87/TtvQOkeXgQZnqeUtOoRmC81/yVXgv7fPJz1A+nFvL+KUv4Px/N9Uv6sUmYG0f9M968p+UtP8q2KaZpUQigj8OpPdnPdmyOOHD5/wA6TGk6y5XYq7FXYq7FWI+bPzQ0Lyup+v3AM3++o/ic/wCxXp/sss4Op9H9ZsED12/rMKj8/ec/N7cPLWnrY2bdLm7rWniE/wCaeeUHUQG0Qc0v9JD8f58WPHEcvX/uEen5OXmrKG816vdXh6tFCxhiP+SVT7a/7FWx8TKeRjh/4WPX/m5ZeuP+dxo45dDwf1f+K/4pkWi/lH5W0ahtNOg5r0d15t/wcvNv+Gyg4BLeZnk/4ZOUuL/N+j/YtZgDz9X9b1/7plVrZQWy8YI1jHgoA/VlmPFGH0gR/qsgKVmAYUPTLCAeaW1ULsOmCMQOSt5NWNfmD5Ni84aPPo07tGsoB5JStVPJftBtq5VOJI2q/wCkOL/iUF8/f847eW9Gj1TUfLXmGzhk1GBy0RmQFiqkq4Xl/sW+HIeGMo4tzX9KXB/peJlwiQvm+iYvI+iRCiWNuB7RrlZ0eM9GoY4jo8l/5yE/Lyxhs7fzFa2kRSxkBuI0ULziOxrx/lxGKMDQ2jL08/pZgB2j/lNPZS2XmDyBqElvYXDJJNbs/JODfb4Bvhbj9ni3xf5eWxnkxbf32P8ApfVH8fzo8LO5R25/1nu+XsXh3nXl+XvmVtVjWuk66phuEG3GYA8ZR/rZTAcNxPX1R/4lnDfb/Ssz/JTzMNe8uwsf7y2Zrdq/5B4r/wALxy5EmW68L02Mw0viLzgfS5/Z5duXtguvP+ix+18wy6TD5a1GTUPMfDX/ADNO/wAFsrckjPYyU+038karlU7l6sv7vH/DjjL1S/z/AOCKee8/R/Rv8elnNr+XXnHzzEH81XosLFqEWkC0oP5CilVXb/frT/6mAZpEVjAwx/nfT/x//ZYk+If4ah+P9N/s4/1GfeWvyo8t+VlE8FujSoKmaajN8/i+CP8A55qi5COm4vqvJ/R/h/0n/FcUv6TARvz/AB/NRd/+Zug2TGFLkTyr/uu3Uyn/AJJBl/4bMwwEPqMcf9Yxj/sfr/2LZwVzMYf1j/vfqYN5j/5yR07TpPqlpZ3E102yqwC79gRVmxBgBZP+lH/FMhGNWT9n/FJVd2n5j/mDblj6ei2TmgjLMshHiWQM9P8AgMo/NX/dRkf9s9Mf93/vOJh4n80f5yTt+UOr/l5JD5hgu4n4EJcOIDKyoxo1xSZ+LMv7bL6Xw5SJEn95GEwfp8SUpR4/4ePgji/3UkQkSfUIy/rcUvV/sP8AdPW4vKOqahGk8mvXTowDAwRwxqQdx0iZqf7LMjjyg7eDAfzfDlP/AGWXJNkJyid+D/Sf8XLKpv8AlfJOrLc6vqMobsZqD7kC4ZTyH+IQ/wCFwxw/3rHikDYPD/VjH/iUM/5LadMAJry/cj/l4YZHizcuM/6SDLxZHmb+THm8jeT7HXIvLF0tzPdXEbTAyzOVoOxNV5M2PDOQvxJiv4Ynh/RJbl/Ol/Vtka/kX5ShDSQ6fG0pBoZGdhXtVWehyiWG/qlOf9aXD/socMmoxvnf+mlH/cvCb/XdD0z655T866ZbxzBiYbrTkQPWv7tTw+z/ALJv9dMsjgjIWOPBkH+qeLlhL/lbKXH/AJvpl/BODdwCXfjkP60/91xS/wB5/USDzla+Zf0JYadr8Ij0tpgYJXC+uI+gLhDy4rGf2lyMZx/hHBL/AFSpYozl/VQZiXSj/Ol6eL/M4nv/AJE/5x98p6RbxXSxC+kZQyyy7gg/ECE+yMh4BP1kn+jH0wajDvZnP+W/l24p6un2x49P3YH6sfymMdD/AKaX62Bxj8EvPPzA/KvyzoUJ1RNCW8t13mEMkglH+VHGnwstPt/EmA44w+qWSEf50TDgh/W4vX/um2PCOdj+l/0lJJfL3nr8pbS0kt4I47NpkaN1lgkaSjD4kaTjL/ycy8aKJ34vE/pSn/vZcMI/1owScQ7xL/Tf77/evmK4vo7DVDJpr84IJiYXAIJAPJNm+L/gslEVz/zmXJ9++TtatvNGkWmqDhL6kasTQGjgfH8jyyU8YPMMZRZC68lK9K98KGA/l9+UVl5QvbzVTK11e3jljLIPiVSa8Aat/wAFlAjKRudSr6f+K/rKd+b0DMhXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwb87Lz6r5R1FwaFouA/2RAwFITX8ubIWXl2wtxWiwJ167jlkYclLJMmh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVw3wDdXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVS/XtVj0mwuNQlpwt4nkNf8AJBan+yxUPnf8nfymt/P7S+ePNvK5N1M5hhYkLxBoGb9qnw8UXKMnFlNXUB/N/HpisrkX0Tp2h2WmQi3sYI4YV6IihR9wGQGmxj+GP+cOOX+mlxSQIgOvdEsb5eF3BFKvg6Bh+Ix/K4/5sP8ASxYygJcwGOal+UXlbUVPr6dAC3UogU/emD8vHpcf6spRj/pV4ANht/V9LE7z/nGrQeQfTZ7mzYGtUkJH3McnEZI8pGv5sgyuQ5GkL/yqXzfowJ0HXnYVrxuBt8ukmWfmM3OQhk/o/jg/3bM5ZHnR/H4/iaPmn8yfLi11LTotTgTq8Bo7D2VDK3/JLH81D+OM8f8ASj9Ef9jOH+myp8SJ5gxJ/m/TH/df7qKvpf8AzktorSm21i2udPnB35rzUfPj++H/ACIy6PBkFwl/pv8AioeLi/004pAjLeJ4vh/1S8X/AGXA9D0TzxomuKG069hlJ34hwG+mNuMi/wCyXJnFIbgcX9KPrj/po8UUeGf+kfV/uU/ypg7FXYq7FXYq7FXYq7ArsKuxV2KuxV2BXYVdgV2FX//X9UAZAc0t5NDsCuwq83/PLyj+m9AlvLRAdRsKT27j7SlDycBvDj+zlE9iJD+H/cqNjfcy3yrrB1DRrXUZSGaSBHbjvvT4qZaTXPZkRuwvXLHyv5pv7f8AxCYTdTI62sbPUsjf7sAotG/yWyk4TkBkOn830/771JMLHu83l2h+aZPy+03zH5PmYg2YZ7RiaErKeFB9/LJwPEPd6ZJjuPczHX/yy0i1/Lp43hjFxFaib1uID86c6l6cv8nKBi/i/ivi5tYju9A/KO8lvPKmmTznlI9shJ+jb/hcy7tMi8/1zyvpv/K0beS+gjmW9s2kUSKCBJGeKuAf2vhzGlAT2PFz7/x6U1YZH+d3llrnSI9X09Qt5pMi3EdBvxU/vIxT+ZckYiFEbV6Zf1EA0UOdKvvzHgt9Y0/V5bXSbiEB4IVAJanGQF2+L/Jy2U8g2jwD+l9c/wDiUyJjsKH9L+Jnvljy3aeWtPi0rTwRBCKCu5PiWPctggKHexTYiuxwkA7FVqoFHFRQDwwRgIihQ/q+lV+WK7FXYq7FWD+d/wA3NE8pfubqT1r00At4viep6c6fCn+y+P8AkRskI7XL0R/pf8T/AL76P6TYIdT6R+Px/N/pPJ5PzL1fz3cGyl1G20GyBIK+oRMR4Hnwbl/wH+pjxyP91H/kpIx/2H/HY/57aAa9A/zpGP4/H1SeleQPyt8uaQn1uzZdRnf7Vw7LISfanJVzGlp5E3ks/wBH6YuKYnmb/wB69EVQooNgMtApK7JK7FXYq7FXYq7FXYq+df8AnJPytc6He2vnzRf3dxAwWYio6bozU/ZZeUb5TGXhy/r/AO6/i/0yYyoo7yb+Zn5gedrL9I6PaWIgrxqzkEEdag8stlnjA1wTmP534k2CURzj/ncSd6lo/wCY+vWcthetp8MM6lHFC2x6/ZyvJm4htjP+n/3smuU7O0eEf1uJ5z+WWi+YRqNx5Fvdal01rE1hjjUEyKTyJjduLcf2uOThmyEXEQHD9XFHinD/ADfVCTZGZA2r/OjGf+6ew2n5b6/ZUa28xXZcbkSxRyKfmj/F/wAPicuU8/Cn/R8Lwv8AZ4pRk1+LM8+Aj/hcY/7KEoyR/mnyAfOujHSvMLKJ1aqzQVG46SKj8uHL9qPk/wDr5VMGYsfu5e/jh/veKP8Amxkgnu9P+yRPkbyjYfl7oosFm/cxku8shAqTuWY9MnihLrvI/wA1MQT5vL/MX5wav52uZdD8ix+nbrVZr6Q8VUdCUZvhH/EstlkGPYfvMp+mMWyxHl65Jn5A0fSfKQYaZFLrett/eTInwgnqPXfjGi1/a5c3zGMQDxZTcv8AU4/vZR/zIfxf05sJbG5f6WPrl+P67OPqvmrVv76aDSoCOkK+vN7/ALyULAn/ACKlyzxCfpjw/wBLMeL/AKVYpf7rL/mo4q5Af5/q/wBjGUY/7KTHfNWm+VPKUAu/NFxLfzmpUXUrSux/yLeqwgf5XpKi5MY55B6pHh/o/wCD4v8ANji4eL+pKU2YEpcyav8AqQ/0seGDGrF/Mfn393oFuuhaHWhk4cZXH+Rsvwt/k/B/rZjAwiaxRjP/AGyX08X/ABf+n/rMOKMdoi/6X4/H9J6J5P8Ayl0Xy1SZIvrF31aab4mJ7kcvs4Ri4jczxn/Y/wClYnfc7s2zJSpXFvHcxtDMoaNwVYHoQeoyMhYoq8ebT/Mn5Y3EkulRSazoEpJFsD++tz2EVeXKL/JVf9guQjm4fTlv+jmiJT/zJx/38v8AT/wpE+kr/oy+qX+leJa7+beuaN5hl1nThc2KzPye3u2LAjwKMFZV/wBj8H8+ZEc55X42P+HiHB/pP+OybePpuR/Sjw/6R7J5L/5yf0rVWit9ZgexeSgEp3iJ/wBb9gf62SqMvpP+bL/il4RLlt/Rl/xSA/OzzFofmBoYNBeS68xwMGtmsxyKmvSRx8PHKMkfBPGTHH/Rl/H/AKViRwbnb+j/ADkJ5Ru/Nf5l3VxonmC9bShYBBPBbqUlkDdzIfsq1P2f+AxOeUheIRhf1ZJeqcf6sf8ApH+sjxD/AA+n+l/E9Ij/ACP8rw6XLpMdmnGZaNM3xSk9pPVfkwbl8Xw/DmNLBxbkylP+dI/736f+KaTG/wDimNeSry58s3a+QvNqLPA6stjdOAVkj/3w5P8Au3jloAzCpCssP9n/AE4Nt8Q/pD/Zf0mceQdHudCW70mQMbOCatqxNf3bAOIx/wAY25LkoyPI8x+Iotl2WIdgIV88fn7o3l3T51m0kPD5nuPhjjtKVeu3+kRfZ4ty+1x5tmMdOIDi2EP9TyR8WE/6kZfT/uP6KiHD6uQ/myHFGX+Y8um/KTUfK2nXP+I9OmlkuVDxXNsfU9Jx8fCSNRy+L7Lt9jK/Gied4a+nxIx4Jx/r/wAP9H+L+ggSHM8UK/q8H/HWTf8AOLv5ljTdTl8t6k5RLogwhgRSQfaWn7PNf+HzPjuPc23xD3Pq/wBReXCo5UrTBTBfih2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV59+fJC+UL0t0on/EhkJJDKvKTFtItCepgj/wCIjDHkpTfJIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirTNTK5z4UgNBsrGXflzVdmQh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVbyANO+RMgFWvMFBPhlMs8QPcyAQqzzkciFA+mv68xBq5c6bOAebk1AmT0yu3jXLI6sdRSTi2tGqQ246ZnA20N4VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVQerajHplnPfzf3dvG8rfJAXP4LioYD+R35j6h580ufUdRgWL052jjZAQrqAD0Ys3JeXFv2cTKJO2387/pJlKuj0rFi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXn/59agLDyXqcp2rEqD5u6p/xtgSEx/KPSxpnlTS7YCh+qxM3zdQ7fi2RhyQy/Jq7FXYq7FXYq7FUv1TQ7HVovQ1GCO4jP7Mihh/w2Y88MJGyBf876Z/6f6mJiDzefaz/wA47eV76r2sUlnJ2MLkAfKNuUf/AAuRGKUfplMf0Zev/ZS9f+zUWORl8+L/AHfElaflr5y8uyctA1g3FuNhFcitB4L/ALr/AOFy7x8g+oRy/wBL6Zf7Lil/s2ZyHr6/+JVF/M7zZ5dU/wCJtHaWFBvNankPmR9lcRqcZ+riwk/zvp/4teOJ74fw/wBFPtB/PTytqxEbXQtZz1S4BjNfYv8AA3+xbMkY+P6SJ/1fq/0n1M/D7ql/u/8ASfUz23uI7hBLCwdGGxU1B+RGVkEc2BBGxVsCHYq7FXYq7FXYq7FXYFdhV2KuxV2Kv//Q9UDIjmreFXY2rsVWSRrIpRxVSCCPngItWB/lxeRaPZX2lXL8I9JuJU5NXaE/voWavb0n/ZyGP1D/AGP+9Z1bCvI9g/5meZf8aXUYj0rTiYbFaULlSayv4qvL/g/9XISAMuGO3B9Uv5/9FjI9B/D/ABMN/wCcs/Lph1bT9StVJkvFMThd+RjK0qO/wv8A8LhB4SelpBpln5xz+aZ/LM01kbeHRVtgsqyAiUgFUqv7KqzfZ/yMRl/h4eIf6pcf9xxJ4uHar/pIb8v9Z/MvSNDs0t9JtLyxSGP0gJQkhSg4luUnHky/5OSjqIRG8cn9aP8AxHDOaBMX6oy/rRlH/j8lDU/NOtXHnTQ9T8x6QdLTk9ujNMJORcGgqnTiz/tLkY5IZD6eP/kpCWL/AHUYpBEuVj+t/wBIvoaaJJkMbgMjAgg9CD1GWkWKYPI/ywkbyl5k1LybcuEt5H+tWCHuj1aREPhHx+z/AK2Rxn01/M9P/EshuPc9gyxi7FVC7u4rSJri4cRxICzOxoAB1JJwgE7BIFsa8m/mHYebpblNKEjW9qVX1ypVJCwP9yT9pVp9rE0NrBmPqjH+FJAHW/539FlmBiw3zz+aeieTEA1Gatw32IU+Jz/se3+yyYh1Ow/pMxC/J582r+ePzJHp6bH+htIkqPWYkSMteqFf3h5L8X7vgn/F2UfmRyxjj/pS+n/iI/8AS2f9GK+II/Tv/Sl+P9zxf14M08j/AJNaL5TYXEatdXtPinnozVPUoKcY+X+T8f8AM7ZT4RnvkPiH/Y/8VL/PlP8Ao8LWd/q9X4/H1cUv6T5+83/lVDr/AOaU2gqfq1tMBcEoK7FVd+PhyYsv+Th3AqPfw+pJ5bM8m/5x91/y3fm+8kan9VhBqsMhYinga/CeWSjmy49q8aP9IxijxJR/po//AJXf5h8oOIPPOlOsSnibu33Q/wCVx/ly+ObFPbfHk/my+n/imwShLbeB/wBi9O8mfmJonnKA3Gi3KyhTRl6MP9ZD8QrlksZj5j+dH6VlAhk+VsHYq7FXYq7FXYqw380PKmoeatGk0jTZ47czUDmROdVG/Eb/AAfF+1lOQkDYCf8AWPD/AJ38SCSOVPkzyX508w/lVrVxokQjLtKIpI5ahOQNFkB/ZVq/a/l45biygx3F/wBH+KM/+KbYTsbi3vEn/OSCaJOln5osHtZSByeJ1kX3ICnlxywcE/50P6OQMuEHvh/WDCfPXnrSvM3mWw1zyhFd3Oq2pVpEiiKh0B6OW+L7J9Plwb4GzHlw4jxcUd/q/jl/m/w/5vEwoDrd/wA16Mmp/mb5hq1rbWWiwE7euTLJTx4qGX/gkXJDUx/hhOf9LIfCh/pPTl/0vixQMo6R4v8AhhlH/c8Mo/6WTJfL3l3zXaTRy6prKXkdavH9USMU8FdDyxjkkRvHGL/mnJPg/wBlGMv86LGz/R/2Xp/2Uf8AZRSX83fyjvfP89uEv2tbOJSHiAJDEmvPY9fsrkJTyDaNb/xf8V/OSZEDZV8jfkXpHle1+qyPJdry5kSGik+6L8L/AOyyAhI/USP50cfohL/f/wCzY795r+b+PU9HhgitkCRhURRsAAAMuhAR5JeRebvzkutTuz5c8hx/XNRJIafYxx0605fC3H/fjful/wAt/gyc5Rxc95/w4/8ApH+L+j/D/HKDM1Dnuf5v4/Ef4kb5U/Iyzt501nzJI2pasfikMh5Rhj14Iw+PifsM3+x4/ZzGMZ5d5n/knH6eH+bL/iYcEP6Mmsky5/6X+H8f6WP9B6miLGvFAAo7DLwKS1JKkSlpCFUdydvvyQFq8W/PD8yrfQ2sb3SdRDXdtMDJaRMD6sZ+2H48uP2fg5ZZU4bmo4z9XFw8f+ZxNoBjz2B/q/7FCJ+fnmHzFA1z5Q0GW5gU8TLKTTl+0OEfXj/xlyqebFA0eOf9QfT/ALHL/uYoMoQ58c/6o/47L/esW0DzzrfnvU30bzVqz6C4YL9USIwlwR9gTueSt/kyM3L4eHLDDLLIP3Ph1/O4uPL/AJsP+qU48P8AHFMZE/Rwj/ZS/wA3i/i/qS/zGT6l/gLyTE+m6fajWNUmBQxrWd2P7XqSfEqL/Oq/Z/kXKJ6YfVmlL/OPr4v6EI/TP+l9X9drOKt5/wCy+r/S/wALA5P+cb/MGtW02pQLFp6SnmliWJoOy82+w2UDKR9IM4fzpS9bHj7uL/OPrS/8nfPMn5YatNpmv2xihdwkhKjnEa8edftNE3+TmTi4J79f4Zf72X8xsiBLy/H0ye0/mJFL5d1CD8x9FH1iARCO9jj3MkDbpOh7tH8P+w/2TYg8EqP0T+r+jP8Ah/034+pANGi9R0jVYNWtIr+0YPBOgkRh3DCoOXHZBFJP538nW3mrTmspz6UqkPDMKco3U1WRD/n8OUTiTuPqH0/8T/VQNkh1n81tG8qQxWN7dG91BYwCkI5MzAUJbj8Kcm/m+zmVwEbzqH4/hj9TZwHnL0/j+GKVt+Z91dR/Wbme00azIqDPIJJqU/32jKiH/WfIi5fREzr+LJ+6j/W4PqlH/SJEDVgWP50vTH/S/wDSLEfzC/5yVs1sX07ys7T3zLx+sMpVV23ZFb4mf/hU+1hIEOZjOX9H6fx/Rjx/0k1w9x/ox/H/ABX9JJfy98++QfJcQ1K8kuL3W5ama4eMs/Iiren6pXijfzL8T/t5WMHGeKc43/DH95wQ/wBJCXq/pS/zEHHZsyjf+f8A8Snutf8AOQ+p+YkNt5C0qe6BBUzyxmik/Z4hS0fL9r943+wxyZMWPaR8SX82P/EcPHL/AEsWBlCPP1/7j/iv9yx7yF+RPnBtTbXdTlhtLqT4vUYCSRSTuUX7KP8A5XxZiDKZH0x+n6eL0Yv9JH6v6voYcZJuv9N9P+kfQflbyrDoMbH1JLi6loZZ5TVnI/BV/lVcyRxHeR4j/sY/1YsrJ5p/k0OxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV4n+eWqeY9ME2pWd09nY2whWAREAzTSH4lk/a4r/wOQjnINACv4pSjxcX9VnGVfzf6XE9i0xpWtomuP70ovP503/HJA2wRWFWD/nVZtdeU79V6qgf6FZS3/C5XPkkJx5BvkvtBsLmPZXt4zTwPEBv+GyYUsgwodirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiq1xXMfLGwkLAe2URlZA82VKuZ7B2KuxV2KuxV2KrWYKKnYDFUJc6rb23pGVwFmYKh7EkFl3/ygMHkkBG4UOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVa7cRXK8k+EWkC0LDCR8Tmrdz/T2zVCJlvJtJ7mzLHy9IsOZFaVFafLJmGzFeBXbIUqmIPiJPQ5Dw92fFsqW6+mOPbtmXp58PpP+awluiM2DW7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirTEKKnpir59/OX/nIjRRpd5oWhyPcXs8Zh9RB8Chjwk+NurcOQXhyyyUABuRf836v+OtnCAxn8t/+chrDyNo1nol1pdzHAims/IVdmYu7hGVeQ5P/AL8+zxyvF4Z/iuX8W0fT/s+L/Yf5rGJgev8ApRH/AIp9CeSvP2k+c7T69o83qINmUijoT+zIn7P/ABH/ACslKHD/AMVFTGmS5Fi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsKuxV2KuxV2KvHv+cpZCfKQtUFWuLqFAPpLf8a5GRSHrNhbC2t44FFBGiqB/qimMRQQiMkrsVdirsVdirsVdirsVdirjvgItWO65+X2g66D+kLGGVm6vxAf/kYnGT/hsxTpo8x6f6pMf9j9H+mix4R7v6vp/wBywe4/IKCwf6z5V1G70mbYhFcvF8niqjN/spGy6M82MVGXiRH8OYcX/VqH/KjiZxnKOwNj+bL1R/0n0/53DJuHVfzB8tnhqNtBrNsv+7ISI5SPFl+FQ3+SsT/6+P5kfxxlj/pY/XD/AEvqnL/S4lMweY4T/Oj9P/Ff5sYRTHR/zz0K6mFlqnq6ZeVp6dypUV/yJPssv+V8OZERHJ9EhP8Ao/TP/Oj/AMeZCIl9Jv8Ao/TP/SvQLS8hu09S3kWRPFGBH3jIkEc9mJFIjAh2KuxV2KuxV2KuxV2KuxV//9H1SMiFdhV2KsJ86a9qPlm6j1qRo20FFCXSEESRlm4i5jP7arzUPH9rj9jlkBM3wkbH6cn82X82f9D+l/D/ABelnE3t/sv5v9b+iy2wvob+3ju7VxJBKodGHQqwqpH0ZM7MSKfOX5rzXuredX8l6NMRFrAtjfcQaxiMHnv9n+4EcjfzfCmUcZgCdvV9P+5/H9Fsuh7/AKWYz/nl5T8kzDyzbJKbbT1EUkkSckjK/DRm7ty+238382XQxCNAyAkf538X87iXhA5mpH6YvShDpfme2g1BBHcw/wB5BJQEAsKc09+OV5sPEaPRrlGjv0eB/nINT8keWn8qTs95ZXzgW1xvyQrIsjW09T9nh/dMv8uGOQnaX94P5v0Th9P836o/xfjikJd/P/df8efR2n2y21vHAgosaKoA9hTDDl8GDCPzr8r3Ou6CZdOBa/sJUu4AtKlojUov+UycuP8Al8cjM8PqO/D9X9T+L/ik3Se+RfOFr5v0uPVbMMgaqujijI6/3kbe6tl23Q8X9JSKYb+euhXcdrb+btGFNR0Z/VoP24Sf38Z/yePxf6vLKZHglxd/pl/vVjLhN/5sv6rP/LfmG18w2EOpWTh45kVvhIPEkBihp+0teLZeY0mUaS3zz+YOleS7FtQ1eUKAKJGKF5G/kiT9o/8ACr+02SjC/wDikxhfl/SeZaXpnmT833W98wq+leWTRo7JSRJcCtVM7/C3p7cvsr/kJ/u3KJZuP04vp/izfxS/4V+OH+lP+GPidI7D+d/FL+r/AEfx6vqj1bUNU0bybp6m4eKzs4ECouw2UUCxoN28OK5PFh22/wA6X/FSWMb5PMrv8w/Mnn4m08lQG1siaG9m2qK78B0X/Y83yM9RGBqH77J/sI/j+l/pGXGIcvXL/YMg8l/khpmiSDUNUY6lqR3Ms3xKCafYRuX2afCzf8LlBxnIbyb/ANGP0f8AHv8Ac/0Woji57/0f4XpYAG2ZAFcmTeSV4f8AmjLD5Y/MDy/5jkosNyJLOZuwr8MbH/ZTf8CmVRHqI/zv878cDKP3vcMtYoLVbW0urZ4NQVHt3FGWSnEj3rkJYxkFHdat8f8A50eWPL/ku+i1PyTqXp6g0n+80L1KbH4xIh5Iv7PptksePLh57x/pfV/pfpnH/pHhbIwlD/if4v8AS/xR/HrZb/zj1+fASW50nznduLmaQPFcXDnhWgRoTyPCDpyX7K/a58fg5Xf3vdf82ow/0vCPq/EUn1fD/NfQOn+edD1K4FnZX1vPO3RY5FY/8IWyEsZjudv6xH+5YmBAvb5x/wBzfEn+RYOxV2KuxV2Kvlz/AJy68kLFc2nmS3HETn0JyBsGUFoXPuyc1/2C5jx9Mtuvq/zv4v8Aef7JQjv+cePL+gzS3Oj65aJJrtsS/qTfEJY2PJHjD/yqV/1k4v8AzYZYhmHFIyl/DKPFL0/6VZQ4tzf9KN/Q90vfIuiXZDy2cQkAoHReDj/Vki4SL/sWwDDEG48UP6plH/Y/RL/PjJiBXLb+rcP9ymel6cun2yWqPJIqbBpGLMR1+J2+I5cL6ni/pemP+4jGLL8fjhR2SV2KpB5v87aX5StDfatMI0A+FerMfBE+0xyUYcX/ABTOMbeQtf8Amv8AN1ilgH0nQK8WdtnkFN+nxPyU/ZXin87/ALOUy1FenHuf4pfzf+J/zfX/AFV4wPp/034/3vq/qvVvJXkHS/J1oLTSogpNOcpoXc+Lv3/yV+yuVwxcO53kf4v+J/mx/EuJrApFec9UOmaTc3KXMVnIsbcJpqcFamxYH7X/AA3+o32cyAD/AAjj/o/TH/Ol/CyAJ5bvmvT/APnK7XLeyltJ4Irm8DlUuqFU4kkKWjAVeX7SfZ+H7aZZxxPMV/Rif+L9TMmI/t+pmnl/8tvMX5gW0ep+adXY2cp5rBasOJB7ch8I/l4/s5jyy5TtEDCP9n+P89BlIf0HoflX8mPLPloiW0tFknH+7Zfjb/hvh/4XKPA4t5k5P630/wCl/wCK4mnhvnu8v85ecrP8rPMUl35ckjuoL01vNOjJqjgH9/G6BliZv21b/geHHhkwh4e0v7v+Hf1w/wA2cvVD+b/pf618Rwj1fT/D/Oj/AMcWJ5F1v86Gi1vW3t7LSSC0AgVWmpXp6g5Mp/Zf1H+2v+86/s0Tvi9EfD/2yXF6v83ijx/6SMf5s5sZmtgOD+l/O/H+bH+jNX8r6FJ+SWoN+k4Vu9Gu34i/Vf3sJNAEn/4q2/Z/a/4FjCpSrJtl/hl/BP8A4mX49X8EY78/q/hl+Ppe+2F/BqECXVo6ywuKqymoI9jmTIEbFJFMO/Mv8pdK89W3G7HpXaD93Og+If5Lfzp/k5izxb8UfTL/AGMv63/FMaZHBpdhpOlrp7hUsIIREQ5+ERqvCjl/2eP82XDHxDh+tlVvB0/O7y75AtX0Hyd9Y1dmlZog5PpRF/8AdMTcVkkRX+L01X9tv3uWCPhj97Lj4Pp4eHi4P6eXilD/AD4/1eCLMgRHqPL8eqf0/wCl4/8ANeb+dPzc8360rxapcNYxE8TbxgIevR0r63/IzlhGov6AB/S/4/P/AHvp/oshKuW34/nS9X+9S/yt+WPmLzK/PQ4pTC4HK4mqinruCx5f8DmHLPv/AKpL+j6+H/PavErl63sfkf8A5xVtrV/rHmef62woRFHVVrXkeb/ab+X4f+DwEZMn1ej48c/9P/CwNl7DZfl95fsU4QafbAAU3iVj/wAE4ZsI08B/x4yn/upI4B13/rer/dMV/MH8k7Dznd2E08noWdmT6lvGgAkBptyTjw+zx+y3w/Y45DwOH+7EIX9Uoj1/7n1f530fV6vpQIcPKo/1Qz7SNGs9GtksdPiWC3jFFRBQAZkRxiPL/j3+mZgUj8tS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqseRU+0QMaTS/FDsVeVfmqy6zr+h+W2+KNp/rUqdisfTl7fayrJyr+d6WQ5PVctYuxVjv5iJz8u6itK1tZdj/qnIT5JCUfklL6vlDTj4RkfczYYqWD/AJn/AJ46hYaq3l3ylb/W7yEcpmC86EDkUUV4/Cv22b/VycpxxC5f77/eeriZ2Iizv+P6L0f8s/NcnmrQbbVrhVSeVT6ir0DKSp+X82C75MZMqxYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVayhxxO4OAhUPdWENzAbaRQYyKUptt02yEoWK/0qokAAUHQZMBW8KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVL7m4l9URRkKKdT3zW5tTKMuGP+ycmEBVndF8iw3wGZyBp5LffK0vHfzX/KLVNW1H/FXlu9e31SGNQsVSFbiSacq/Dy+zx48WycdTPHt9eP+KP/ABz6VEpDl/pU8/KT80T5uhksNST6trVkeNxCduhp6iD+VsnkgPqhvjl/sWZoix/0i9G6b5QdmDga74SbVyuVND9nLMeXg2P0oItU9Qda5nDJE9WNL8tQ7FXYq7FXYq7FXYqppKsleBBpsaeONUkilTFDsVdirsVdirsVaZQwoehxV85a7+Wuh2/5gaVo2mW4Vave3G9dgeSLv0Tkn2cxfCoVZPF6fV/NRw0Opt6r+af5X2n5gadHp1y/oGKUSLIqgsAKh1WvQMuSljr6eGPw/h/zeFBs8mPflz+Sx8i+YbjUNNkC6XJbiIRszM7PUM0j1+HqMOMyHpO4/nen/YwjFIJ5fj7nrWXpdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVePf85E0uU0XTz0n1GOvjQBv65XJlHZ7DljF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kpbqvl+w1ZDHfwRzKeodQconhjPchiYgsCvPyUhspPrfla9n0qcDZUYtEfnC/wAOSicmPkfEH83L6v8AZ/UyEpDa7/oy9SrBrvnTQaJqljHqkA6y2jcZKeJgf7R/1WyQzx/jjPH/AEo/vYf7H6YsjOJ5gx/q+v8A2P1RZl5f8wQa3AZ4A6Mp4vHKhR0b+V0ccv8AZfZb9nEGJ3iYzH86J4v+kZf1vUj3Jxk0OxV2KuxV2KuxV2Kv/9L1SMiFdhKuxVKvM2gW/mHTrjSbwVguUKNT36Ee6n4sqyR4gryP8lvMV15Z1S4/LbXWBltKvZSnb1Ij8XpqKfsj4v8AkYn7K5KEuONnaQ9Mvx+PS2fUL7vx+P8Ajqv57sLD8t21HzNZs9z5g1lvRtw9GKlqDhEAPsL9r4v5VTKoxIPFMgxh9O3Dw/1vVLjl/vVj3nkE+8jflxb+W/LAs7y2S5ublfUvOYBZi+8gJPLk0aniv83HKTESHFLfj/2Ef4P+Ka6B5sV/IvW4dE1vUPJcUvq2NfrNjU1ojfFJD7NH/L/Mj5mwJMd9yP4v58P4ZNsht31/F/Oi9p1LSLXU4xFexJNGrBwHAIDKao2/dTlc8YmKLURaNy5XYFUoYEhHGJQo60AHU98jGAjyVSvzAIH+tlRBxPPlTjSm9a9sJhxbd6gW+J7rztfflxrt+nkW6NxpErECqlolZ/D9nnHTijft5KEzj9M+Gdef4/zotgPDsae4/lN+Trzsvm/zu41HVbkLLEJDySJSOaHifg5/F8K8eEP7HxZjz4s/1enGPpxxPpl/W4f4f6P8X8bVImfP/Ninfnv88bTTJv0L5aT9KazISqJF8Uan/ix06lf5F/2brmVKIxC57f0f4v8Ajv8AV+v+bBu4eAXL/S/x/j/Zf7pA+XvyZutelGtef5jd3rUIt1P7pB/Kafa/1V4p/r/azElKWbvx4/4Yx+r/AI5/u/50mucjLyH838fj+dxPXbW1itY1ht0EcaigVQAAPYDLoQERQ2Yq+TS7FXYq8g/5yg8ujVPKj3iA+vYypMhAqaV4P9HFuX+xymexB/zf9Mo2efWv/OV9xYafa6aLFrrVljRGYmis3RWAHxMXTi3+tmSJQq5X/wAS2nh5lFSflf5+/MydLjzZdfo/TmowgjO9PD0x+1/xkzHOqnL+6HAP50vT/wAfk1nKTtH0fj/TMxl/5xj8uLbNaWg9IOgVpSgeUnu4d/hTkvw/DH/ssxjhnd8Vn+dLi9P+bGUP9lxNXCen+y4v+KjH/Yo2+/5xq8nz6Z+jYrT05QtFuAx9TlSgdmrxbf4uPHh/k5LwZc7lx/7H/SfTGP8AV9X9JeDr6r9/+9+j/YvIfygi1H8tPOaeW7xeaXb+i4oPf0LmE/a4N+3/ALJcthIS3Ijf08X8UZfzPx9TZE2N/wDj3E+tsvV2KuxV2KuxVhv5teUR5s8t3mljaVk5xn/LT40/Eccpycr/AJvqQ8J8sQX2u6FZ+bNG217y7+4mTvNCnRX/AMpYuUf+XxbAZeGeMbxn/ef8WzJo33/U9+8lfmJpXmy1hns5kFxLHzaAsOa02cMn2vhbMuWMgX/D/OTKFb9P5zKsrYOxVg35g/m1pHk2IrPIJr5to7eP4nZj0DAfYH+tkxChctosxDqeTAfI35Xah5wvR5v8+cndjyt7Q/ZRe3NO3+p/weYkpnPy9GIf7P8AH85gZcX9V7nFEkShIwFVRQAbAAdMujEDYKxD81PL+oa1ok0ejT3EGoRAyQ+hJ6ZZwDxjd/h+Bv5eS5GU5Q9Q/wA6PD4vFH+p/wAT/pZJEqfNmqeS/OMl3Dqf5iWt7facgAZYZFZlA8UiLcV25P8AZ5/z5XLWCfpJOCJ/i4JQh/suGMJf1knJxbG4D+jH0/6X+H/Oe9eXNa8h+Y9O/R9n9VFuECtBKoRlAH2XV+PxL/ks2SGgjVxHFxfxRPFL+t/P/wBMjwe7f+r+OJ5bfeb7f8stSCeTrz9I6fK59SwFW4Hephk/5py2PFjFZKlD+GXFHii2D0ipb/7uKeaFrfmr83TJ9Xul0nS424yLESZ6/wAp/aX/AITBLMR/dj/kpL6USlX0j/Ol+Px/OeoeS/yu0fynEfqsfq3LV5zygNI1evxU+Ff8lf8AZcsx/A4t5/vJH+d9P+bH/ffU0mN7ndIr7yfqHku7fWPKQ9Sxlblc6d0U+Mtn/vuX/iv7Df8AC5OEji2l68X8P8WXF/xUPx/VkJVsfp/2UP6v/Es2sL2w806fzCCW3mBV45F3B/ajkQ/Zdf2lyc4iYrYhSPi80vIZ/wAn5HvLQ+t5bmfk8Bb95Ax6mCv20/4rw4yR6ZWY/wAOT+Z/Rn/xTOJvY/6b+b/WS7zT/wA5T6VaAQaBBJfXT0C1HFan/hm/2K5eRCP1G/6v/FJoDnv/AFWA+Y7nVPMMAuvP2pm0tGPNNOgAMpB6D0xsg/kadvh/kynxZzHorDj/ANUl/H/Vj9eX/N4Ypsnlwwj/ADv+O/VP/cp35W8k6r5jjSHyvp48u6Qft3ch5XUw/wAh2HqKrfyrxT/LbMS4A/uwc+Qf5TJw+FH+rD6Yy/qer+dwNIkB9PrP+qS/h/qfzf8AM/2D1byl+SPlzy+vMwC7ujQtPcfGxPWo5fCu/wDLkzh4t5njP+lj/pP+K4kGN8/Uz6GFIVCRgKo6ACg+7L4xEdgyVMmrRIAqcVQ1nqNteBjbSJKFPFuDA0PgePTJSgY8wR/WZSiY89kVkWLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirzfz9+Y1xbX0flny4BLrE/UkVWJf53/yv8nGUhAWd/5sf5zMDh3P+bFBH8lLjUz9Z13Vrua5I6xtwVT/AJAXKePMeox/0Yhjxy7+H+qo6V+lvI/mCz0Se6k1DTNQDKhl3eNlH837S/62WRyyO06v+GUY8LLiJG/+m+l63kmDxu8vxY/mfE2pkJHNZlLZjsCanktf5sriOM/1GY3+D2TLGDsVQmqWi3trNbOKiRGU/SKZCQsK8K8j+fD5U8r3ulH/AI6VrO0FvEftMzninw9wrcmxhL08XQNgHXuZn+Xf5eReTdJuNR1IrJqlyjy3M21RUFygf7XH/jbKIwMzxS6/T/Qj/wAU11ZW/wDOOycfKySBSqSzzOlf5WPwkf5OXRPxSXp+WIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqHgvoZ5HijYF4zRh4YqiMVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirHNf/MHQdBnFnqt9BbTsOQSRwpp40OWRxk7sxjMu7/OlGP+6U4vzM8syx+qmq2RWlf96I/1csl4E+dSr+dXp/030rwH8fT/AKZKr/8AOTydC3CXU4OS71Ulh96KwzEzaUz6Db+K4/8AFNwxSj3f6aP60quP+ciPJ0WyXhlP+QjH+GUx0xHMgf1ijgHfH5qLf85IeT1AP1l6H/ittvn4Yfysh1h/p4rwAdY/N6HpeqWusWiX1hIJbeUBkddwQcxJwMdu5iRReNGzFr+bqGAemJbMtIR0c0PXJw+j/OW3uQrXKQxbpkuFDeEBXACuSiBxd6qubNg7FXYq7FXYq7FVkhopINPfFXgP5U/mrpmjxazqHmO8RJXvnIHdgtUX041/yVyyEDPuAHn6INvAS9Y8j/mPo/nW3e60aX1FiPFww4sPmuCcOHuP9VgY08q85f8AOT4stSk0zy5YtqH1ckSyVIHw/b4BVb/gmxkYQ+o82R4Y82d/lV+cmm+f4WWFWt76IfvIH6gfzIf21xlEc47j/ZIMeo3eh9MgweE/mX/zk/ZeWtQ/RmkQreyRNSZyaKCOqJx+03+V9nLajH6r/wA3+H+u28IHN6z5L8123mvS4NYs6iKda0PUHwOVkUwkKTHUdUt9NhNxeOI4wQOR2FSaAYgWgRt5P5DkGufmHrOqfajs4ktoz+LfrbKuqS9kyxi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8f/O9hJrPly2P7V8G99gcrkyD2DLGLsVdirsVdirsVdirsVdirsVdirsVdirsVdirq9sVdirVMjSt5JXYq7FXYq7FXYq7FX//T9UjIhXYVdhV2KvOvzW/KaLzmkV7ZS/U9YtGDQXArtQ14vTqv/EcxyJRPFDn/ABRl6Yz/AN0tkbhKPJX5Q6sNVj8w+dtQ/SV9b1+rotRHGT+2Fog5f7BcJlPJ9QjCI/hj/H/X9P8AxSTIy58I/q/9IxeuEA7ZbSHyt+bNvb/l75/sfMFh+6jlYPMg2UhjxlI9mU/HlWIcJ4en+5/H8LOO3xfRmredNH0i1W+v7qKGCRQys7AVBHIcR9o7ZlRxmX49KiBLCT+eUOqO1v5T0671eVR9pQIYvpmn4/8AEMrnkx4/ql/m4Yy1E/8AYfw/0uJB4Y8zv/NiJS/03/Fep1te/mTrT1NvY6Rbn/fjGeUfQh9Jv+Fyv8yP4ITn/SzS8KH+kj+9j/nQTxjpG/8Ahkv9zwf75in5l3XmHy1As2qeZeE7f3cFvAFdz4KiH7P+U2XRyZKvhxQj/S4p/wCzl6kgyr+AR/nSH/HmLp5B/Mzzzowl1C9K27ElbaaqO6129Qr05L/NlEtZKX0x9P8APx+j/Sx+tj45PIR/rR9HEmw84z/lppkWm+Z/L1vHp7MFLQOknIj9p0fdn/a+Jsrx48OWwRlhL+dkjLh/5W+mX+lZVA9DH/Zx/wBOhNO846t+dOqPpOnXQ0bQ7cCsasFnlWn++67r/k/3Sft88ypSMBWIX/tn8MP9zL/ff0oMrIHp/wA6X49UHuPkn8utH8m24t9KhAeg5ytQyOR3d6f8KvFcxo4ADxH1z/nS/wB7H+D/ADf87iaAGVZkpdiqU6j5p0vTf97LqGHt8bgfxyyOKUuQLZHHKXIJPd/mv5WtlrJqlqPlIpP3A1yXgyHMV/W9H+6WOIny/rGMP906D81/K06hk1O2o2w5OF/4nxyPhnkK/wA2UZ/7mSThI/m/5s4S/wBzJX8zJb+atDvNP06eKU3EDoGVg4BYfDXgcoyxMRy/3rCiN3z5/wA49fl/BYXUevXqi5kW5ktHVlr6Lr/cyr/rMOP+RmOTxH1fSfp/rf0kEXzfVWZSHYVdiqWTeXLCa/j1eWFWvYkKJIR8QVjUqMq8MXaKTPLUuxV2KuxV2KuIrscVfPkJH5afmA8cq8dI1z7P8quT3H2ft/8AE8qxDnE9PpZR32Yb+cfkO/8Ayz1tPN3l12S2mlJovRGO7RuB9qOTf/iGRxTOM8J/zf6Uf5iISo09D8qf85T6FeaabjWVktbyIDlGq8g/vC1VX/Yuy8f8rM3gjLcGI/rfw/6Xi4v81s4QeRr+shrj87tT/MNm0b8v7WWNmAEt3PRfSU7EhAWWvvzZv8jKp5I4uX72f8MYiXD/ALL/AH3AxNR/pf7lFx+TNA/Ki3j1zW459U1KRvjn4GQg9S/H7KKv832sxeEZDeaURf0x/g/48wA4j6jT1Xy15v0vzLALjSrhJ0oCQp3Ff5l6rmZKBiylEhB+dn8wx26SeWFglnVqvHNUcl8EetFb/Wyo5ODnEzH9E8MkA10v/YsNh/PaPRnWz87WU2kTtUB6epC1O6SJ8X/CtlmMwy/SaP8AqeQShP8A4n/TcLMAT5bf0Zen/Zf9IpfdfnxdeYZXsPImmy6g1eP1mQFYQfHf9n/WZP8AVyGSePHtI+JP/U4/j/e8P9NB4Y/0z/Nj+P8Aif6yTf8AQtl55kmk1fzReiO+lH2bVAqqfdqfF/wK5ixM/wCARw/0fV/xX/FNfEelQW+WbW6/KS4W016xjudMZjw1CJAXSv8Av4faxgMczWQcGX+dL+6kyFHntP8AnfwyZreeTLfUpf8AFXka6jt72QfFx3hmHXjMi9G/ysu4JYD6d4n6scv95L+BaMNv9j/xL0PTGuWtozeqq3BUcwhqobvxJ/Zyd35f0ZItKfM/n7RPLCc9Yu47cnopNWPyjTk//C5bHHKQvp/Ol6Y/7JmIE7vJvMX/ADkWtwrQ+ULcNUkvc3NI41HTmik8nP8AnwyIEMew/eS/m4/p4v6cv+kWQiB/T/q/T/pv+kXhvnTzffeYpfRvbyTU7okgLGCIlPhGn7X/AAORnkP8XDAfzY/75ZSrnwj+jFlv5Z/kj5tumW5EaadG/WeUAyAf8VofiVv8rMQZeL6Rx/0pf3X/AB9pE+4X/Sk978l/kjonlz9/Mn1++J5Ge4HI18VVuQX/AFvtZI4zk3yHj/o7xh/x/wDzvT/RU+rnuivN35y+WPKkrWmo3Y+tL1hiUu49iE+FT/rMuZ8cW1kxhH+kf97Hin/sWwQvc1H+t/x3iky7StSi1O1jvYOXpzKHXkKGh6VU9MpsHlv/AEosKRuFXYqgdZ0wanZzWLO0YmQpzQ0ZailVbxyJvpt/SW6Yv+V/5Z2vkGyksrWVpzNIZGdwAT/KKL/LkICQ+rf+rxf8VJAvrv8Aj3yZtlqXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqo3bOsLtHu4UlfnTbASrx//nH/AE5LptR1q+HLVXuXSQt1UA7KMqA4jxc/5qZb7vZsuQ8x1dm1fz9Z2qGsenQNK9P5n+xXK5Hdl0enZYxYf+Yv5cWPnWz9C5rHcxVaCZdmRuxB8PbKZxN8UdpD/Zf0ZIpi/kDzzqGjXq+T/N216BS3uCdplHSp/wB+ZdCfijukPqiz+rd6xixdir5181WEPlf8xo9f1OFv0ZOQFlYEKJStOQ8eOY8QJHg/zuH/AKSSN9mY/wDOQHmK4i0CPT9KblPqkghTiakod24/6y/tZkSlwCz0ZAUzryJoR0LRLPTH+1BEqn59W/HK4cmCf5YrsVdirsVdgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7AriaYCaVoEHpkRMFW8sV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVZLKsSl3NFUEn5DriqW+XNXi1izTUYEKJNUivUitK/7LIADokhNcmh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvL/zG/IHRfPOox6vePLFOoCycCKOq9F+L7H+suY0oS/hNfDi4f6rGQJ5Gnnfliy/KC0u59MuYTHd2rlGa+5gMQeqfG0dP9ZVbJjR8Y+vxP6svC4f9ji4v9NNmMHF1v/P8L/qlF6LD5f8Ay5tlEsaaYFArUNH/AFzEloJDn4pH/JSf+ybDgJG4/wBN/wAUg778y/y90tCkRt5mGwjgiDtXwCqMR2eI/VUP6Uj/AMeXwRHnUfiltpqF55uYwaHoUNpYSij3V3EoJBHVIacnykxwx2jeaX9HijCH+f8A8QxqHQcf+wj/AMU9T8taHDodhFp1sFVIlp8IoK9yFq1N8MVeW6ZEdV/NW6uVoU0+zVCR4uOhyzlH3yZF7PkOTF2KtDAFaIPbEA2lXGbVrdhV2KuxV2KuxViH5reak8seXL3U3IDrEyR+7sOKD/jbDFIfOf8Azjt+SFp5vhfzJ5g5SQeqRFF0VyD8buf2l5fDxzGnczQNR/i4fqYyuT3mz8m+XvJ4v7XRAlvfX0DuIg+5orBfTQ/ZXl/Lk4YTGJO8gP538LKMCBfQPJvyO85eWvJHl241HUpVOqzzyB4h8UrcSVRFT7XFv+ByyODi9Uq4f50uH/OZCHU7f0mWflJ5FvL7XZ/Pmo2400XClYLVBxPFv92TAftN/wANmPAi/Rti/wB1/V/ofiLXYP0/Syb/AJyB81y+WvKlzPbErPORAjDahetT/wACGzJEqZxNPCYtJ8t+UfK7QmmpeZ9WgFEjpKY+XxfDx5cPh/2b5TLF/Hk9A/hjL0f5yDD+KW381T/5x9/MS08mwXkl+8095Iwigs4wSSRuTT7K/F8OXxNi5EDGGVg8zT6B8t6bqOvcfMHmtRCkdZLezG6xgCvqTfzzU/4DKTLxeXpx/wCyy/0pf0P6DDivl/0kkn/OPMZurfVNZPS9vpGU+y/BhHNJZJbfnR5Ulklgk1CKGWF2RllPA1U0PHl9pf5eOZPhE8q/00f982DGT/N/00Y/7osk8v8AmOx8wWovtMk9a3YkBwCAabGnMLyyoittv80iX+5ayHa/5gt9Eg+tXYf0B9pkUsFH8z8dwv8AlYNupEf6yhW0fWrPWbdbzT5Vngfo6GoOTlEx2KmNI/IodirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeOfnHGZfNflqNTQ/WHP3DKjzZB6R5q836Z5WtDfavMsMI2FepPgi/aY/wCrl8YcXJYxt5q//OQU+oEf4e0K/v0/m48FI7MGpJt/rLkDmwxNGfF/wuPH/upQ/wBipMB1uv5o4v8Aj3+wXS/m95ytl9e58qXHod+E4Zqf6ix8v+FyA1OH/bI/0pYpxj/s4xj/ALNgMkD/AD7/AKsv+J/3ya+Wvz98v6rMtjqHq6XfnYw3alDXw5n4f+C45kRjHILxyjlH9H6vx/VlJsEQfpIl/uvx/nPSo5FkUOhBUjYjfK2JYr54/NDQ/JaqdXn4SP8AYjUFnP8AsF3yccdi9oj+dJMY3uh/IP5t6H53aSLS5GE8W7RSKVan8wU/aX/VxlEDcETH86KZRrkbYR5P17UfO/nq9uluZYNL0f8AdJDGaJKSSpMwbr05fY/l+JcrOU/THhr+LiHFKX9VMiQKH+d/Se24Wt2KuxVgH5ifnDp3kq6t9Pnhmuru4UuI4FDMEFayFSV/lw+kC5HgZgDmdmY6NrFvrFnFqFkwkgnUOjeIIxIpiRSOwIdirGPL2ty319qZmYC2tZRCnanFQZCT/rHIg2aZ+Se2OoW98nq2siypUjkhBFR8smYkc0SiY80VgYuxV2KuxV2KuxV2KuxV/9T1TgV2FXYq7FXYq7FXYFeCf85E2cPnR4fK+jwm51qI+ryWnGJP2hM/bl/LlGWoeo/6WPqnJJFC03/Kn8jrLT7S21PzDW/1QIKeqxdIx2jjRvh+HIkSy7yJ4f4cf8P+ciVnn/pXrbGCwhLHhDCg3OyqAPwAy7HiA2iB/mhIHQPIPMf53XGs3jeXvIMBvr0ni12f7mI9C3KnF+P832P9bLMk4Yvq9cz9OOP4/H85mQIc9z/N/wCK/H+cnvkb8noNKuDrXmCU6nrUlC00u6ofCFD9kZjyjLLvPp9OOP0R/wCKaiTLn/pf4YpR+YH54yWd+3lrylbHUdW6My7pGf8AKp1K/wDA5kSlHELl/mxbNo8/9KgvI/5G3eoXX+IPzCl+v37GqQE1jj70I+y3+r9jMacp5+d44fzY+ni/4n/dsZSM+fL+ayzzn+SOg+ZeM6xmxvox+7uLaiMCPslgvwvx/wCC/wArBHEcRvGfDP8AsP8AS/8AE/5zCI4d4+j+qkVp591z8v5I9O88r9Y08kJFqcQJHsLuP9h/8r/iWZMMsch4Zfucv/SrL/Ul/D/V/wBy2giXP0S/2Ev+JZZ5s/NDTdDt4ntj9eurmn1eCEhmkr0YceVE/wArJmPBvP0fj+FPBW8vSxP/AAv5183Vl1i7GmWzUKwQHcCv2ZGG5bjmN+YnL+7HB/Sl9aPEr6fT/u0wsv8AnHny1E/q3SSXMp3ZpHJqfH+b/hsrOKc/qlI/j+l6f9g1mz1Ke2/5Q+VoN106JjT9urfg5YY/lYnnxH/OMP8ApnwMZQBN/wC5Mo/7lc/5Q+VHry0u2PLb+7H4fy/7HIjSx78n/K3L/wAWvD7/APTS/wCKY/e/kBoqN9Y0eW50647NFKxHy4SFlplgjkj9Mj/Vl6of8X/smyMjHkTt/nf7p4LqHmHzD+THmV9OaY3VlPMJ2FKCUN3/ANf/AFf28sxzEhwzr+l/R/pQZRnfOv8ANfVPk3zxpnm21F3pcwemzp0ZD/K6dVOXmNb9D9MkGNf8UyLIsXYq7FXYq7FXYq7FXYq7FXmv57+RG80aC0lrtfWR9aFh1+Hd1H+xyifp9X83/cryeZap+YGs+fPJ8WlafpUl/O6iG4kG4SRDQGi/tcaN8XHJZskBz4t/VHhDMkDf1H+qkX5T/k4nnn14fNNy8TadJ6TWcSqjA/zSFR+19nlw5t/PlJjKW8OGET/FXFKf/Ef5/F/Va5WfL4er8f1uNX84flJrn5V3f+JfKcjSWUO7fzqtd45UHwyp/lZPHlljNS3B/ij9Mv60f4Jf7FlCRj5vSdI/5yT8r6npqS3xf604CvbCMuxam/BfssrZlzxRIsmPB/SZygD1jX9J55quqXV5qH6S/L/R72wva/E4XjG4r/uyFhx+LMOOXHhPplxxl/k64of8cYxnGGwN/wBHh9Kav+Yvn+/1CLQdUe30KWUALNIho58I3blHyb+XLxqBL+7jc/5sj/vfT/v2QmD9I/034/4tnGk/84/adNcfpLzRcy6zeEbmY0j/ANjGv7P+Ty4f5OUzjky/XKv6OP0/7L/iYwapGUvqP+bH0/j/AGLFvPv6K/KS4Op+Wb5LSY0Mmlkl0kB/aVOXKFv8r/gctxQnDnU8R/nH97H+pL6p/wCl/rTbYAgd8P5sj6v8z+J6T5B/NK080xxxTxSWV66BxFINnH80En2ZV/1fiywcMt4m6+qP8cP60f8AfMSB0/48zO7jhkiZLkK0RHxBqcae9dsrlAS2O7GreIav5t8oeQdWa50GSWa8cFWsbQ8o2Y9Gdfsoy/5OSjiOIeqXDi/my9cv83+azEeHmaj/ADfq/wBL/NY55s/MzzVqsLPqE8XlvTSOleVy4PQRxj99y/1ViX/LwjNY/dR4v9vy+nF/xP8ApY5ZM4y/miv9sl9P+b/x2M2DeX/Lt3rMjXHlfSJtQbet5qB5CvdxGxW3/wBi3rvmNkyxJ9cp55fzY8UYf53Dx5f9Plxf1WmUxe/Fk/3P+x/38/8AMZD+W35P6j571CefzitzbwW6hY0CCJG3IMaCi8VXj+yuRE+PbGRAfxcMfxHi/rcaDK+W39UfiL6E8rfljoHlZKaVaRo4/bI5Maf5bfFhjgjzNz/rf8T9KOF5xc/mJ+YyXshi0VTZCYRqCG5ca051X7S8f2v2cu/N4uVS/rf0v9K2ice6X4/zXuEDM0atIOLEAkeBpvljBjp/LzQTqja69lE2oNQmVhyNR+0Fb4Q3+Uq8sxjgjI2bP9G5cH+l/wCKYmIJ/bL/AHP0slApsOmZADJvCrsVdiqX61rlnots99qMqwW8YqzsaD+0/wCSuERtlGNoLyl5usvNWnrqumFjbuWVS68SeJ4k08MZUDQIn/V/49wrIV/x1PcDF2KuxV2KqLTojBGIDN0FdzTwwgFNFWwIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVQVlo9pYyST20SxyTHlIyihY+JyuOMR5IV7m4S3jeeU0RAWJ9hucsSN3nX5Pwyak9/5ouBRtQnIjr/AL7Q8Up/k5UNz7vSmT0vLUOxV5n+fHlb9KaE+p2y/wCn6cRPE4+1RTVxX+Xj8WUS9J4v82X9RbrdMfy8/Mq182qkFkDI0UEbzv8Asq7DaP3f+bL5UPj/ALlnIUzvFgk3mnytY+ZrF9N1JOcL+GzKezIf2WXKpw4v97JSLYZ5Q/IvTPLl+mpG4uLx4V4wLOwKxj/ICqvxZDhyT+uXHGP0xiJQ/wBNxTn/ALHgRcjzN1+O96ZmQl2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVphXplWSJkEhYiU65jYsBid0kqmZzF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVjf5jX7ad5d1C6Q0ZLeQg+5FMB2SFbyLai20KxhHRYI/1A4IjZSn2SQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqxbXfy08ua+5m1PT7eaZurlAHPzkHx/8NmJLTRJscUD/RnKP+xjLhYGAP8Ax30/7ljUf/OPnk22k9b6irVps7My/wDAs3HMTLCcecpkf1uFsEb/AJ3zkyjRvIeh6QANPsoIuNaFUFfvplIwg7nf+seNeABP1HHYdMtApk7Yb47JeUfk1ZC51XXdfA+G5vXiQ/5MZp/xI5OZ5DuiyL1YEk0yq7QQ0QT32w2VboemJNq5lJFBjw2oKrEKKAa/Tm0x8msr8sQ7FXYq7FXYqxX8xPIFl550z9EaizpF6iyVQgGq1237MGK5VMEj0nh/2Spr5b8uWXl2xi0vTUEVtCvFV/iT+0x8cMI8I/3y8mLfmP8AlDp/neSG8lmltL23BVJoTRuJNSmRIkDcTwn/AE0UG+mzz28/5xi/QlxDq/lK6Av4CGK3ah0c/tHp8LN/m+UkTj9VZ4/zf7r/AH3D/pmIsc6n/RZdafmB5xtj9X1Dy5JJMo+3bzoUPvV+Kjl/Ly+HMn8xh6+ND+jHDLL/ALOPBxf6Vs44Xvxj+rDxf9l6Ex1Ly7qvnexOn+Y7W3s7N2VmjWQzyMB8XHmFgjt3Xp6ier/kcftNXOXifSJx/pZOGP8AnRhiyT/0uWX9aEkEg9P9N/uo8Ev91KSP8nflP5d8oFpNJtVSV+rsS7U8A78m4/5ORjh6yJyH+l/xMfSx4fimmneR9F025e/s7OGK5kJZpFQciT1NcRgiDf8Auv4V4A7z3eNZ6BqNyleUdrMw+YRsvJpmGP8A5FWQtfJ+neMkXqH/AGZL4IqUwuPys8sXN2+o3GmW0tzKeTu8YYk/zUb4eXyXKDpon+f/AFeOcYf6WMuFqEBz/TLh/wBJ9DKLa2jtYxDCoSNRQKoAA+QGXxgIihszGy6SNZFKOAVYEEHwPXCReyXhl1Hc/lH5jku7aGabyzqILvHCpf0Zq/sovRf+av8AJyOPII+iZr/U5S/3CxkB6ZbfzZM2g/M2+1GITaVol9OhI+KQJECD3X1nVv8AhcTmxDlI5P8AhUMmXh/renh/2TLih3yP9WEpf7rgQ+p+f/Nqn09O8tTOxWvKa5hVQfCiPJy/4JcRqcX+3H+j4M4f7OX/ABK8UP6Z/wA3h/2fqi8/806h+b93cQ39pZx2sULCtvDIrc+59WrtzX9n7WSOtjHYRnwH+KUeOX+xjxR/zYI8UDYRl/ncMvx/pXvej3E9zZwz3kfpXDxqzp14sRV1/wBi2ESB3ClEXNzHbRtNMwSNRVmYgAfMnCBagW3FMkyCSMhkYVBG4pipCrih2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5B+ZMobz95agH2j6zb+AVsqlz/ANL/ALpmBsnH5t/lvP5qNnf2BjN3p0hkSKYVjk6fu38Ps5DJf9eP8Ub4f9KwuvP+iq2f5ow6cBa+ZLObSpFoORQvAT/xXPEGTj/rccsxnGfTEiH+15OHFL/Zen/ZpHCdga/oy9H/ABzh/wA5lmm+aNK1NDJY3cE6DqY5FanzofhzIOGQ6S/0v1M/Dl3H5PLPzX/Mj8vnT6hrITUZzUAW6h2U+IlHwq3+q3LKZaMfUf3cv50fTP8A2P8AuZsfCHM+n/dPNvJf513vki4e3+qXk/loGsZnQiSIH+WSnEpy/ZbDDNCXplKMz/Dkj/uZx4mXFE7Xf9L/AIpEzw6lqPmdvzB0yxHmDSLgH016tGKBeHpnlxkh3Xiy5j5ZxEuHLYgP4o/Rw/w/8fiiRANSsx/nR/mpD5u/Me70vzXYeYrbRptNnKGJ4GXj64Pw/AAPi+2n7P8ALhxSw7+HL93/ABfT6f8AZf8AEqDCP08v4tox/wB8t/JHzzrflu71Sax0afUZppFEix1Vomq5pIojdvi+z+z9nJjLjjvInf6eEcXF/sv+KQZAc7P9WP8A0k9WH5t/mDdVNp5ZKr/xa5Bp/sjF/wARw/m8A/1U/wBUS4f+mX++UZMZ/n/j/Mior+fvmDRtQtLTzZo4sYLuQRLIGJoSQterfY5cm/ycthnxZfp4xX87/pGCY8J73vINdxgYPBNMkTXPzivF2aOwsePjvSJX/wCGk45XIXsd2T2rRdEtNFtVsdPj9K3SpVakgVPJqcixpywxjQpgmOTS0xCip6Yq8v8Ay602Pzd5XvGumZE1a5u2ZkNCAZWRSh/1Uyvffh2/pMie5Mfyu/KiL8vvrMNndST2twVZY5P2GFQ5Brvz/wBXIwM+UiJfzf8ApH/jzEXW+70DLldirsVdirsVdirsVdir/9X1TgV2FXYq7FXYq7ArHfPN1qEOlTR6L/x0ZF4w16BiQObn9kKP2v5srllGPc7/ANH+KS3SU/lj5DHk7TWN9L6+ozky3U7HdmO5HI/sLgiDI8Uvql/sY/zV3Js8yknm/wDPrStKl/Rmho2rao3wrDb/ABAHtzdfh6/sr8WZMoxxC5ng/o/xNhiI/Vt/R/iY7B+WPmr8wnW88+XjWdgTUadanjt29ZwW3/4Jv9XMY55z2gPBx/zpf3sv83/iuH+pJgch5D0D/ZS/H4i9c8t+VNN8t2y2OkwJbwr2Udf9ZvtMf8pshjwiJv6pfzpfUxApin5u6X5t1O0Sz8pyxQrKQszsSrqK9UP2eNPtftZacxx8o8d/xfzf83/fMxLh81X8p/yotPIVmUDfWL+c8p7hvtMfAeCZCESTxy+o/wCxYDvLP8vS7FWOfmBf6fp+hXl3rCLJZxxMXRujV+FU/wBkxC5CWMTFH/pFIjxbPB/yS0afydr9qurxKIdbtzLZs1axEHn9WHP7J4Ny4/6uVRIy8/8AJ/TxfxQ/nsh6vh9P9R9N5kMEMb+AXH1MuPXK8+Fd+NePKnhyxTSJwIeTRfnsL3zi3k3TdPknELtHNPzA4lNpH9OjfArfDyZ15YTKAG5Nn+bH+L+b/wAV/MZ7U9ZxYMN87/lhpXnG4s7zUVPq2UgkQjuAa+m/itcx547Nj0/zv6UUEMH/ADR0JvIV0nnzQB6ao6pfQLsjxsaeqQP2lbjksf7o1/kp/wAP82X9FlA8O38Jev6ZqEWo20V5AeUUyB1Psw5DLyKUikXgQ7FXYq7FXYq7FXYq7FWiAdj0wEK+fPI94PIH5h3vlmUhLHVD6sFTsGI5oB/rLyj/ANZMhiG3D3M47iu5kfmv8jL6+1efW/L2sXGlzXZBnCVof9Uo8Rp/ktlYllxH0DHO/wDVP4f9hl4v9g18Uhyr/O/Ev96hov8AnHm51BgPM+uXupQrSkZYqPevJ5T/AMDxyZyZpiiYY7+rwx/x2EP9PCSTKVVfD/VH4/3KL1v/AJxw0T93d+XeWnahbkNHIpLLUdOaN1ykY5Q3ieP+jk9UZfj/AErEAx5f7L1Jv5W/MK8sJxonnKJbS+2EUy/3Mw6VV/so/L9nMjGY5PpHBIfVj+mX+Z/Pi2Cpctv6P/Esu8x6Lpet2httVSOSBtxzpsf5kf8AZP8AlLgnh4+/iHKUfrix4bYC+oXv5dskZv7e+0diFWO6nSKeIE0/dyv8Nwij9luL5ZDjP1xlP/bsY/6awlw/6aMm0Ay5iR/pemP+m4uCP+ySLzn5y/KrVLqS61X07y7dQjMkbsaAUWj0VK/sqytkJaQSNmXB/VyS/wBzi4v9kw8GzueH/Ol/vOKLAND/ADXbyrLLF5YtrnUNJjRmiF0m9ud/sSLy/dcf2WbAJQBqZjkmPplH0yl/W/nqJROx9dfzfrS3XPzF1DzCFk8zaoRbOARaWPVgezMOKj/ZZbLJPpw4I/zpeqf++bCT/Rx/7Kad+SfJvmPXYW/wvaR6LYk7XMwJmYf8ZGDN/wAi1TMLjiDcQc8/9Vl6of6Wfo/3c2kTA+nf+lL8cP8Au3qfln/nHbQbBxeaz6mqXxozSTsSpb/jH+0P+MnPJHHPJ9cj/Vj6Y/6b6v8AS8DE3Ln+P989St7eO3QRQqEjUUAAoAB4AZfGAiKGyVYCmSAS7CrsVdirsVdirsVdirsVQWp6Va6pA1pfxJPA9KpIoZTTfdW+HKpwExR/4n/ZR9S81a0tIrSJYLdFjiQUVVAAA9gMlGAiKGyFfJpdirsVdiqQaj5NsdQ1a11ycMbqzVli+IhRy+0SnRmysg3sSP6P8Mv98jf/AI6n+WJdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirzn86dZlj0+HQbE/6bq0q2606hCf30n+xXIylwi2cdt2U2aaf5Q0mKCaVILW1jC83IUUA6792w4sZqubERJY15c886h5wvxLosPpaDCTzuZlIac7jjap2Tl9qRsByRB4Y/vJfxS/gh/xUv8AYpJA2HqP8Uv4I/1f50v9i9CyTFTliWVTG4BVgQQehB64CLQlfl7ynpnl2N4tJgS3SVi7BBSpPc5VDGIcr/zvUojScZcl2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVAa5pMWsWM+nXH91cRtG3jRgV291yExYpWMaTpPmPSLC20m3kt5RAgQ3EgYGi/Cn7tT9rhgGQ1vH1f1/R/W+ni/zU8Xlfx9P/FMk0WxubOIi9nNzMxqWoFA9kRfsrkgSedf5v49S2mWSQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq0ygihyucBIUUhQKmM7fZzXTgcZ8mzm2DXIAocfA4nZUu0PQrTRLYWVggjhDMwG53Yl3JJ7szcsiI3zXkmAxAS4Hlli8mxgAQ4mm+N0qqhqKnNnCXELYFdliHYq7FXYqtYkDbrkTsra9N+uMTat5JXYq7FXYq7FXYq7FUHq+mx6nZz2E/93cRvE3ycFG/A5CQsK8z/KDW7jQQvkPW45Ev7MyC3l4kxzQgl0kSSnFeI+Hi38v8/wAORhkjIcwJR9Msf8XF/R/nfiS8QP8AW/mvWMtV2KuxVoivXIkA81bwq7CrsVdiqR+c/LMPmjSLrRblisd1GU5DqD9pHH+q4VqZCV1sqB/LXyhJ5P0K20Sadrl4A1ZG/wApi4Vf8lA3FcMTKW8lsnmyrJK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8I/OPTbzUvPfl+2064+q3DQ3HCWgPAhWNaf5X2cqMjHcUeX1fSkEj/jyh5l078zPKtjPqh1e3uba2jaRjIlDRRWlKbtkxq58jjh/Wif+PMhlI24Yn+l+JPN7f8A5yt842saNdW1rJG3RpInUMK8a1Eir9rLDPHPaUb/AJ0Yn/ezjNeME/8AE/ibDfPnn3WPOs0dsdNtYLhqycrGGskgNdzIhlkddv2W/m55RePDvESwfzuKUoR/0svCj/ncP9VjtEbDg/2P/E/6Zjui6fFZ6nCdfW5tLZTV2WM81I+wQkv2viH7X+VkYzGT6JQ/rfXH/O4JMYzEuRH+6/3z3/Vvz+gh0mWtzZ6tC4KNbyQtFIQQRQqn7vj/AJWXHBHlKMOH/VMM/wDezjx8TbKH9Q/zpRMv9zNgP5H/AJ1L5BnuFvonbSb1iypGQTG4OxHI/Z9M8X/m+HJwAPpJ4a/il/x1I32O381d+d35w2fnbWNMuNNSWCOxbcygA8i6tyoD9nimAxAPpIn/AFfT/u4o2jy9T1HyBf2ugfmfqNrHKj2msxCaB0IKsxpL8JX4W+L11/66yiESPSduA/T/ANJJMSNjtT6F+eWRa3zH+ZU7/mV+Ylh5f00+rY6WQZ2G6g19Sdqj4fshI/8AXyOb0iv4pfj/AI8yJoU+nemWMHzn+Sd6mofmZ5luqgn94i8QaELKqVr/ADfB/sshTIvozJsXYqkvnLUTpmi318v2oLaVx81RmGRkaTHmk35O2Qs/KWlxU4k2yOQfF/3hP+yL8sjHl81LM8sQ7FXYq7FXYq7FXYq7FXYq/wD/1vVOBXYVdirsVdirFfN/nrSNBtJPreoQWk5UhC5DFWIPFjEvxsFPxfZyzwp1YH9Xi9EZf50mwYz3f6b0/j/NeXad+fSrGLDy1aXWu3zV5T8BHGzVJJ+H4ePH/UzHlOGLfLKPFt6cfFL0/wBDj4pKeEfUb/ox/wCPIv8A5V15x8/Ul83Xx06yI/3jtNiRXcSP/lLkRqZy2xjwY/zpfXL+rFj4h/h9H+7ek+Tvy70XyhB6Gj2yxk/acirsfF5D8WQhgANm5y/nS/3v81gBTJ8yEuBruMKuxV2KuwK7FXkP5syHzN5g0nyVGSYXc3t4F3pHGf3aP/Ksjcl+L/J/ycpyzqP9b0/8Uy5Biv8Azk7fXOjXeha3DyS0sbmjcNjUlX+D/nlG65HHME1y27kxNF9A2V0l3DHcQnlHKodT4hhyX8MyWCUar5fku9VsNUikCC0Eyuvd1kUKFr/kuitlRBB26/V/vU2U+y1DwD8qtJ9D80fMkrEBlUsF7kSuslf+B4/8LlMfutkXvruEBZjQDLmKhY3sN/BHd2rCSGZQ6MOhVhyVh/rLhIo0mks86aSuraJfWDrz9a3kUKe54nh/w+UzFj8fwoYZ/wA43ay2qeS7MyfbtzJAe+yMeH/JMplgKS9PwodirsVdirsVdiqUa95q0zy/D9Y1a5jtkp1dgCf9VftP/sVyUYGXL/jv+mZxgZMMT/nIbycwB+uUr4oRk/C84f6b9jZ4PnH/AGX/ABLJtB/MLQteH+428hlb+UMAf+BOA4pe/wDqtZxkPEP+cttGktpdM8yWgIkjYxNIP2Sp9aD6f73Ma+GfvH+5RE0Xsf5V+dYvOXl+11VWUzlAk4X9mVRSQU/4Zf8AIZcvkFky5mCjkTQDIsXmPnf8+dF0Ai004/pPUHJVYbc8hUfzuvL/AIXllsoiAufoH+y/47/nNnBw/V6f90xK8tfzF/MSAw3EFtpenSjpKvJ6U2IryZW/ysw5Z4y+iEp/0pen/SS9LDxB0F/0pf7qKpB/zjlEtqG80azczxRL9kOVRQB2LlvhX/VyXFnnsCIf1Y8cv876f98olOW1/wCbH+Ji+pr+U3leNypk1a7jFFiWR35HsPUThDx/n+Jv9RsnLSzO+SZ/q3H/AHHqyw/00f6zI4v5x+3/AIn1Rl/nRa0XS/OHmQG78s6JYaJZtTg8sS+oR+y3qTI0jcVPL1FiVf5Mw7w/wRnn/pZJyy8P9TjyRxf5nr4Grih0jx/0pS4/91LglD+rxp3p/wDzjfrmqv6vmjV2cHZkhqajqVq3Facv8jLRkycoiGKP4/hjGH++ZGcj3R/q/iL07yp+TPlryz8dlaq8n88vxn6OXTIjAP4jKf8AW+n/AEsWHCzdFCCiigGZIAGwZrskrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVfPvmHV/Ms3nue8sdMluFtITBalxSJS1OU5b/KrmPLPjujZ4f4Y/VKSeOI2Nmv4Ysx0n8qLjWZE1PzzOb+5U8ltl2gjPYcB/ecf8r/AIbJEyy8/wB3j/1OP1f50/x/moMjL+j/AEY/76T0u3t47dBFCoRFAAVRQADpQDoMsjERFDZCtkkuxV2KuxVKPNXmCPy9plzq0yNIltGzlV6mg6D547ddkgW8qtvOP5m6xaDWNP02xitXHqRQyOxlZDum9ePJl/4xf6mVHUw6RnOH+qXH/Y+qEv8AYS/zl8QDlEy/pX/x6H+5Zb+V/wCatt50jktpYmtNWtdrm2cEFTWhZOW5Tl/wOXHhI4oniif9MkgcxuGf4GLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVQdnqlres62sqSNGxVwrAlSOoYDof8AWwkHmkxIRmBDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqyReS0OU5Y8QSCh4ZQ4p3G2ayErbZClWmTpg1Su+AJd12yQVwAGIFK4UPTtkFXItevTMnDj4tyglVzPYOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KtU75GhzVvJK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8g/MuieffLMoHxVnU/IhRlRG/yZBnv5iaedR8vajaKKtLbSqPmVIyU+TFgX5DWdj5k8iWllqNuk8cRkhdJFDAkOX/a/wBfKp4YT3I/zvpl/myj6llEFIfMX/OMMdheLrnkW7bTr6Fi6RvVo6+CP/eIp/lb1VwDxMfL99H+bL6/9N9Ev86Mf67GJMf6X9GX4/3X+mUL7849V8vL9Q/MPQuaH4TcQqDG46Vo3NeTfa480/1FyQ8DNsf3cv5sh/F/R+n/AE8ZzZ3CWx9H9H6vx/pppSNc/JrVas9sIC43JjKgH/YllVsn+QA5T/zeOX+/ijwL/ir/ADkq8yflj+Xer6Vd3HlO+/0+CMyInq1BKitODDl8VOORlp8kPVfHEfV/0kzOMjzr/PefflV+Tt9+ZV/J9Ykkt7aFKyTspYluiKORXkzf632FyEpnlGj/ALGMf9Iw4reva1/zi9J5e05dR8s3s82s2biWLnxUHjuUjCjkrd05O+R4skDxSqcf5sYy9Ef86U+P/SxQJSG53+H/AB6Srp3nX8w/PNqvl9LFtOdhwub10ZPh6OUVwqq7L/L/ALDjlg1cP8n68h/mnihH/iP85s8QD6R6v9j/ALl69+Xf5aaZ5Gs/qunrymfeWZt3dvFm8P8AJwQhR4peqX4+lrplsgqpHscvKXz7/wA4vWKQar5jYHkwu+Fa9g8uVx/QkvoTLUOxVgH56XzWnlK9CfamVYR2/vGEf8cB2ZRZfoNobPT7a1IoYoY0oO3FQuRjyYphk1dirsVdirsCuwq7FXYFdhV//9f1TirsVdirsVYN+a/kC6876bHp1nfPp7JKJGdATyADKUIV42/a5fbyByZIb49j/FvKHo/rRjL/AErKM5Q3jsUk8pf845+VtBAluITf3I3Mlyee/iI/7sf8DmOcUsm+SUp/0Y+iH/FS/wA+cmoi+e/+5/H9biek2Ol21igjtIkiQdAqgD8Msx4Yw5CmQACLy9KUeafMUHlvTLjV7sM0NqhkYLSpA/lrxXAPPZIFpJo/mix/MPy/NLo8tPrMLxmtOUbOvGkig/aWuDJcRY/zZMpRMd/9K8N/L/8ANXzJ5KWfyRcae+oalZM5jBkofTA5UjDDlKq/3iKvxcG/ycRnjKPHPi/my29X+fL1f7hkJgi5cRr6uH6v9+zO3/PzzAg/0zy1d/NCen+yTB+YwnrIfDi/3sGs5MZ5cY/rD/jsVDUP+cr9NsGiS4067ieQkMrgKR8ufHnlsfDlylf9UM6j0NvcLK8W8gjuY/syorj5MOQyDAilckDc9MFIeTflPTXvMeveZ3HIeuLKBuwSIUkA/wBZgjZSRZ9w/wB0zl9yv/zklpa3nky8YirQmOQGgJHF1Jp/scTCjbFnPlG7kvNKtbiVfTLwxsBUE0KgivH4a5aD3fj/AIlS8i886n5y/L3W5vMcbNqugzbSQ9DCtSwAA6eny4pJ+1+3jHUUeHIKH8Mo/j6v6P8ApWQydJcv50f4XqPkz8w9G84Wq3ekXCSVHxR1AdT/ACun2lbL5YzHfnH+dH6VlAj3fznnfldTYfmzqySfD9cso3QePH01r/yTfMaO/wACjozT81/PNt5T0WeZ2Bu5UMdvECOTu44JRPtMqs3Jsuraz9ITGPXuR/5a6VcaT5c06wvTW4it0VvY0rx/2P2crgbFsbtN9evEstPuLmX7EcTsfkAThItQLeaf84v2hh8mQyN/u2aWQDwBPH/jXBFS9byaHYq7FXYq7FUn8268nl/SrrVZaFbaJpKHuQPhH+yb4cUgPHPy2/KUecYR5u88M97d3lHjjYkKq/s/AnFaMPsL9lVzGkZZjz4MY9MYx/H/AB5ZEy8v6L1y38iaFbL6cNjAqgUoI16fdkTpMZ5hq8OLG/M35GeW9bYTLCbS4U1ElueBr9GEYjD+7Jx/7KLIR4fp9Lzrzr+WvmfQtOls4pG1/RnHx28tfWSn2ZIX+JuS/wCTy/1McmYkfven05Mf8P8AX/33F/p2Zyfzt/6Ufr/H+mea/kt+bifltf3Nhqaytpc1SVCgSJIvQ8G48m/3W/xL/P8As5lY5CQ5j+t6mQIlt/pZMl1j8y9V/MRi17qMPl/y8xK8edZZFrvVE/fPy+z+xF/rZMylyxR/5KZOGEP82Uv9zi/zps9x9I/zpcMf9L/xMf8AOmnPl38wfKnlRUsPJGlzareD7U/D4if52cjl8X+w45jHFjx+rLLjl/R/3vF9P+yauGEd5G/6v4/3rKIvOn5l62f9A0mGxTpynap+dCcl+axnaMZ5P6X0cK+JHoJG/pkwj8wvyx/M7zEI4L64W6gkYkxxuERK9nHw8l/4LIy1khtwmH/Cxx8f9acfp/zuFHjHur+q9N/KT8krHylZLJqUEFxqTAFn48uJBP2Gfl/wSqmUjDx7zv8AqyP+6jH0S/zuJhV8/wDSy/HC9WzLAZuwq7FXYq7FXYq7FXYq0TTASreFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYFdhV2KuxV2KuxV2KqFzbR3MbQzoskbghlYAgg9QQeoyJiCKKFRECAKooBhApLxvzpGnln8wdK1qJQsepKbWY9ATWik/zH4uX+wXK4DhJHf6v85Mfvez5ah575t/NiPTr+PQdEgOp6vIRWFGCqg7maX4lTJS4YC52L+mMRxzl/ms6AFn/ADWd2rSPEjTqEkKgsoNQDT4lDd+LZFgr4q7FXYq7FXYAVdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvN/PX5ZT3VyuveV5RZayhqTWkco7icANX/W45RcsRuO8T9WP+d/V/mrEmPL/S/wALMPK8uqS2SHXI44r0bOImLKaftCoWnL+XLRLi3qUP6Mq/3q3acZJXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVFoFHxKN8wZ6cDePNmJLV8TmKAQkrh09skBshRMhBoAcr492wRWxtI5oQQBh3l0kpACISPepzJxYT1azJWzPAYOwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYCVUPiJ3NM1xySkdjws1618a5bEy77Q3zp1yfikc/9iimw4OSjmBWl2ZCHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8e/NEn/HHlmh29Rx9/8AtZDqyHJ6+6B1KtuDsckRbF4t5Ohuvy28y3GhXKk6JqchmtpQCRG5+1E5+ygY/D8X+T8eV4pD6D9Q+n+lFIN7f6V7PJIsal3IVVFST02y1aeQ+a/+ciPKFvO2lyBr+PkElZEDRLU0NXbr/sV/2WSyaeEtpmP9X6pM/DHKR5/w/Uv1j/nHPyh5kjF7aRtaiZQ6tCxC0YVB9P7PfMLwDH6ZEf1vX/umgxI5bf7Jirf84b6WsnOHUZ0HhwBP31w/vRyI/wBky3D3Hyr5fTy/psGmI5lECBeZABandgvfLYQEf5o/ncI4UgUnGWq4CmACldhVQvJPThkk/lRj9wwFXiX/ADi4heHWbthT1r0mvj9o/wDG2Vx5si90y1i7FXlf5+zF7PTdPAqbq/hWn+qQ+QkkPVBtkgEOwq7FXYq7FXYq7FXYq7FXYq//0PVOBXYVdirsVdirsVdgV2Kse/MDRxrGgX1gf9228i/gcryclfOn5WLP5I0ey842LM9lJIbbUYa1AHLilwm+3GuRjMg0fpn9P9GTYD0PX/YyZr+fj2Fj+j/OunXESahZSIwAdQ0sLEMRxryfiv8AwrN/NkhhlE8Vek+mW3pURMd6ROo/85O6ZOBB5bs7nUrsqKKiEKCR0ZvtfD/scvmMeP65D+rH8f8AFJIjHmf82KQeXvI0/nvV11v8wpreMqCIdPV1DKD09QA8v9j9rMUwOX6InHj/AJ1eqf4/nMCDLkKj/spPXvIHkmXynDPZC7e5smflbpJuYl7xh6/Ev8n8uWQM+UqP9L+KX9ZjZ6/j+sjvP+ufoLQr3UupghdgPem2SLKIsvnry1+cb+XtFsvKnk6D9Ia7PV5n4koskh5H7PHm6rTmzfAv874gxxjin1/h/H+5gzJEdzv/AEfx/vUr/Nvyv5703QX1vzLqvqpK6pJaoSFHI7DbjH/sVXI/mJTNcMYY/wDZ/wCf6f8AfsRkJ8n095GJOhaeW6/VYf8AiC5IFiTacSxLKpRwGUihB3GCQBFFi8r8y/8AOOPl3VJjfacZtLveoktXKivjw7f6sbJlMITxf3cjH+jL1x/3UZ/6aUkRuO8SY/j/AE3+yeN/mL5J80/l5q9jqo1mS4Mx+rJdyKS0Yao9OTmZeS8T/N/wOWRzzv1CHFXp4eHhl/W9EfV/mz/rNsZm96/0v1/1vT/xT2TyR+R9vY3ia95hu5NY1PZlklqUU9VMaMW+z+wzZCXHl/vK/wCFx+j8f5sWs2T6v9L/AAPWMyEvM/8AnIHzI2keV57eA/6TfkW0Y7kyGjU/2OJNC+5lEdWT/lz5aHlvQLLSf2oIgG/1j8b/APDNlcOTG2S5YrD/ADd+avl3ykfT1a8RJ6V9Nas//AJ9n/ZZbHETvtH+lL8cTZHGT/x5i+m/85M+Tb2dbb6xJCW6NLGVX/gqth8HuMJf537F4L6h6jaXcV3EtxbsJInFVZTUEHwOVEUwIpXwIeefn5BLN5OvxDX4UDNT+UEFshI0kMi/L+4in8v6fJBtGbaID6FCn/hsMRSkUyHJIdirsVeMf85K/lxaa55fn1eGJV1CzAkEgABKD7asf2vhzF8MQPFHr9UY/wAX9Lh/nf0kU85/5xq8veS/MMElnqVqs2sJViJjyVl/4pT7Pw/t/t5ZPBxiyZ1/NiZQ4f8ASspY7F77ef8AxL6c0jQLDR4hBp0EcEaigVFA/VkYYYx3A/zvql/pmIFJjmQl2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVQvTKIJDb09XieFelafDX6cBNK+ch5y8/6bJa65qs6LbT3v1X6rw41FeHIf5P8AK2MdUJbcI4f538fEzE76B9KDFg7CrsVeQ/npEo1DQJ3IAW9A3G3TK5bllFkP5t+f/wDCunCGyHqapeH0raMbklvh50/lXLb4RxHkFiOpWflP+WkPlKzN1c/vdWu/juJju1W39MH+Vcx4gyPFLn/D/Riw57l6Bl6XYq7FXYq7FXYq7FXYq7FXYq7FXYq4iuxxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KrSK7ZAxBFFW+I6ZE4xVdybbyykOwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqskFRmNm5JDQGUgJbXLIodhVoiu2QMbTa5DXLcMrFIK7MhDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirx/81wU85+WJRuTPIPoCk5WeaQ9gyxClNAky8JFDqexFRkZRB5oec/nl5Q1/zVov1Hy5OsT8qyxsxX1VptGHpt8X7LfC2A5JY94i/wCrw8Uf6vFwshMx3H/Hnhuv6zdaD5SuvLGqeXnsJuK/6VEtY2cEfHJJ8X2v5vVyiJwncEjL/NyfXL+rx8Mox/o+pYmH9KP9b1/7P/pJ6J+Xv/OR3l2z0a0stVNxBPDEqMzRkqSB1DDM6EYz5Sh/nHgZgCR2I/zvSy2H/nIvyXLT/TgtTT4lIp88n4PnD5shhvrH5ppafnT5QuyFTVLZSegaQL/xI4PBPSpf1ZRkssRH82X9WUZMisvNGlXq87W8t5VPdJUP6jicExzjL/SlHgz7pf6WSZRSrIOUZDDxBykimsgjmqYoSnzXci10i8nPSO3lb7kbAdkh5r/zjDaGPy09yQKT3MjDxoDTfIQUvYMsQ7FXlP5uN9Y8w+W7EdTdvIe+yr4ZXIsgHq2WMXYq7FXYq7FXYq0DXbArZwFXYVdhV//R9UA5EK3kldgV2FXZG1ULm5itY2mndY41FSzEAD5k7ZIAnlukC3nPmX/nIPyrooZEufrc67enACxr/rfZyZxmO8uGH9Ytnh19REUo0D/nJfSdT1KHS57S5tRckLHJKtAWPReP2v8AZYBwS+mUTSOEHkbewyRrIpRxVWBBHzysixTW+TPzKs9Z/LePV9DggeTRNXPOGVRyVCTV4yPsq37P7P8As8x4ZB9M9pQ+ni/jiyEwNj/msA/Lj8j9d89wyXdrxhtIqgSSknkw/wB1oi/FX/K+HJZM8uQuZ/0sOH+t/vIsDI9N0Jp95r3lG1B0q8eKS4me1eJdtwaVB/ysshOug/neptjIh7lef8422Vr5Xm1GaaaXXBD6/rFyKOBzIX/JyoTyXxXL+r/Rarld2bZj+XX5rWOn+SLPWfMVyqSLGUPI1dyp4ii/aZmzLjEz36fzvpi3cJLE/PX5i3XnvynHGLV7GPUr5LaJmNS8dfikAovHKZ5In6fVX+6Yiuj0/wDLj8otF8gxONMQvcS/bmloXP8AkhgF4p/krlMMW9y9cvd6Y/1WsDqwD/nLHXhHokOjelIzXMiuZFUlVVPEjbk38uXGQ5WB/RtlxCPNOfI/58eT4tLtbGa+Ebwwoh9VSu6gDrmQMRrnE/1S2mG13H5vRtA836T5hXnpN1FcqBvwYE/d1xljMebAwI5p1lbBhf5t+Sk83+X7nTztMqmSE03Dp8S0/wBb7OUZBtY/g9X/ABS2o/kz5nOv+WrWaU/6TAvoTA7EPH8Bqvbpl93uyluzaSVIlMkhAVQSSewHXFi8M0GOX81fNp1yUH9AaRIUt1PSSUdZP8pa5VkPEeAdPr/4llI16f8ATPZta1+x0OA3epzx28C9XkYKPxy+MDLksYkvFta/MrzB+Y122i/l8phsFPGfUWFAAevo1/41+Nv8jIZMwxHhH7zL/sIfj+dL/MjNPEIcvXP/AHP4/wCkU60X8sPJHkdfV1qaC41BgC8146s7H+ZI3Pwb/wAq5WNLPN6p3O/8zF/x7/OkxGIz5+q/530/7NPbqw8j+c4msAbO4Z1oBGV5jbYpT4qr/k5GfZ4juBwV/FH/AI6ssBG5/wBieL/cvOI5Na/I6+SOZ3vvKs70BNS0JJ/4X/iL5ZjzX6MnP+HJ/OTGV7S/zZPoDTdRg1K3S8tHEkMqhlYdCDlhFIIpKPPkunpol2NWlWCzaJld2rQVFB9n4jv+yvxZEwMtgoFvPv8AnHHzta6po50NZ/WudPYqp6coif3UiA/Fx/1l5LkhE1f+mZSHV7FgYOxV2KpbrltbX1nNZXbKIpYyjVIoAw498BgZCh1SIk8t3yxrnk/Sfy5FnrnlzUory9srsLcmNwTwc/Ajxq8v7I48shCGTGbn/F6eH8f7mTMRMefX8fS+srO5W6gSdfsyKGH0iuWNavirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeT/nXH9c1Ly/p67tJfcyPZADXK5bJD1jLEOxV2KsI/NryI/nHRmtbVvTvoWE1u/Skimo3/yspnY9Q6fw/wA5bpi/5c/lfrLagPMnnedbnUEUCGNd1joKcvdsBkcpsjgiPpj/ADv6ymRl5PX8vV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVZIKiuYueNj3Mg6mCkOGICXYUOAxAVtcOIbqV2ZKHYq7FXYq7FXYq7FXYq7FXYq7FXYq4GuKuxV2KuxV2KuxV2KuxV2KvIPzf+DzX5WkPQ3My/wDCqP8AjfKyN2Qev5YxdirsVee/n8qnyTqfPp6Sff6iZCUUq35WaVZ6h5T0t7m2iYtaRE8kB/ZH8wyo4oy5hFAJ1N+Xvl+beTT7Zj7xr/TK/wAnj7v9lP8A4pqOMH+2THvMv5MaJqcHo2NnZW7moLPb89vbhJAyt/lcsj+WEd4gk/0suSP/AFV4kxxRHf8A6aX/ABTxvWP+cOr+SRpbDUoRU1CGN0AFex5ytkhLKP4Yf5s5cX+yhFTKXQR/00v+Jl/unqn5Mfk2/wCXscslxevdXFwoDilIxQn7APxf8Fl8ZTl9dV/DGPFLh/z5/wDExZgk8/x/nf8AHYvU8tSw/wDN26Nt5U1KVTQ+gVr/AKxCf8bZGSYpd+Qtt6Pk7T6CnNC//BMTgiFJeg5NDsVeT+cpxJ+Yuh21KlLeaTbtUSKCfb4MqkGQ5PWMtYuxV2KuOAqgtKa7a3U6gEW435COpXrtSu/2ciDfl/R+pKNyaHYq7FXYq7FX/9L1QO+RHNW8bV2KvKfz8/Ny4/Lywt30+NJLu5dgvqVKgLTkSAV/m/mycCBzZxrqgvym/wCch7HztE9tcQvDqcETyyIg5KwTqYTXlyb/AH22HIIgcQPD/Rl9cf8Ae/j6UmIO4/0qTaP5P1r82ZjrHmaeW00Iufq9khKllBoGk/1v5vtN/kZjyzyn6cfoh/Fk/il+PxFjKd7R2H87+KT1DR/y/wDLXlaHla2lvboo3dgP+Gd8rjpYnnc/63FJrjC/P/ZPMfzr1HRtUv8AQoNOmga4W+Ulo2X4VBBYsw+yu2WnT8G4FcX83+Ju8Mx8nusEyTIHjYOp6EGo+8ZbVNa26ZViZnAKqCTXptvlU4CQo0f63qV5V/zjW5m0K5uCKJJeTlflyOMdmUi8V80+TbhPzNj0OBC1s94l2q9grcZHP+qoXK+KhXd6VBeufnn+c0Hl23n8uaZGbnUpYWDgfZiRhQs/+wbMmoxG/X6YpoAWf81i/wCQ/wCQdleaba+Y/MTG7MqiSG3avpoDuCVP2m/yfsZjS4smxNYx/DH+L8f6ZrNllv56QRW915bgjQLCuoKoUbKN0AG2T4QNhsGcXsoy5ilXmW3WbTbkMgkYQycQRXfi1Ke+VTiCN0hKLH8v9GnsYYr6xgeQRqGqgO9N/ipyzGjpoHevva5YwS8k/MnyPafl3rek+Z/Li/VIpbpLe4jQkKQ5pWn+r+zl+O8Zqzwy/nNkNuXV9DKwYch0OXobxV515d8nXHlrzZd3Nig/RWpx+q4BNI5kIDbfZ/fc+X+xyiB4fTv/ADo/76Kg0K/0qQfnL5uvNVuovIXltq397/vRIu/pRft8qfZZl/z+LL5y8ON/xH6Ys74Rff8ASzTT7Cw/Lny4IIKelZwlqbAyOByP+zkbK8cKG/8AWlJjEX/vnmHk38vr38z5B5r88MzWjEm2sVJVQoJAMg+1/wAbN/wuQnM5do+jEP5v1S/H87/SrKXFsPpesapdaT5T0x7eGS205FjcQqWSJeVDw4hiv7WXYsBA9AMq+rbi/wBNL/ilhA8wPx/Sea/847aTpGuaRLq90i3eqtPIs8kvxmtSyBeXLiOBB+HKsuLxTc/X/Rl9Mf8ANXJG9zujP+cgNI0DSNCfUzCkGpghbV4gFf1K124fERT7f+xyOPAMfqh+7/ncP0y/rohCtxtTONE0R9d8r22n+Y19WWe2RbgN1LFfi/2VclIeKO7i9X9VTu8z8j6pP+VOunybrDl9JvGL2M7HZSTT0W/l/wCav9bLMUjP0n+8j/s4/j/iWcfVt1D1jz5oA8w6He6YFDtPC4QHpzpWPft8fH4shkG3+yYU8Z/5xJsrO3tdQgmRV1W3n4vUfEEIAG5/Z5o+ERB9SmN7vU/Of5teX/KMddRuVMx6RRkM5/2I+z/ssyRiPM+j+s2eGevp/rPIrn/nKjU7mYx6Xo7SId15cuVOzEAccgcuIdZH/SsTKA62xfzD+ZX5l+bOTadbTWkMB5MsEZrsf2nYcm/1Vys63HD6eEf0pev/AI7FJzRH07f7NT8gfkL5l85X/wCkvN7zwWhNXMrH1ZPZEflwX/KZf9TKzqp5dok/1v8AJR/qfwz/AMz0tcshl3/1v+J/HCzTz1+Q2jeS/LOs6hpzTSNJFHxWQghOLruGUKW+1+1lQjL+I8dfT6f91/0jFYg9TaTn/nI6Kz8t6do2mOy6iY44552WoiAoHdB+2/HM/YC9jI/TH+GP9dvof1r/AB6n0T5Uv4NQ0u2uraRpopI1Ku32m26t75Uf9N/Si1yFFOMLF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVJZvOOjwTG1lvYEmGxQyKDX5Vy4YJkWBL5NoxSPQprFOky84mDKe4NRlJFNZFKuKHYq8Y80eZdMj/MKI6tcpbQaTZ8wXNAXkPb/nm+REDkNDevqbBEkbM/0H8yfL2vyi20y+hnnIJCK45ED/ACeuXnFIboMCP+Osoypg7FXYq7FXYq7FUFqWr2mlxGe/mjt4h+1IwUfe2SjAy5WyETLkx/RvzR8t61eDTdNvo57k1oi13oCxoxXix4r/ADZKeIx5184y/wBzJZR4edfMMtyti7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqsk6Zi5xY+LIOBrkQbVy5KKHYTzVumERVrrtg5mlX5kAIdhV2KuxV2KuxV2KuxV2KuxV2KrXXmpWtK4CLVB6dpi2XMq7uZDyPM1+7IRBHM2klHZYh2KuxV2KuxV2KuxV2KvHPzxovmHym/hqQX6GMQyPVkHseSYuxV5p54/Pzyz5Pu/0bdySXF2v247dQ5T/AIyMzIqn/J5M/wDMuWDHtZMYf1uL/exn/sv81nw0LNf75W1+5svzX8n3UGgTq4u4wqltuLoyyCOUfaRuScf+HXllWaJgNvV/N4fpl/VRIGKf/lxotzofl2w0u/AFzbQJG4U1FVFNj3yEDYvcf0ZfUxu2TZYrsVdirsVdirAfz1nMPk7UHHdYx9BljDf8LkZckhMPyki9LynpK9P9DhP3oGwR5fP71LLsmh2KvKdXpJ+aFgpBPp6azbeJadd/biW/4XKzzZVs9WyYYuwq7FXYq7AArsKuwK0VB69sKt4FdhV//9P1PTr88q6/j+alccmUNYLS8y/Mj8mYvPWtWOo6hcH6haLRremzGpaoP7PL4Ff/ACVzHlxnYVwn+L+OP4/rIN8njv5ReSPqH5paha2Jkis9PMzEISBxJCxxOR+y3INx/a4ZMSIAHf6f53pj/W4v9MkbPq1VCii7DLIxAG2yHzr/AM5S+ZIDPpmly3PGy9cm7SN/jC/D9tFP++y/HDEy6bX9Mm0Agd1/xPDvOkmias89/ogSxgg4RW8AqZJdzzmf+XIxicfIkgfVkkfV/mo4eHl/ppH1TepfkJ+aF35KMHl/zUjQ6dfAS2lw9eI5ioq5+H0m/wCEbLoTGXbnkj/sv6P/ABH85R69v4h+P+kXu/5seaYtC8q3+pI6/FAyRGvVpB6acKdT8fLAgR3UvyT0F9E8o6day/3jQiZq9ayn1iD7rz45Vj3FsSUDrttBp/n/AEy/lC/6dZzWqEjcSRkT1r/lRuy4DGz/ALL/AHqQ8G1fy55mk80azootGmn1eURi6ZSQkPPmXR/sqrR8Ff8AyPgyo54Hn/eD0xj/AEvoXjHX+rF9ZaJpcWkWMGnQCkdvGsaj2UccyICgxeX/APOTNm6aBb61CpL6ZeQzmn8teJ/4f08idiP9KyBZzc/mFodhYQ6lfXsMEE0SzJzcBmVgGVkj/vH+1+yrZkxxSPIf538H+n+n/ZMvDl+Pp/0zEf8Ale1rqZZPLWnXmqEA/GienGf9WSXr/wADlM54obSkD/Rxxlll/nfzUHhHM/6USn/0izDyTr2pa3aNcavYNp0nIhY2YMSvZjTocEZxl9PFX9IcLCweV/5zBP8AnJa4hXRrC2lIBn1K3A33oORcr/q4yDKIeuxLwUL4AZIMV2FXjnn7837m5vT5S8jJ9c1hyUkmG8cA7szj4eS1+19lG/mbDOQxC5byP04/4uL8f8eZkCHPf+j/AMV+P6zIfyr/ACti8nwvd3khu9XuqNcXDbknrwQn4uFf+CyiIMjxS+o/w/zWBJJssl1Lypa6lqVtqtzyd7RWEaE/Byb/AHbw7yKPhVslIE7X6P4o/wA6X9L/AIld/wDjqeAAbDJCIGwV4TF/zjVHqPmW71nzNONQsJy7xRlpFcFjyCPxKqEVTx+Fv5fs5TOWTJ6SSK/iiR9P83hlH0/j6kEylz5Dz/476P8AMkxy/mi/IHzM0tvHI/l7U4CRGGLFZUGwq/7XL+b9iX/JyeA16JG/4oy9P+9/0v8ApGyG+x/0zIfJvlvVvzN1eHzh5rhEGmW6hrG1NfiJPMSup/Z/a+L7fw/sLkck/FPDGxAfVL+ewlK9htEf7J7wBTLgFYh+Zn5fWvnjSZNOnokw+KGXujjoa9eLfZdcpyRP1R+qP0/8Sg+TG/yL873erWlx5e1vbWNHcQy16ugqI5f8o/Dxdv8AVb9vLxITHEP87+t+P982E3v/AKZ5v+e/li58pa8uv6bPJZabrFIL2SIH4GqC70X/AH4o9T/Kb1MpxyOM8I6+qPF9Ef8ApH/cy/oIgSOWyeeTP+cc9I0q4t/M93qJvYIh69WAMbLQtzJbl8O/LIShlmanR/nR9XF/umFSJo0fx707/Jnzd/ivWdX1QNGlikiW1pGAq1VeTFwPtFmHBss8IXtEej+j/F/WbDGuXTyeyUA6ZIRAYN5NXg/58+eE15o/y98vuZtRvJljuOG4RQeZjc+PLiz8fsKjc8GQ8EbP+bH/AHP+m/hbPpF9/wBL0PSfyh8tWVrBbvYwTSQRonqMg5MVAXmT4tTlmL+XHM/528uFoMAWV28dvZKlpCFjVVoiCg2H8q/5OZUYcI2ZiOyKwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWI/mnp+p3/l67h0R2S94grw+0wB+OND+yzr8PLISmYbjokSpinlr8iPLV1o9udX04G9kiVpy7Nz5kVerBv5so8Pj9XFOz/FxfsYEX3sU8seT18nfmN+jfL9w6aYtmZ7iKSQlVBPGn8v8AIys32cvGTIBwEyycR9PF+Pr/AKvDxNsSao3O/pZDrH5n6x5uvm0P8vUVkiNLjUJBWJP8mEH4ZD/xP9j4fjyU8kce395lP8P8MP6/4/08vSpIh/Tl/sI/1vx/pma+SvKOpaJzk1TVLjUZJFAIloEU1rWNR8Q/l+1gGScvq4P+SceH/ZfxMeInnX+aOFEa5+XGga7eLqWpWcU9yoCh3FTQdAf5v9llEsIkb33+qMT6ZMDEF5p+bnk3StJ1HQLrRraO21CTVIEDxDj8FSXBVfhb/rrGGMYt42NvpuUv90yhER5PccyVdirsVdiqTeavNWn+V7CTVdWk9K2ipVtzufsqFG7M38uSjG0gW8Qf/nIDVPPmpjy/5GSO09QEG6u6cv8AKMMdePNV+yreqz/yJxwzkID0g55f0fRCP9Kf8fB/S9HD/SbDUeXrr/Sfj8cMmV6P/wA476W0i3nme5udZvTQs1xIeHLvwjB5cP8AIkd1zGlLLl+uVQ/1PH6Ix/zv99i8L+q1SlKXMn+rH0wj/V/i/wB7/Rek6V5c03SI1h0+2igjT7IjQLT5cRgjgjHcDf8Anfxf6ZAiAmmXpdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVaYchTK5w4hSeSwCmYsY8JSuGXxQ3TJCKtYCFaXc5CHNSvzJQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8g/PpeF95cuRT93qkf/NX/GmVnmyiaev5YxYD+dXnaTyj5dmu7Q0vZiIYPHm541Huq/FhBrdlFLvyb/Km28raWtzfoJ9XvV9S5lkHJquKmLk3xcVr8f8AM/8AscwzjGU8U/Xf08X0xj/xUv8AjrXVmyxCWyP5R+c0ubf4PLmuMEdB9mKXsadl5fEn+T6iZdhNfuz/AFsf4/H8P81nA/w/6V79lqHYqhLzUrazMa3MiRtK3FAzAFm68Ur1bDGJPLdkIk8kXgYuxV2KvMv+cjZvT8m3Y/meEf8AJRD/AAyJZRZf5CiEPl/TYx0Wztx/yTXEcmKfZJXYq8iu2J/NeGnbTOPj+1K30ZC92XR67k2LsVdirsVdirsVdirsVdgV2FX/1PVAysHdLdclaGgMQFbwq8d/LLTni87eY79v7qaZIloCQWVBKav9lfhP2f2spid6/T/S/H44mZexZcweM/nV+Q+l+Z7S81mzjKauE9QMGNHKD7JT7NWUceWYpBh6gT/Sj/xK0gP+ce/IHlfUdAttZW0R79Q0crSDkQ6mjEBvs8l4thlpxLcmRB/hv0olAe9NPJPlPSvNWj3vlPWYRNFpN5NBET9pYyfUgKP9pWVTx/2GJxCYB3Eh/FH8er/OZSFhJrf/AJxiP1yGC91a5udBgYSLZuTuR0X7fBU/ylTnw5J8P28lKWWQ4TwV/qn8f+k4f91llw/7FjxSOx5fj8fV/mveFQIOK7AZcBSWAfnLC1vp1rrsS8pdKu4bnY78AfTnX/VaJ25ZCWxB/wA3/TJizyOVJEEqUKMKg+x3rkxHdWCebfzp0Ty9L9SiL316dvQthzYH/KI+Ff8AZNlhiIi5kY/63/EsjHh+rZieo2vnb8zbWawuIU0DSJ1Cn1VEs0gP2l4Er6X832Vb/LzHnnEhWKPH/tmTijH/ADOGMv8Afx/qsTMD6Rf9LJ6f9LH8f1mGflF5H0Tyz5in8q+bLRJNURy9lcy1ZJYyNkRHPph1VeS/D9rkn21TkBHxxcjI8Hpljv0/8ej/AL3+qjhEx3kfVH+j+Px6X0BqfmfRPLZitr24gtDJRURiFr2FFHRf8r7OX4tPt6QPT/VizhjJ5I9desHFVuYSD4SL/XLTil3S/wBKV4Jdx+THvN8XlbVVhk16W3dLWQSxl5RRXG/LZv8AJ/ayqWmlk29Y/q+niSMZl3pXrP5+eTtKQmTUElamywgyEnw/dhlX/Zccu8Ejnww/rSj/ALj6/wDYp8PvofH8SYRe+aPNv5ryGx8tQy6NoLCkt3OtJJFYbiJf5WX/AH03+vMvLhmIdTGO2L97k/nfwR/4n/d/zYQ4eJh4gH0+r+l/N/q/ji/qPT/IH5b6V5Hs/qmlxnm+8kr7yOfF3/41+zkYY6PEfXM/xf8AE/zfxxMAK82OfnZ+ZWo+REsLy0gWSzlnC3MjAniu1EHg0g5/F/k5eJxBo9fpZxI6vSLK8ivYI7q3YPFKodGHcMOSn7sUFEYoQGtazbaNaS6hesI4IVLMx8B4e7fsjCAoFvmU+W9W/P69utYnJs9KtEaKyQ9C56E/5X2Wlb/VT9nMfNlJPDDfg9Uvx/Pl/sf92Zy6R6Jt5T/Pa/8Ay+hXyz53s5RJZqI45kFQUX4Ur+y/w/YZf2ft5fiyY8g58Ex9Ua/HD/uWUTGfM8D0zy1+f3lLXYwy3qW8h24T/A1f9ll/gmX0+v8Aqp4O7d6HFMkqiSMhkYAgjoQcoYPFPzb02XyVr9p+YemCkXIW9+i7c42PH1G+j4eX86xNlUDwSr+HJ/u/x6v9P/OWP3vUdZ0jTPOekNa3AW4sbuMMGHShHJJEPYr9rDkxXtyI+n+jJBHR4V+W1zNpeqXv5S+ZiZbCVWFsxPE8TVwEP8si/Ei/sNjGRyQrlkH8Ufx+IsxLiHuZ5o//ADjvomiX8GoabLPCIHEnANUMVIK1P0fH/OnwZVCOSO3F/sWAMh1eo3FxHbRmWZgkaipZjQAe5OZIFpAt4r5r/Oy98w3LeXvy8ge7uyeD3dP3Uddi6M3w/D/vxvg/k545MkMPP15P4ccfx6/6v0/zpMyRDnvL+b+P+kf5zLPyq/KW18lWxmuCLrV7gl57kj4qtuyRlviWP/hnb43/AMnGjEyPFP6v4Y/zP+P/AM6X+bH+lVz3L0TMlLw0+TPPU3nhPMc8kTWEUpjjXnsLdiQQI/5/TPxN9rllP5iX08Jr6f6Mv6bPj6fj+s9yy5g7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqpzTLCjSOaKoJJ9hir5Q0XSdV/NDzZqdxYSmDTZX4zTVIJhU8FiFPteoo5cfsf7BcpnkMTUfqP+wZmRGwfTnlny1Y+XLGPTdNjEUEQoB3J7sx/aZvHHHj4B3n+KX85rGyb5cl2KvILy5Pm78xIdPKkW3l+MztU7NLIF9Mj/Vr/AMSyuRugO/1f5qSdnr+WIdirsVdirDPzW/LuPz9oraNLL6BLpIslOVCp/lqv2l5LlM+ID01f9L6f98g+SQyfkTpMPllPL1n+7uoB6kV2qgSCYfEsxYfF9r4ePL7Hw5WMZj6h/e/Vxf7z+r/0lwoArcfV/ORX5TfmDPrsc2i64vo67px9O4Q/7sA+FbiMfyt+1+z+1+18OVYmOKP+dH+ZL8fj+dYdxY/6Rej4sXYq7FXYq7FVpJBAArildih2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2BXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVWupIoOuVzjYSC0oIG+UxEgFboThAkfJW/nlsY96t0pkgKQ7JK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8g/5yLf0rfSJh+xqMR/WP45A82UXr+TYvGPzuthq/mLy7osm8MlyZHHsvemVz5Ukcns+TAQwD889EXVfKd6tP3kKCZD4NGeYplcx17lTv8u9WOreXrC+O7SwISfEgcD+rLeaZPP/ADz5113zHrUnk7yYyxPAoN3eHcR1/wB1r/lYyyjHyHHM/TFN8PnJ5h+cP5eeZvJ+nQaxd6w+oRRTxtwkrVXB+Ex15f8AGuV+Pkmf3gh/RlHh/wBn6Yf79AnKXOv83/pGL338qvzJs/PmlLe2543MdEniNOSuBvsP2W+0mXSHUMpCmbZFg7FXlf8AzkmaeUpKUr68Ox9m5fwyEkxDPvKgppFkOlLaH/iC4QpTbJIdiryFQH/NYnoU08D7+R/jkOrLo9eybF2KuxV2KuxVxFcBFq7CrsVdirsVf//V9TKak+x/hkBzVfkldirsVeb/AJcidrXWb62oZpb+dowehKBUWu67Nx/ycovrzpmWdaRe/XrWO4qCWHxUBA5D4XAD/FTl/Nlo/G/F/sosSjWAYUPTCRaHjejw/wDKvfOcunhRHo2tj1IjWixzKDzX+Uep/n9nK8O3o/meqP8AUZx3Fd3qij/yguxda/5llQfuzeRUoR1CEH/gvtZKOyC9Wyxi7FWE/mV520TRLCWy1aTnJcRlFgQc5G5Cm0a/FT/KwSx8UbNQj/OkzEdrPpH855J5KXzp+Ymnx6U8/wCjdKs6QSuKiaTiBRCPtJ+7yB1B/wAmLv8Aykvp/wA1JyVy/wBM9p8l/l1pHk+ExaVCFd93kb4nY+LO3xZUMIvil65/zperh/qtNfH+lL6mUZksmDfmn+WVt55sVjLmC/t252067MjeFftcG/aXKZRkDxR2kP8AZR/mo5bh4ne6Dp/mPUo9D/MsSWWswgQw3qsRHcIpPCpb93z3+1/weIvNvAmGSP1Y5fzv50P+ONh9fLY/xR/4jiZ7bf8AOLPldUWst048RMRX3+H4cjWYfxy+TWDIdSj7T/nGTydA/qSQSzHwklJH/GuCWOcvqnM/j/ORIX1l82U6V+U3lbSirWmm26sm6sU5EHr1flkPysTubn/WMv8Ac/R/sUGA/FsvUAbDMqMQOTNvJKkHnjyxB5o0e60m5AKTxsBXs1Kow91bKckbHu9UUEW8b/Jz87NM0Owi8p+Y5jFqNrM1qmxIKg8UJdfhX+X/AIHMmMeMXsP6zdw8T6CBBFRkGpY8ayKUcAqeoOVyiJCjvf8ADJSstraO2QRQKqIOgUAD7hjCAgKiAP6qAK5PHf8AnJnyrq+uaXatocHrvBN6jhQC1ADw6/aXl+zlc5xhuR/nUpkI7vma+8h+bNW1AG40+b6xKR/uviPn8I4quVjUYwNqH9GPEx8WJ5bPuvylZXFlpFnaXtBPDBGjhelVULtmTE2GdqvmDRLfXLCfTbxecM6FGHsRgnHiCHlX5A69Pp7XnkfU9rjTHPok1qYif8r+X/jbJQlxRvqPTJsO4tOPza/JpPOckWq2E5s9WtlpHIOhoeSh+/wn7LZUeKB4of50f5zXZG4Ydp/5g/mN5dj/AERf6QdQnQ8UuFJow7E06/62S/OYz9XFDJ/NpkcsTz2P83+cjo/yx82+fXE/na8NpYmh+p2xp9Dn7P8AwXL/AFMTnnPaA8GP86X1/wDFf7mKfEJ5egf7N6v5Y8o6Z5YtVsdJgWCIUrQfExH7Uj/adv8AWyMMQjv1/nS+r8f0YsQKTvL1dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirz785/wBOXGkDS/LkJluL5vRdxsI0I+Nmb9nl9nllcsox8/8AN/rJBrzR/wCVfkZfJmiRaaTymNXlbbdz1G38uRxx6nqxZllyXYq7FUBaaJZ2lzNfW8Spc3FPVcDduIovI5WIAG+9FI/LEuJA3OKvHx/zkpoZ15tCEchijf02uR9gNXjUrTZOXw8uWW8MQPq9Z/h/49xf71nwgdXrqSB1DqaqdwfnlTBfirsVeV/m/wCVLiBovOuhDjqum7tQf3sP7cb/AM3EfzZTfhy4h9MvTkj/AL5A9Px+pnXk/wAzW/mbS4NXtf7udA1O4P7an/VOXkMiKTrAh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqM0btujcfoGRJPl/nJBQMsmoxKWRYpKdFBKk/SdseLyP8AmmKiv+kWN6j5s8xWh+HR2mWvVJVO3yx8aHUZR/mcSTKA/n/LiUW8/a+gBOg3LV8JE2+e+Dx8f+2f8qpLxQ/p/wCk/wCPJXcfnbNYgnUdD1KAL1Ii5CnjyX4cfHwnbir+tHh/33Em4d5H9aPD/upL9P8A+ciPK95sXmip19SPofA8C+X8Mekof7L/AIlPAO+LJR+Z2gFFkW5qrbghH/5pyFDvh/p4/wDFMa84/NTf80NEU8fVckeEbn+GPp/nQ/08U8I74/NSH5o6dIwjghu5Se6W0hH38cgcmMc5QH+d/wASwHCesf8Adf7lk2n3312L1hHJEDXaRSrf8C24wiQPL1fCX++EV93++/33CjcKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5N/zkiqroFtcMaCK/tyfly3yEkh6naSepCj/zKD94yaC8l/N3jB5r8s3J/wCWl1r9HSvzOVHmkPXnrxJX7W9MtQ+PvM//ADkzrwbUtC1CGCWKQyQhlBBQVK7EHi44/wA2WmUZCq4PjL/ZcX+84W4mPdX4/iew+QPzG0TTfIMdza3SM9jakMhNGElDROB+L7bfs5AYiB3/AO5Y8BTD/nHrQmtPL41a6BN5qkjXMrN1PI/APlxyiG5Mv5zXaF/5ydDjyr6iAFUuoWavgDXDJIYj5m0pvyv1iw866UCml34jiv4V+yCwB9Sn2V/m/wBi2RwngPCfpn9P9GSw22730Ha3Ud1ElxCwaOQBlI6EEVBy4haV8UPJP+cnJeHlXiBUtcRgfQGb+GVzZRel+X14adaqeohjH3KMmEFMMKHYq8etQT+bE5FDSwXr8l6ffld7p6PYcsQ7FXYq7FXYq7FXYq7I2rsKuwq//9buWj+dD/irUfLV2pRgIp7Zj0dDFGJQP9SUPkLHPu9Mv96z5j3M3yTB2Koa/vEs7eS5lNEiRnb5KORxSN3zf5J/PPV9Is5LhdEmutG+sSs11FWvxMWZz8HH4V4/aZf9fIDLiieGR4Jf7D8f5/8AmszKHI8Q/pfwf7n/AHzzzWvzV1WXzJIvle+uE067uUkSNWIoWI5IUr8PxfbVfgy0ZDjFekgfxcMZej+jx+plxEbfU+1bIsYUMn2yor86b5XFqKT+c/Jtj5t099M1Bao26sNmRh9l0PZlyE4XuNpD6ZMUo/K78tLfyFZS2kEr3Ek8hkeV+p7IP9iuMOLnKr/opvvZXqOp22mwPd3siwwRglncgAAe5y+I4jQZRiTyeYXP5m6v5vl+o+RLZjbMSranMpES+PoxvxaU/wCfDITyxgeEfvMv82P0R/rz+n8fxLYj/Sl/sf8ATJ55L/KWw0CZtUvnbUNXkr6lzNud+yL9lBlJhLIeLJ6iPpjH6I/5rA+rc/8AHf8ASptY2sek67OqsFTUEEioBtzT4ZDXxZWXJwFEj/OiyplGWodirsVSDzf5K0zzbaGx1aISR9VPRlP8yP1Vspnj4t/pkPplH6kEW86t/LfnL8v2pokv6Z0hRtbzNSVB4Rv+1/q4RqCNsg4v9sx/X/nQZCf87f8ApR+tPLH88tJ3i1eG506deqTRNT6JFHFstjKE94ygf6x8L/dsogS+kj/O9H+6ZNovn3RNajaWxvInCCrDkAQP8pW3GTOM9PX/AFfX/uUnGboer+r6/wDcsd8yfnz5R0EMst+k8wr+7t/3hJH+VHyRf9k2WeCR9VQ/rH1f6T6/9ikYj/FUP63/ABMeKTzuw/5y0OqO8Gm6LcTz1pGqPy28X4p8OVznihzlL5Rjxf1fV/xTE8A53/xX4/zk2uYPzG8/IILhYtC06TZ+JJmI/wCNf+CzH/NX/dRP/DMn4/3jHxK+kf50niP5+/k2nkCe1vLGSSaGcfFI9SRIp5Esf8r7WQhKQNSPF/EiN9d31J+SfnEebPK9nfswMyJ6Uvs6fCcySykzzAxdirsVapkaVj19ca5Zs0tvFFeQ9kDGOQDwHPnG5/1niweJX1A/1sfr/wBhLg/2PEoI6/6aP1f6SXD/ALtgur/85F6VoEhttd0/ULKVezxKQf8AUcS8Wy3GceTlKI/oyGTi/wBLGEkx4TyP+bK+L/fPL7P84dP1z8xLDV9GgljjmH1aXmAGYN8IfihZf+GbIcMYHY3fl/H+P6MWygP7H1ZhanYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8h/PTz5rug3Gl6T5adI7q/mK8nUMCBSi/GGVV/nb7WAZBG9uP+j+JRZA15s+1C4u7bQJ5r8oLtLWRnMdePIIxPCvxca5Di2v6P6N8XCh5L/wA4u+SYV0KfWb6NJZdRlb7Qr8CmlPi/mb4srMRM77/wsSL5vYNW8yaboL21rfSrb/WSY4QdgSoHwA9uvw5kwhewZCNp0DXfAh2KqVxbpcRtDIOSSKVI9iKEZEiwryH/AJx8uH099Y8rykH9G3jhKb/C/wAX/EsYnZkeT2PJMXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq0QDsemAi1Sw+WdN+KtrD8RDH4BuR3O2Y400O4MOABGrZQKKBFAHTYZZ4ce4fJlwhUEajsMfDj3R+UUrqUyyqVvCrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiryv/nJeMnybcSjrDLE/3NT/AI2yBZRejaHMJrC3kXcNEh/AZIMS85/5yC05xpNrr0K830i6juCP+K6gSf8AGuVy2I/0qRzQfmq488ecaW/ll7ax0W4RSLznzldWG5jVfsf6vFG/y8nLMYbRiZy/nSlHg/zfV/svX/Uikz4NgN/50jHh/wA3f/eS/wA1W8lf843eW/Lwaa8Q6hdyKQ8k+4+L7XBPsr/rfb/ysxfBM/rN/wBGPpj/AMVL8elqMeLnupH/AJxf8oi6F0kcqR8uTQ+oSjGtQGB/Z/ycl4c+XFLgP8O3+6Wj3mv5r1m2tY7aJYYFCxoAqqOgA6DMiIoUGTD/AM5tAk17yrqFlCC03pc0A8UPPb3ouQyGhabSfyFPZ/mL5GisbllkMlv9XmBoSkiDhUjsysqyJ/scllhxD/ZR/H+xZTj9qF/5x71u4bTbny1qLVvNGna2NepQE+m3y245KMuIX3pPK3rGFg8h/wCcoYy/lQBTQi5Q/wDCS5Api9S0lOFnCp7RoPwGGPJCMySuxV47bVT82Zgej6fUd+giH0ZX1S9iyxDsVdirsVdirsVdirsCuwq7FX//1+3fmN5Rnvlj13SBTWtP+OE1oHX9u3fxWRf+GzGNwlx8/wCdH+dH/ioput098l+aIvM2mRajEODsOMkZ6o42kjb3Vsyfdy/hTIUn2LFhv5w3/wBQ8p6lcA0IgIH+yIT/AI2yJZRS38jNKit/JenwkArNDzYePPc1ysRu76oLGfK//OPVronm+bzAojOngc7eLclZGPxVDD7K/sfFmOISPpP0j+L+d/N/4/6WI2e1DM0BKnLIsSl5CFVRUk7YQkPOPM/512VtL+jfLcZ1fU2PERwVKqfGaVeSquGdYhczw/zY/wAc/wDNZECP1bf0f4kHp/5V6l5huhqfnu6F2n2o7COqwIe3P7PrFf8AKX/gsolKeUV/c4/5sT+9n/Wl/D/mS/0rAzMtvoj/ADY/76T0+zs4bKJbe1RYokFFRAAoHgFG2ShAQFDZARGTpKA1DSYr2aC4kqJLZyyH5jiw+TZExs2to/Jq7FXYqoXV1Faxmad1jjUVLMQAPmThAJ2CQCeTzXX/APnITy7p8jWtgZdRuV24WyFxXwL/AGRkpxEPrMYfH1MzAD6iB/sklvPM/n7zino6NpiaXbvQ+vdkFqe0f83/AAWYcsuKX0x8f+tH0/6aTDjj0HH/AFvpXWH/ADjv+kT6vm7U7jUCTyMMZ9KKvuqfa/4XIxjk6cGAfzcMY8X+n4f91GbHikf5sB/Nxjh/H+lZ5on5V+WtDh+r6fp8EYIK8uAZ6MKN+9flJ/w2D8tE87n/AEpHi/2P0R/zYseAPIvyD0X/AAt501zy+ygqgDoT148iVp/k8WXLYixvzDYOT6Ky9DEPzN/L+3896Q+kXD+kSQyOACVYe2U5Ik7xriH08SC8p/KSzl/KrzNN5L1GXnZ6gFltJSKBnA4svszfZ4/zZPFIyFS+qH49LKJse59C5NDsVdirsVdiqD1LSrTU4jb30Mc8R6pIgZf+BfkMpnijPmP+K/0y80h038sfLWm3S31lp1tDcJurpGAQfFdtjlUdNEG/X/nTyTj/AKWcpRYCAH9pZVmWzdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirxv8/FXT9Q8v6/IaRWt+I5CfCSm/wDsVV2yut/emPN6P51Ky6BqBG6m0m+702yUuShiP/OOqFfJliWIKkMVoKbciv8AsviH2sETapv+an5dw+edIawZvTuoz6lvKOqSDof9VvstkZgjeP1D/ZMUZ+W2p3OoaFbPqAK3kSmGcHr6kZMUn/DJlglxbs5MowsXm/5na7530u5gPlCwgvrVkJl5mjq4PSjSRLwZPs8eT8uX+TlUs8cf1Ccv6URKX+4jL1f1v83+JeIDpf4/ou/JzyNfaDDd6vrnH9LarMZ51TolfsxV/a47tggeL1cgfpj/AEf6S3b0jLldirsVdirsVapkaVvJK7FXYq7FXYq7FXYq7FXYq7FXYq7FXDArsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpF5o846Z5ZtzdapMsS9FUkcmP8qL1ZslGBP8AxTOMb/4pDWfn/Rb69TTbK5W4uXqeMVX4hRUmQpyWMe7cfiwzgYfV6b+mMj65f1Y/VJZR4djsf5v8X+lZNkGDsVQ93eRWcT3NwwSKMFmYmgAAqSTiBaQLeOQ/85SaFNqqafHDKbSSQRfWTQICTQEj+XLOGN1fq/H44mwRHK/U9r65W1OxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5z/zkNbibyPqg6lY0b/gZEP6sgd/mlkv5fT/AFjy7pk3X1LOBvvjU5IKU31Cwhv7eSzuVDwzKUdT0KsOLD7sjKPEKY82Ffl95H1DyUTpVvOt3ohZ3iEpKzQVJIhTiGSaL/WaJlZmf/IyMZyqpC/5uSP83+nH6v6nDxfzf6srsb/5p/H+6/EZ/lgCGLedvObeVoo7k2c91AxPqPDT92o/bZSeTf6q4iURtI8H830ynH/Y/SmNHnfy4kN5P/Nfy95tl+q6Vch7kLyMTAq4Hf4D/L+1l0sfCL2l/VLIwoX+P85mWUkMHzx5s/LPzR5F1qXzJ+XX722uTyuLM0IrWppGxTmnXhwZZYvs/YyiGbwdpAzxfwyqUuD/AEvr/wA6Ppl/GgT4OYuPu/4n1/6X/OTr8lPL/mS517UfOHmO2XT/AK/EkYgUFSWXj+94EuyfCn7TcmZ2yUcgkTwCUcf9L+d/R4ow4v8AS8KRO+X++/3z23LlePf85RuB5WRCacrlQB4kRTMP+GGQkyi9YsF420YPUIv6sYmwgonJodirxzUlaD82bR9uM2nMu3X/AHa2/wDsoP8AiOVg7suj2PLGLsVdirsVdirsVdirsVdirsVf/9D1QMgl5rrkLeQtWk8xRBjo16R9dQCvpSbKl2oH7DfZm/2LZDGeE8J2hL+7l/Mn/Ml/Rl/CmO+3+l/oy/489EtbmK7iWeBg8bgMrDcEHoRlxDEikm89+Vx5p0a50VpPSFyoXmBWlCH6d/s5VkBI9Nf5yo3y3okWhadb6XASY7aNY1J60UUwwjQ3VM8sVhnnn80tK8pJ6czevfOQsVrF8Ursei8B9n/ZZLgocUvRD+dL/esxHqdgwi28q+aPzJpc+aJG0vSeVUsoTR3X/i9/2dv2coOcz2x+iP8Aqkvrl/VR4n83b+l/HJ6d5Y8m6V5Yg+raRbpAncqPiP8ArP8AabIwxCO/OX86XqkwApPMvS7FXYq7FXYqlHmHzVpnl62a81W5jt4VG5dgK+yr9pm/yV+LJxgZcv8Ajv8ApmcYGTy5/wA0fNHnU+j5E08wWbVA1C9HFCB3hio3L4vhRv3v+Wi5Sc+OBoXnyfzY/wB1H+tP0/7uE/6MkcURsPX/ALGH4/2X9BfafklPesNT88anPqbRqWaFSVhApUqEX7Q/4Hl/JkJTy5NiY44/zcf1f6f0/wC44v6SDKUvL+jH0sV8o6p5i8zLIfy+0600nSY3MazyICzEdaf6v+TlRGPGajE58n86Uv8Ai1uMeQ4z/OkmsH5qeZvy9v1sfP8AEJ9PmYBL2BdlJ7OP5V/4LMnHmjl2I8HJ/N/h/H9JkJCex9Ev9g9x0+/g1CBLu0dZYJQGR1NQQehByZFMSKROBDxjzbx8sfmTpesN8MGrwtZuf+LAR6f/AAX7lf8AgsqiKJH+d+Px/Eyju9nyxi7Crzr86/IcvmjSPrGm1XVrBhPbMuzVXcxg/wCV+z/l8cx5+k8Y6fV/U/47/wAUt1umv5X+eYPOejRajHUTp+6nQ9VlUDmp/wCJL/ktmSa5jkzkKZhgYOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2AFXYVQF3rdjZsEuriKJj2d1U/8McsjhnLkJS/qgyZjHI70fkioZkmXnGwZT3BqMgQRzYkEc1XAh2KsL/NzySfOXly60mKn1kgSQE9pEPJP9XkOUfL9nnyymewsdPV/wAV+P5yk0kv5W+co/O/lqTT7puOqW0TWt3H0YNxMYlofi4yL8X+S/NP2cslvHiHKQ/H/Hf6LOW+/elP/OLE7y+Uwrsx9KeSMA9BQ8/g/wAni6/7LliJfYxL1u/v4bC3lvLluEMKF3Y9Aqjkx/4HJKAxP8n3e48uQX0gIe9luLog9aTTSTJ/wjrlcd/n/ufSpLNcsQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqh725FrC87BmEalqKCWIG9FUfET7YCQOavCNL82fmD+ZN1N+hQmhaPG5T1ZI+Upp9oDn9p/2v3fpcPs8/5onVRG2KIzf7ZI+mP+6h/mcGWSRlH8AE/wClL8Sh/m8E/wCunSflD5vLkyeZ7gxnsocU+XKVsTqMp2rF/WqP+9xwUzP9H5JJ53/LS90HR5tT1rzDdukCkimxZv2IxyP2mb4cY5c4OxhEfxfV/wAUyhkycrCV/lj/AM48t5hsotZ85zTyvKA8UBc7KaFWctyozD9lf2crlOeXrUf9lL/iWsky8nvPlryhpXlmD6tpFulvGdzxG5PizH4m/wBljDEI785fzpeqX4/qoEQE7y9k7FXhn5r65dedNch/L/RZPTjJ5Xkg8AOfD/KWNPidf2naP+XIzkYCh9R/H/SX9H+sz+ke9N/zO/LPTrLyHd6XpkCq9rAJUYKC5aIiUtWnIvJwP/BZjDEIb/xX6pf7r/NagAN2a/lnqU2p+WtOu7uonkt4+ZbqSBw5H3enLMvivdmSyfFDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwT88yP8Gary/5Z2/syMlR/wCVAK+VNLBNSLWLf/YjEJKA/M9/NjRW1r5OEayzyFZZ5KH01pXlRgy0/wAri/8AKqfFgObw/wCHxL+n+b/uo/7qMVEuHpbEB+TPnG9PPUvNd0GO5WBSig+HwSRKV/55Lj+ZzHasMP8ANE5f9M4y/wBnJTknL+ZH+rH/AKRXt/zjvNOP9M1/UpiKbmQfhy5YBm1A5SgP8yX/AFUTHLkHOX+6/wCKk5f+cZtOZgbnUr+Ze6mUgH7sZTzS5y+xiZSPU/7Fkfkr8jfLnlC+GqadG5u1BAkkcsRyBVqf6ytxyqGKQNykZ/7GKK970TMlLsVdirsVeIf85W3BGiWFsKEzXyCh/wBSRf8AjfIFlF7bEvBQvgKYY8mK7JK7FXjvmrlD+aGjzVosltInzoJtv+CfK+rJ67DCsS8V6f1yQFIlK1XJIdirsVdirsVdirsVdgV2FX//0fVA65C90qN1bRXcTQTqHicFWU7gg9QRglHiFFDALaCX8uA9Weby+zjggBZ7YtUt/lNbcv8AgP8AVyMJkemf9WOSX8X9Gf8AS/pMgb2P+bL/AIpnWm6rbapAt1ZSLLC4BVlIIIOXyiQgxpjvmz80PL3lRCdVvI45KbRKech+Uacm+lvhyccRIs+mP86Xp/6S/wAxnHGTv9I/nS/HFL/N4mDXH5gebfO9bbynp8mnWL0H167HFuJP95DD/q/F+1/rrmPLUwjtD9/P+j/dR/rS/H9KLESiOXr/AKX8H/Hvx6WVeQfyh0vyofrb1vdUclpLqb4nJPXhy+wv+rlXhmZ4sh4z/N/gj/Vj/vmBsmzuz3MlLsVdirsVdiqU+YfM+neXbZr3VZ0t4FG7MafcPtE5KMSeTOMSXkbfm55i89TtY+Q7Mx21CGvrlSFFT8MiL32/Z+J/8jK5Z4YzQ/fZP5sfo/zv+kop4ox/py/2Kd+WPyGsYbkax5pnfWdUNCWn/u1PWiQ/ZK8vs8vh/wAjKpCeX6zwx/1PH6Y/50v4v83g/p8bUSZfV/pY/R+PxwvU44liUJGAqqKADamWRiIihtX8ISGLfmVp09/pEkUW8QZHnTlwLxKec0SyVXg0irx5YJEgbX/m/XH+lGP8X9VlH8cP1Jl5PvLe+0uC6s4RbwyryWMU27dU+E4YwjDaP0+7g/2KJRrZFa5oNnrlq9hqMSzW8goysK/d4HIzxiY3/wA3+ixIt4x+Vd/dfl15il/L3VnLWNwWm06Vq9Cf7mv2V5KPs/795f79yWORmKP1w/2UPx/xP8DYNx7nvGTYPNPz+8tPrHluS7tqi7011vIiOtY93A/2HJv9ZVyiexEu7/cy/HEkGjaMvPzh0my8sxeapmrHMgKRKRyaToYV91f4f9X4syhHv/0zPg3ebTfm7+Y+rxC/0XRPTtWFV5KWLDsaVVsq/N4RtvP+lxcP+94WPHHoJH+kreX/APnITWbC+t7HzppzWcc8gi9UIygFvslg/b+bj+zkoZ8eXaGx/rcX+9iyEoS2G0v63+94Ux1EH8sfO66ggpofmFhHMK0WK4rUSn9kBizN/qvN/KuVYtjwb/zsf/E/zv6P8P8AB/NYxP8AD/pfx+P4f5r3HLWLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqx3CKWY0A3JxV83+a/8AnK97TWHt9GtVuNNt2KySNXk9DxLoVPFEr9jly5/7LjltwjtLnLz/ANz/AL7/AGP85s9I2PP8fS948nea7PzXpkOsaeawzCtD1UjZ0b/KU5CUa2YEUneRQ7FXYq7FXYqwz8y/zHtPI9itzMpmupm4QQr9p2/5pX9rJCuZ2DKI73mKaR+anmBf02t3HYnd4rU0G3VUYcG7f78bKRqz/DG4f5vr/wBNLi/0vAnxj0G3+7/33+4eg/lR+YsvmmCax1WL6trFgQlzEdqntKg/lb+X9n/ZZbYkOKPI/wAP81Bo7jl/uXoGBi7FXYq7FXYq7FXYq7FXYq7FXYq0xCip6Yqw2+/N3yzYXBtJ76MSqaEAkgH/AFh8OWjEfL5tnhnyZRpup2+pwLdWciywuKqymoOVmJHNgRSLwIdirsVdirsVdirsVdirsVdirsVYN+bll5hvtClh8rSeneGnILs7J+2sUhZfTf8AyvtfycXyuWU49wOL/TSlH+lGEYz4kiXDv+P81iXln/nG7y/+joW1iOabUJEDSu0rqQzDky0RuPwn4cqIyZPUZzs+Uf8AfR4/9NJjZO9nf8fjiSrzd5Bn/K6AeZvK13MttbuhuLSVi6OhIVqV+IeOW48uSHpkfEh/Srih/pWUJEbE8d/znuWnXqX1tFdx/YmRXX5MOQyxB2ROKqFzcx2sTzzELHGCzE9AAKk41agW8S1P8utWuLhvP3lGX6tqV2fUa2agSWKgWMN/lyonrOrftv8AsOvLMeMzjvhHHi/m/wAX9KX1fz+L+b6f9IkS4eXqj/FH8fj+kxX8mvzjsPI0N75f8zpJa3IupJgiryC8gA8fwnl9pPg+1mThEZiwQP63F/xLKIEhtt/WZFrHm3V/zYnh0bRrS4tfL0kg+tXTrxLoD8SKP2Vb/hsqnmiPTA8eT+dH6YseMfw7n+d/Ne52FlFY28dpbjjDCixoPBVHFR/wIyURwikInJK7FXYqgNT1qz0uP1b6ZIUoTV2A6fPrkoxMuTIRJYrD+ZY1aQw+XrOe+A2MtPTiH/PSXjy/2OVmcImieM/zcfrl/wARH/OkjYef9X1f8dZjavM8YadQkhG6g1APzpjfcP8ATf8AHeJCIySuxV2KuxV2KuxV2KuxV2KuxV2BXYVdgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYAFdhV4v52kPnvzla+VFq2m6dS5uqdC4+xG/8AxH/Z5Xk5cP8AP+r+oyOw972ZUCAKooB0yQFMV2SV2Kse8++aI/LGjXOqykViQ8Ae7nZF/wBk2EBlEWwr8hvJ5stNPmHUBz1LUmMrOw+IKSaAeHL7WY8fVLiP+b/vv+JYnc29TliWRSjiqsCCPGuWyFilU7S0jtIkt4VCxxgKoHQACgGMY0KQr5JLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirz78/CB5L1OveEgfOuRkqa/lSa+VtMr/yzIPuGMUllmSQ7FXYq7FXYq7FXYq7FXYq8K/5yP43mpeX9MG7yXYansNq5CTIPdcmxdgIV2FXjP5o3Bs/Pvlqf9ljJGT/rEDK73ZRezZYxdirsVdirsVdgV2Kuwq7FXYq//9L1RTfK63VsZMKsdA4KsKg+ORkBIUVYta/l1pljLcTWHqWougRKkTkIeQoSE+zG3/GPjlcYygKEpf0Yy9XB/V/iUEjqf6v83+qx/wAjfkL5e8qyG7aM317yLCa5ozLU/sA/CD/lfayuWI5TeU+J/R9XD/n+qXH/AJ3p/ooI4vq3elhQo2zIERHklvJq7FXYq7FXYqkfnLUrzTdIubzTIhNdRxlo0JABPia/y/ayJkI7n/YpDyTyN+Ss/mMReY/Pk8l5dTfvVtmJ9NAd0qv+r+zlMpzzdeDF/DGP1SWUjPyH82L2+zsobKJYLZFjiQUCqAAAPADLIQEeWzECkRliXYqw78wPJVz5tii03621tpzE/WUjFHkH7CCT9ha/a/myuUpDaND+l/FH+rFNkcv9M8v8ta7J+TGqSeXdfmZ9AnDSWdwwqVPV4mp/N/xLJ4pmfol/eQ/i/nxZR9Wx5j+JMG/PPWvNczWnkHTGuYxsbqc8Ywf9X/mpsZ5sePY3kn/NitxH9N51+cHl/wDMOK1g13XTDKtlIJFe3oHh3BqSvxcOQ/y8pGouV8Ph/wAMZfz/AOjL1T/2XAgZbP08H9X/AKSm9z/LX839I816faGS6hj1OZeLQFwHLrs/BK8iG+0mZhxmuIfSylDqz6eFJ0aKQVRwVI9jscoItrfK+heTLPSPzEj8r6xNz02F3uLSJiSvKQckjI/m5Af6/wDssrEZTjwn+H6v6cWYuQrufVaqEAVRQDtlgFMHk/8Azk1p31nyo04UFraeGSvcANxYj/YnISG9pDIvNXlWPzx5TFjLvJNbxyxt0IkCh43/AOCwZBtY5w9UUJT+R/nm413T5NI1YkavpjejMG+0yjZJG8W/Zdv9Vv28uEuIcQ6/7pnLffvenYsHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8w83fnamgXP1KLS766kFa8I6CgNOQb4gwweJj6yH9WpLcQNz9i/wAs/n75c1esN5I2nXQNDFdfAa+zHY5dGAl9BE/6v1f6VmI8XKpPR4ZkmQSRkMrCoI6EHwyrkxKrih2KvPvzD/OrRPIs62epeo1w6c1SNa1FadclAA8yAyAB5mmDN/zkxeCP69+hLkaeCKymv2f5ulMHjYL4eKXF7hwp48fKzb2by35itPMVhDqmntzgmUMp/WD7rhlGmMo0xv8AOnV5dJ8p6jc254yeiVU9KFvhqPfIXSg0w/8AIj8q9Mt/KKG+hWaTVE5zFhX4TXgntx+1mOcQnuf83+h/VYGNs5/LnyDD5JtbjT7RibaSdpY1NTxVgo4VP+UuTxiQFS3r6Uhl+XJdirsVYv5o/MLTPLV5aafqLOst63GMqtRXp8W/L/hcIiCLsD+t+OFkBbKMDF4h/wA5BpLp2p6J5keFp7LT5yZgoqaEq24/l+DKpEXUtrSCOR6s+0X82vLGsRo9tqEAZ6URnCtU9ihPXMwYJdBxf1Wfhnp6v6rD7P07L805BaNRb2wDyjryK/ZI/wCAX7OYsRRLF7Dk2LsVdirsVdirsVdirsVdirsVdiryrz3rWo+Z9SXyl5dcxxChvblD9hSf7pT/ADt+1kZzMNh/eH6f6P8ASZ/SnVj+S3li1tjamzSTkKM77sfevjmP4F8zIn+dbVw28/0t5/yi8yRaTJIZNB1NiIuR3jeuw/z+3l+KRPpl/mybYm9j/mvewa75Ng7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwj86k5eUdTH/ABQ2QkkJp+XUhk8u6ex6/Vox9ygYQpZHkkMD8/3rard23lK1Lc7w87ll/YgU/HU/stL/AHa5CRof1vTFkNmcQwrAixRiiKAAPAAUAyQFMXh3nTQ7Tyv+YNl5juolex1NTbyEgUWWnFHcN8J5LmP4YkeGX9aP/EpiOj2+FY40AjAVANqUA/DLxGthsil8UiyKGQhlPQjfJKvxVIvM/nLS/LEH1nVrhIUpsCfib/UQfE2TjAy3/wBl/CzEb9387+Fg6eefM/m4cfLNl9Ss2qBd3Y3I/mjg/wCauSf5WUnPAbRvMf8ASYv9P/F+OKKOKI5ev+l/AnGiflPYwyLfa5I+qX4ofUnNQD/xXH9lRlchLJ9Z/wCScfTi/wCPMDcuf+l/hZxFEkKBIwFUdABQfQMsjER2CquTS7FXYq7FXYq7FXYq7FXYqpySpGOTkKPc0xAtIFoK51/T7X+/uIk+bj+uWDHKXIFnHHKXIFAjz55fJp+krQEeM6D9b5P8vMcxL/SlBhIdCqxec9Em2iv7Vq/yzxn9TZHwZ90v9LJHCfNH22o293X6vKklOvBgf+InIyhKPMGP9YLKBHMFF5Bi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXA1xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpD538zw+V9IudXmpSBCQPFuir/wWEBIFsR/I3QZrfS5Ndv977VXM7k9Qp/u18fs/s5RH1Ey/wBL/VUm3pmXISTzD5w0ry9EZ9VuY4E/y2AJ+S/aOTjjMv8Aivpj/pmcYEsKX/nIPQ7mf6tpltf6g1K/6PbM23jRzG3H/K45GXhw+qeOH9G5f72Mo/7JFDvjf831cX+5Yf8Amh5sm88XuneUbe1ubMXEqyzC5QKSg3FURpGVf9bjlU5xMfSeP4Sj/wBNYwQCK/ZKP+64HvNlax2kKW0QpHEoRR4BRxGSiKCFfJK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwT86dAfXvLNzp6XEVoJOPKSU0XiDVgT/lZAiR+kcf9H6U79N0B5G/MzyvDbW2gWd8kssCLCCAaEj4dj/lNlvh8I3MP6vFFsOM10/q36npWRanYq7FXYq7FXYq7FXYq7FXztrl5N5l/N20sgOUGlpyoOxA5OW/2TZCe+3ezOwfROTYOxV2KvFv+cg6Wuo+Xr8bMl8Fr7Gg/wCNsrrdlEW9pBrk2LsKuxVxwK7CrsCuwq7FXYq7FX//0/U4O5yq90rhkwUOySuxV2KuwFXYVdirsVdirsVS7WbKe8iWK3cJ8al6ioZQfjSn+VkJ2kJgqhRQbAZIBDG/P/nqx8laY+q6gSVXZEH2nY/ZRclEWyiLePr54/NfzBD+lNG06CCyf4o0enqFex/eyLXl/qplZ1cBsImf9Kskv9zwf75kMsR/Df8AW4v97KDM/wAm/wA1brzZ9Y0rXYRaazYmksYBUEfzhGLsP8r4smJRmOKPI/j+t/pkGiLH+l/Hqejar9a+qyfo/h9a4n0/Urx5dufH4uORuvP+j9LB4L+av5QeYvNGmHV9dvY5buyjaRLeGOkdB8TDl9otxH2spnkmd+GMIfxR4pSl/pkGRPSIj/N9Uv8AZMo0D83vLXl3ylZ6gxSJniCi2iA5mRRxK8F+KrMPtNmRDAI7/TH+dJt8P4RSuz0TzV+aw+s65I2keX5Ps2sR/eyr/wAWuR8Kt/mmUyz8fpxgcP8AFkkOL/Sx/H9Zjx9I7D+d/ElVr5M0v8ovN8F2YQ2j6goijmkUO0M1fh/eEck5/wAy5DHCzwy3kPVjlL+L/e/7FjGIOx5/wvoZWDCo3BzJV5J+Zv5PjzVqU2qWx9K+S3RreUGhWRGNB/qsuYsuKJuPT1cP89G43Tb8pvzLXzJbnS9T/c63Z/u7iJtiSvw+qg/lbMsVMcUfp/3LYRe45f7lKf8AnJHVY00CPRwa3OoXEcSL3IDDn9GQlytAHV6dotmLKxt7WlPSiRKf6oC4x5MbeR/mtpVz5N1iHz7oyngSsd9GOhStPUIHX4f+NcqifDl/Rn/u0xNe4vXdI1a21e0jv7JxJBMoZWHcHMgilIpG4EOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVSmmSFS8jBVHUk0H0k4gWvNerBhyXcHviq7FXYq7FWqDrkOEc1Yt5u/LjRPNcDw6nbI7sKCUKA4PYhx8Xw5TLAOcfRL+j/xP0o4Xn/5Catd6Reah5G1N2eXTnLQM1T+6J+EKfD9rMiMuOO/1D0yZk2HtWFi7FUs1Dy5p2oypcXlvFNLH9lnUMR9+UTwxmbItiYAm1TU7GCeyltJAqwNGymoHEAinTpRcl4YqqZc3kH/ADi/dTrpt/phIeztLplgcftA/a+eSEunUfUkvSfzH8vr5h0C+00jk0sLcQP5gOSU9+WCfJiwD8k/zG0618nRjVp1gk0zlDKHNGHEnht1Zm/ycuhAy3Hqv+Jt4b3CpYfmvr3nKf0fKOnenZ1IN5dVC/NEH2v+GyEs0I7C80/5sfTD/OmxMox/p/7GLP8AyrY61axMdeuo7mZjt6UfBV9hvVsiJmW5Ah/RieL/AE0mN+5LvzS1/WPL+kNqmhQpcSQMGljatTGPt8OJ+1iZiPP/AKRSCBz3RvkjzxZea9Hi1q2dVjZayAn+7YD40fw45aY1y/zUmP2/S8l8vm4/M/zw2u7foTRXKQeDv4078m+L/gcpyGzwd31Iltt/pnv+WIUbi3juEMUyh0bqrCoPzByEoiWx3QwLWfyH8o6oJGexWKWT9uMlSD4qAeI/4HMfwK+mUx8eKP8Asv8AikcNctnkH5ReXbrQvzLuNLnme4WzgkVHckn06DgP+Gy7jMvq+ptsnnu+ostYOxV4j+Zv5oa3eav/AIR8jqHvlB9aXb4D4At8K8f2mxlkGMWfWT9MWZIiO9Dfld548yaR5iPlHztIJJp05wvsanrQOvwsGXGOXxBy4KW+IdxD3fFg7FXkH5g/mnqr6ofLHk2H6xfoKzSUBCf5NT8Kn/WwSyRxjfc/wxbLEee/9Fht95h/NHyUn6R1JVvbIGrrs5A7iqjkMhHVxO048H9KuBgMo6insX5afmLZ+edNXULQcJFPGWM9Ubwy6QrkmUaZfkWKXa/BcXNhcQ2TencvGwjbwYjbIkkCwkPIv+caLhLW2v8ASb0FNWhuGM4b7Rr9l/Ergj6vXztJ33ewaprFppUJub6VYYl3LOQMtjEnksYkvG7d5PzX8xQ30cdNC0ySquwp6jj+X/ZZj5aJ4R/nSU0Ng9yAptlzF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV53+fmofU/Kd0lafWCkP8AwZwFMWY+WLJLHTLW2jFFjhQD/gRkYigh3mLXrbQbGbU7w8YYFLH38FHux+HLALSBbFPyu0q6mSfzLqy8b/UW5BWG8cI/uYv8n4fidf5spieM8XT6Y/1UE3/vWfZarGvP/kq1846VLpV2ePKjI46o4+w4yqcSeW0h9KHn9h5E893kEeiapqUMWmQ0QyQKRNJGNuJb9g8cPjzqhGMJfxZOLi/0kEjIe4A/zr4v9i9OafT/ACxp6iaRLe0t0CguQAAB798shAnz/pJjEnzeey/mBrnnSRrPyVAYLWtG1G4UhAO/oRn+8P8AnxX7WRlmjE1H99k/m/5KP9ef4/o8aSRHl65f7CP4/HEnXlj8n9L0ub9I6kz6nqjUZri5PIg/8VRn4Ywv7P7X+VlJhLJvkPH/ALXH04o/5n8X+f6f6EWErl9X+l/g/wBKz1VCig2GXgUldhV2KuxV2KuxV2Koe5vYLYcp5FjHixA/XhESUiJLENY/OPyxpdUlvkkkG3CKsjV/1YuWTOMj6qh/WPD/ANJNhxkc6j/W/wCJ+pIY/wA6b3VCE8vaHe3YOxklpCnzDtzVv+CXMeWfCP4uM/zccJT/ANN/FH/SNdw7+L+qPT/p/wCH/Oisubn8zNRAaFLHT1ZhQbyOoP8APy5Rk/6rZH8zXKEpf1j/AMTKP+yinjH83/TH1f7CXCrr+WHmHUVJ1rXZyG6pbgRqR4U+Lj/scIzZTy4Mf+bxST4khyqP9UIuz/JPTU5C9uLq6VqfDJM1BTrsD+1gkcsvqkf62P0SYWe8g/zo+lME/J3ystK2EbFd/jJb7+RauQlh4vqlOf8AWnL/AHvCxlHi3N/OSIj/ACp8rxsX/RlqSf5olP8AxIZWNLHvn/ysyf72Sa9/zkiG/LXy2wp+jbUfKJR+oZP8tEfz/wDT5P8AilASq9/JvQJ29S3je0fxt3ZK/MKeOTjCUPolMf1j4v8Au+JNnvKVyfl95i0KEt5e1WSQr9mG5AZSPDn9rJeNlH1cGb/N4J/5rPxCedH+ssj/ADQ1fy8o/wAY6eYIQQpuYPiSp6Ep9pR/q88lDPCZrfHP+bk+n/Tp9Mu+P9b6XoGh+YLHXbcXemzJPCe6GtD4H+Vv9bLZRIYyiRzTLIsXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWB+cfzf0nynq1rol+r+rd0oyiqryPFef05KIB60zEbTfzf5zt/LtsshUz3U20ECbtI3YAfy/zN+zkSREXLaIQB37PMPy7/ADZ8z6/5qfR7y3gNmqkyiKp9H+UPJ9ln/ZZcBzRO3CYn+Hf1/wBacf8AjsGRI5VX+6/znumFrdirsVdirsVdirsVdiqlJcxRf3jqvzIGGiUgIVdbsWbgJ4ufhzFf15Z4Uu6XybPCl3H5I/Kmp2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV43+ck7eaNY03yPa1YSSrc3VOixoagP/rf8brkJmh/W9Kboe967FFHaxCNKLHGoAHgAP6YYihSKeNav+ZOt+er+TQ/IIEdvCStxfuPhU91h/yslPKMWw/eZf5v8MP6zIyEP6Uv9jFOvK35CaTp8v6Q1x31fUa1MtwarX/Ji+zT/W5ZjyjPLvkP+bH0w/4r/csJEy+r/jr06OFYlCRgKooAB4DLIwEeQCXjmgJ+k/zS1C6cbWdsqL9IVa4OZS9ny1CS6x5v0nRp47TUrqO3mmFUV2oWFafD9OWQxylyFs4wMuSW6X+Zmh6nq0+g21wrXluKsOikd+D/AGW4+2Jgf+O/xKYMqRgwqpqMrYFdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeFf85WeXtb1bSbd9KV5bSFi08aVqenByo+0q5XLNweV/xLxcKL/wCccZPKraTTRoxFqFR9YSUgyh/Yt8Xp/wAnHB+WH1H95/NlIfT/AJv8LI4/4uf9J7VlrF2KuxV2KuxV2KuxV2KuxVj+n+R9J0/VJ9ctoFS/uf7yQVqfH78pGOjdy/q36UAV8WQZcl2KuxV43/zlBE0Og2upoKvZ3kT/ACG7V/4JFys8wkPW9OuBc20UymodFao71GWIKJxV2KuxV2KuwK7FXYq7CrsVf//U9TjqcpB3SuyxDsKuwq7FXYq7FXYq7FXYq7FXhv5AazeJrev6Jqbs1xFcmUBySaElPhr+z8OPiGY33pmZWHuWLB5B5wsY/Nnn2x0S8XnZafbm6dG+yzk8U5D7JHHKcm/p7/qSRs9bAWJKCiqo+VAMtApD49/Lfz59V/M+W8kkLW9/NJCWbvyNIz/wQVcMWzyfY2LWkfmyDVLm0MOjNCkz/CxmBKhSN6BerZXORj/D4n9Hi4Eg10t4V+UH5a6fonnHUNM1tFub+3VZ7ZmHw8W+J2jQ/D8LHKuHxBUv4P8AJ/woI4hv0/h/hfSAFNhmQBSsV/MfSdN1vSJtI1SeK3FyCI2kZVo43Rk5n7St/LicEsg9IJMPV6Yylw/6RkIGX08R/qsW/JPztPfQS+WdZauraYfTY1r6kY2jlU/tfD+1hEuMcX0/wyj/ADZMpC9/9N/WeqYtbzb8wfyYtPNF0mr2M76dqsf+74erf64+Gv8ArZj1LGeLHQ4vqjL6ZKCR9KW+VvyQuINWj1/zTqD6rdW4/cKwoiH+andv9jhJnk+vhER/DH+L/YxRxSl9Vf5v4i9by9KF1LToNStpLO6UPDKpVlPQg5CUeIUrxX8r9SufIPmOfyHqrE2c7GWwkboQas0YP0fZ/n5Y458Qo/VBmPUPc90ybB2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KsP/ADY0E675Zv7NWZW9FnXiaGqDmB8m45GUjEWNkgpJ/wA48z3Fx5Qs5rqZ5nbkKvuQFJTgD3VePfDxE890yNvS8LF2KuxV2KuxV4n5VQX35o6pe29THbwCKTwr8K/s/wCUj/aysbGu/wBTJ7ZljF2KuxV4/wDnf+YLwoPKGiFn1W/AQ8N/TVtt/Bm/4VOT4mQxjiP+bFmPSLLNfyy8kx+TdDt9ISjSIKysP2nO7t/wWVYwas9WtlDyBFLuaKNyT7Zal8Zea7K31fXrjzZaWbf4djuwk3E0Dld3NP2fU+1/Jz+DMfaJ4ATv/sPx/uEkAel9feX7mzurCC403iLWSNWj40pxI+Hpl0cYhsNkVSZZJVOSNZFKMAVYEEHwPXIkWr4+/OWzb8v9YudH0G8aPT9UUSXNvvSPkf8AiO3L4fj4fBjilKA4TX+1y/j/AOO/zWUbAr/Svp/8u/L9noOh2tjYMskIjVua0o5YcjJt/NkYw4Of1fxMapk2WK7FXYq8T/Ly3+vfmRr2oJUx26rCTQbsSQRX/J4ZX1SXtmWIedfniusxaCb7QJGS4tHWVlTqyL9of7H7WQOU49/82TIS4Xl/kS81WC/l886BajUrbUl43EKECWKUfbHxfs8v+EyPEMcvWJcJ+mUfWk7He6P0yil3mPzFqf5reYrS20Gy+p32msWkndqhQD9lyn7PL9n9vGc4wNx4pS/m/QpIjyu/6T2eTSvPFvCJor+ynmUbxPAyqx8PVWTkv+twyXiy6wh/mzl4v+yjwMfEPWMf80y4v+JW+TfzIm1a6l0DW7f9G63EpIQnkkg3pLA/7a/tccnGUcguF+n6oy+uH9ZOx3H+dGX8KeeTPJlt5YtjHEfVuJWLzTEfE7MatX2/lXKYwr1H6j+OFgyGaFJkMUoDIwIIPQg5ZKIIopeEflPpkWhfmFrelWNVtAgcKOgJINKf5PLIw9I4UjYU97yxDsVebed/yai1u/8A07pN3LpupleLSxHZh/lrmP68ZuBG/wBUZfSoJHLZj+n/APOPk97ci581apPqSr0jJIU/PfDKeXJsSIR/opM5HmXrmkaRa6RbJZWMaxQRiiqooAMnCAgKDEBG5Yl2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5P/AM5Cy/WLDTtHQVkvb+FQPZT8X/E1yufJIepxKIIlU7BFA+4ZYEPIri9l/NDXxY29f8OaXIGmftPMp+CNT3Rftf8AXWQyS/gHM/XL+bH+b/nMjtt/pnsCqEHFdgMkBTFdhV2KvO/NX5u2tjcfofQkOpau2yxRbqviZpB8KquGfDjFz2/o/wAcv81nQjvL/S/xJfpX5W33mGaPVfPc/wBZmQho7SPaGP2cf7tOUSlLLt/dw/mx+qX9eTEyMvIfzf8Ainp1tbR20YhgUJGooFUAAfIDJxiIihsxVsml2KuxV2KuxVD3t7BZRNcXMixRKN2dgqj5s2wwiJPLdIFvOtX/AD00pHNvocU2q3ANCsCniD/lSEfw4/5WMzDH9cgP6MfXKX+9/wBLKX9VlwiP1Gv6P1fj/N4kHaXH5geZpOREGj2bA129SX/m1/8AhcoGqEv7uJP9LJ9P+lRxjoP9MiYfyG026UnXbq61GUmtZJCB9CL8OAnLPnLh/o4xwQ/48gykeZ/0vpZlpHkrRtJUCys4YiAByCDkaCm7EcjlY00Oov8ArXP/AHX+9YCIH44k2tLKC0UpbxrGpNSFAAqe+2XQgI8v0yZojLUOxV2KuxV2KuxV2KuxVD3tlDexNb3KCSJxRlYVBGQnASFHdDyDzH+V+p+Vbr9O+RG9MrVpbUsSrjwCE8X/AOFZP2OWUxnLDsbyYv4v6P4/nQ/zo8LMSrzDNfy3/Mi086WjPGPRvIfhnhJqVPiD+0jfsNmUaO45fj6kyjW4ZlgYOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV8nfnIH8x/mZbadb/ELb0Q3gAv72Qt/krlU5UGTLfOetXYeO7tlLa1rRNtYg9IbevAyj+V5PtcshxX6jvwfTH+fL+cyB6/zfp/r/AM96t+XHkC08l6atlAOU7/FPKftO5+0xPh/LkoRr1S+o/jhawy7LldirsVdirsVdiqF1HUIdOt5Lu6YJDEpZmPQAYjdQLeTab5q8x/mO7PoRGnaOjFPXbd38eC5CWajwwHHL+KUvog2cVct/6UkwuvyB0rUErqd3e3EpFGYykCvchaNxyu8p/jr+rH0/7phxSPU/5voY3qX/ADiR5flUtZ3d1DJ2LFXH0jijN/wWRHjDcSEv60Zf7qM/96w3HX8f6aLMfyo8neY/KkUmm6zeRXtitfRYczIN/stz+FUp+z8WWjNOf1Cj/O4uPi/2P+ykzMief+mt6NliHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVOaZIEaWQ0RAWJPYAVJxV5L+SFu+v3Oo+ebofHqMxjgB3KwxEoAD/rfD/sMq5y/qemP4/0qZc/c9Vv7U3dvJbq5j9RSvIdRUUqK5MoS7yr5T0/yvZjT9LjEcQNT4sT1dz3Zshjhw+Z/ikik6y1LsVeKaPN/hr8zbuHUDxTV4g1sx2DEBT6Ybx5LIvH+bj/v1crhuT5f7n8f7iX81kN/g9ryxi8R/Pv/AA7rbxaQ8Jv/ADAQUt4YmoVLftTlfsxr9ri2V5MYA45Hg/q/XP8Am8LLh6nb/dSeS/lx+RX6f1/UdIu7l4hpioryxbn1W2Me5+yrJJ/wGRGTJzieCX871f6X6mJMhyNH/Tf8S9Zg/wCcetX05Amk+Zb63Ub8fiIr8hKmT8fOOsMn/DB/xUcqeOZ+o8f9Yf8AFSk9D8j+VdT0CF01XVZ9UdqUMqqoWn8lOUm/+XI2EZJz+vg/5Jw4P9lHhhL/AJVRUyJ51/mx4P8Ac/UyzJIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqU615l07RDCupTpAbl/Ti5mnJqV4rkowMuTOMTLkp+b/MUXl3R7vWJSOFrC8m/QkD4F/wBk/FcADGI3Yb/zj7c6xfeWI9Q12d55bqSSSP1CSwjJog5NuwanJP8AI45X4hmem3p9I4fx/NUm3pmTQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWmAYUO4wEWrz/zZ+TGj65L9etQ2nagu63Ft8LA+6j4WyiOM4zeM8H9H6oS/wA1AuP07f7n/SpJZaj538kr6Wp2/wCnrBWFJ4CBcKtafFBT963H+X/g8mNQP8oDj/2yPrxf1p/zI/0v9gz4r+oV/Sj6v9j/ALqTKvLf5reX9ff6tDciG8GzW1wDFKD/AC+nLx5n/jHzzJjj4hxQrJH+dj9X/Ho/58YpEL+mp/1fV/sfq/2LMsrYOxV2KuxV2KuxV2KuxVazhAWY0AxVyuHHJTUHFV2KsA/PbSDqnkzU4VFWSH1R/wA8yJW/4RGyqXf5/wDHVRv5PayNY8paXeA1JtkRv9aP9zJ/w6NlrKQZlixdirsVdirsVdirsVdgV2FX/9X1MDucqB3VeMsCuwq7FXYq7FXYq7FXYq7FXYq8T/MC2fyJ5wtPOsX/ABz78rZ3u2ylto5T7fCPi/1v5sphtKv5/wBP9f8AH49KY867/wDdPalYMOQ3By5Dy2zvvqH5l3VrccQL6wjeEnqfTPB0Df8ABtxyuIs+5mBY9yefnB5xh8qeW7u9cgTPGYoV7s7jgAP9X7WWgIiHz95//Km+8s+VNI8yxcRdaeUlnAQhwZH9YF3r9mORvT48f9nmHCVHi/n/AIj/ALFiDv731ToWpJqdhb30R5JPEkinxDANmWkikwxQ8e/OgP5Z1bSvO9up9O2l+r3RX/fUmwL/AOSrf8NxyoemX9f/AHTKJ3971yCdJ41ljIZGAYEdCDuDlvJBYz54/LXRPOsSRa3b+qYq8HDMrLXrxdCv/At8OUzgZcjKH9X/AImXFH/Y8TAhgXk3/nHO38p+Yodfsr6Z4YeQ9KQVNCpREMi8eQWv7S/srgBy/wARjL+dL1Rnw/6ZkDLqfx/pv969oy9XYqlWreaNL0eL19RuobeMbcpHCiv0nLI4pS5AsxAlhp/P/wAlcxCmpI8hYKAqOaknhswTjT/K5fZyRwkC/R/p4/7mMuL/AGLIY+m3+mj/AL1nGoa3Y6agkvp4oFPQyOFH/DlchHHKXIGX9UMBEl87/wDOQf5l+W9Tit5NFufW1nT5leJ4gSoFfjV5PsstVVvh5r/wWQliMDxbD+dH+fBlwmO/+xe4/lz5ln8y6FaavdxCGWdORUGo2JWoP+VTlgsHlf8AnMCybCh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVKfNVwLfSb2ZhyEdvKxHiAjGmRPJIYZ/zjxGY/J1opNSHnG3TaaRdvbbBApk9JybF2KuxV2KoLWNTj0qyn1C4NIreN5W+SAu34DAUgW8l/wCccNNuLqDUPNd3UPqlwStd6qharV/4yvIv+wyqO5Pl6fx/sVJ3ez5ch2KsE/Mn81bHybGIKfWNSmA9K3Xcmp4hn/lTl/sm/YyQAA4pbRZgdTySP8nfy9urSSXzV5h+PVr74gGG8aHf/Yu38v7CfB/NmKD4h4j/AJv/ABX/ABLXd7vV8yEsR/NnVm0nyrqd7GaMts4B93Hpj/ieA7JDBfyY8r2nmH8tItMkoBerNzYdQ/qPxf8A1kZEbKZQ2P8ApoqVb/nGrW530i68t3+13otw0DA9eJJ4VP8ArJIv+rxy8S4gD3pL2LFi7FXjflb8l7i6v9Z1TzeyXNxqPOCEqSeEJJoyhvsN9jgv7HD/ACsxZA5eY4OH6eX1fz/83+l9XqUyMvh9KF/LDzzP5Ru0/L/zUrQzQkpZ3LfYmjBPpjn05U+FP+Afi6/Fk45+KP8AbI/VH8fif1RZip/1v5v4/Ent2Fg7FVrMEHI7AYq8a/5xtja8g1fXX3F7fycT4hd6qe4q+QjzSXs+TQtdA4KsKg9RgItXiOsfkfrem3tw/k3UfqNlfkmaEg0UmtTFxymOTJi2AGQfw8R9UERmY7Df/evQfy4/Liw8jWH1Ozq80h5TSt9p28T4f6uGESN5byP44YqB3svy5LBfzO/LpfNdslzZubbVrM87addipG/An+RsokDE8Ufqj9Uf58f5n/EruNwkHkP85azHy/5xUafrEAoxkICSAftq/wBnkw+L+Vv2MyYEZRcP86P8UWyhPl/pW/Of54WiV0jyn/uS1ib4Y1jFVU0+07/5OMqxi5/6X+NeER+r/Spp+Un5by+VoZtQ1WT19YvyHuJDvTuIx/q1zGjcjxS24vpj/Mj/AMU1WTuXomXpdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiryP8wG/SX5geXtJb+7hSa6I7VAbjX/AGUOVy/Uy6NeePNF35y1BvJflhyqLT6/drusa94Ef7PqN+1/wH82TnPw9h/ez+mP8z+lJJ9P9b/cvRfK/lmy8t2MemacnCGMfST3Zz+0zZXCHCO/+dJgNk4y1Uh80+cdM8r231vVp1gQ14qftOR+zGn2nP8Awq/t8clGBly/038P4/o/VL+FnGBP4/H/ABTzk3fmv8yjwtlbRdBY/wB43+9Ey+yn+7Vv8+X2sqOfpi9X87JL6P8AM/nfj1fwo4wPp3/pS/3sfx/Weg+UPIeleU7cQaXCEY/akO7sfF3PxNlccdGz65fzpfj0sAGR5el2KuxV2CldhVSnnS3QyysFRRUkmgA+eIFpAt5dqv5tXWtyvpnkS3+vXK1DXD1EKb0qD8Pqf8Eq/wAvP7ODJkji5+uf+px/33/Hf86UGViPP1n+bH/f/j/OjJD2P5L32r3EOpec9Rk1GRfiNtusKnwQIYh/r/Aqv/JlJyZcm22PH/Nj9X+d6Zf7vih/PkxMjLnt/Rj6fxL+l9f9OT07StCsdKj9GwgjgjH7MahR+GCOCMeXX+d6v90gI8CnTLwFbwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8p/MfyTcaZOfOXlcGPUoKNNEv2Zox9scP5uP2v5/t/bRcxR+5Nj+6P1R/hh/Sj/AEf9x9UOH1JjLh/qfxR/H4/i/rTryd5ptvNGmxarZn4JRupNSrD7cbe6t/wS/F+1mWRSZRpPMDF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwWrsKrHcRqXbYKCT8hgJV4B+S+kjzN5s1vzXcpygkZooSelGJqB/zy45jy9RruZH7k2/P+F9DudF81QJWHTrkLIo2+BiKU8Btx/wCByQAia7wsTu9mtbmO6hS4iPJJFDqfZhUfhl7FWxV2KuxV2KuxV2KvF/zq1C88w6nZ+RdLf0zdUkuGHUICfhP+TxXl/wADlc50Nv4vSzBoPV9A0S20Oyh02yUJBCoVQPYdT7t9rGEOENaY5Yl2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpR5sspr/R720tf7+a2mjT/WZGRP8AhsjI0LSGNfksEh8rWVkIpIJbWP0pUljZCJASZP7xV5/E32l5LkMchIXExn/VPF/my/my/rI2PJnmWq7FXYq7FWF/mZ+W1r53tI42c299at6ltcJ9qN9v+CRqLzXKJAg8UdpD/Sz/AKMv97L+D/TRkORsbMLj8t/mjKn1CbU7WOAVX6wqVlIHRui/F/sst/My6Qjxfzr9P+l+j/YxZ+Ie6P4/osw8g/lbY+UjLes7XeqXBLTXUu7sSSdv5Bv+zlUYmR4p7y/o/TH+qwFncsQ/5x+Y3OqeZtQf7U+okV7UVpaU/wCDycdy2Sez5YwdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVQGta1aaLaSahqEgit4Ryd26AYYi0xFvD9T/5yutmlaPRNMuLuNTT1NwD/ALFQ3/EslKeOH1S/0tR/3bK4A1I/6Xh/3yP/AC//AOclIvMmrpod7YTWs0pCxnruf9+Kd1H+ViZYyLif9Nw+r/SpJgeRP+d/x16X558iaZ50sDpuroXjB5IymjI1KB0b+b4sxskOLkeCUfpl+P4Woi3zV+cNx5l8maevkrWrr65o13IjQ3J3lEcZDNC6/abi3Bvi5/5D/sLYMpkKkKyD/Kfwz/pf1v8AZfzuL6mwT4uf+m/H4/rPpHyF5o0LWtPij8u3CT29vGkYVdmQKOKB4zxZPhH8uSOEwH++j9Mvx/pkGJiynFi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqkHmPyTo3mSP09XtIrigoGZRyH+pIP3if7FsxjgiTxD0S/nYyYT/zuH6v87iYmI59f530y/0zDR+Ver6A/reVNXnhjFaWt2TNDSteCcj6if63Jmy3xco58Of/AIZ6Mv8Ayth/xMWYnLr+8/rfV/p/4WpfPvm7QnVNc0YXMNN5rFywFPGN/i/2OP5jH/Fx4f6w4o/5vD/vk8cBzuH9L6of8Umem/nZ5bu5DBPcGzmFBwulMRqfDn1zIjDj+kxn/VPq/wA6KeG+VH/df6VmVrq9peIJLaaORT0KsD/HImBCDAhG5Fi7FXYq7FULeWMV3E1vcDnG6lWU9CGBUg/7HISjxCuX9VNvNNf8g6/oFb/yRfOggTawuaywvQ19OOp5w/D8K8f8n41+LIDNPHtL9/D+lXjx/qzj6p8P9P8A2f0p4yBv6/631f6aPr/zUP8All+fUHmS6/QOvW50zXEPExPUK5H8nP4kZv2I25cv2HfMgcOQcUDf9H/j38X9L0xlH+akASFx/wBL+PxF6V5khE2mXURHIPBItB3qpGVy3DEPH/8AnEzzIt95em0dz+90+ZgB4JJ8a/8AJT1MNdWUnueFg7FXYFdhV2BXYVdirsCuwq//1vUiVq1fEU+4ZWOZ/HRkq5YxdgV2FXYq7FXYq7FXYq7FXYqkfnLytb+adJudGu/7u4QrXurfaRx7o/FsqyRseY9Uf6ysL/JrzdcSxzeUdb21jSaRkn/dsQ+GOdK9fh48/wDY5YJ+IOL/AE39GTMniHF/pv6yP/M38rz5skttS0+5ax1eyJMM6iood/Tcfy1/42+FuWVHiieKFf0oy+mUWFkbhjeh/ktq2papDq3nvURqn1M8reBV4xhq1Ekgoqt/q8Pi4/G3H4MjOc8uxEccP4ox+qf/AB3/ADv6vD9SmROxof1WU/mN+XN15uiaKDU7iyheExPCqo0T1J+ORHHKu/H4XX9nJTM6qPAY/wA3JDinxf0cvFxQ/wBkniI2HDX9KEZS/wA2f1QeVflh5r86+X4bzy8ttDqMWhMsJiJKTFKtwaI/ZdWUfBy/Z48MmNRGvVGX9KUT9P8AXj6/p/oM+IEWR/nR+r/Sf8S+gNC1I6pYwXzxPbtMiuY5BRlqPsv/AJS4bB5b/wBL6Wv3Ifzh5ch8yaTdaNcbJdRMlfAkfA3+xf4sjONj/coItg/5D3usW+nz+XNeiZZ9IcQJKa0ljPL02Un7XFU+1/LxxhlGT+t/FH+ayMxL/fPUcsQ7FUFqOr2mmp6l7NHCni7BR+JyQgZct2UYk8njfn78zfLs00gTWbp0ZQBBYitCAQf3lNmb7WExnD+LHh4f5wjOf+69TPhlHqIfw8uKbwjXPOOgWyCCw0k3U4J4zX0zu+55CsERVcplHi+ueXJ/0qxf5v1T/wBwiQFeozn/AJ3DD/iuD/SMx8nf8436v5zRNb1totNjehjhSIKxSoI5Rxelw+H7DMzSt9t8xeMn+7A4f50py/2HF4sp/wCdwx/mtPF3cvf/ANJcf+czJf8AnEW0mBN9qlxK5oahVA9/hf1f+JZZKeeXOUf87jn/ALLih/uVJmeZHyP/ABTJvL3/ADjD5V0riblZbx1NazNsf9ZE4rkfClL6pf5sRwf7L6/9ktHveqaZplvpdvHZWUaxW8ShURRQAeAzJjHhFJCLySXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWP/mBMIfLupSE0paT7/7BsBSEg/ImFofJ1gjeEpHyMsjL+GRgpZ/k0OxV2KuxV5P/AM5Ba5Kmm2/lyx+K91eZYVUbHiDyP+xaT043/wAhmyMjQJZB6H5Z0SLQtNttKgp6drEkYoKV4ihb/ZN8Tf5WRhHhDEBNcsVh/wCa/m268p+XbrWLCL1p4VHFdyAWITmwHVUryxEhH6kggc3lH5KXOg6nK3mzX9Siutbn6rKQvonsqK/7XEfBx+yn2MjLBLKeKVcI+mMf98yOOUje39V7Nc/mBoNrCbmW+gES9T6i/wBcv8GXcz8KQYTq3/OS3lKyFLeWW8fpxgjJ/FuK/wDDYTjEfqlAf53F/uOJiYAcyB/sv9ygx561f8xbWfS9P0GRdNuUMb3F7J6S8XBDFI1R5HK/aRombi38uYc8uKQ4YmeSX+1xjGMZf0sspcMf6so8U/5jDij04p/1eGHD/ner/c8TBdA8rfmN+VU8llokK6lpbuWRKgrudjxJikifiPj4/B/rYBqxAcOSMv60Yyl/pJQ4vT/Rn/pUDLQqQ/H9Dh9X+m9L0X8kfJGr6PLqev8AmJUjv9WlEjRIahAC5+XxGTGEuI3XBH+HiW78nrGXq7FXYqkHm/yXpnmyzNjq0QkjqGVhsykdGjcfErfLKZ4+LceicfplH6osSP8ApJd5S8qWvliz+oWTSOnIuWlcuxJAWpZvZcsuR+onJL+dL/jrKyef+mT3JKxD82dbOjeVtRvENHEDIv8ArOPTX/hnxtlHmhPyS0D9B+UtPtW+28XrN85SZf8AiLccqhy+KCzrLUOxV2KuxV2KuxVjfmz8vtF81hP0xbJMY91YijD25D4uPtmPPCJG94n+dE8LExtX8u+SdH8ujjpVpFAadVUA/wDBdcYYYxN/Uf50jxSURAT3Mhk7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8t/Mn8nLjzfrVvrNtqEliIoTA/pj4ipLMeD/ALPLnxbKTLJE+jh/rS/hWyOWzKfIXkDTvJVm1lpvMiRubvIeTM1ApJP0YYQI3J45H+JH2spJplqXnPm/80jaXq6B5dgOo6vJtRSPTi/y53r+z/L8P+W64zlHGLl/mxj9cmVCPP8AzY/xfj8f0kP5U/KIrejzB5tn/Smrk1XlX0odyQkEZ+H4f5uP+oq/aaiQlm3n6Yfw4Y/R/n/z/wAcc8v1MJEy57f0Y/T+Px6pet6aBTYdMuAS3hV2KuxV2KuxVB6pqltpVtJe3riKCIcmdtgBhAtIFvDFvdV/OXUZI7KU2fly0cBh+1Nv1Yf5Sr8Ct8K5TlyEemH+dJkZVsP86T2ry75ds/L1lHp2nII4IxsO5JNSWP7TNkceMQ9/8Uv4pMAE1y9XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq0QCKHBzV5Hp6S+QvN0lu446LrLD0iNljnofgA+yvPj/AMR/lyvEa9Hd6o/1WQNiu76XruWsXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FViyq1QpqRsfniq/FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwb84fNH+H/L1xIhpcTgwxDvyf4aj/AFR8WN0yiPsd+THlqfy95btrS7AE7Vkeni2+/vxyjHvvytF2xX/nIXUTqdrbeTrEepf6jMnw/wAqKatIfDJ5NhZ/zf6yQKFvV9IsfqFlBZ1r6MSR18eICfwwx5bsUZk1dirsVdirsVdirxvyZ/ub/MTVNUA/d2kQhUnx2Q0/4bKerIvYJZkhQySGiqCST4DrlwYvN4v+ciPJ0l4bH66FYEguykJUf5f2cuGHzjf8223w/MM40bzNputoZNMuYrlR1Mbhqf8AA5CWMx57MZQITTIMHYq7FXYq7FXYq7FXnP596zeaN5XmvdOlaGdJYqOvWhccvopg4jE7M4Gixz8zdM1uPSYfOuj6hLHc21tFJLDX924ADyNw6cviwDNOB6eGfqjX0/75RMg+X82npnknzEnmTRrTV0FBcRBj8+j/APDhsmxIT3Ah2KuxV2KuxV2KuxV2KuxV2KuxV3TAArsKuxV2KuxV2KuxVphUUxV5p+T3lDU/LFzrEGoKBDPeGaBxvyD8mb/gfhXKMZvajGv9J/mIEremZel2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVgH54+VrjzN5Wu7Gz3nUCRFH7RQ8+H+yyrJLhF931f1Vumvyc1HSNU8u2v6NSNXt41imQKAyyIOL8x9rkzfFj4ERvQN+riTKA+bKZvKumS3kepPbx/W4vsyAUYfSOv+yyIwxBsbf1f+JYCITfL2TxTzRbJ5g/NDTrC5HO3sLVpgtAQHYE7/wDAJlOSIlt3/Umtk/1f8jtNF1+l/Lcj6PqYNfUt9o2PcSQf3ZVv2uPHIwjLF9B2/wBTyeuH/FR/2UY/zGMSY8v9LL1RZl5ZfVDbenrQT6zGePOP7MgHSUJ+xy/l+LLRLi3rg/o/V/pZfzWV2nWTQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqlepeW9O1QEX1tFNUUPNAfxIrmPLTwlzH+l9P+5YmILCdQ/ILyvckvbQy2Uh3528jIQfavNRkgJw+meSP9Hi4of6X0y/2TKJMeRlH+qUK/5Ra5ZktpHmS+jApxWcCYbePMry/4HJeNm6+Hk/zI4v8AZ8OWTIZJdeH/AEkeL/Ttppv5laaTwvLDUFG4MkZiPy4xL/xth/MGvVjiP+FzlP8A6ayh/uVjPoYx/rcUpS/3kVi+c/zAsjS90SCcU3NtKev+zOMdRjPOOWH9bh/3vEiM490/9iqp+b+qxVF75ev0I/l4sP15D8zg/n8P9aEv+JRKcB14f6yyb8/rK2b07rTdQjc9jCf65eMmE8skP9LP/iWQljP8Q+Uv+JWXX5/W6Kv1TSNUuZHFVC25AP8AsmP/ABFWyqWfBHnkx/5vFxf7Lg/3SOLHf1RP9X/iZcDB/NXl7zH+al3bTpoa6MIXDG8nf99xB5UVVETf7Fkb/XykzgDxYhOWQ/xV4WKX9Kf8M/60JykwEgDcRL+t9H+x/wCkn0PBb8YVgkYuQoViep2oSf8AWzI6Mnh/5Ifl5qflnzXrc8yGHT3YiMfsvybmjL/qrlOOd7d31cSBK9nvGZCXYq7ArsVdhV2KuwK7FXYVf//X9TL1Pz/hkBzVfkldirsKuxV2KuxV2KuxV2KuxV2KvLfzX8u3Gn3Vt550ZOV7p208a9ZoD/eJ7sq/Yym+CXF/DP0y/wCKTE8J8j9TPvLXmC28wafDqlkeUM6hh4jxU+6n4cvIpSKTTAh2KvHvzIjl8leZLTzvbCtpccbS+UdOJ2jmPurf8RyqJ4ZUfpn/ALtnE9HrkMqTIJIyGRgCCOhB3By2mBVcVdgV2FWF+cnttOga51fV5bK3rX4WSM0/lTgiyt/seT4xjkl9ND/MjOP/AEt4+FkIyP0/dGX+ynH/AHzw/UvMnlDVp6aXpmo69PUgNK7lCa+Lltv+ByrLQ2yZSa/hx+n/AHHB/uUzI/ikTX838f7xMLD8rPNnmYrGbe28u6d14wqDKQexb+85f7Ncx9v8nG/9szeri/per/ewa+PpEf50npHkX8gfLvlWQXnpteXw39af4iD4on2VyXgmX1nj/o/TD/j3+5/oo4b57vTMy2TsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirAfzzvntPKV8U6yKI/oc8T/AMLkZFIT78v7UWvl/T416C2iP0soc/icYigpZBkkOxV2KuxV41oMTebPzFu9Tf4rPRYxDFXceowPIj+Vl5t/wC5XLc13eplLbZ7LljF2KqU0KToYpQGRhQg7g/RkJREhR5Ieca5/zjx5Q1iZriW09J23PpMUFf8AVXbKBhMfplKP+yQI0o2f/ON/k62dZPqrScRTi8hIPzAw+ETzlNHD5lm2keTNG0cD9H2cEJUUDLGA1P8AXpy/4bEaaHdf9b1/7viURATzMgBm7CrsVdirsVdirsVdirsVeW/85GcpPLP1Uf7vuYEPyLjISZB6RplqLS1itl6RRog+SgLhjyYorJK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUt13zDY6DbNe6lKsMK9WY038B45KMbZRjbymfzDrv5nymz0Ayaboqkh7ogiST2iHYZVPPwnhx1PJ/O/hgky4fp3/pPQvIvkSx8n2Qs7McnJJklYDm5P7TnIQhvxS3yS+qX/EtbJsuS7FXYq7FXYq7FXYq8I896jqH5la3/AIX0YU0yxlBu5SfhZgfs1H2uP8v82V5cnAOEbymzO23e9o0jSbfS7dLa2RIwqgfAoUGgp0XI48Yhy/zmFUj8uVazBRU7AYqh11C3bZZUb5MD/HJGEu4/JsOKQ6H5FFZFrdirsVdirsVdirsVdirsVdirsVdirsVdirsVYR+b+gPrGgy+i4jmtmW4RiK7xnnT/ZfZyqYI3HRINMj8samNU0y2va1MsSsT70+L/hst5qU0xQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqlXmXWk0XT5r+T/dSkgeLHZF/2TYhIFqflOwls9OiW5NbiQGSUn+d/jb/gfs5CJvdSU5yaHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8a87r/ijzzp+hj4rayUzzL2r1WuVZN9u9l0er6hei1tppo1LtChbiOpIFQBkrA+DF5X+Sekvr89z551arX1y7RRqagRIppwAPfIE8cr/hj9P/FJJv3fwvYsuQ7FXYq7FXYq7FVK5fhE7/yqT9wwFXj3/OOo9dtXvWNWkujX72OVx3LKT13ULRby3ktm+zIpU/IimSkLDF5f5D/IbS9Fsp7DWLa3vechZJCp5cT2Yn7LL/k5ijDx7ysS/nRn/uf+PMDG+f3pZ5t/IryxpIGp2F7LoEpYKskcp48idhxc8v8AgXXL8cMsP7uV/wBHJ/xXp/2UZtkBK/Sf9N/0lD/dImL/AJWJ5QiqrweYrIbhjVJ+PWta8X2/ymyX5n/VI1/Sw/T/AKXh/wB6nxL+of52P/iE50j89dEnPoass2l3I2ZLmNlAPtIBxbLo8OT6JRn/AEb4Z/6RIAP0kH+j9Mme6Xq9pqsIuLGVJoj+0hBH4YyiY82JjSNyKHYq7FXYq8r/AOck7qKLyhcRP/eTPGkY7lq7UyEgkN+cLSa1/LWW3mk4SpYKGJ+Q+H/jXANwoLIPyaKnyjphUcR9XG30nJRClmeSQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq4iuKvFPOHl2//AC81pvOPluFprC4FL60Tvv8A30a/zZRCYxHhl/dH6ZfzJf8AErGXDsfp/wBy9H8k+e9N842QvtLfkBs6HZkP8rr2zJlGvMH6ZMpRpkmRYvFvMkq+XfzMsdTu6La6hbm3V+wkAIUE/wCVXK4i5V/nMo77PacsYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2BXYVdirsVdirqZHhBV1MNK7CrsVdirsVdirsCuxCuxtXYq7FXYVdir//0PVIyIV2SV2KuxV2KuxV2KuxV2KuxV2KuxVayBwVYVBwEWryGGn5W68yyFzoGqyDh3W3mY9P8lJK5DEf4D0/u/6v81nHfb/S/wDEvX1IYVHTLGDeKpT5n0CDX9NuNLuRWO4jZD7VHwn/AGJyqceIf7lBDyn8jvzEME0nkPWyw1KxZo4WYH95GvTf+ZVy6J448X+mbD6hf+me2YGCQ+aPOuk+V7c3er3KQIOgYjkT4In2mP8Aq5ZHGZe7+d/CzjAl5I35o+b/AMw3a28iWf1OwBKm/utv+RaUZf8AgVlb/VymWeENog5sn+wh/W/49L/MkvHGPL1y/wBjH8fiKc+W/wDnHu0WZdS823Uus3+xPrEmMH/JRuXL/ZZTLxMv1nhh/qeP/iv+IjBqJlL6v9LH6fx/pXq1np1tYoI7WJIkGwCqAPwyUMUYcgAkABFZcl2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5N/wA5J3nHy6lgpIe7uI0FO9DyIyMjQSHpPl+1Nrp1rbnYxwxp/wACoXEITDJK7FXYqoXjskEjx/bCMR8wNsBKvOP+cf7MJoMl7JvcXd1NJI3cnkQA3+rkIi9+9JNvTssQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqxD8yvy+i88acumyzPb8JFkDoKkFT4VXKpCX8P+yWz7mS6fafU7eO2DF/TQJybqeI41J/mbLB5qisKuxV2KuxV2KuxV2KuxV2KuxV2KuJpiqButbsrNS1zPHGB1LOB+s5MYyehZCBLxX80f+cn7Hy5KlroCpfS/wC7GqeI9gR9psmIiP1f6WLPhEee/wDRt6b+WXnYedNEh1r0jC0tQydQCDQ0PcZSavZrNdGV4odirsVdirsVdirsVdirsVdirsVdirzbz/8AnHZ+X5V0rSU/SGsSHisEZrx/4yFfs/6uTIGMcU/SP9lJnwgby/48lWg/llf+aLpde88SGRtmiswf3cf+uvRmzFlOWbb6MX83+KTCUjLblF6xb20dsgihUIijZVFAPoyyMBEUNkBWyaXYq7FXYq7FXYq7FWFfmz5uHlnQ5Z4zS6n/AHMIHUu+23+rjdb9zKIW/lH5OHlfQ4oH3up/30zHqWb4tz345TjF+o9WDN8uS7FXzB/zlO+uLq1naQXTrp14gjWBXKrzrQ+oF+F+TMvxNy4YI5pQsD0/0o/XL/O+pkJEclmk/wDOJeqrGssuqLE5oSEQmnfZ6r8X+xzF/MZug/2cv+J/37ASPu+P/HWVp5X/ADF8mOJNNvl1WzRSWimqTRd+KV+IMw/lyz83IbZI3/Siz8Q/xDi/pPT/AMvfPFv5x0xdRhUxyAlJYm6o6/bQ5kGuY5fwrIdzKMDFKtd8yadoEAutVuI7WEkKGkYKKnsK98nGBlyZRiZcv+J/3SPt7mO5jWaFg8bgMrA1BB6EHIMaVsVdirsVdirsVdiqhcXcVsvOd1RfFiAPxwgWkC1tzfQWqerPIqJ4sQB+OERJ5JESV1vdxXArC6uP8kg4DEjmgghXwIS/X7eW5sLiC3p6zxsq8ulSNq5CY2VjH5OXTzeXIEmYNLEXjenirEH8cYHZlJm+TYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KsC84P+mte0/y8N4Y63lwO3FDSFD/rSfF/scrmLFd/+5Zch72e07ZYxdirsVdirsVdirsVdirsVdirsVdirsVdirTMFFT0GKvEvymvY5r/AFzzhfsOCzNErn+VPD/W+zlfOXuDMiy9b0GaW6tEuZxxeYcyPAHoPuxjv8WJR0EEcK8YlCL1oBTc98MYiOwYquTS7FXYq7FXYq7FVrKHBU7g4CFeLflDqEOg+ZNW8tXP7mWSX1YkOwYEn7H83w5DELHuZ1Y9z2vLGCW675gstCtWvtSlWGBNyzGn0DxP+TkoxMmUY2+YvOXm67/NLzTp2jQI0WmeqGjBBHNVPJ5T/sRlOTIKqP8AV/zmRoCg+q4IVhjWJNlQBR8gKDJgU1qF1pdrdilxEkgP8yg/ryqWGE+YBQQ7T9MttOj9GziSGOtaIABX5DJQgIChsoFIvLEuxV2KuxV4b5oZ/wAwfPMPl+tNM0f99MP55Adh/wAF8OV5DY4R1+r+qyOwT3/nJKR4/J80UW3qSRoe227H/iOEmkBnXkq1jtdFsoIKGNYIwD/sRhiKCp3kkOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVJ/MXmfTdAtnutVnSGJVJPIipHsnVsIxmX49LKMTJ5L+Qlq+q61rHmu3hNrpl4yrAlOIcAktJw/42yiNA8Mfoh/ukWBsOj3LLkMW8/+QbDzrp50+/BVlPOKVftxuPsuh/4kv7WUziTvHacfpl/vZIPk85ivvzQ8qINNS0ttZhT4Y7kvxfj0HqKzxNy/4L/XbJjVR/ykZif+1+uMv6XpjP8A3n9Vnx3zH+lP1fj/ADU98o2Xn3UtTi1DzJNDZWEQJ+rQblyRSkjfyr9r7TYBnMthHg/nSn9X+b6pf71jx304P91/vnqWWK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYFdhV2KuxV2KuxV2KuwK7CrsVdirsVdir/AP/R9UDKwN0t5Yh2KuxV2KuxV2KuxV2KuxV2KuxV2KpL5u8r23mfTJtKvBWOZaA91YfYce6t8WVzjY25j1R/rK878heer3ThJ5L1QV16zQ+gZTRLhFPwcJPtcuH+T/wWSE+OPFzr6scfr/pfUzO4vr/FF6J5S8yweY9Pj1G22DVDLWpV1PF42PirfDkyKYkJ1gQwHzza+WfK9yvnjWE9K5t1MYkXq3LovAfbbKo4bld1/O/mpEbYCPzQ84fmMTD5Js/qWnmqm8uOvzQfZ/4Hnlk9RCG0Qc2T/YR/H9NkZxjy9f8AuU/8p/8AOPOmWcv6R8yyvrGomhLTklAe/CMnp/rfD/kZRITzf3h/5J4/TD/Tf8TwMJEy+rf+i9Xt7eO3QRQqEjUUCqAAKeAGWwgIihshWyaXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXjH/ADko/wBWt9Jvn/uIb5PUqKgAlTU/7FGyuW+3eyi9jgkEkauvRgD94yzkxVMVdirsVdiqHtbOG0T0rdFjSpNFAAqTU7DIRgIighEZNLsVdirsVdirsVdirsVdirsVSnVfNGm6VPBaX1xHDNdMViVyAWI7LXJRiSyjG/gm2RYuxV2KuxV2KuxV2KuxV2KuxVomnXFUJc6raWoLXE0cYHUu4X7+RycccpcgfkWYxyPIH5JTd/mBoFoCZ9Qthx6/vVJH0KTkvBl3f6b0f7pIxkpZcfnH5VgUsdQiYgVotSf1YfBkOdD/ADor4ZSS6/5yB0IHjYxXN2x6CKIkH5E/DlZ4I/VKA/2SKiOZih5Pzm1O4BGm6DezMfs8l4gj/KcB+O+VfmMP86z/AEQJf77i/wBgx4od5P8AVjx/7mX+9U/0r+ZusqRBZ2elIejSv6jU/wBj6i/8FEuR/Mx/ghOf/DPR/uvCl/uk+IOkT/nH/ieCX+xUv+VN69rDGXzFrtw7MPsW/wACU8KfZ/4FVw+NmPLgx/1fX/xP++R4k/KH9X8f71G6f/zjt5chYSXhnvD/AMWyEj/gRtlZjkl9Upf5vpYbnmT/ALlPNb/Jnytq9qtlPYxpGm6mMcWH+zX4srOnA5GUT/Ov/ikcA6Mn0HQ7TQrOPTbBPTtoV4ovgMyYR4RTKkxyaXYq7FXYq7FXYq7FXYq7FXYq7FXmH53+VfNPmGxht/Ktz6BDH1l5mPkCNviA3/1cgc0sW8QZ/wBXh4o/6eUf9ivGYct/90gPyO/Js+ToGvdYRJNWkJrIGLUX2ZhlIvIeKV/0Yy/3X8SOe5evZkpdirsVdirsVdirsVdirsVeNfmTbHzX5y0ry9wMltaA3Nx8j0/5l5VkPTv/AJrLp73sMUSxKI0FFUAAewywBiqYVdiqTax5S0vWp4LrUbaOea1blEzipU+K5TPEJ87/ANNKP+mjGXq/zmJF/j8cSc5bTJRuLiO3jaaZgsaAszHoABUnGrSHkf5Cqb691rXbZTHpt7dk26nYEKSDIB/lZVHY8I6JJrZ7FlzF4L/zklpba7qnl/Q5Sfq11csHCmhI+Hmf9infK5k13Jp7P5d0G20Cxi0yy5C3gUKnIljQeLHDEEDcmf8ASkt2meTQ8g/MD/nJDRfKlybCBWvLhG4yBCAqkdRy/my3gA+o/wCbH6m2MB/F/sXonlDzVaeadMg1ixJ9GdagHqD+0rf5St8OVkUwkKQXnn8xNI8lWn1zV5SvKoSNRydyP2UX/jZuK/5WSjC/L+lJYxtKvyp/Mmbz1bT3ctlJZoj0iLg0dD9llJC1/wArj8OVGcJGoHir6vx/D/VUmPRnuSYvJPzp/LDXPPVxaw6fdJb2MSkuGru9T8VF6/DlUsk47RH+dxcK8ZHJJdU8naB+X1h9d813c2r3BAEMMzEhnA2EUFeP+TybDWTIP3kvTH+b6f8AZ+mcmW8/qO3+lZH+SflK70+O71/UYltp9TcOluuwijH93HT7Kn2yMJcXK+AemPFLi/zmN37v4XqWXKkvnG7ntNGvJ7RS86QSFFXqW4mlP+JZGUuEWUjZh/8Azj3bTQ+UrZrkUkkaRzXqaseuQgbUvSstQ7FXYq7FXYq7FXYq7FXYqgNd1L9F2FxqBXkLaJ5aeIRS9Pwx96hAeS/Ndt5s0qDWbMEQzgkA9QQSjqf9Vl44SK5MpCin2Bi7FWiaZEkBWueUHL5JpcDXpl8ZWh2SV2KuxV5x+Vsp1y91TzQ1eNzcGCCv++of3YI/1m55XzPu9KT9z0fLEOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVDahC01tLFHs7oyr8yKDInkrwn8rfy78yK40nXYhb6TazvMQCCZ3J5JXj+wv2sxxk4/TESF/wB5KX+4Tx3ty/nPflUKKDYDMmqQ3hV2KuxV2KuxV2KuxV2KvOfzX/Kz/Fkceo6ZJ9V1m0IaGYbVpv6bkfs5jkGB44f50f5//HkA1uGMWvmf80RH9RbTLczpt67PRTT9qn2cs/NQ/mz/AKrPxI/zZI7Sfyh1PzBcrqnn+6+tshrHaR7Qof8AK/nyEpzzbf3WP+bH6pf5zEyMv6H9GLK9D/LKx0zWp/MBb1Z5FEcKlQFhjA/u4gv/ABLBHHv04YfTGP8Aupf00M0zIS7FXYq7FXYq7FWH/mb58t/JujzX8jL9ZK8YEPVnOy0T7TBftNkgOrOMb3SL8kPJ8+k6c+samCdS1JvVk5faCndEP38mzGgeI8Xf9LAm2aebfK9p5n06XSb4H0phSo6gjoy+65OceIbbK8w03SfzF8lxpYacLXWNOhosau3pyhB0HNiq8lX/AFsEdRX95CW38WM8XF/m+uX+wiyGS/qH+dGX/Ff8S9Q8tajqGoWaz6raGwuSSDD6iyUAOx9SP4fiyYkJbji/zhwy/wBKx91/53D/AL2Uk4ySuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KsO86flbo3nK6trzV42ke1+yoYhWFa8JB+0tcoyQMuRMR/FGP8AF/xKDuymzs4bOFbe2QRxRiiqooAB4DLIwERQ2UIjJpdirhgBV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWga7jpgVvCrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdkSrsKuwq7ArsKuxV//S9U5FXZJXYFdhV2KuxV2KuxV2KuxV2KuxV2KuxVgX5pflwnmm0+tWVYdatP3lrOpCsGG4jZv2kb7Pxf8ANWUSuJ44/UPqj/Pj+P8AiVGxsPIP+cbvMurWnmfUPLWrI0TSo1w8RWgSRSodlX9hZVfl/wADlsMgmNv83/fRZmVj8f6V9OZJgknmryjpvmm1Fjq8QmgDBwp8R0OVZIcXeP6qCLTKxsYbGFLa1RY4YwFVVFAAPAZKEBEUNlGyJyaXYq7FXYq7FXYq7FXYFdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVj/AJ38m2fm/S5dH1AfupRUMOqsPsSL/lLlWSHENtj/AAqXkV5Zfml5YtFs7A297bWQPGQ0LyIKcYyjFWLKuEavh+uP9aX8H9fij9P9Jn4neB/W/wB8ybRPzfv0tIr/AFvT3+oyj/emzJmVT+0J4FHrQ8T8P2X+LD42PqTh/m+J/dT/AJvDlj/FL+ZwokYjn6P63qj/AKf/AHPpZZ5f/NDy35gUnT7+FmB4lHb03B8DFN6cn/C5kjBKQsDjH87H+8j/ALDi4f8AOZRxmXL1/wBX1/7llKOHHJTUHKWC7FDsVdirsVdirsVdirsVdirsVdirTMB1xpXgP/OSV/puvaCdQ0u4jkvNFu158WHJeR4OtP8AXCf8C2CUDAiXf+Px/WZmBju9e0TzbY3Wk2upzzRwxzwxyfG6qByUNuWPvlscUp/SDL+rGSfDMuQJ+DyPyB+aNhp3mnzBBqmoiSyaUS27ly6catySHjyX4VKL8H8uIjKXpPOH8MjGP+64P9Kk3Lbu/qs7ufz48o29At8JS3aNWP8AxILkjir6jGH9Y/8AE8SjH3mMf6xUP+V++WiCQ1waeELGvypkCI/zsf8Ap2BiO+PzQz/n/pcu1hZ3t0x2okJBr8n45AyxjnKI/wBMp4R/EFqfmz5guzSw8t3jnpWVhEPvdGXIfmMNWDOf/C4eL/0ylP8A3KylAcuP/Sf76PEvPmz8wbyn1fRLe08fXuA/3GEr/wARx/MQ6RyT/wClX+xyxj/umJmAOUz8Y/7n0yQ/p/mfO/L1NPgU9gC1PbdOX/DYjU3/AJM/50uD/cykkz2+n/ZS/wCPKj+V/wAw7ygn1a3gHX91F38PfEaifSEB/WPGoyHuiP63rXH8rfMt2tL7zDPU9RHGAP8AYkFWGDxsvTw4f7L/AHcZLHJIfzR8OL/dLj+RdvcKI9S1TUrperKZyFJ/1aN/xLHjzfzhD/hcOCX+m4v96onMdf8ASjg/4pUi/wCcd/KUdeUEsld/imk/41ZcrMJnnOcv63B/1TawD1JP+l/3sYpna/kn5TtxQafE3+vV/wDiZbAcF8zP/TyXh9/zkm1l+XXl+yNbewgU/wCoD+vI/lodbl/WlJeAJ1a6db2g420aRjwVQP1ZbHDAcgGQFIrLkuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5N+Wkn+IPN2u+Y0qbaN0soT2JjFJuPt8Ebf7PK/4vcP91/0gyl3dz1nLGLsVdirsVdirx/z9rtz551F/Ivl9isC0Oo3I+yiV3tlP+/G/b/4H+fI5JeGKG+Sf0x/mx/nsj6f6x/2MXqGh6LbaLZRadYoI4IFCIo7ADBCHCGFJhk0vGPzgppfm/yzr10P9CWeS3djsqNIOMZcn4R9tm/55NlfM8Pf9P8Am/iKRvs9nyxDzj84/PFxodpDpGjDnrWqP6Fuo6qDtJL7cFP2v9l+zjxCA4j0/wBlJmNt+76f6yQad/zjl5b0mwkn1FDd3YiZnllY8edCzPT9nfMPw5S3kZf1Y/7n+k18Nneyxj8ofOb+S/y6OpSoZpZrySKziFSXZjxRPl6iyNmVGQ67ANg359GceR/ymaS5/wATecW+u61KeYR/iigB6RxRt8PJP5v2P2P5mokDm+rbH/Dj/wCL/wCJ/wBP6/prkeLny/hi9TRAooooB2GXRiIigldk1dirxn80vIevSeYrbzfo0cWoC0jC/VJjSlK1eOvw8v2l/a55jZJ1tMGeL+j/AL6K8VbEXFm/5Yefo/O+kjU0iNvIkjQyRsa8XWnIBu4+LMk1/CykKZfixYL+bnmX9F6WNOtwWv8AU2+rQKvWr/C8nyRT/wAEy5GRoX3M4it+5lPl/SE0ewg0+KnGCNU+ZA+Jv9k3xZHGKG7EpjliHYq7FXYq7FXYq7FXYq7FUs8xaa+qabdWEbBXuIJIlY9i6sgP+xrkJctleO/8416/+ibe58j6ufR1OyuJCkbbc0JqTHX7fF+bfD+wy5LGeOPEOn1f0WdWL7vqe64WDsVYR+Wev3ep213Zam/q3um3s1rJJQLzCnnDLwX4V5ROmY2UmQB5b+qMfp/ms7ZrTbGmLSYcXVJX5kMXYqw/82PMLaD5Zvr2E0n9IxxU685CIY+PvyfljyZRR/kLQRoGhWWmkcXhhQP/AK5FZf8AgpC2VY+Xv9X+mYshy1XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWIeafyy0jzNqlnrGpq0ktjXglfgO/Mc0/a4t8WUzgZdTw/wAUf5yD+IsuAAFBlvJLeFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYCrsQrsKuxV2KuxV//9P1RkVbySuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVLxotkLz9JiGP64U9MzcRz41rw5/a41/ZykYgJcX6ZcP8Apfo4v6X1LSYZcrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVYVqNu3ljUf0raRM9heMFu0jqfTb9m8EY/Z/ZuOK8/sv+y2UAjHsTUD9P82E/5v8ARhL+twxl6f448JEtqP8Am/0f+kkVrH5deW/MlLq+sbedno3qhRyYU+H98nxstP8AKyJ08Qdrh/wuUscf9LCUYtZgPd/V9P8AuWOSfkVYWreroV7e6Y3UiGYlf+Bl55cJZYihMz/o5BGcf97L/Zs4ykNrPB/N/HqWP5X8/wCmgrp2rwXaDoLqH4vpdcfzE/4oQn/ws+F/sUmZrcA/1fQow+ZfzF02qXuk298OzwTBa/7BsTqIX6o5Yf8ACx4v+y9KDkj1Eo/1f3qsPzD85naPyy7eNblF+7kMZajCP9X/AOVMpf7mSDkgeXH/AJ0JNTfmF54U8V8rMR4/Xov+ach+Zxf7d/ypnH/imQkPNRH5j+doKvdeWmKdhHcIx28TX/jXCdTiH+qD/NlP/YxgylKAHKY+MZf7mLv+Vm+cJiPR8tyqN685V+inHJR1GI/6of6sf+KinihX8Z/q8Kuvmr8wLtCIdGt4Sxopkn6f5TJ3GH8xDpHJ/nDgj/pv4WsSB3AJ/oy9Ck2nfmZfKOd3p9kOJ+wjO1ewPLkv+yx/MG/Tj/5WT4o/9KpQn/sVGSv4R/yUP++g5PJf5h1q3mKIUoR/oiGv8wOy/wCx+1lfjZP5mH/lZk/6py/3TATl3R/03/Vv/fNf4F8/gt/zsUZDf8uq1+jf4f8AY4Rny9YY/wDT/wDVqPF/nNoyHqI7eUZf72Civ5UearxSNR8xz9P90rxH3MWwnPmPIYof5v8AvocKTkldjh+XC3/yoP1UIvNZ1CYU6CTjvT/Jwyy55D6oj/MiiWSZ6/7GP+6fKOpeUJrfTb3UXlLSWt+bWdS1ag8uEvxfa/eI+AZJf5sx/sv6S8RPxfVXkr8iPKFxpFldy231h5IIpCzSvQllViQEdV+1lRxyP1Smf6Pp9H9GPDHi/wBmwMehv/cf7jhYj+X/AJD0SX8xdc0+Wyha0tYkMUZUFVJ9PcBuW7VODwwRw+qhfWXq/ry4vX/nLwgD/pJ7zb+VtLthSG0hUe0a/wBMRpsfcGMYCPJFJpdqmyQxrTwUD+GWeDDuj8l4R5IhIlQUQAD22wxxxjyAH9UBmBS/LVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVQ99I0cEkifaVGI+YGRkaCQ8z/wCcarcR+UIpmr6s888khPUsXIqf9iq4IqXqmTQ7FXYq7FXl/wCYfnq9u7r/AAj5QIk1iUUmlG620f7Ujt9n1afYX/jfjjOQxizvI/3cf99L+gz+nc7k/TH/AH0vx/x6WeSPJdn5R05NPtByf7Usp3aSQ/bkduvxNlMIVufVI/VL/e/1WtkmXJdirF/zE8kW3nTRp9HutvUHKJx1SRf7uQf6rfa/mTkuU5ASLH1D1R/H9JSHm3kT8428sIPLH5gcrS/tf3cdy6kxzIvwo/NRu3Hj8X7X7fF+WX45DNuCBk/ixy9MuL8f8d9LMET/AK38UUo0j8w/Lt9531LzLq13H9WsIo4LGtTWo5SyRKP2uXNf9nglhMzX+p+qXqj9f++SYH5eaZX+teY/zbY6dpET6b5dZuM1xJtJKld1jH8rL+z/AMHkJZwPTj9c/wCd/BFgZj+Hf+k9Gvfy002az03T4A0MOkzxTwBafaj/AJ6j4vUq3Nv5vjynwtqH+dxDi4uL6mNMulbgpbwBOZKWE/lH5lvPMWjveaiwaZbmePYAUVXPBSB/Kp4/6uAStnJnGFg7FWBfmz55k8u2K2Om/vNXvz6NtGNzVvhMlPCP7WJIiLPRnEde5Mvy78oweTNDh02o5oC8zn9qRvikc1/4H/VXKsYPP+d6v+OsQCVa+/MXy/ZRSzS6hbEQirhZVZh2+whZuXL4eOZXgyHMGP8AWHCz8MsX8kaXceatU/xrqqenEFKWEJG6x7/vn/y5OXL/ADXMMnxJbf3cP9lL/jrAl6bl6HYq7FXYFdhV2KuxV2KuxV2KuxVgP5lfldb+a1W/s3NprNt8VvcpsQR0V6dUbMcxMDxQ2P8AFH+Gf/Hkbg2EH+Xn5kXF1MfLnmpBZ67DQUOyzr2lgP2WP8yrmTAjILj/AA/VH+KP/HWwDj3HT6o/zf8Ajr0rAweY/lbOL3zB5lu4SDbPdwotP5o4/Tm/4Zcq4f4fx6mR2el8D45X4R70WuUU2y6MRHkhvJq7FXmf5lcdb1/RPLWzR+ub2Yf5MIJRT7MzZXPcV3prZ6ZliHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYFdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV/9T1SMiFdkldirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVaZQwodwcBCqFraRWkQgt0WOMVoqgACpqaAe++ACh+P98qIySuxV2KuxV2KuxV2KuxV2KuxV2KuxVxxV8N/mMHsdW1byt0N1qSTVPWjcz/AMSmymJ29zO9npf5RfmdL+Xt9J5E83sYreFj9WnetACaip/31J9pG/Zbll+KQyjb6h+OH+t/N/nLH1D+kGU/kDImsa95i8wIQ6S3IjRutVBahB/l4ouV1uxIe3swUVOwGTQ8s8z/AJsXV5f/AOHvJsIvL+tHmP8AdReJZv2uOMpRxD1eqf8ADji2ECPPf+izzyxpl5p9msOpXLXd0SWeQgAVP7KKOiL+zkASdzQ/ox+mLWnGTV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVQu4vXhki/mVl+8UyJ5K8w/5x4Jt9HutLY72d5Knjt+z/AMRwQOyS9WyaHYq7FXmv56+fL3ybof1nTlpLcSCH1aVEQI3lp/N/JX9rAJAHf/N/msokDmlv5X615N8t6SssGpW8lxcj1biaSQCR3O7c1Y+oOJ+yuSjp53xGpTl/Ffp/qx/osxikT0Pxim83536FNI1tpHralOBsttGWFfd24qMMxHH9coj+jfFP/SRYSAjzI/q/VJG6KPMutsLnVOOmW4aqwRnlIwB/3bIfhQN/KuVeLxfSKH87J9Uv6sP4f6zHiB5D/TfV/wAdZxk1diqWaz5d0/W4vQ1K3juI/wCWRQw/HMaeCM9z/pvpl/pkEA83iv5N/l/pNr5l8wQXFvE7W1wnooyg8UYF6oD0X4lXB4QmN/VX84qYAjfd7zFEsShIwFUdANh92ZEYiPJQFTJJaYBhQ4Cryz8jAbVta041Ag1GRuJ7CT4x/wALkIHZkXqmWMXYq8Q/M3yR5vl80R+Y/LghmVIRFH6pH7omvN1Q/wDEsxp5KPqiZ19PD/vl466cTH/MXkm8jh+u/mdrrvCfs2Vs1OZ7JRQvL/gf9nlscmXIPTw6bH/O/j/H+fL+ozucv9rj/R/H/FIn8vPyQsNWvU1y4sFsdNjp6FuxZpJAN1lnd/i4t9rj/wAafaxQOPYGUo/xZJH6/wCpw+j/AD4/9I1GjsL/AK1/V/vf9K+go4ljUIgAUbADwGZkRQoMlTJK7FXYq7FXYq7FXYqwv8zvPkvkuwjvYLU3kksqxKgcIAW+zychqcj8ONxH1cX+aOKSRXX/AGKUeWfzw0nUJ20zW0fRtTTYw3ZCqf8AjFMeKOP+BycBHKLxnxP6P05f9J/xPFJnGIl9Jv8Ao/TP/S/iX9F6PFKsqh4yGVhUEb1yBFNZCpirsVYj5/8Ay6sPONsqXNYbqE8oLhNnjYdCrf8AGuUSgb4o7TH+y/oyRXUc3kmqfnnrPlpZvKGoIlxr6ssMF0rARMr/AAiaapXhIv8AL+238v7WVGYI4iCJf6n/AD5f0P6DeN9yK/o/znrv5Z+Th5U0aOwd/VuXJmnk/nlf4pH/AONcx4A8zzP44WllmWq7FXYq7FXl/k6uuedtW1dviisY47OI9gT+9k4/5X7L5XzPuZHZ6hljF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVK/M2uJoOnT6nIjSrboXKJuxp/LgsDnsl4rZfmN5/85Q/X/L9nHaWDsVR5ByYjxof+JLkZ6qETUQZ/wBL+BJmByF/1k1Ggfmlb0lTULWUnqrJQZEauX+px+f/AB5PjH+aF8k/5r21CE0+bcDao69z8f2cJ1Q645/5smPi/wBH7f8AjyKGlfmncnm19p9uD+yqcv8AicUv/EsfzJ/1P/TS/wCJy/71PiX/AAxH9Yy/3spKR8qfmZXmdYt69eIiFPly9Nf+I4BqJ/zIf6b/AI7/AL5fFPdH8f5iy4k/NPTEMo+p3yruVUBWPsNlw/mq+qB/zT/x5eMdY/6Upt+Xv5wyeYNSfy/q9m+n6mic+DbhgOvHLBKExcT/AJsk7EWHp2LB2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK7CrsVdirsVdirsVdiriK4FdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVxNMiTSuySuwK7CrsBCuwq7FXYq//V9UjIhXZJXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq+V/wDnKzyJcWuowea7FD6bBUmZQfhZTVHNP+JZRxcMq7/pQDRTbyXomrfm9BZ3HmS3sm0y0pWeOpnl4inpc0flF/l8uOHLUj6YyhI/Vkv0/wCZDh4Z/wCdxxiylv0q/wCLi/3PD/vnsaL5b/LbTSFEVhaDeg+0x/5OSv8A8Fk8WCuVn+dKR/H+lisY3/xTz268yeYPzTc2OhI9hohNJLl9mcf5H/NK/wCzfGeYR9MPXP8Anfwx/H+mZGYjtHf+k9P8meSdP8o2a2OnpT+dz9pz3ZzkIY63Pql/OawyLLkuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvH/LEyeVfPl/pMgMcOrATw/wApYD4qf5X2l45XjPOPcyG49z2DLGLsVdiqGvrGC+ia3u41liYbo4DKR7q22QnATFHdBFsTH5N+UQ5lGl2vImv92OvsKZj/AJaPfP8A08/+KYcA8/nJk+n6PZ6agjs4UhQbURQP1ZbDDGHIMwKR2XJdirsVdirErjyW8XmFPMenSiJpE9K6jIqJFH2CP5XVv2spFxO28Zf7GX86KhluXK7FXYq8U8i65b+XvPWsaHes0cmoTLLb8lNH+HoCvw/ZH2myvHvfL0+bLmPc9ryxileveY7DQbdrzU5kghUElnIH3eOSjEy5MoxJeMa5+dGt+cpm0n8urZnXo95ItFA8U5fCP9ZsjPNDFt/eZP5sUkiH9OTJ/I/5JQWEi6v5mlbVNWNCXlJZEI+yEU9eP+V8P8qZRISy7z/5Vx9MP87h/wB7/n8bAky5/wCleqdMuAV2FXYq7FXYq7FXYq7FXYqkPnXyxF5k0qbTZdi45If5XX4o3/2LZVMWPd6lY35Vex8/aMbXzBaRSXVsxguIpFDFXTbkK/EnIfEv2chLFDJ6wK/myj6Jw/o8cfUs4g7/APSUf85KB+Umr+WGaTyRqb28Jqfqlz+9ir/kE/En/DZYMuSGx4c8f6Xoy/6eP+59KROQ/p/1vr/0zf8AysHznoxEetaH9ZA6y2b1Hz4P8X+xx/M4v4uPD/WHFH/YcSmcOvFD/ZR/4pXb87pBSMaLqJmP7AjFf+C+zkjnw/z/APYSRxw/nf7GSX6lc+d/Pimytbf9Baa+0ksxrOy9wiL9hv8APnkfzAP92DM/6pL0Qj/U/n/j0p8QD6Qf60vT/pU40r8g/K9jp8mnTW/1l5xWS4lNZif5kl+1H/sf9nyyk4jL1SlKU/518PD/AFY/8XxMCL3Nk/zkpgk8wfljSGYSav5dB2kFWuLdfBx/u2Jf8+OXDP0y7H+HNH6J/wBeP1Rl/SbOO/q/03/Ff8U9I8u+aNO8xWwvNLmWeI9eJ3B8HX7S/wCyy6UTHn/pv4VMSE3yLF2KobUrwWVrLdN0ijZz8lBbFQwD8h7MjQW1OT+81CeS4J9mb4P+FyuPUsi9Iyxi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqpXNulzE0Eo5JICrD2IocjIWKVJ/LdxpVsG0PTJELWICvGDUpXccsY4+CP++TwkBPckh2KuxV2KuxV4z+fdr+h7rS/NNoeF1BcrEabckc7qfHKgOGV9/1JjzexQSerGsnTkAfvFctQqYq7FXYqxuDz/pNxqVzokEvO/tFLyRgb0Art4nJcFC9v+JZcO1vKrP8A5yF13XLmaDy9oMt0kLlS5cjoab/AwGRlmxQ6yl/VCmUB/Ol/VTpPN/5m3Q5QaHawg/7+nBPzorK2QGpx9I5pf7D/AHUUccTyjP8A00Y/7qKsLr80o/3skOmuDvwRnBH0t9r/AILI/mf9rnXvjKX/AE1/3ifFFfT9v/H2pPOX5hWXxXGjwTKBv6Lmv0cnxGoh/FHLD/S/73jQJg9JD/S/8VJp/wA59Xsfj1LQbqOIdWWjU8cI1GGXUx/rRl/xKTPH/SH9ZP8AQ/zm8t6qyxC5FvO23pzgoa/7PMkY+LeJjP8Aqn/esuC+VH8fzWdI4cclNQcqa12KuxV2BXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf/9b1TgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqh72yhvYWtrlFlicEMrAEEHxByE4CQo7oePXX5CahpF+915I1V9Jtp/wC8hKl1r4pyP/A8viX+fKozy49o8GSH+2fVH/YT/wB6kTlHlwn+t/0jJGaH/wA49Wa3Y1PzLe3GsXY3HrEhPpSrM3+qz8P8jGXiZPrPDH+bj/4r/iIQUmUuZ/zY+l6vbWsdrGIYFEca7BVAAA9gMtjARFDZCtk0uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV55+cPlK41KyTWdHHHWNMYTQMOrAfbib+ZWX9n/AJqyiR4Dxd31R/nR/wCOqDW6YeQPzGsvNGmQXkkkcN0x4SRFgCJB9pFDHkf8nMnhvcbszHuZnkWDsVdirsVdirsVdirsVdirsVdirsVdiqS61daRpbLqeptBC6AqsslAwHdUY/F/sVyIwCZ4gPUP4v8AjyjHxH/ff8eYBqf5z3GryPYeS7OS+mqV9dlKxKfp6/7Lj/q4Z5IY+Z45fzY/j/jv9Nmajz3/AKKW2f5F3fmW6Gqee7prqStfq6EiNf8AI8Kf6uUSlky/7VD+bH6muUjLy/qvW9F0Ky0W3Wz06FIIFGyoKDJQxiHL/TfxKBSYZcl2KuxV2KuxV2KuxV2KuxV2KuxV5r5ttJPKmuRebbaosJ6Q6ioB2H2YbriP99n4Xb+T4sqieE1/DP6f5scv/H/90mJ6fjieixTJMgljIZGAII6EHplq0q4odgV2FXYq0wDCh6HAQrz/AFz8pLWS6OraBM+l6idy0P2HP/F0P2W5fzfayqIlj+g7f6nL1Q/46iJMeX+ll9KCTzf5t8uER+YNPF/bA0+s2e5p/O8H2h/scl+Yh/GDhP8Ap8X+nZCcTz9H9L6osh0b80NA1YiOK5WKX/fc1Y2/4CTjmRHGZfTU/wCqeJn4ZPL1f1UB+c+siy8p3s0MnFpVWNGU7kuwVglP2uHPKjsxGxZJ5R0ldH0i009N1ghRB9AyMOTFOMmrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVfO/lOW8vPzY1J7BitpGCs/EfCeIAAJ+zy5f8bZSJVt3srrZ9EZcxdirsVdirsVeP/8AOQkYuf0LZMaCW/Qn5Ar/AM1ZXMsgHrsShECjoAMmGK/CrsVdirxH879A/wAN39p+YGmAJPbypHdAftxsePxf8R/4HKAOGX9Gf1f1kx2Pvev6Vb2yQia0jSNZgHPAAVJFanj1yUcYjy2tFUj8tV2KuxVoivXIkWrF/M35b6F5kjdNRtI2Zx/eKAr/ADDr8VcxzpxzjcP6v/E/Sx4fh/VeZTDXfyfukkM0mpeWZGCt6prJBU02b+VV+z+y/wBj4Xy+OYk8OTf+bkj/AL/8f1ZNomTtLf8ApPbrK8ivYUurdg8UqhlYdCCKg5M7MSKRGKHYq7FXl/56/mTqPkOys73TY45FmuBHKXBIC0rtxK/E2IkBzZRI67vRdNvVvraK6QELKiuKgg/EOW6t8Q+nADfJii8KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK7CrsVdirsVf//X9U4FdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV87/AJ6fkTeXjnX/ACrUTq3qPApoeXX1YaftV/ZzFEzh5X4f9H+D/jn+5QCYoz8qP+cg7CK0i0PzdJJbanFVGlnFFbc0q37HEUX4sz41lFxIv+b9P+l/nNtCW4e1aV5i0/V156fcR3C+MbBv1YJ4pR5ghEoGPNMsrYOxV2KsR/MD8zNI8ixQTay7Ity5ROKljtTk1B2XkuThG+rOMbZFpOq22rWsd/YyCW3mUMjr0IPfIkVzYkUjMCHYqpyyLGvJyAPE4gWkC+SQ6n+YOg6Ype7vYECjf4wf+I5aMUiyGMsNvPz70+c+l5ftLnU5f+K4yF+9hyp/lKjZXOePH9Uh/m+v/iY/7JfSOZ/o+n8cKEaX8yPMjkQrb6LaN+0fjloe9GDf8Rib/Lyn8zf0RJ/pZPTH8f5mWLHj/mj/ADpfj/eS/rIzTfyHsJXW68yXU+rXQ+0ZmISvslWbj/ktK+Rl4mT65UP5uP0x/wBN/wARHExkTLmf9L+PT/mcH9V6Rpul2umxC3solhiXYKgAH4ZKGMQ5KBSLy1LsVdirsVdirsVdirsVdirsVQeqara6VA13fSLDAgqXc0AwiJPJMY28/wDKf5x2/na+vdN8uws62sDOtw+yNJXjGnH7XFj8XL/WwzqPI8cv5sfp/wBOykAPf/sWO6O/5uw82uEsZByPFZSK0P8AKYnX4f8AW+LKfzQP+Tl/mnwv+msmEsn9H/SmP++kip/P/nW0SW38w+WfrVu6lWNrKrgg1D1jPqMwZf2fhwSz4ZbS8TH/AFoSnH/T8OKMP63FJPFD+nD4eL/ueGP+yYr5F/OVPKl3Lpmq2l5aaASPqzXETBoWapaF3b7cVeXBv2f5cnjywyekShOcf4uL1Sj/AE4/zoshKMtrv+lL65f1o+p6zpf5xeVNTYJbajCXIrRiVP8Aw4XL/BkdxXzikYyeW7JbfzBp9woaG5hcHpxdT/HImEh0LExIRS3UTdHX7xkeEo4SuimSQVQgjcbexofxwUtUvqO2NIpvFXYql+oaDYaiKXttDP8A8ZEVv+JDMc4IHehf86Ppl/po+pHCOby783NKtFbQvK1pGsMF5fo5jQUHCIj1QFHQUm5ZIx4RsZfzfVOUv93KTKOw6/OUv909gVQoAHQZchvFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUNqF9HY20t3NtHCjO3yUFjio3eX/8472vr6Xea5KlJtQvJJCx6lRQL9HLnlMRZJ/zWUi9Zy5i7FXYq7FXYq8g/NiYXnm7y5pfHlSYzN4UBWn/ACbbK5BkOT1/LGLsVdirsVedf85Axq/knUi9PhRCK+PqJlch96QyryXX9CWBbcm1hJ+lFOSidlKd5JDsVdirsVdiqWeYtCt9esJtLvF5QXCFW8R4MP8AKVviXK5x4gjm83/InXLmH695S1Dj6+lSkIQRuhJUgDsqt8Sf5Eqr+xhjKx1DYdxb1vJsHYq7FXzD/wA5F/mpaeYETyrokbXM8V3GWlH2PUXkqwof22Zm+L/PiMgEef1/zf5sWwgDnz/msyttR/N6SASfVNNj6D02J5Up7SMv/DZWNUOmOch/O+n/AGE5xn/sWPjAfw3/AJ3/AFci3+lPzYiPJ7SzevZSKDr135ZIaof6nIfj/hq+PH+Z+P8AlYvl/N3zXoTKfMOiMLegDSQ12NPnLiNRiOx4oT/pfT+P85AlHrY/H4/iZr5L/NbQ/No4WU3C4A3ik+Fvor9r/Y5ccd7j1D8fVFmYd27M8g1uwK7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdXBarQwOwOFV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv/0PVOBXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq4iuAhXYVYH+YH5O6F51RmvYvTuiKCaOgb/Zdn/2WYssPWPoP+xl/msOHqHhWqfklq/kiQ3Nuk09ugJW7sHKzoCDu8NfjVf5V4rx/bxjnlj+oyx/0vqwS/r/8f/0k2Qnw87h/Sj9P+d+Isi8q6z5g1GMReWvNcU8lN4L+JUmU9h+9E7SN+y7R/BmZ4mU7mGPP/Sxnh/0+KEcUof57ceIiwI5P6vo/2MY8X+nZTpkn5rRbz/UZTWlJPh2BPxfuUVeLf63LKDrAf8nL/N4/9/PhRxj+aPnL/iuFNJda/MitF0+wIPcSt/xtg/Mx/mZf9j/vZNYmO6/x/Web/nT5T87+bLKCXVrKAR2UnIGB+RIkKo/wfa4rQM2Rnnif4TD+lLi4WUpA9OH48TL/AC15e/MLTdNt7LTDp1taxIFjjoxoGPPlWrfFybliM5jsISn/AEpShL/p5iYwyV/Df9b/AI7kijj5f/NKXc6pYxbfspUf8C9u3/Esu/Mk/wCTj/nSl/vMsv8Acs5T7ow/004/8Wqf4E893gpfeYFSm37mALWvU1T0viwDPkH8OOHx8X/prj/3zCOSQ6QH/S3/AHsJRai/IGC4f1dY1O9vGINQZOI360K/FT/ZZHizSFGXD/VH/FSkpnM9eX4/iZBpv5L+V9PoY7JZGXvJVj9PL7X+yys4L+ozn/nMTG+d/NmFlp1vYoIrWNIkH7KKFH3DJwxRhyA/33+mSAAisuS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqkHnLydYebtPfStUUtAxDbGhDCvFlPitcqnEyGxMP6v49UVL57n/ACt1/wDKHUTr+iSvdaXQiUJ9sL9r95H9llX+ZcrhnOPaVUf4vqj/AMdkmE+H6uT6H8n+abXzPpsWp2bBklWpAIJU91an7WZJFJkKTzFilPmHy3ZeYbKXTdSiEtvMvFlP4EHqGU/ErZTPGJD/AHMv5q1bzPQ9O0zSbpfKvmy0t2KrSzu3RQJ0FFWNzT4blR9v4/j+3lWPTwn0rLH6ox/j/wBtj/W/mfwsRjE+nqH+y/pRZJcfkf5SuNxYrGf+K2Zf1HJjFIcpZYf1Zp36GUf6pQT/AJAeXWJ3uwDvQXDgD5ZYDkH+Uy/6b/jqeKf86f8Apv2Ll/IDyuQVnS5mBqfjuZe/X7DrjeXl4ub+rcP+ISJz6ynL+tJE2P5F+VLI8obVqj+aWRv+Ju2Pr6zyn/P4f9xwsJb9Zf5spM003TodOtktLYFYo1CqCSdv9Y75IX1Jl/SkeKTL8epGZJXYq8q8wr9e/MrSoTutnZzTEHcAyBowQOzVH2shJmOT1XJsHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq82/PzzA2meWprWEcri+YW6KOp5H46Dv8OA7BlHv7mV+RtHXR9EsrBBx9KBAQevIir19+RyvGNmKfZarsVdirsVdiryGKX9MfmcafY020I333YHp4f32Uncsnr2XMXYFdhV2KvLP+cj5yvlSSBdzNNElPEcgx/VkJMovQvLtv8AV9NtYP5II1+5QMMeTFMckrsVdirsVdirsVePeSVVfzJ1vhShhWvjWlv9+UwZdHsOXMXYq0QGFDgIV86a95A0zy95u0bR9LDMZLxr6RWNaEujU+Hj8CqknDl/lZjCBHM3fp5fwpA2730ZmUh2KrXQOOLCoORkAeasA85/k5pWvp61kq2F+tCs0K03H8yrx/4JeLZjjEYb4/T/AEblwf8AHfx6UAVy2Ypo/wCYWr+QbxNB87VktZCBBeruKCgo57j/AJKr/l/azJhkGXaXoyf7Gf8Avf8AOj6f53A2CQlz2n/uvx/0nwvZoJ47hFliYOjAMGU1BB6UI64WNK2KHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7BSqEFlHA7SRijOatkRGlV8mqFvDcAD6sEO/xcientTvkJEjpaQhpNcjh2uEeP3Kkj7xkY5AfL+t6U0j450kAKsCD0ywFiRSphV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Aq7CrsVdirsVdirsVdirsVdirsVdirsFK7CrsVdirsVdirsVdTI0rskrsVdirsVdirsVf/R9U4FdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVBX2q2tgvO8mjhXxkYKPvcrk445T+kGX9X1MowJ5Aljlz+bXlW3YpJqVuCPBq/ioYZaNPMi9q98f+KZnEQL/AEx/4pan5weU2FRqcAr4kj9YyAwyP9sWpHWn5i+XrshINQtnY9B6gr+OT/Lz7i2DFKXIWmUHmDT5yFiuYnY9AHUk/jkThmNyJfIszp5jfhl8ijhMh6MPvyqi00VTAh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KrWIUVPTEK5WDCo3GNJXYodirsVdirsVdirsVdiqySRYxycgKO5x5pAtyMGHJTUHFV+KHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWJeZfyv8ueZKvqdjE8p/3ao4Sf8jouEn/DZi/l4x3jxY/+Fnhj/pP7v/TQYcIHLb+r6f8ATfzv85JLH8tNW0F6+X9YuFt/98XYE8YHgleMif8ABZf4uUfVwZv6w4Mv+dlh9X+l4WwTle9TH9Ier/TQ4Gd6Wt4IANQMZn/aMQIU/JXLMP8AgsIkT04fjxf72ClG4SEOwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVkkayKUcAqdiDkSLV5X5h/Le/8ALd2/mLyM3pzH4p7A7RTAdeA+ykvH7GVRkcO314v5v8UP6UPx/pkxlw7fVH+b/N/qsj8lfmNpvnCJ7aht7+Oqz2kvwyoe/wAP2mT/AClzJoSHFE8UP50f4f6382TKusdx/uf6381WutE1nS+Mmi3HrwpSttcmop4R3NGmVv8AjK0i5T4kh9QGT+l9GX/Y/up/50Iy/po4+/1/7Gf/ABMv86P+cxfzpq+l+YrVtF832c2nsRVJmHJFb9ho7mL7Lf6ypkSI5D6DwZR9PF+6l/V+rhl/p2Ox5Gpf0vR/svpeY6J+b+tflncrp2tN+ltEbaC5jYMeNdqP/Mq/bjb48yY5OL05PRk/nfj64/04tpN7T2l/Oe/eR/zA0jznafXdImEgGzp0ZT4OnVcZQ4fd/OYyjXmP5zJsgwdirsVdirsVeU+X3GofmTqUzbi0so4V9iW5Gn/B5XW7IvVssYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV455ukXzN5+07Ryf3GnKbhwa0LdVH4ZTPfbvZdHseXMXYq7FXYq7FWncICx7Yq8d/JJP0hrWua0x5M8/pKfYE/wDNOVDn8GRex5axdirsVdiryD/nIwrPYafp4P7ye7UDw2B6/flc2UQ9ZtYvSiSM9VUD7hTJDkxVskrsVdirsVdirsVeO/l/ILn8wtcuIm5RrGEO21axilf9hlQ2LIvYstYuxV2KvG9MI178zZ5+qaXb8PapBSv+t+8yuXNkQ9kyxi7FXYq7FUo8x+WrHzFaNp+pRiSFvvB7MjdVZf5spnjEvh9Mv5v4/mqRbyHR9S1T8rNaTRdWmE3l+6J+rua1jqfl8PH9uP7H7accniyGXpl9X8Mvx/D/AFvpl/RZg8Wx5/w/j8cP8L3JJFkUOpBU0II8D0ybBfirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVSmXzTpsV+NHknjS+KhliZgGIPdQftZIQJFhnwGrTbIsHYq7FXYq7FXYq0VB67jImIKqBsYeQfiOQ3rkPDATaIywBDsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KrXbiK9ciTSoFL+R5hCIXC71c0oNvn4/DgEgf7CyoJhk2L//S9U4FdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVwxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVBatrFppMDXeoSpBAgqzuQAPvyUYmWwZCJPJ56/5sXvmGQ2vkmxa8A2a7nrHAvurH4pf9VMhKcIGjeSf+p4/wDfT+mKkxj/AE/6Mf8Ail4/L/zPrR5+YdclhjO/o6cBCB7euwaZ1/4HI+NkP0jHhH9X8xl/00/TCX9KCDMnlwwH9H1S/rcUvp/zUwsfyW8r2x5yWn1qU7l7lmmYnxJmLfhkJQlPecsk6/pyj/sYcEP9ixNk2TKX9aUvV/m/T/sWRweUNJgAEVpAqrsAI1p+rKTpMZN0wjAR5Kz+WdLcUa0gPzjU/wAMs/Lw7mdJdc/l15fum5z6fbO1OO8S0p92QOlh/SH9WeSP+5kwMAef/E/7lK5vyV8oTGr6ZBX2BH6jhGnA5Gf+nn/vpSUYwO//AE0v+KQv/KhvKI3Sy4H/ACZZB/xvlojIfxT+bLh9/wDppf8AFKg/JzS7Za6ZPd2cvZ453NPocsuS4svLjmf6MuGUf9y2ccgKBP8Auv8AdKDeWPN2lox07VVulAqFuowzH25pg8aY+qMJ/wDC/wB1JeM9RH/cycPN3m7TlU6jo4njA+JrWUM30RPx/wCJY+Pj/iGTH/m8cI/53/HVEonvF/T/ABf6ZuL87NIhk9HVobrTWHe4hYL/AMjE5qP9llsDjybQnCf9G/Dl/wBLeBIAPIxJ/m/R/u+GP+yZjpOv2GsRevptxFcx06xuG+/jkpY5R5jn/pZf1ZfxIlEx5/8AHf8ATJnkGLsVdirsVdirsVdirsVdirsVdirFfzM8u3fmDQLvTdOkMVzInwFTSpG/Hl4NkZSMd48wtkcniHkTQvzX8qW5eJUubdSf3E7hmIHdGY8lyP5y/qjOY/nV60+N3gn/AHb0Dy3+eZuNWg8t69ptxp+pXGyg0KE+IavLj/sctEoTFxPL+GQ9SfSeV/5z1nAxdirsVdirsVdirsVSrzNoMWv6fNpk7MiTqVLKaEe4ORkDW2y3T5wXzH5i/JLWF0/VJXv9DlqYy2+1d+LH7Lr/AC5LHnM/TP6h/F/vv6jOM+LaXN9FeU/Nmn+arBNT0qQSW77V7gjqrD+ZcMo0xIpOsCHYq7FXYq7FXYq7FXYq8it/ziuND80y+WPNUawRTOPqc6ghWB6B/wDiPL+bJQlHJsPRKH8P85mKly2r/ZPXQa5Fg7FXEgbnFUrsPM2mag8kVldQzPDs4jkViv8ArhT8OTOOQ5gsuAqcvm7SIjwkvbdWG1DKtfurh8KXcU8BR9tfQXY5W0iSDxVgw/DIGJHPZiQQicCEr8xa9BoNhLqd0HaGBeTcByansuAV1Ij/AEpfSoVtG1i21m0j1CxcSW8yhkYdwclIUkikdgQ7FUm1/wA3aX5f9P8AStzHb+qSE5kCpHXJxgZcmcYGXJG3GqW1vAt1LKiQvx4uxAB5fYoT/N+zkQLYgWjMCHYq7FXYq7FXYq7FXYq7FXYq7FXYqtYkDYVwHZQgdHnuJ7f1LteEhJ+GnQV+H8MjGfEL5JPkmGTQ7FXYq7FXYq7FWE+dvyvsfMkq6jCzWWrQ7xXcPwuCOgk/36n+S2UcJieKHpl/FH/JT/rx/wB9H/ZI3juP+Oy/rJXpH5iXmgzx6L53VYLhjxivE/uJuw5H/dMrfyt8OXwmMuw9GX+LFL/dYpfxw/2TYKly2l/N/wCJehvHDdx8XCyxsOhAIP8ADIygDsWBHewrzB+SvlrW0KTW3pBqkiIlRU9+H2a/7HKDh/mmUf8AZf7phwsV0X8lrzyFPJqXk2WOSR04tBcAgOAa09VT8J/2GMDLH9Q8aP8ARlwS/rRhw8P+yk2CXD04/jw/6X+H/TPUPLV/f31ik+q231O7Ozxcw4BHg67ENl4kJbx4h/WHDL/SoTbJK7FXYq7FXlH5bIJvOXmO57rKkVfYAHIDmyL1fJsXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVjuEUs2wAJPyGKvI/yeiOta1q/mWUH45jDEW8FPUbbZSPUfcykXr+XMXYq7FXYq7FUt8x366fptzduaLFE7H6AcBSBbzn/AJxvtKeX5L09bq4kev05CCl6xliHYq7FXYq8Z/M3jrHnfRNHNCsVZnHyJI2/2OVT3ZDk9my1i7FXYq7FXYq7FVC8uVtoZLh/sxqzH5KKnFXkv/OP9sb46n5jf7d7csF8OKn5L+1lUeaSXsOWodiqB1nUU0yymvZDRIY2cn5CuKQHmH/OPWmvNZ3nmG5FZ9QnYhj14qeny5ZVHc2mXN67lrF2KuxV2KuxViH5o+T4vNGiT2j0EsamSJqVIZRX/hl+HKckb3HMKlP5HeaG1vQlhmblPZMYGNSTQf3ZLHr8OXA2GcnouLB2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KsM/ML8sNN85wg3IMN7FvDcR7OhHTcdV/ycolAg8UDwTH+ll/XR5jmwzyT581Xyrqq+TvOz8mfazvTsso7Ru7faf/K+1y+F8vxz8Xb6csfqj/O/pR/462Xx+Uv909mxYOxV2KuxV2KuxV2KuxV2KuxV2KupgpXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsAKuwq7ArsKuxV2Kv/0/VIyIV2SV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVa4JHwmhwFC7Cl2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVgfnv8AM+38uuNMsEN7rEo/dwR70/y5j+wg/wArCagOKew/2Uv6rMARFy5f7KSSaH+V915iZNX88XH12U0dLVdoI+4+Af3h/wBbKJTnlFf3eP8Amx+qX9aTAyMv6I/mx/3z1C1tYrSNYIEWONRQKoAAHsBk4QERQ2Qr5NLsVdirsVdirsVdirsVdirsVULm0hukMU6LIh6qwBH3HKp44z+oCSlhGqfkxoVzN9csEfTrsbiW0Yxn/gV+H/hcrhCWL+7lKH9GR8WEv68Z/wDFKLjyJCWSzedvKjhaLrdkOhNEmA9yPhc/5Tcsn+Zr+8jX+2Y/p/0n/Ex/zmRmP4h/nR/4n/jqK0v87NKkZYNYim0ydjSlwpC19pPs5kQMZ/TIS/o/TP8A0qQBLkf836ZPQLW7hukEtu6yIehUgj8MBBHPZiRSvgQ7FXYq7FXYq7FXYq7FXYq7FXmPmizh1Pz7pMIH72zt5bhjTsTwQV/1spkN/emnp2XIdirsVdiriaYqsMqhuFfiO+RtV+SV2KpN5m8paZ5mtfqWrwLcQncBux8VP2gcpyYxPv8A60fqQY2s8o+T9O8qWQ03SI/StwxalSdz13OShHh7z/WREUnmWMnYq7FXYq7FXYq7FXYq8F/5yp1HSILC2ivlddR5GS1mRahSnVXPg38uQ4ATdgSH8P8APiyjEc7qv9kz38lvPg86eXYNQkoLlKxSgdmT4a07cl+LLZeSZD7Wb3FxHbxtNMwSNAWZmNAAOpJPbI82ID5t/NP/AJyeeTnpHlFAxkJj+sMKk1+H9xF/lfss3xf5Cfay0mMBZ3P+ljH/AH0/9jH+s2UI+f8Aufx+PUoflh/zjFPPBHq2v3MkL3CszwJVWBbdeb1+1+1x45g+Jkn9J4In+L+L/StFk+Se6N/zidpizznVrieeOo9Iq3E0O5rQVqpyBOWW3FwV/FXFxf6dB4j1Sbzb+Vuq/lHAfNPlfUJZobdl9S3lqVKE034mhVcyIZ8kTU6njPp/i4v+O/5rZGchsfXF63+Uf5uWH5hWPrQ/ur2IATQnqD/Mv8yN/Nl8ojmOTKUeoTrzb570Ty0gXWLhVeTZYgC7tXsIU5MQ3+V8OR8OxZoR/ilL6fx/VUQJ8h/Ol9LG/wAutW0u0ubjT9NM0VpJ++SGeNk9Mt/eCIuaek1eXH9lsogR9AlHJX08PFxRj/Nl6Y/5kkbHYGMz/Njxcf8ApeF6UDXLmKW6/rttoNlLqN83CCFSxP6gPdsIFpAt82+bdO1DzZbXXn3XIHaxReFhbHsGIUSuP5P2v8t/8jMeeQTNDbGPTxfz5JMhdfwvoeDQ7LVdLt7XUIY7iEJG3CRQwqoBU8W7rkuHiFbj+rKUf9lE8TEhO1QIAqigHbLFXYVdirsVdirsVeY/mvc+bdHlg1vy0RcWcA/0i0pu4rUup/1f9lkPHGP6hcD/ABfxRkyjOtiAY/7JlXkXzvY+cdOTUrE7naSM/aRx9qNx/MuWSFb9P4VlGmSYGLsVdirsVdirsVdirsVdirsVdgV2FXYql+s6HZ6zbPZahEs0EgoVYVH9hymeMS5/5sv4o/1UEW89/QGufl+3q6Ez6jowPx2jmssQ7m2kP21X/fbYRlMdsnrj/qkfrh/Wj/GzE/52/wDS/ij/AMWzLyp5107zPC0tg55Rkq6OOLqR2dDuuWnvG4P0y/hkpjW/MfzmQYsXYq7FXYq7FXYq8n/JuZZdb8ykUqNRYU77CnXK4si9Yyxi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqxD82PMH6B8uXl4D8fD008av8ABt70OAmmUVP8o9COi+W7S3cUldPVf/Wf4zX78rx7i+9BZnlqHYq7FXYq7FWC/nZqg07ypfSd3QRj5sQMrkGUUT+UekfovyxYW5FD6SsQfFhywYwgsxy1DsVdirsVeO+W4x5g/MXUNRIrHpsQhU9uR+DY/wCwfKT9TIvYsuYuxV2KuxV2KuxViX5qasul+Wr+4Y8axFAR4ufTH/EsBTEIX8mNHbS/K1lE/wBuRPVNetX+Pf78hAbe9Fs3yxXYq88/PfWTpvlW6Cf3lwRCnzPxn/hI2yMuTKKe/ltoZ0Ty/Y2DjjJHCvMf5RFX/wCGyOPkxtk2WK7FXYq7FXYq7BVq8a/ImFYdW16KFv3Md1xCfykFh/xEZXj2FMiXsuWsXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVrMF69TsPniq7FXlX5qfnlD5F1O00eO2N3cXFGcBuPFWPBKbNydmB+H4f2f5skOGvUa/HvZADq9E1LWbXS7Vr/AFCRbe3QBmeQgAA+JwAE8kAXyYrpn53eT9TnFtbalEZTsAwZB/wUiov/AA2W+DLyP9WUZf75lwE/2s3jkWRQ6EFT0I3/ABygimKphQx6/wDOthp+s2+gXRMdzdxl4ifssQSDGG/n25ccIF+/+b/R/nMhG/go+ffIdl5z05tNvqqftRSr9qNx9l0P/El/ayicL3G0h9Mv97/VYFG+U7G+sNMgtdVlWe7iQI8i1o/HZX+L9pl+1/lZaJGW52/opu06wq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWiK4FbxV2BXYbV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX//U9U5EK7JK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7AArsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5d50/My5ubx/LXlJfXvweE9ya+lbV2+Ir9uf+SP8Am/4UTnHD9W8z9OPb/TT/AJsfx/WntHn/AKX/AIpkPkX8uLPytG0pY3OoT7z3Mu7ufmfsp/k5TGBkeKfql/sY/wBVrO+53ZcqhRQbAZcBSV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYql+q6FZatGYb+FJkPUOAcpnhjPmgi3n1/wDk5JpwabyjfTadOTy4Fi0Xy4NypgEsuPkfEj/Nyf8AFf8ASLMTkPP+jJBxfmL5h8nyLB50tRLaE8Re2wJHzki/5p+L/Iycc8JmpA4Z/wBL6Jf5383/AEyRIS5+j/cfj/TPStD1+x121W/0yZLi3fo6Gor4HurD9pW+JctlExNFBiQmeBi7FXYq7FXYq7FXYq7FXmnlEnWfOmsasoP1ezSKxjamxZQXuAD/AJLlcr/iruH+6SXpeWIea/mN5Y85ateJP5b1JLO2jQfuyCCz1NeZHKq8f+uch4socoxmP6X1f7KP++SMhjyET/W/6RkxKb83POPktOPm/S/rFumxubfoQP2jT4V/2SphhqMczREsU/5v8P4/qyZCcZc7g9J/L78zNJ882xudKc8kNHjbZ1+a+Hvlko1y3H85ZRrzZGdQgW5FiXUXDIZAldyoPEsB4K2RphSLwK7FXYVdirsVdirsVdirsVdirsVdirsVeN/85PNbxeXoZb62+s2guUEpGzoCG+JH7fy5TOIJHQ/wy/H1KK6/6Z4v+W/mpvyo1+NnlM3l7VFDq43qhqI5KfsyRt8Mq/62W4pX6JbV/pP68f6Mmce4/j+kz7/nJP8AMkS28WkabLysngW6naM7SK7cIIeY+yrf3j/zJhJMdv4j6f6sWX0+/wD3rvyG/LW38xzf431SKJUqFtLeLZY/T+AuQOrdk5Ny/bf7eYZx2aG2Mefql/nfjik1fYzn88vzSuPJ1rFpuioZtZvqiFVXkVUH4pOHf+VP9l/LmWJCAuXIMhQFl4zdedfzR8qLH5h1v1fqPNQyS0K0Y9Ci/Y5fZxjrIz2ob/0OBIygnlsf6L3TzZqlv5y8gXOpRL+6ubNpgPAqObD/AGLJxyvIPvQRu+RPya1vWdM16JvLyGW9lV4lT9k8hTm/7PGP+8+LJnIICz/pf50v4VEqfX35d/lpa6IX1DVXW/16U8p7iSjMpYbRxA/3acf+Cyg4zl9WT/Nj/BH/ADfplJBBO5/zf5v+ayXzp5aXzDpNzpqt6UkqEI424sPiQ1HbkPi/ycsIoXHY/j0oBrk+fPIP55ax5dvj5W8wo0t19cSL1JG/u0rxmr/kqvxJ+zxy0TExf+ljX49TcCJM9jeT829VcEsnlnT5BQUp9YkFa7/yL/xFv8rK8kifRH/kpL/ex/H9Jqlt6R/nPU9T0S21GybTZgVt2AUhDx2UggAr8S/ZyJx3HhHp/q8P++EooR0MSwoI12VQAPkMsiKCqmSV2KuxV2KsN/Mj8xrPyRZC4nBlupiVghX7Tt/BF/bb/jbCO88mcY3z/H9VIPyo/N6Tzc50/VLV7TUlUyUCOEKbUPx/EjfF9lvhb7SO2R8SExcD/m8UZS/zZw9Mv9jKP81B4TvE/wCbfE9QIrsemJDF4fdRDyh+Z9pb6Yojtdat2aeJenNeberw7H939r/WymB8MEfw36WY5U9xy4MHYVdirsVdirsVdirsVdirsVdirsVdirsVdirBvN35djUJ/wBMaHL+j9YTcSr9mT/iu4QbOv8AlfbXKADjNw/i+rHL6J/8TJAJjuP9L/DJQ8mfmUby6/w95ii+o64gP7s/YlA/3bbyfZZWX4uP2sviRkFx6fVGX1w/zf5v9JnQO46fVH+a9AxYuxV2KuxV2Kvm7/nG7zckvmbXtOuW4zXdwZY0NakqZPW/yQVXhgAvl/veL/imw7j3PpHC1uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kvn7/AJyy8wzw2umaJZmst3OXKDqeFEj/ANizSZEmmYNB7Z5Z006ZptvZuayRxqHPWrU+M/7JsEeTC01yauxV2KuxV2KvKf8AnJS6EPlRkO/qzxp/xJ/+NMrkyi9F8v2v1XTraA9Y4kX7lGShyQmOSQ7FXYql/mDUv0Xp1zfn/j3hkl3/AMhS/wDDATSh5r/zjdbtJoU2rTnlPfXMjs3iFPD/AIlzbIDmSmR3etZYh2KuxV2KuxV2KvIf+chLxryHTvK0G8uqXSqadkUhCaf68qN/sMrmaDIDZ6vZWkdnClvCOMcahVHsBQZKIoMVfJK7FXjX/OQR/SF1oegDf63dgnfcUeKEGn8tJ3yufJnHk9jReChR2yxguxV2KuxV2KuxVA61qkWlWU+oTmkVvG8rfJAXP6sICQLeYf8AONmmzR6DPqd0P3l9dySA9aqtIvtfaP71JftZTE2Sfx/O/wB8pNl67lqHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVhkUbEjGk0l995h07T9r25ggpt+8kVd6V/bK9ssjhnIWBKX9WJZeHKro8P86vSkF/8Am75VsWKXGowAr14ksPvQMMkMMiL2/wBNHi/0vFxr4Zq9v9NFJ3/5yA8rBiIpJpgNuUcTMK/PIGMRzlCP9GUuGSJAR6x+aFk/P2wdwlhYXt0WBoFiKnb2fjlRyYwLMwK98v8AZR9KDKAG8t/5vDL/AHX0qX/K3fMNyf8AQfLd4w6fvDw/Hg64IajCRdzl/wALh4v+5lxf7FZyhEfxn+rDij/seL/cqi/mB55ZCT5aao3/AN6Y6U+kq3L/ACeOV/msZ6ZP9Jlj/wBOv98mM4npL5mP+6xqJ/NHzbbxlrny5LUCpKyqRT5Dk1cj+cxX/GP8zJ/1SipyQH87/Zf9U2NaD+eGqeZL8X8ejTzWNqWVBCa/vSAH9Yn4WaNGZVVf9+ZbkzY47Eyh/FylLi+rh+j+H+t/GwnkgNt/538X/Esjl/5yEhtN7/Sr6AdyUBHSvbLYzwy5THykygYS/iHyk8Yfz3ovmH8y21/VuaaXCE4hkJIaJF4ckTk39+nL7LZCcOP03/nfT6f876eJnKPT6vg9C1zzVof5l+bbbSrm8jPl6zgM7RyOYhPOxKJGVfgz+mp5cf8AW/mbJyxzl6I8R4vqlj9fpj/Tj+P87gkkwJHCN7/m+qX+xU/8DaD5h/MHUNBntIzYQabGYxEAoRqx0ZCnR/3h+LMM4RHYXDf+H6uL+n/O/wA9qOOhX0/7GXF+P5yrbXep/ktrEVnfSyXnla9YRxu27QOTsp/z+NP8tcyMeUy9M/rH0y/nRZxlxek/5sn0Dk2DxP8A5yTaOMaHPCeOoLqMfo02PHrJ2rTksWVkUeLuH4/3zKPe9sApljF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2AhXYqpHmoJFCew6fj8WQsj/AI7+P98lULAdckZUhvDauwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsKv/9X1TgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXlf5secbyS6g8l+XnZNUv95pkUubeDo0hCfZeT7KM3Hgvx/D8D4JT8MXtxH0xjL+d/O/H+9ZA8Iv/S/8Uyb8v/y8svJlp9VtPiZiS771cmnxuGZqvt9rKIQPOR4yfx+PpYC+u7LsyEuxV2KuxV2KuxV2KuxV2KuxVLPMWspomm3WqTAslrC8xA6kIpeg92pxxSHgWmaj+Y/5mQtrGk3CaZpshIhFaEhSR4cj8Q48sjPUmO0I8VfxS4f91L/cpll4fpF03/j38x/y9X1fM1quoachHOZaVAO1fUT4V/2S4Y6mEjUomH8MZfT/AMcn/poKMgOxFf0vx6ZPf9D1m31myh1K0blBcIJEPswrv7r0bJEIIpMMCHYq7FWiabnpirzfWfzy8nW142jXt2rvy9OQBGdAehV3VWT7Xw5OenEhUuHf+GR/HBL+twtnh99f1fx/vkt1z8tdQ0K4PmDyDMInb45LIn9zMKV+H9nk37HL/YTRJ8OYkZSwbf3mL+b/ABR/qf8AHfV6fX4rASMduY/m/j/pL+t9DKfy+/MS383QOjobbUrditxbMfiQg0JHIKzJ/lcfhb4G/Z5ZBAkOKPqgfxwy/Hq/00YyI6hmWLB2Koe6uorSJri4dY4kBLMxAAA6kk4QCTQ3SBfJfDMkyCSMhkYVBG4IPTfARSCKVcVYL+Z+j+aNVhgi8qXaWZVyZWavI0FUCn+Xl8Lr/lf5OROSUNxET/rLxGPS3nS/ntrnkxH0zzvYsLsI4t7iP7ErKPgB/wBZuPxLkoZYZP6Ex9Uf+J/HCzBjL+j/AEXqP5X+XH0HQbe3ud7uUGe4J6mWU+rJX/VLcP8AY5VDff8An+r/AIn/AGLC7TnzBr9toVt9bvCRGZEjFBUlpGEaAKP8p/8AgctTEWiI9Shef6ozBbjiH4HrxJIqPHp8XH7ORBsX/wBJJMWK/mdbfpeCz8uDpqVyiy/8YYv9Kn/4JYVj/wCemQycvf6f9MgPIfzT8v2XkLzFp2v+WmWFbi4WC6t4mpWpDfYX7PJQ/wDs+OCETi238Mj0/wBH8fwpgDH4vcvM3li21qW3leZ7e5t2JjkjajUIHqR/5SNRGb/KRf8AK5EiV3E8Pw4oyix3G4+7iV9A1n6zzsbtk/SFtRZUVh0/YmC9Qkq/F/k/Y/ZyY3F7/wA3/O/H+xZmO197fmvzZYeVrF9S1N+EKUAA3ZmP2Y41/adv5cmI35f0v5qBG3hP5n/mX5lstKj167ZtMhuXKWtnGaSsv2jLcSfaX4f2V4cP9lkIZuL6Po/1SUeKU/6n8EI/j+kyEh05fzv4pf8AEMK8g/nXfaXd+l5kN1E1yVCXBY/AjUHIxy/C6r9rllgy+JykNv4fTOH+d/EyGTi/HFB9XWmqQ231azuZhJPOhMb0oJOIBJH7PLieXH/ZZAWedcQ+qMf961kX/wASqav5gstHjEt9KsYOyg7sxArxjjXk7t/korNhra9gB9UpS4YR/rTl6Ysfs/pS9Mf9NJ575o/MrXBA13pNkLGwi3kvNTrEtNv7q1B+sMW/Y5J8X2eGRjlidoXnl/R9GL+t4s+Hij/O4Pp/pMxV7fvP9NCH+mlwylH+r/smGN/zlRFaX6QSRLNp4AD3CqyMx6F4kdvs8v2ctiY9fq/onihH/TR4mQESf+JPFw/6b1PcPK/m7TvNFoL/AEmZZoTtUdQf5WH7LYJRMebAxpOcixdirsVdirGfzH8u/wCIvLuoaWFDPPbyBAf5wC0X/JQJlWTl/V9X+lV866x+TI13yomu6E7ehDGJBaOCWVkLJdhD/wAWU9Tj/OnwfaykmUefrj/O/i4J/wC8j/xSkkebxi11G1l1GJbkznRBLD6wHxMEWtYwf8lnkVPs5kbn036j6YykyJ6W+vfyS1zTbu71iz0SRG0xZo5rcJQACVA0ihftLxkX7LfZblkOE4/T3f53+z/iSY0Es8iwyeb/AD9qnmO5IaDSSbG2HYfaDmnfkebcv8vIz9RA7vVJiUj/AOcj/wAy2ad/INtbpO17DGTIW3Ry9U/yRx4K3xZcRERs3Y+llQrq8a1H83Nf0HSZ/I1tNG1ohaP1E3PBxykhD/Z48mdXb/WycZbbij+P4f5zLioct0J5a8qeZfLOjR/mFpjGGGKQrUbNxJCc2VvheJnPp8cojmAlVX/so/1f6Pp/jaxKi92/Iz8qrnUOHnzX7udr69f11jRyq05ck9an21bjySP7CJxw+LkkdjwY/p4Y/wAX+9jH+FPHK/5oP8P857B5087ad5RsWv8AUnp2jjG7yN/JGnVmy8R69P4pKI37v5z40823lz5x8yjWLiMxLd3McbiP9gH4I46/tStGPj/y8xzIR5bfxR/4tO1934+t9teXtBtdBsYdNsUEcEKhVHf/AFie7N9psOOHCP5386X85gmmWq7FXYq7FXYqhtQv4dPt5Lu5YJDEpZ2PQACpwqBbyX8tNPufOesT+etZhpAy+lp8b0IRFJUygH9t/wCb/jJ/MvHFnWU19WOH876Zz/H9f/Y+qUiDt3fji/H+9ewCNQeQAqe+WCABsAfJigdd1u10Ozl1G/cR28KlmY+A7DxZv2cuAtIjb5/0qXUNa83aX561P/RY7y4+rWVuRVvR4SD1D/Ly58sxjkEpbfRH+L+dJnz5dP8AZPb/ADo2trp7P5cERvVIIE1aEDqBx/ab/Y5ZLJwb1x/1WINeaj5C83nzPYmaeFra8gcxXELihSRR8QH8yN9pGyXEJC47grIDoyjJMXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqxfz15CsfOFl9VvKxzJ8UM8e0kbdnR+v+sv7WUygb4o+jJH6Zf72X86KOW42P8AORXk/TtV06wFtrl0t7cqxpKqcKr+xzX+fu7f9dNYJGX1CMP6plKP+yTZPOv81PskrsVdirsVYR5b/KXQPLuqXOu2UJN9dSNKXc8uBfl6gh2+APzflmNHFRskn+bH+b/W4fr/AM7/AHXqY8Pv/H4/i4mb5ksnYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUq1Dy1puo3UF/eW8ctza1MMjqCyV68CconiEzZ++XD/nR+mX+cgxtNcvS7FXYq7FXYq7FXjf8Azkc4uYdJ0wfauL5DXrsAU/5mZXNlF7GBTJgUxbwq7FXYqwX87r0WnlHUGJoZIxFX3ciP/jbIyTFE/lDpf6N8qabAepgEhPvITMf+J5GHJSzHLEOxV2KuxV2KuxV41CD5o/MwzA/6PokFBTcM7KR1/Zblcf8AJHKpbmvx+PpZHlT2XLWLsVdirxTXJDq/5p2NshrFY2/JvYgSv/xJ4cqlv8/x/uUnk9ry1DsVdirsVdirsVeSfn5rlxNa2/lPSzW91SQIw22jBHLn/KsjUX/KT1MhM0GYG1vR/LehwaFp1vpVqKQ20aoPeg3Y/wCUzfE3+VjCNBgmmTV2KuxV2KuxVaK136ZTEmyD/mpWTTxxCsjBR7mmXiJPJREnklOo+dNG03/ey9gi/wBaRR/HLBhkehZeGavoxXU/z48qWAIF2Z2H7MMbvU+zqvp/8PgMAOZgP87i/wBNGHHL/Yp4K5mI/pXxf6bg4kFF+dr3y8tK0TU5wdqvEI1PuHrKuUDPh/ncdf6iPF/2HFCf+xahPH1J/rY4+LH/AGMvT/pV6+cfPN8f9E0SK2BJFbmcHbsf3WAaiFbRyy/pVGH+mhPhkyM48qn/AFvTwf72S/8ARf5hXygy3tnaBvtKkZYj5PkvHPIQA/pSnxf6aKRk3sRA/rHijJo/lfrt0SNQ8wXTxkfZjRUp8nX4uuQGXLf+Tx/1Y8f+xl/xbETkBtwg/wBXjj/slL/oX/SZyW1G8v7vl1Es5I7e1e382GM838+UP+E/uv8AY3OH+xXimY1xSj/V+n/Sy40bY/kL5Ps29RLHmwB+3LIw3FD8Dv6f/CZUcJI9Upz/AKUiIz/02KOJhwWOvvieD/ccKZP5P8oeXVFxLa2VoB0d1RfxbrhGkExVHJ/WMp/7KSRi4ul1/F/x5Ib385fIulsIopoppCacIIuZqNtgq5cdHGHPgj/WMf8AjzZLEP4uHb+dwsg8sfmfoGvyC2spvTnpURSqY3I9kfjk44ABcOCX/C+GXD/pUiG1ij/V/hZjgYOxVB6tbvc2c0ER4ySRsqnwJBAyEthskF4b+RvnfR/JmgTaP5gnSzv7W5l9SN6hmJ40YbfHy+zlmKByDiH+dvH0shHiFj/O/oszi8zap58b0NEjey0g7SXkq8ZHHdbWNvs/8ZG+zlMzA+mNZJfzq4sWL/i5rxAct/6X8Ef+LYXc6Bp/5c+fbe6ZAmkatbmB3k3VZRQ1kd/h5Ssi8mb+ZspjhEzwSAyfxR4hGX+x4f8ActYiJbH1X/ORus/ltoOr+eFjvLWJ7C+sC0XpEoPVif8AelTblPtRSfFy+3/scJxcPpF46+nh/wCJlGcP9iy4BHb6a/h+n/YsP8vfl1d2HnvVdM8pXr2AtbeNlLkuGB4H0n3VmXk37XLLBOcB0yf8M4eKX+x4Yf5sFiTDuP8AW4f+J4f9iln5recNd1S+tfKnmFI5fqNwlzO9oC1UAI+NF+yyqx+HiuTnkjVkeDf84+j/ADeKXF/smZI/qPpPyp580fzRH6mlXCyMPtIdnX/WQ/FlpgQO8fzosTAh5jrkA83/AJoWtlLva6JB65H/ABYTzH/Dej/wOUZN9u9ej3DLWLsVdirsVdirsVdirsVdirsVdirsVdirsVdirjtirynzb+fdlpF3LZaZZXGqC0IN3Lbj93CP2qvRubL+0vwr/l/b4yJhDacuCUvpjXH/AKf1R4f9kzIA5mvhxf6b+az/AMr+Z7HzNYRarpcglt5RUHoQe6uP2XX9pcZRpiRSb5FDsVdirsVdirsFK7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir/9b1SMiFdkldirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirTMFFT0GKvGPyhtX13zLrXm2aZ/ima1ijFApjjPAM23JvsLx/Z5csrsk+7+j/AL7h/wBzLi/zWw2B+z/fcP8AuJPaMsa3Yq7FXnP59apqGk+VbjUdJma3uLd435r4BhyG4au2DjMTsyiaZR5F1V9X0Kxv5m9SWa3jZ2oBVuI5nbb7WFBT7FDsVdirsVY3qHnrTLDWbfy7cOwvrpC8a8TxIHi/2ckBYux/V/iZCO17f1WSZFikvnTSzq2i32np9qe3ljH+yUrkJ8lYJ/zjXqy3flKGypxmsZJIJF7g8jJv/wAHx/2OSHK+9JU/z68zKdPHlGwX19U1akSRjfihPxSv/Kv8uCVRjZ/6SkyA2ss68ieXD5a0Sz0dm5tbRKrHsW6vT25H4cELrdgn+TV5F5g/Ny8t/Pdl5U0wRT20yr65B+JSS3P4gfhaNF5cckTwiiOf0y/H8LZsBRH+c9dyLW8j/Przne2Vtb+VtE/46mrsYlINOCH4Xb2LfZ5YTLgHF3fSzBrf/SsD81/kHpPk3yVeXt1W61ZUV/WJICNUVEaKfs/s8m5cv8nMURlL1S2/o/w/538+X+w/3bWO8vdPy5nafy5pskh5MbWEE+4QDMgMpc2NfmL+Xj3Eo8yeX2NvrNv8dU2EwH2o5B+0zL8PJv8AVymjjPFHr9Uf4f6yxNf75k/kfzXH5o0uPUEUpIarIh2KuuzoR88vNHkmQpiHlP8AN2W/8z3flHWbdbW5hZjAwbaRQap1/aaP4vhwxImNr9P1LsRskn/ORuuXF0lh5N016XGrTBZKbn0wejD7QVn4/wDA5CUuEWo2D1Tyn5dg8t6Xb6PaktFbIEBO5J6sx/1m+LBG633/AB+OFinGTV2Kvlv/AJyW8wP5jb6vZMPqOmSKvIdZLlzx9KM9/Tj+J8jI0a6j1Sl/Mh/x5nVbf50n0V5LS5j0WyS+JNyLeL1CevLiOVffEHi3Yk2xP88WRNGgmkBIivLZ6AgVpIteXivH+XIyTFlPmTylZeYVj+tBlkhPKKWNijofFHT4vo+zgIN3EmEv50f5v82UZemSLI5bIySGO0thLKebW8Z/eNu2w+JifFqfFjw72d/6X0/7n0oD49t9cs72bSBcSfu01Ca8unbchOY4En7Xwoj/AA4TEyPv9Pq/H0tpF/F9DfnHqlza6LbeaNGkBFlLHOSKfHC2zqD/ACsrcsJ9J7/4ZMRsWIeYPO9rpvnDRfNNof8AQdWtmgnpTopDAvT7RjZv+EwgAEjvTw1sx3zxql95qdPOzuyaPa3sUFjHSgILhJrohv2mb4Ub/mnITyWeAcJiPq/i4pf8cUS6d3+zehfnb+WV95sl07VtLEc8unycjbymiSKSrHdf9T/gcryEjoZR/ijH6v8ANaia/pD+axr88YZNW8o3FzrumpYT2qxmGQSKx58ghiQKOXDi2MYwJuAnCv50eD0/76SxqXIEV/OZZ+T5i84eStMa8LCa1KhXXZleE/AVJ/4r+Fv515ZdMXuNj/pv63+mbCd7emNFDBW4YAFQSWI3A+0d+uAxB3O/83i/h/q8X0sGKvpfl38wY7fVCRf2kJJjWp9PmOpkhPHlIv8Axavw4cuI/STIR/ijEx4Z/wCfD1f6WfCsokbH/S/9I/8AFcKd6n5R0rU7c2d5axSQEceJQUA9tsoOmhyquH6eH08P9VgYAvn3TreX8nPPkWmWpL6Nq9Aqkk8KnjX/AFo2/wCEy/FIgGMt6+mX+5/4+2w32L6aBrk2LsVdirsVcRXbFXzn+aXmq/8AIuqS+WtFeMW+tUdFrRoHkPCYj+RJF+JP5H5PkcZ4QRV1/d/8R/m/wNkeX+5eT+ZfImreQtXm8vxxC+jv4kkQKtQzIRJyQN9r05AV4/tp/rZjiYr1+kx/2P8Ax2X0zaxKuaI0nzXpNtqVxqNpeS+W7xYoyIoYnZGkA4zRvA3w8Wb4k5NwTLsYlH+7MJ4/5uSX++9UvT/Ul/RbI7fSY7/wy4px/wB9/v0k8u/m7rvlwXen6ZeLFBeSNK87RAOSw3YfaZGb9j4vgy6MuHpCU/fLh/2fDxR/rQUSrpG/87h/H+amX5ZeQbPzbqF3deadR+renEsokMg5MXO1WY/7LiuUzOTJ9P8AskGMpMY83aHY+XrtrSxuVv7Mt/fopBHVSlW+Fm44AJcp0Mnv42JFc6ZHrPmfzRqPlWzs723ePy3b8F9SJPhcBtvUev2v8n+fCMkfoG0j9XF/vGXF05f0nvflv82tU8yWkdl5C0lvqkKLELq8YRxIFAH92hZn4r/K3+xxM4YvT680v5uOPDH/AE8/9lxcH9ZbiNvVP/Yx/wBP/wBIyeV+dtUtzqn1S5vX1LWCaTXQBKx1PE2+nwL8PL9nl/xH4sZGXOfDD+bj/wAli/pzl/FL8fWyO31cI/o/wR/4qTILz8udRh8vtr8sZsbbTis9rajdyQQXnuj3lZf+BzHjOz6fp4vVkl9eX/iIMIy7v9N/HJ9K6PqUep2cN7CQUmRXBHT4hyzMqkEUjcUPN/zx83a75U0hNU0CJZRHKpuKryKx9241+z/O37K/y/aweJGJ9Qu0iQHPdlfkzzXaeatLg1axYNHMgJAIPFqfFG1P2lOSkKTKNf71ieheZdb0/wA13Ggayhexui8tjPt0UBnhJ/yfi48srjlEvSfTkH+yikyBHdX+yek5Ng8o/MG/n856inkrST+4BD38w3CINxF/rs37OV5JcIof3k/p/o/02Z9I/HpemaVpsOmWsVlbDjDCgRR4BRQYwjwiubBD+YPMFn5fs5NS1KQRW0QqzGp+gAdzloFpjG3ldnZXv5t3SahfcrfyxA/KGGo5XBU/3k1D8Mf+TlOSRPojsP4pVw8X9CH/ABTORrYf50v539X+imAiXzR53higA/R/l6M9OhmkHEKP+MaDIEVUR+IxQdg9Xy8sEplh0/Tblr+RkhlueMbFmC8ytfTHxfada/DkMeKj6b/ncP8AvmQBKbZNi7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeLfnG/Lzl5Xhc/AbgkjsfiSn6srkLZB7TljF2KuxV2KvLv+ckpvT8nXPg0sI/4cZGTKKPh8zJYWWkeW7Vi2oXdvCBwFeEaovqTHwVV+zgOw/3P9ZNdXoQ2ybB2KuxV2KuxVB6terYWk10+wiRm+4VxSHln/OOFq82mXmuSktJf3TMagjZSW7/5Ur5XHc2mRev5YxdirsVeK/lURq3nfXdY+0EIhDDoKFBT/W4x/wDEsrqz7kkPassQ7FXYq7FXYqg9W1SDSrWS+umCwwqWYnwGIFpAt5P+Uulz+adXufPuqV/eEw2amoCxio5gH/Jbj/yMyknjl/Rh/u/x/vVkbPueyZchY8ioOTEADxxSEi1Hz5oWm7Xl9BGRU7uO2WjFI8gzGORYhqv/ADkT5TsVIiuWuZB0WFCxP0/Z/wCGxOMDmYj48X+xj6knHXMj/df7lKD+euq6oQPLugXl0rdJJBwUDxPEMv8AyVXMc6jDHbiM5D+HHHj/ANzxz/6VNfHDzn/O4f8AjvH/ALlc1/8AmlrDD0bez02Jt6uQzAe61n3/AOBwfmR/DCR/4Yf+PYp/9KknIOQif6MpH/iZf9OlZfyy846kSdW8wSIp/Zt04j/mn/hcfHynkMeP/Zf7OPBJfFl04R8P+kUXa/kDpxH+5G9vbpj15SlQfmq7ZEyyyNmVf1R/vmPFK7s7/wA30pzo/wCS3lbTDzjslkelC0pLk/MMeP8AwuVywcX1Gc/87h/3HDL/AGTGr538/wDiWT6b5c07TBSwtoYP+Mcar/xEYfy8BvQJH0yl65f6efFJeEXfX+d/F/pkzzJZOxV2KuxV2KvNvP8A+YtzDc/4a8rJ9Z1uSnIihSBT/uyY/Zr/AJLYJzGMWev0x/nf8dZio7n/ADY/zkJof5E2DkX3muV9X1Ft3aZj6dfBIa8eK/5WUy48n1kxH+p4/RCP+l/6Ra5Ey5n/ADY+mLO7LyjpFkFFtZwR8Ps0jXb5GmQGmgDdMRABCeavIWk+ZofTv4R6goUlT4ZEI+yySL8S0w+CBvH93L+dH0/7FNVuNv6rGvJ+v6hoOpnyn5icy8hysrptvVQf7qkP+/1/4bLoZOPY7ZIfV/T/AKUW0ni/rf7r+k9JybB2KpNfeUNJv5xeXVpDLOvR2QE/fmPLTwlzHNgcYJtNo41jUIgAUdANsujEDYM0u13y9Ya9bNY6pAlxA3VXFR9HdT/q5XPGJ8/9j9SCLWaP5Y03RYYrbTraOKO3qIwqiq8vt0J+L4v2jy+LEYwN+Z/nS9UlAAeYflLI9/508yahUFBJHENv5QO/0fZyQ5sy9A0T8vtH0W9utUs4At1emsrklie5A5fZUn9lcr8IE2fX/N4vVwsKY95x/Jux1ZzqOjOdN1RRVJYTxUmtf3qL9oYIwliN49v50ZfRNQTH6f8AjrH/AMqL1IfMF7BrsXo+ZGQJJJWizotKSIvY8VU/D9rLIVP1Cwf4sf8AM/qsqvcf6V7PlqHYq7FXYq7FXYq7FXYq7FXYq7FXYqtZgoqdgMVeP+Zfzxmu79vL/ke1Op361DynaKM9Pif9rjkpyji+veR+nHH6mZqPPf8AoxQ195h/MrytGupanb2up2gAaaO2BWRB3p/Nx/yVykamP8cZY4y+mV8XD/W/48xEx/EK/pRR3mr86LHUPKr3/l+Tle3RFtHF0dJZPgo6fs8PtZkSjwb9PqjL+czqt+bMPy78jW/lXQ4tJChnZazsdy7sP3jOf2v5cw44wQTLcz+r/iWr9LzPRAfyr86jRFJGha1V4VPSOWv2R4Ly+H/VyzETXAd+H6Zf0WcdxXd9L3nLGLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir//X9U5EK7JK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUBrczQ2FxKgqyxOQPcA5EmgrBvyA0hbDyrbTEfvbovM56klmPU5XAbkpL0jLkOxV2KsF/O6y+t+T9TjAqRAzAe43yElYJ5E/PTy55a8pabFqtzyulh4tDEpdxQkDkPsp8P8AOy5kRxWLNQ/rf8TASn/sW0Qvuj/W/wCO8aIn/wCcpdIuaJoljd3stKleIWg/2Hrt/wALkZnHj+qcf83/AKu+F/vmJEY8yPx/W4Fo/wCch9TUcpPL15w8QG/42jXKhnw/zkcUPP8AH+azvyL+aWmebSbeEPbXyCr28w4uB40P2l/yssoEXEicf6KTHqN2aZFg8Y/NG1EXnzy3eICWZ2jPyryys7FIez5Yh2Kvm3VPOyfk/wCbNWiljZ7PUUFxCi9DKf8Am7lzyOGtwf4WcKOx6LPJfnzQdFuJPN3mu6Fxrt3XhDGDIYIz9mMKPsHjkvDMzxSqGMfTxf7rhZcN86gP4f8ApFndn+eF1r4C+WNFvLxjt6ktIogf8qVi2CWXFE1xcf8ARxxlKf8AsuDh/rephce/i/qj/ivpTW18reZvMUdfM98tpA4FbWwqu3dZrp+UzfyssTKuR8WZ+gDCP50v3uf/AKpQ/rRjKSOM9PR/S+qf/Ex/zXmvnDy3pv5ceedJ11IBHpUymEla/DJuPUcn7R+LlkMcd+EmX87ikeLiWI6PotJFkUOhqpoQfY9MuQ8Q0OIecPzKudQf4rbR0CRkdOY2G/8ArOzZXLcsjsq/mvrMvnbVofy+0VgY2YPfSDfgimvp1/z/AJclklwj+lP6U/SPe9i0nTIdLtIrG2HGKBFRR7KKDBEUKa0Zk0vL/JMUumec9Y0xNrSRY7lV7Bn+0f8AZb5VA8PpZXshvz58l6fdaY/mUSfU9T09ecNwuxqDtGf5uX7OIgYy4of50f4ZRYxBuwwH/nG/VbTzFq9zq3mG4M/mGirEJaD93TdoV8f9X7OWSich4v4Yfwx/hkyI4t+59L4WLsVYN+Z3mO5tIItF0dqatqLenFTfgv8Au6c/5Ma/8NgMuAcX1fzY/wA6TIbbvn7zNr2k6L5rtNB1UuNJ0P4mAUs005HN5H/m9Rj9pv2MrjDiFXEWeLJL8fzVG/lf1SeraH5280fmLcU0aBtI0YHe6kUGVgO0KP8Au/i/m4twyUs0R6cfrl/Ol/dx/wAz/jy8Y/h9X9L+H/Ssx/MTy8dd0OfRUctc+jzRiQGLpujEAb8mHxceOVz2F9R6v4f876z6UXW6Z+Q9VbVNDs7uUUkaJQ48GX4HHz5Ll92pTe+aFbeQ3VBCFbnXpxp8VfoyJjxbKHxbp1lawzaxdQWUr6TdrNBZzBSwjc7j7P7LL/wCZQTEbE+qH08X8akAbdz07Ufzc8v335djSZpg2oyWotvq61MgcDgu3bpy5ZlSx7XtX1NnD16Ma1jRLjzXoGj+UNEo+sWivPPSlIwVPESSD7Mjcl+HMaUuAcXf9Mf45Q/n/wBVhI1v/wBJIfz1raaj5Kt9EAl0/WNFZBNZvVS6g/3qD7Mq8v3n8+WR5cUDeM/V/Rl/Sj9SQdrj/nR/4uL1LSf+clvKlto1tNc3DNdCFQ8QQl+SijV/Z+Jv8rMoYu8xDLgvew841O38zfnrqq8I5LLQIiCvqAgU/m/4tdsxcmoH0w9f4/j/AOJa5THKO76X8qeWbTyxpsOk2A4wwKFFepPdj/lMcYR4QxATZgGFDuDk0vnfzzFq35R6z+mNGZl8uahMr3SKgf0mr8fEOPgVv2GyGLJweiVG/wC7lLi9P+k/H9FMZfwn/N/ovRz+fXkwW/1n9JRlaV4gNy/4Dj9rMz8vLn6eH+dxR/Xxf7Fn4Z8vn+JPGPOnmE/nL5m0+28rxSi3smrJckcaAkMT7dMw8xGM0PXI/wA1iSI8ty+o7WD6vCkIJYIoUE9dhTfJhir4VdirsVULy7S0he4lNI41LMfYCpxUbvBfyr8vWf5l3WreaNaT1hPKYIAa/AidGjb9lv2vhyjJDjP9T6f6yZ7n3N/muzxW62GtFrO7sB6mnakKlXK/7qk4/EkrL8PH9r7eDis7cIyx+qMuGMZw/oTn9X9RkDfL6/5svTCf4/mpT+RXkfQ9dgmHmuy9bWJ5GnpcQutVPxc43YLG6NXlxyuUYZjYkP5vDjy8E4/5sZcTTKp9eX8MZ8Mv9LCXqezRflJ5VhiMCaZbCM7Eemu/z2yP5SP9O/53HKU/9NIrwB515X/J3y7D5u1SyuLSOSBIoZYYyCVUNWoA/wBYZIYyRVy2/pfX/WZCOzM/zH/K/Tta8u3GlWNnGJQvKAIAh5j7B5f81YnDGAuN+n+b6pI4QGFf846WMV1oN95R1m2DNZzskysQytyA6eHHj+zlpAyDrv8A5vD/AL5nIWGO6r5BWfXpfKv5f3t9ZRCpveMpNtED/utE+00jfy8v9lhGSeIUCMl/TGUI8UP6fi/wf5seJPFKAq7/AJsZfw/538P+7eo/ln+SGj+SEEyj61fn7VxIBX/YD4uI/wBllQxGR4p7/wBH+CLXXe9AvLOG9he2uFDxSAqynoQeozII4hTJBeXvLtnoFqLHTk9K3UkqlSQK9hXoP8nGEaHMn+sgJrk0qU8CTo0UoDIwIIPQg9chOIkKPVXkX5U6MPJvmbVvLaKyWlwRc221Fp+2if6vL9nIY5bcP8z0shy9z1q4s4rgo0qhmjIZT4EdxkjG/gxYf+ZHnOTSYk0rSx6mr3vwQoP2QdjK/gqZMkRHEf8ApJnEVuUd5A8lxeV7H0zR7yY87iXqXc9TXwGVY4nmfqP+x/osPeyrLlQWqaTaarA1pfwpPA/2kdQymn+S3w5XKIkKP/Eqwu2/K9PL1x9c8qzNZgtV7UsTA4PUcP8AdTfytHkBxwFA+JD+bL64/wBSf/F8SRMjbn/Rl/vWL+VdRuPy41S8tdfiK2Go3Hqx3g3UM3+65j+yvJuKNjikJGj6cv8AS/j/AKqQeLbr/unskMyToJIiGRhUEbgjL672NU8m/NCR/NHmDTfKunV9S3lW7uZF6RovQP8A5TfsLlWQ8PvP0x/37MGvi9ey1g7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXDFXYq7FXYqxzzz50tfJ2mtq98jvCjBSIxU79/ljGifUeD+l/0iyAHXZ5nF/zlv5UNfUjulp/kA/8AG2ZBxx/nR+WT/iWzw4/zh8pf8Sy3y7+e/k/XABBqMUUjD7E9Yj/wUvFP+BfAcB6cM/6so8f/ACq/vf8AYIOPu4TXn/vZ8M/9iy218zaXdU+r3lvIT04So3/EWwHBMb8M/wDSyUYpHepf6UpmjhxVTUZSQ1VS7FXYq7FXHFXy35413zbqHnfTDqGmGJbK5pC8SllZCfts9WX7PxfsZRLUYz/Oh/Dwy+ri/o+n1/5qfEiDT6ky9DsVdirsVeW/85B+Tta81aB9S0JgzK4aSL/fgHQA+Kt8WUznw9OL/dR/pLxV5vFfyu/MS5/L7UJZPO1ldG4dVhW4ZSfTRPhEY/Z4/wCq2Thkx5jfFVfTH/jv1MoyjLmaL3vRvz18par/AHd6sVenrAx1/wCDzJ8E9Kn/AEYnil/pWXhmr2/3zOLK/t72MS2siyxsNmQgj7xlcomPPZjKJjzRORYuxV2KvNPz180HS9HGmW3xXepMIEUdaE/Gdv8AgcBIA3ZRZV5C8tJ5b0W10tOsUY5V/mPxP/w2QgNmLIcsV2KqF7ci3gkmPSNGY/QK4Cryb/nHCEvZalfnb6zeOw+QJ/rlcAkvYMtQ7FXYq7FXYq8M/OHzSmv6mnlOGcQ2EP76/mqKKi78K/8AGv8ANkZXXCN5TbAOneh9K/MbzJ5khGmflvpyQ6ZbgRreXWy7bVRPsn+b7Mv+ouR8SGL0gHPMfwx9Ef8AO+j/AGU4f5zHijHYfvP9jD/e/wC6/wAxMYvy7/MbUTXU/MCwKdyLdKU9gQIsP5nKeUccP63DOX+5n/ul8WR2qA/2X+9/36sP+ce5LwctZ1q+umP+XxGR8XORXEI/1Y/8UxOSZ5n/AEoTjTf+ce/KlnvLbtct4zOWOVeCZfVKcv8AYsSCeZLL9O8k6JpxDWljbxsooGWNa/8ABUrgGlh3X/WJl/sZelHAOR3/AK3q/wB0nigKKDpmSIiPJm3kldirsVdirsVdirsVdirsVYl588xz6dAunaX8Wq3tUgXqB/NK/wDkRr8WRMxEXz/mx/nSZAVuqeRvI9t5XtiAfVvZzzuJ23aRz9olj+z/ACrlcYm+KX1H/Y/0YsTvuynLldirsVYj+ZPlp9b0tmtW9O9tCLiCQCpDp8VB/r/Zyme3qH8P+5/iUbI/yR5mj8yaTb6nGd5Fo4OxDr8MiH3VhlxTIJ/ih2KuxV2KtGvbAVeP/kBSSfXJ6hme+NSK0qB2qMhHnuyL2HLGLsVeY/nN5Ruru3j8xaICuracea8RUug3KU/aplEvQeL/AE3/ABSg1uyT8u/OUXmzSYr8ECcALMg/ZcdQcyD3hlIUyrAxdirsVdirsVdirsVdirsVdirsVeefnnZa/eeW5rfyxyN47KrBKBihrz4Mx+HKzl8Pf/j3D/mrdLfyN8hyeUPLsFtexJHfyVeYqPiqTUB2/aK5CAB9Xf8Azvq/46gd70Uiu2XEJfM353+QIfKOv6f5w00CKzkuoxcoNlD1/veP2fiX/hsogOE8P8J+n/iFiK2730rDKsyLIhqrAEH2IrmQryz/AJyM8vNfeXxqtsCbnTJVuEI60B+MZTPYg/5qQ9D8s6qmraba38TclniRwfGoFfxy4qQmmKHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ASrsKuxV2KuxV2KuxV2KuxV2RtXZJXYq7FXYq7FXYq//0PVIyIV2SV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpP5uuhaaPeznfhbynb/VbAUhJ/yitvq/lXTkBBrArbdPi+LIwClmGTQ7FVkpYKSn2qGnz7YCrwi8/Lvzz5+nnTzJfDTNPViiQwb81r1bifiVl/mb/YZVLUTkKhEQ/nSyf9I/7nh/rp8Q8o+lKP+cbPIOi+pqQvLZLm8srkxJJKoaij7JWNvsN/lZA4hk+rf+j6uD/j3+cxlC+e/wDuX0Na6Za2i8beKOMeCqB+oYY4IR+kRH9URRGIHJFcRlvCGSD/AERafWBe+kn1gAgScRyoevxfayAxRBsIpG5cl4jLdDzL+aiW397a6PbFtuiSmnX/ACuWQn0H+d/WZHYPbsmxUriZYI2mfZUBYn2AqcVfHXniy1/847y71/TrYfU9NBiUA7sFPKg/mfj8WU5cogdr/pS/mMpmnrv/ADj/AOVvKN5pKX+n2qtfxnjP69GdHHUUPwqv8nw4Dpwd5HxL/wA2H+kYGA587/H0va1UKKKKDLIxERQ+xK7Jqxrz95HsvOemSaVfLs26N3Rh9l1ynJC+W0v4UU8e0H8zdc/LCP8AQPm2zmuLWCqw3UQLAqPscj/m2WQzwntM+Hk/pfxMxOJ+r0MG/Lnzxr841DT/ACtZPJfalOWNya0iU17/AMy8vtM2R8WENz65fwxSZgf0v5r6H/Kz8t4fJdgUkb1tRuDzuJzuXY9qnfiuRjEk8UvqP+xa7J5s4y5LsVeUaDrkc35lalZjYrZwrv3K7mn/AAWQA3ZVsg/+chi19+h9BJIhv7wLLToVWhocZHau9ATPz/8Akfp+vwRTaSf0fqlqoEE8e32fsiTj9r/W+1lAgcR4sf8AnR/hn/x7/Y/zmMRw7x2S3yz+aeq+W7mPQfzCgNvIxCQ36gmGTsvqP9lHb+b/AINEzJhljl2H7vL/AKnL+L+p+JR/pswRP+hL+b/O/qPXUmWVRJGQykVBG4OJNGiinz75U/MzTbPzHqOsebFnt70SGC35xMUjiBpRD+yzft5GBjlP1Q2+mMpf7JkDGXURr+GUmTXn5r+QLyf6zcQ+vITvKbUsPpfi2QnpMRNk4+I/7Zw/75rljjfOPzTm3/PryeGEAuWhHQcoXVR9PHiMyY4QNonH/mzx/wDFNgh09PzizPRfMOm66huNLuIrlBsTEwanseJ+H/VbIyxGJshTExYlaeXb7yfqjz6Wpn0W9cvNBWrQSHrNFXrE37ceUCfB6ZfT/DL6uD+hP+j/ADZf6ZhxdD/my/msE/Oz85tKvdHOj6Jdq1zdSCKQioKIDR+XIL9rMnhMRfO/p3bRGv8AepvoP5i+XvLOkweX/LIOqXwUARQAsDIR8bSSU4qvL9rKZYo4x+9r+r9cv82DExEfq/0v8bH7H/nGM6xctrms3H1O7uHLvDaqOKA/so5+y/8AlLmNwyP01CP8MZeqUPx/Na7PTb+b/E9i8neQ9J8oW5tdJh4Bt3c7u58ZHPxNl0MfCbNzlL+KX49KgKvmXyRo/maP09XtY7igIDMo5Cv8j/aX/YtkZYQTY9Ev50TwS/zuH6v85BiDuwH8sfyZ0bSFnaWOzv4lnY28oQFlA2Mcj/FyZW+HKzg4vrH+zlwy/wAz+FMod71iGFIVEcShVHQAUGZMYiPJVXJpdiqHvLOG9ia3uUWSJxRlYAgj3ByE4CQo7oYFN/zj/wCTJpvrB02MN1otQv8AwA+HKPy45XP/AE8ms4x5/wCmkzPRfL1hokIt9Ngjt4h+yigfqyyGIQ5f6b+JsAATLLkuxV2KuxVA61pUWr2c2nz19KdCjUNDQ+ByMtwqXeTPJth5R09NK0tSsKEnc1JJ6sx8crxw4RubP85ERScT20VwvCZVdfBgCPxwzxxn9QEv6w4lIB57qoULsNgMmIgJXZJXnupyyaf56s2X+6v7SSNvDlGeS/8ACtlYO7Mckp/Mfz7fahdnyZ5RHqanKKTzD7MCHqSf56ZZOYxC+cj9MV+nfr/DFl/5e+Rrbydpq2ELGSZvimlb7Ujn7TtlMInnL6j9TX70/t9Pt7Z3lhjVHlPJ2VQCx8XI+0f9bJDGImx1VFZYl2KuxV2KuxVL7/S4biSO7dSZoKlCpodxuvurfytlMo73/wAT/vlDyn86vzh1LyUdONhEha4LGWNqMaLt6dR/lfy5dCQ6/wDEsxXVI/yb1XUNd8yP5g1LhKbuJlGxBgZSP3FG+w3E/wCzXKpSEpeX+T/m8KmV/wC9fQWWsHYq7FXYqx3z9b2M2h3i6rx+qeixfl0G2x/4LKpw4h/uUgW+avKvnjzX5D020SGSO7t9SZltraQkyoCaRyDwRuXLjlkc9/WL4f8AKfzv6P8ASbeLa5b1/E+gPyx8jv5dtGutQf19WvD6lzMdySdxGD/JH9njlELkeKXX6Y/zYtJLN8yFdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqhd2cN5E0FwiyROKMrAEEe4OQlASFHdCQn8t/LbLxOmWhA8YUP61zG/KQ8/wDT5P8AikCICWaz+S/lHVqfWdLtww7xL6R++H08P5cdDOH9WUv9zLiivCPwZR/3KQP/AM42+V+TPCLiIk1HGZ/h/wBWp/4lywnHPpKQ/wA2Ev8AeqRLoSP9LL/dRUrj/nHmy40sdQu7cjwbl/xLLozyw5S/00Y/71YmQN3f+bFqL8ndfsd7DX7gEdBIoIp/w2A5s558B/03/Ets80yNqP8AW/6RU5fI35i2p52muRzU/ZlQAf8ACxNhGfJHnGE/6v8Ax6WL/dtUJSH1CJ+Mv+Jj/ulRvN/5haGpGoaRFqKr+3bPxJHjSsknL/J9BcH5mHKUZwkf604f7CGWH+mzsvEFbiX+bxf7mMcv+7ip/wDK99SgHK/8vX0K+wdv+ZK5b42ADeco/wBaEYf7rKyhwnmSK/o/8VwK0f8AzkNpn/H1p9/CV61gJ/H4crOTCTtKEv8AS/8AFSWRh0l90f8AfK8f/ORnlt/2LwU/5d3P6ss4ofzof6aLEEHqFWX/AJyF8tKKJ9adz0UW8lf+I4fT1lAfHi/3LIV1ICaaX+YWpa0FOl6NdhG/3ZdslulPpMsx/wBjA2Q8XF0Ms3/CYccf9Pllgx/7NAMf6Uv5vDH0/wCmlKH+w4mZWhnaMG4CCQ9QhJA/2TBS3z4r/q4R+Px+P60mP4/nfoiicKULe6dbXyendRJKvg6hh/w2UyxRnzAP4/nIIYvqn5ReV9U3udPir4pVP+TZTKhp4gekyh/VPF/u+JAjX9smKTf84/W9kXk8u6ld6az9QrEj74mgk/4KRstickOUuMD6YyH/AEli/wClCgyG1+n+l/x2UI/6aE1I+TfzH0ui6drUN3Go2W4Sh+TO6XLH/W5ZKOoyDecIT/qy/wCIhpWYyEncR4f9L/uIR/3SuNU/M3TlJntLC9/4xuwP0f3WI1IPOE4f1eH/AH2TKnJkHSNf1fV/upKE35weZdJiabW9BlSNN2aNhxA8SWLYZanCTXrh/X/45FTKAH8Q/wBK86tPzg0/zJ5wj8w6tFPHpdknGFVUuBJQbyelyX9p2/4HDIRJqwP63p4k7cntNr+eHlS4pwvKE7UaNwfu4Zk+F54/+VuP/imQx+cP9PGP+6LM7C/ivYVuICTG4qCVK7fJwrZj2DyMZf0oyjOP+mhxRayK7j/VMZx/00fSi8KGN/mPe/UvLmo3FacbaTf5rxwFIeWf84lRTy6Hd38rN6ctyRGD0ooFaD/WwXukl7vkmLsVdirsVYD+Yn5gPpbR6JotJ9bvPhijG/Ad5ZP5VX/KwyPAOI/5sf5zMChZ/wA3+kxTS/8AnHWKWPhrV48yTsJbqNVoZJBvQzE8vSWv2VX/AGWYlZJbmoX/ABfVOMf5n8z/ADvV/VYEk8+r13S9LttLt0srKNYoIgFVFFAAMuhARFBAFIzLEuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KoPVdUg0u1kvrtgkEKlmbwAxAtIFsO/L+xn1aeXzZqalZrn4bZG/3XB+xQfstL9p8pB4zf8I9Mf+KWRv8AH+yZ7lyHYq7FXYqleueZ9N0FFl1a5itUkbirSuFBPgCxyUYGfLdkI2wTybrOn6Nrupaal1biwueF5bESJx/eVWdUNePFXHL/AGWDHhmPTwy9P9GX0tnhT5VL5S+ln8GuWFwOUFzDIoNKrIpFfDY5YcMxzEvlJHgz7pfKSMWZH+ywP05XRYcJVMDF2KqU4BjapIFOtafjkfx+OJIeL/8AOLMon0vUpx0e/k9+gXvkRsUl7bljF2KuwK8K81W0/wCVfmRfMtkP9wOoMEuoxsEc/tqo+H/ixP8Anon8mQxHgPAfpP0/0Px/uP6iYHof817db3Md1Es8LBopAGVhuCCKggjLKpSFfFDsVdirsVdirsVdirsVdirsVdirsVdirzv89/J955s8rz6dpiepdB0kRKgcip3WrfCPhPLKckuEXvt/NEpy/wBLH1SUmmSeQ7K+sNCsrTVaG8igRJaGvxAUO/fJxlxC+X9ZJTfUbCLULeSzuByimUow8QwocZDiFIecfkXeT2tre+WLoH1NHuWhVia1jPxw/wDCnGMrHn/EyO71DJsXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq/wD/0fVIyIV2SV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KoXVLFb+1mtH+zNGyH5MCuRkLCsK/JbUfW8vw2ElFuLEtbyJX4lMbFBzX9nlTBHcX+JMz397P8AJsHYq7FXYq8H/wCcfJfX8x+ZZV/u/rIoBTb4n7fayuOzIveMsYuxV2KtEgbnpirw/wD5xxU6hd65rhHI3F2UEn83H4z3/wAvKxzZSe45YxQuoWa3ttLauaLMjISPBhxNPvwFXy7pL+afyMv5Umt2vdCmcsWTceAkr+w/EfZb4crxZ4/TP0fj+GX8UUxmOUlXy/52s3872eo+ShL6WqMFv7VkIVST8Ulfs/DX1OS/5WSjWLawcZ+n+fH/ADfx6U2I7c31Pk2LsVdiqC1TTYtQt5LWZQyyKV3ANKild8rnASCCLeX/APONCel5ent2FJIbyaNh3qDXf/YnBADn3si9dy1DsVWlgoqemKvDvJPp+bPzG1LXrKn1KxRIea9HcAp9r9pdnb/gcqlGpUP60mXJ7NfaRaXzxS3USyPA3OMsKlW/mXwOGWMS5tZiCjcsZIPU9KtdUga1voknhcUZHUMp+hspnjE+f/Ho/wBWX1R/zUEWpaPolpo9stlYRiK3SvFF6CprtkhHatzX86Upy/08vUoFd5/rHi/3StPpltcbTRI9f5lB/WMhLDE8wFoKEGl20RaBLeNIgARRVoT32p+zkPAh3D/Oj/vkGEfL5L5NFspRxlgiYdfiRTv9Ix/K4/5sflFBhE9B8mDeafyytLNW1vyvAtnq1sfVUQDgswXd7eWNPhZZV+H7P28lEHDvEy4P4scjKcZR/o8UvTKP1R/0vCzieHldH6o+rh/0v0sx8q+YYPMWmwara7RzoGoeoPR1PurfDmQQmQp4rr/lHSNc/NFbHUYYvqsVl63AgAO5I+1/M3xlv9jmMMIIqO2/q4VEO57XonlzS9ITjpdvFAv/ABWoH4jJRwRgeW/9L6mIjw+SbZel2KuxVJNI8rWmkXl1e2nJWvGDOtfhBA6onRS37eVxiY7X6f4Y/wAMUD8RTvLEuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvKfzw+uBtLk0kOl+Ln0lnAqkazD6uTJ/s3j4f5WUymIm+tS4Y/wA7/pFlGVf8Sy7yL5CsvKNqYbWslxKeU87fbkbu7tjGG/FL1SP8X+9j/RYeZ3ZRlyXYq7FXYq7FXYq7FULqOowabbyXl24jghUu7HYAAVJxAtIFvlXzt5nk1fWLLzdqdnJ+gRMRZqtAWZWD83r/AL/bm2Y5MZHgBqvql9fF/O4Px6WRIO3d/sn0fpnlW2h1Jtct6xG4iUSRAAKWH2JKD9tVPHljDHw8vp+rh/mzYMlzIV2KuxV2KvCfzx89wz3y+WGfjY24We/I6sNmhtU/maRuPw/805GfKh1/i/mQ/ik2RG3v/wBjFhXkvSb/AEbzjYeY/M1r6VlqJaK15GohJ/uEI/Y+EBUzHjKOX07+j6f5k+FF8X+9fVYzKYOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2BXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirRFeuRIBVTe3jcUZVPzAyJxx7h8kcIU1sIE+zGg+Sj+mQOGB6R+UWPBHuHyVBBGDUKK+NMAwQG4jD/ShkAq5kJdirsVdirsVdirsVSrX9Xl0q2NzDbS3bjYRw05H/AIMrt/wWRMox3keH4Sn/ALGKR5vFfOejef8A8zUFh6CaLo7keoruDKwH8/D9n/JXIHU7VjiZf0pej/pFTk2qI/zpPUvy9/LvT/JGlJo9iOaglndqEux+0zZWMIl9dTv+cI/7FgAyiO3jj+woHyGGOnxx5Rh/mxikCuSrmQl2Kpb5h0ODXLCfS7sEwXCFHp1ofDISjYpUD5S8rad5N0uPSrAenaw13Y9SxqzOx7sxxxwIFfUgDpzTP9MWdePrx16faH9ct8M+bPhKMVwwqpqMixQ2o6jbabA93eSLDBGCWdyAAB4k4YxMthukC3ks35zXnnGd9J8g27TNUq97KCsSDerp/M38nL/gME5xxf7ZP+bH/fSZWI/0/wDcsv8AIX5Z2nlgNeTMbrVZ95rmTdiT1CV+wn+TlAiZHin6pfwx/gh/V/4prO+5Zrl6XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWBeY0i84aonl5STZWLLPeFejMP7i0Y/5W8kq/youVz/mjr9X9GH/HmRFD3/7n/jzO0QIAqigGTApiuwq7FXYq7FWJ/mD+W+k+e7RLHWVYpG/NGQhWB70YhtmH2sqlG+Rr8fzUEW8i80f848eVdC1PSjHHMbK8uTbzI0p+06M0HFl4sv7xG5/FlXBLlxT3/i9HFHh/zeH1f1EQgR1l/sf+JZZdf841eXmAFpNc26g1Cq/IdKf7sDYjHMfxE/1hH/eRgvq7z8o/8SoL/wA44WqAiPUrsE96jr4/Dxy0SyDqPtSLVD+Ql0isLfWrtCaePUd9pMn4+YciP87/AKRk2CRC1/yZ8xhaReYbgEVpsw37V4v0yH5jUf7V/sf+qDI55eX+x/4huX8t/PUCs1r5h9QkE8JIwATQUHOknEf7DIDPmP1RxH+qY/8AVCPq/wA//OYHPM9If7D/AKpfj+c8W/KOfz1ZfXbXyqj+lb3H+kRN6Z/ekFGr6oVv91/s5ZHOIjlx3/Rl9P8AmyTGdefwj/uuKEv9K9pt/Of5iWSr9e0eKcGhJjb4utCKB+PL9rDHU4/4ozh/V/EljOMzylAfj+dKSJP50alZ8l1LQryNgCfhoRQfbNf8nANRil/Fw/1oy/4lhOcAa5f1la1/5yG0BiFvY7q1Y9ecLkD6UDZf6D9Mon/Y/wC6ZkRqwQfhL/iU4fzR5V8+2MmkLdxTJdAp6ZYJJXqCkb8ZOaN8S/D9pcjk08pDvr1cUeHLwf6Xi/6R9KnGff8Axen1cP8ApfpY/wDkpq91p0t55H1b/evS2JhO9HhJHEpX9hPUThy/Yl4f7qbIQlxRvqPTL8fj+GX8SncX+Px/x161kmDsVdiqVeY9PvNQ0+e1064+p3UilY5+Ifgf5+DcVbIEmO8aMv4Yy+n/ADtpf7mSQaeVN5N/Mjyw/wBd0zV01tQPjt7pOFf+MZ5vQ/8APWPD+amf7yEJD/aeGMo/7DF/vv6rKWYnmB/mxjCf+x4f91/mJroX57WwuF0zzXaTaNfGoBmH7liOvCf7P/Ev9bJwMMv0H/knL0Zf9lw/71YgT+n/AEsvTJ6fb3EdxGJYWDowqGUggj2I2wEEc2JCtih2KuxV2KuxV2KuxV2KuxVjmm+VRp+t3mswt8F/HF6ieEkQKB1/14z8f+UmVRBBrp9X+d/F/wAUrI8tV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv8A/9L1TkQrskrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirDrfQZtC1ae/sIhJZX7Bp0U0dZieJnVW+B4mX4pV5K6NydFfmy5jj0He/6Mo+v/ADJR+rh/m8HH9Xq4Iw42Q32/2X+9/q/6b6vp4WXowYBh0OZDFdirsVeafmp+bSeWFGkaOv1zX7iiwwKOXEn/AHZKB0H8q/tZI1AcU9of7pmAALPL/dKn5LflvL5N0+WbUXEmqX7ia5YdAT0iHjwJb4v5uWY0AZeo+m/pj/Mj/wAU1g29Hy9LsVdiqXeYZWg066mTdkhkYfMKxGRPJIebf84v28cfkyCVKc5pp3f5+oyb/wCxUYApD1rJodiqlcW8dwhimUOjChVhUEe4OQlASFHdUHY6DYaeednbxQsRSqIqmnzUZXDBGHIfj/ORSY5el2KuxV2KsB8heX7ry9retWrRn6jdzrewy0+EtKOM8XzjZF4r/JlUDXp7v9z/AApZ9lqEPd3cNnE1xcuscKAlnYgKAOpZm2AwgE7BIFvE/Nn5h6t+YE0nlryPE31GT91cakwPAK3wyCH7PLb4f5m/yU+PI5MscXpHrzfzY/TH/P8A99/W4OKTIkR25y/2Mfx/0jxvS/y78hWfknSk0uy+Ij4pJD1d6AFzlWOJG53kfq/4lgyeu+XKuxV2KuxV2KuxV2KobUL6Owtpbyc0ihRnY+ygsfwwEWoeZ/8AON1pcReUYLi4Ylbl5ZUU9VBkcfcwVW4/81ZCJtkTbJvNn5Y6J5quYr/U4S1zAOKujlG4/a4MU6rX9nIyx72CYfzuFrI98f6pZNYWEVhAlrbjjFGAqjwAyYFd5/pS9Umd2icmh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVRngSZeEqhlqGofFTyU/wCxYVyMog80K2SS7FXYq7FXYq7FXYq7FXjX/OQd3dP+itJ9CebS7q4JuhApLOEoY7ckfZWVvtN/sv2MqnljHYngv+L+j/Fw/wA6f81IkBz2/H+6el3/AJV03Uba3s7uBGgtWSSKMj4VZAVSg/yQ2VnCDGug/Hq/3zExtOQAOmZCW8KuFe+RjfVXYlWMfmH52tvJujz6xc0Yxikad3c7JGPp+1/k5MC2URbyf8nfyjuNUuD50831e7uZDPFA/QE7pLIp/aVfsR/sLmIScx7sf+7/AOOf7piZcTNvz/FmnlK6luxWSMobcjZlmLBYmT/KWv8AwPLLTj3sbcDKLN/LbXL6ZaNf/wC9ZgiM3+vwHqf8PyyYN7sSmWSV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ksa8/eS4POOky6PcyPEklCHjO4I3X/AFhX9nIkyH0Hgku/TZ813n/OI2vx3DC3uoZodyGZip69wRs2UHUZesZS/pRnH/fyhJhxkcwT/VlH/fozSf8AnG/zvZyB4Lu2g47chLIG/wBYGFF/4ZsmNZm5VmH/ACVjw/537yf+5bI5p9Lh8eH/AHMpqvmv8hfPd7GDeXi6jGlCI/XkJ/4CYMp/4LAdTkqiJ7/zTGUf876JoOSVb3/mni/3XAyTyj+bl15LiXSdf0b6lFH8POBOA/1iP7tz/qtksUsJ+n0SP+d/uv3v+7TEwOw9H4/pep6v5d/NPy95gCiyu4/UcVEbni3/AALZlHEem/8AVZGBZWjBxyU1BypguxV2KuxV2KuxV2KuxV2KpP5j816b5btzdarOkEY6cjufZR9pjkowMuTKMbefr+bmt64xPlXRJrmDcCedhCh/1eWVSz44/wA7IR/qQ4lJiO+f9X6f9Mt/xV+ZcZLHQ7V17KLlQR9JffJfmcf83N+P8xs4ofzZ/wCnj/xKy4/OfXNHRT5g8u3cC/tPA4mQDxqg2/2bLkI6nCeZnj/4ZCUP9nl8Li/zYtXHA/zof1h/vpcEE78v/np5V1o+ml19XmrT07hSjD6fiT/h8yRjveJjP+qf+K4f9izEL5VL4/8AFMm13zNb6dpcuqQssyqtY+JBDMfhjUFf5n+HK5Dh57IEe/ZQ8j6FJpGnKLs8r6djPcv4yP8AE3/Af3a/5K5TD+d/P/EYsWRVp9OWoWSyrEpkkIVVFST0AHjjzTSUaL5v0jXGePTLuK5eL7QjcMR93b/KyyWMx5hlLGY8/wBEv9yneVsHYq7FWB/mxEGTSpNyYtUtZNvAMVP/AAr5XNlFnmWMXYq7FXYq7FUJa6bbWjSSW8SRvM3KQooBZqU5PT7Te7ZXGAjy6ooBF5Yl2AhVpjU9QDlJwxPMRPwCbQs+mWtwOM0UbjbZlBG3zGQjpscTYjASj9MoxjCUf6so+qLHhF28q/OESeWNZ0zzrahuEbi2ugv7UbE8aj7P7Tryb9r0/wCXLR6Zf1/91+P9yyj9712GZZ0WWM1RgCD7HcHLUKmKuxV2KuxVLNd8uWGvW7WepwJPC2xVwDlGTEJ8+f8AOj6ZR/zkGNvMT5A8weQJTc+S5Td6ad5NPuGJoP8Al3kPxKf8nJDNOG0/30P53+Vh/wAWyEyNj6/91H/imYeUvzP0rzFIbMMbXUUqHtZvhkBHWit9tf8AKXLxESHFH1x/o/76P8LLhvcbsxyLB2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV/9P1TkVdkldirsVdirsVdirsVdirsVdirsVdgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWiAeuAi1YZ53PmDTSNY0JhcpClJLFlH7wV3eKSqsjqp/wArl8P+yh4nh/UOLF/R/vY/7GXFH+ini7/+PIjyb+YWn+Z4gEJtr0bSWs3wyoe44NxZx/lLl1CQ4o+uH86P++/mp4eo3/H8SaeZrC/vrJrfSrgWly1AJSvKg70H82VkkfTwn+txcP8AsWBJHKv85IfI35W6d5WkkvyWu9Un3lupqFye/D/fa/5K5SIGR4p+uX+wj/Vj/vlO5ss2zIS7FXYq8Z/5yU85a55VstPu9Em9CKS5CTEAEnbkg3/Y2fn/ALHDHJwnlE3/ADmcTXm9a0+5TULSO4BDJNGrV7EMK5AixTEhiP5bflw3kh7+CC49TT7qb1oISKekTX1F5V+IN8H/AAOVw4hsa9P0y/jl/X9P/FMQT/xLOsuS7FXYq7FXYq7FXYqtdgg5MaAd8VpiXmL81/LXl7bUb+JH/lVuTfcnLLvBl19P9b0tgxn+r/W9LC5/z3utdcQeRtLn1ImgM0gMUSk9Ksw/5pX/AC8olkx49ieOX+p4/wAf72SOKEedz/ox/wCK/wCOo+0/KvUvMhS68+3pvKHktjBWO2Q+D0/eXDCv2nf/ACPiTKzknk2/uMf83H/ez/4bl/h/qw/rx4ZsOIn+hH+bH/fT+r/Nj9P8MnpOm6ZbaZAtrZRpDAgoqIAqgeyrhjjERQQBSLyxLsVdirga4qh5ruKEEyOqgeJA/XkhAnlbMQJ5AoCbzXpMY5Ne24H/ABlT+uSOKY6S/wA4SRwlLLj80fLVt/e6hAv+yyRwyH9sWUsZHNKpfzz8pxLya9BHT4UZj9yBjg8Lzh/p4/8AFJOKusf9NF53+cf5+aHf6FJpOiTvJPe0iYiN14xk/vj8ary5Jyj4r/NkZQ4RzH+aeL/ccSIiky0X/nIvypo2n2+m2kN0I7eNIkBRBso4/wC/fbGOIRH1A/1RP/fxigwrn/sf+PcCL/6Gd0d/957O6lIO4Cg0/wCBLYDLGPqlXw/48o4P53+x/wCPND/nIg3CFrXSLtmXsRSv4ZGWTEP4uL+r/wBJKeEcz6VkP/OQV7cpWDRbhmGxrUAGtAKqGyB1GGPMyH+k/wCKioni7yP9L/xTbfnzrgJC+W7p+PXj6n8Ld2/4XB+a0/8AP/6Zf9VVJh0N/wCl/wCKUovz7190qfLN2pqBQ+r/AMbWy4/mcJ5S4v6ph/vZSRt+P+kVdfz11hN5vL90vQ/tVp9MeHx8feWPHDz+3/iVyfnlrL1ZdBueAoN613+jAdTiHMn8f5qfFxdSR+P6rS/nV5iI5L5fuGU16c/H/UbD+b0w/ikP9J/xUWQnjPIn/Y/8UtH55eYHJSLy3dswFaVcfqt2x/Nac/TIy/5V/wDVVEjD+E3+P6Jm2n50eZ2qh8sXIfx5SU/4e3Rf+HwfmMXfL+rX/E8f+5YccRz4vlL/AIhqX84/Nkdefl2YAAUoSSSenbEarF/T+Uv+qbIZsR/n/wCy/wCqcV//ACuPzRCOV15enC7bqfH6Wx/OYOnH8v8AjsWXiYv6Y/H9Vr/le2rxsRLoN1xrQFRUn6MfzWD+cf8AYo8XD3y/2P8AxS6b/nIZrN/Sv9Fv4pCKqOA3H+yK4/mMMuUv9z/xSyniH8X+5/4tWtP+cjbCYfHpmoqaV/uQfu+LB+Yxfz4fOP8AxTX4uP8AnD54/wDi1RP+ck/L1eEsF7HJ/K0I/wCa8vBgRYnj/wBNL/ieH/ZLxx58UfnFf/0Mr5UBo7XC9t4T/A5MYwf4ofP/AI6zFHrH5o23/wCchPKk5p68iAitXiYD78fDH86H+niyjHi6x+aZWX5z+U7w8U1GFCP9+Nw+71OOJxnvif6soyZSx8PWP+bIJpb/AJjeW7gfu9Usz7fWI6/8SyQ08zyjI/1QZMOE+9NrPV7S9/3lnim2r+7cN/xEtkJ4pR+oSj/WBimWOUdyCPgjsrYOxV2KuxV2KuxV2KuxV2KrSobqK0wEWq7CrsVdirsVdiry7UPLR8/eYUvL9SdD0ssscbg0mn6PJT9qKP7KN+0/LKJnj9A/5KSj/uOL/dKTtX+m/wCJeoAAbDplwCvKfzOsm8zeZdG8t9bVHa9uB2IjoI1P+vyZcryHaup/3LLkPe9Xy1i7FXYq7FXYq7FXYq7FXYq7FXYq6uRkdlC2lcrItLdDjRVwOSjK0N5YrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVQ15YQXqGK5jWVD1VgCPxyueMS57oIt595h/ITy3qoLwQm0mO4aLYV/wBQ/DlAxGO8ZSj/ALKP/FIojlsxaPyt54/L4E6LN+lbPekT1JFP8hj6g/55O/8AqZd+ZlH+9HH/AEo8X+6jHi/08J/1m0ZP52/9X8cf+6Rvlj/nI/TZpfqHmWB9Mu12JILR16b7LNF/s4uP+XmRHgybwI/zq/2M/p/03B/VSBGXI/6b/iv+K4HrGm6zZ6pH61hPHcR/zRuGH3oWwSgY8wYsTEhHZFi7FXYq7FXYqxL8wvPMflWzDonr31w3p20C9Xc9Nv5V/abGwBZ5BlEdT0Y75R/K2S8mGvedCL7VHoyxtvHAOoSNPslv8rMc8Wb6vRj/AIcf/FsZHi/4l6ZHGsahEACjoBl0QByVfklaZQ2x3BwEWrHdf8g6H5gXjqVnDNStCVAYV/lYfEMxfy0OY9H9LH6P9yx4Q8i1X8mZk1kWXlG9kto7ZFmkWVi8YkB/cLx/m2LZMznH0/3wPq4ZcLZxSHmD/DJOZfzM82eTaJ5r0361aqd7q13FOxZPsr/wWXRzwltLiwy/00P9N/xKOMHn6P8AcvQPKX5i6L5rjD6VcpI9KtGTR1/1oz8WWnGRv9Q/nR9UWRgR5/1WD/8AOSFxePpljpVnKYV1C8SCUjaqEEkE/wAvLjlXGY8udLE0kX5h+Q4vy1isfNflaP0v0cVjukX/AHbEfhd5PFv8rKcd4zvZjP6v6zCHp87+p7boerQ6vZQahbGsNwgkU+zCv/C5kkJIpH4EOxV53+cg5w6bECVZtQgoR4g1yuZZRL0TLGLsVdirsVdirsVdirsVdirsVYn+aeiDWfLd9agVf0i6ezJ8aH/YsOWVZOSED+S3mI675YtJ3NZIl9Fj7psP+E4ZbbOQZ1ixdirsVdirsVdirEPO35ZaV5tXldIYbxP7u5i+GVD2Icdfk2UeHR4oHgl/R+mX9aKORsbMBt/N/mf8tp/qnmtTqOh7Kl9Ep5xjoPXUfa2/2f8Alvlsc8Znhn+6yfwy/wAlP8f0f9J/Ez8QS2l6D/O/gl+PxF65oevWWuWqX+myrPbyCqupqD/Q+zfFlkomOxWUaTHIsXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/9T1TgCuwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqw7zj+WOleaHW6nVoL6MUSeJirjwqV+0v8AktlHAYm4Hgl/sJf14oG24YtPrHnTySrNfxLrOlxCvqx0WZUHUun2XKr+1kxqByyAw/2yPqh/nR/hbOMH6hX9KP8AxCK0D/nIvyhqyAveC1k6FJ/hIPzPw5lDDfIiXx/3svUz8O+Rj8+H/dMkk/NTytHEZ21Wz4DuJkJ/4EGuH8vPuMf6UvTD/TS9LEYyfx6f9MlNx+fXkuEhW1SIkivwq7D71Rlw+AevB/p8f/FKcZH83/TRl/uZIGT/AJyJ8rGotHnumG37mFmr/wARyqQjH6pQH+cgxA5mP++Y55h8/RedYY4n8t3t4kMokQMAq8l6cx9qm/2cxMs8PLjP+bGXqYngvmT/AFRKMk2h/MvzXGVtIPLbhqfCvqhVCjYcmpxT/Vyf5jABX73+rwcX++QZw/p/6VFx+cPzAcP/AM6/COhWt2o/h8X/AAuEamB/hzH/ADeD/dR/4plxx7p/6aP++i6Dzv5+X4bjy4gr0K3iEfT9rJfmMfdl+X/HYsiY90/9ND9Su3mXz+SfT0i0ApUcrgk18DxGD8xD+Zm/2DX4ke6f+xWS65+YyueGm2LL2HrkfiRgOoj/ADcv+xZgju+1R/TX5lS7JptlEa9Wn5bfIZKOoj/MnL48H+6UziOUSf8APiqV/M8HmBpBH8p9Wv8AwQyH5n/aslf8MxcX+6a+P+if9NHi/wCIQ16n5mzwt691pFgpI/eIJGKjvT1+UZ/2WShmlL6ccr/m5Jxl/wBMZS/H8LMEy+mN/GXF/seOLEfMf+LIomnbzZaGVaBY4uCA9viKH4f+AbLvEzQ544QH+nl/0tjH/dtkTMbcMR/WEf8Af8KVWekaZdQi48zeaJpeZJkijkNDTsHULkTLUHrDHE/1fT/m8UuFScnK+D/SqkWqflT5bie5tbd7+5QcgJFZy1O3J/3f/BZXLS8W858d/wA2f/Eer/ZNZwj+I3/ncbKNO/5ya8uxW0a2llcIpACoqxqv+qKyIv8AwOWDFjh9Jj/S4Yy4v87b/fMuAD3e7/pGKlff85LTRqXg0afh+y8jEL1pvwiZf+SmAZcUtoyM5fzf3f8Avck5f7BMRCX03P8AncPD/vJZf9ylFx/zkb5hZecdlaxCtKO9GB/yucsX/EcmZw/m5f8AO4uH/plH/dKQL2Ev87i/4mKAm/5yG8yzfAgs4GFASSCN/erYjIB/CT8f+PJJA5x+3/jyy6/MXzNe0lfXba2DGgCKSPwRsr8eXLgh/nTjGf8AspMRK9vQP6XFH/il8MtzeOYtQ83pCSKjgXHX/kRx/wCCw+LmP0jH/nHH/vYZWy58rxke/Hxf7n/fNr5K0a4/vvOgeJmqyNLuSP8AXuG/4jkr1PQgf0ozl/vOH/S8Sk5Okvt/6uJpaflT5Hajtr4kNd6TwgE/dy/4bKzjzy+o/wCl4v8AfTk1GMvxw/77iTm0/J/yBclQt4JivUfWgQ3zFf8AiOQ/LZv505f5sf8AexYmEuty/wBL/vWT2X5Q+Sq1jt4ZSadXr0+TZH8mRzOT8f5qjGR/OTeD8qvLEbCVdPhJ9wWH0hiVOQ/LA8+P/Tyj/uZMOCu//TS/4p49rtlpfl/8wXll0hp4ktVFrBbW4KvIxIZn29Nfh/3Y32MgY4wOGUuGI+qMjKcpf0Y8Upf6T6Zp9B2kQP6MvVxf1Xr/AJU0S+dfrWsQwWyMKR2cKKViFa1kmpyll/1eES/yftYY4ccuUIwj/DxRj4s/6Uv5v9X6v50kihyHB/uv+O/5rJhpdqp5LEgPiFH9Mt8GHcEVat6YXZVAw8AHID5JC9Y1XcDc5MQAVdk1dTBSupgoKgNbW4axnFj/AL0mNvT/ANanw/jiTw7pDy7RPNsP5Z6fZ2fm+8knv7+Ql2YhliJ61Zfsx5bAyy7y2/mx4eH/ADf+kmyjLnt/N2ZNqP51+UNPH77U4GIHSMmQ/wDAxB2yzwZdaH9aUYf7qTHgP9Ef5w/3KUS/85H+UFTnDPNNsT8FvJ2/11QZXwx6yhH+tL/iYyQBH+dAf6b/AIljEP8Azl15dub2Kzt7a4aKRgpkYAFamn92OXL/AILLDCAG8v8AY+n/AE3/AB1lwx7/ALHukMyzIsibqwDD5HcZjtaphV1MFWrXEHrgpVF7KF92RSfdQcicce4IpDSaDYS7PbxMD4ov9MgcET0VSfyxpci8HtICvShiQ/8AGuHwI9yKHkhZvIPl+YUl060am28KH/jXIHTx8x/VnOH+4kyCDk/KzytIatpVnUf8UoP1DIHSx/p/8rMv/FsSL/tKHH5QeV0b1ItPhib/AIrHH/iOTjh4OUso/wCSmT/fSY8Hmf8ATS/WmcPknTrcKturxBTyHB2G/wB+XVL+dkl/WnKX+6beKVVcvmnyjiKdaZNC7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWlUDYbDAAreFXnnl3TJL3zpqeszAhLeGK1ir/wAjHIyq7PuTb0PLUOxV2KuxV2KuxV2KuxV2KuxV2KrWzHyJDYywcldgCtDrghzVdlyHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUj8weTtJ8xRelq1rHcDsWHxD/UkX40/2LZjywRJv6Zfzo+mX+x+r/O4mJF/jhl/povO9R/5xy01ZvrWh3dxp8ngrlh97H1P+Hxj4uP6Jf6aP/VLwo/7CSYylD6T+P8AN4f9lxIH/lWnn/RyX0rXfrCD7Mc4J29+ZZcsGpyjaUYT/penj/3P+/ZeLLqIzv8AH8XEj9NT81WcRXLaesfT1CK7ePBMkNQD/kz/AKfhTxeX2vVNNS5it0S9dZLgKObKvEE9yFq3HCCxReFVOaZYUaSQ0RQST7DcnEK8t8hWz+cdcn85XYrawk29ijD9lTR5l/1m/ayqR4jX8MP90mR6d3+6erZah2KuxV2KoXUr+PT7aS7mNI4lLMfYCuKgJH5EsHjtH1C5/wB6b5zM9ewP92n+xTKo779/+5ZEskdQ44sKg+OTlEHYsXnPnD8jdF16QX1ny03UFNVntvh38XReKt/rLxf/AC8ojjliN4zwf0ZeqH/FR/3P9BABj9Ozy78zdK8+6Vpy2OooNWs7eVJorqIEyrwNaTD7XHj9tmVv+M2MtQP8oPDkP4o/3Uv97/0y/qSZHKOo4f6Ufp/zv+kY/wCennnr88dL1vy6uk6YputU1NBb+gQQUZgFcuT8J+L7HHMqcQI2TY/h4f8AifqbDEDfn/N4Xqn5Z+XZ/Lnl6y0m7PKeCIB6dASeRH+xrlcCSLLUynJq7FXnX5rSA3miW7UIkv1NCDvxXl2yuXL8RZRFvRcsYuxV2KuxV2KuxV2KuxV2KuxVSuYVuInhf7LqVPyIociRYV47/wA433Xoxapo5J/0W7biD2BJwQ5Mzyez5Ng7FXYCFdhV2KuxV2KqNxbR3CGKZQ6MCCGFQQfEHITgJCjuh5Jrf5X6n5Rnk1r8v5jEGbnNp7bxSfzeiD9h6fs/8A6/ZyuOSWEUf32L+bL+9xf1J/VL/dfzuNlGRjt9Uf5v8X+ZJk3kH819P81FrKRWs9Ui2ktZfhYHxTlx5r/w2ZNCQ4oHjj/uf6zIgHeO4Z3kWDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf/V9UZFW8krsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirVcFqgNe0uHVLGewuCVhmjZGI2IBG++A2Rsr5q07/AJxg8ueYZZTo2siaKL4WChXZXB350K0GUyx5oc+H+t6o/wDFsTCQ5/6ZAal/ziJrenTi50W7trgRkMFnBWtPFCssbf7JshxzH1R4/wDhZj/v5YkcRHMcX4/pcMf9kznQ7jzxp8YguvK1jIY9i8bRpyI2DAcmXIcOmPPHO/6vo/2UJf7Cc2XDj/my/wA3h/33/FyRz+ftesP3mp+UnWGM8gYXRiCO9B9rJA6Ybb4/60JcH+5gymcfmP63q/3EUx8qf85G+UdTmFiztY3DGhWZeIDdwX+zyrmdDTivRR/3X+lZ+GP4TxMwu/zS8sWdfX1K2UjqDItfuy38tMb1/nJOKQ5sZvP+ckPJ0NVgunuZFH2Yo2Nfk78I/wDhsBxVzMI/53H/ANMuOS+H0JA/2X+44kj/AOhodMum9LStPu7mQCpUgAgeJ9L18qMscPqlXwj6v9PLEgCPU0f5tD/iv96vP54eYbtQ1hoE4BIA58yCPb4Isr/MYhz4j/V/47Gf+6YeJAc7/H+b/vlt3+Y35iSyiO10IIp/batPp+NsRqcXQTl/R9X/ABMGfFEb1KSHv5vzYvITLGsMDAbInDl9BYuv/BLkDrANxCVe6U5f72TDxgP4dj/nSixoeSvzZ1uQtdXLW6E0qbn09vGlrxb/AIXCNbIj0xP+kxw/6a8E/wDZIOYkUAa/zY/7rhmqS/8AOMWv39yXvtVj9I0PIh5HJ719Th/wXNsZZ80hR3/rZMnB/pfV/pfSiWScudfOUv8AYy/4tG23/OI8bU+uarK5Br8Eart4fFyyo+Kf5g/00v8AfQ/3KCZf0flL/ik4j/5xR0RRR7y6YDcCoAr40Ax4MnePksuI9f8AYxTGH/nGzSIlKC6nKkUIIQ7f7NGyHgz/AJ0f9J/x9jESHX7Fvlj/AJxw0vT7U2upzz3Kq5MQWVo1VSagUj4/F/M2Hw5S3J8Mj+LGIccv60pxnP8A2TM30Jh/V4f+JZXB+TflSEiRtPjldabzFpTt/wAZmfLZYjPaUsk/605f7mJjD/YokOI2TKX9acv+K4U2HkHQQ3P6hbciQa+kvUCnhkPy0PwZIMInoEbH5Y0uMcVtYAP+Ma/0xGlxjoExiI8lZdFslpxgiFNxRAP4ZPwYd0fkjgHcPk6XRrKVuclvEzDuUUn8Rg/LY/5sP9KGJxR7h8oqB8saWUMf1ODiTUj0kpXxpxyP5XH/ADYf6UKcUe6PyihJfIegyx+k9hbFCa09Jevj0xGnh0H/ABSfDj3D5ISX8rvLUw+LT4BsRsgGx+WSGEDkZR/qykyEQEpn/I7y07F4oZIGO1YpWX7qHJcMxynk/wBNxJuX86f+mUD+TvoR+np2salbjtWbnQeHxry/4bLBkzD+KB/rYoy/2XE2eJMciP8AOjGamv5W6uhJg8wagjLTiXEUg+fEj/iXHKuPKTZOM/8AJGMf9lGbHxcnfD/lXH/ilceRfNqrQeY5GPYm1iH38RlniZP9q/0sv+KRxz/of6T/AI80fLfnqKixazbuB3e1Ff8AhTj4sv5kJf58o/7FQe+m4/K/nUwP6+swiYn4eFuAoH38sBzZP5uP/OMmXiEchA/1uJTn8reeURWttZgaQD4lkt/hJ9ip5ZIZ59Y4j/VlNfFl/Nx/7JDJbfmdZHkJdKvF/lYSofvUZE6ijvjkf+FzhGX/AEtkmWQdY/8AKuXq/wClvpXtdfmdIeQg0iNQPs85mJPzwfmB0x5R/WnilL/YSYiYP8J/zper/YelS/Qn5j35IuNRsrND/vmIsaezP8QyX5iX8MIx/pSnKX+w9UU+Ib2jEfGUv9jJuX8mLzUGEmq65fTN1IRhGPo4fZxGbN3wh/Vh6f8AZIOSZ6iP9GI9KEvf+cb9BuLi2uWeaYwyc5frEhk5rT7HxfZ3yqQnLnIz/nfwx/zYx/iYSs9ZfP8A3LP9O8i6Hp1GtLC2iZRQFYlrT/WpyyH5WHUcX9Yyn/u+Jj4Yqj6v63q/3SaXem293A9rMimGRSrLTsRQjJjBACgBH+qIxbGAeWP+cfvKfly8Go2dsWnUllMjFgD2oDt8OQGAn6pSmP5vpj/uIx4mAjXeXpQFMy2bsVdirsVdirsVdirsVU5ZViUySEKoG5OIFpAtgeu/nf5Z0qQ263Bu7gbenbKZD9BX4D/sWyyUOAXMxx/1j+OH/P4WRhXMiH9b8f7pJV/NXzNrDcNB0KTj2kum9MU8SlFZcxzqMQ5ceT/hcfx/ukcUfMr/AEvzPu1JL6fbcjspBYgf6w64Dqe7HI/1px/3KDko7R/2TQ8ofmM/xNrdsleoWCo+jkMs/MT/AJmL/Olk/wB5JTkP82HzktOjfmjauTDqGn3SDoJIyhP/AACN/wASyP5k9ccf+Scpf9PcmJmMnfGH+aZ/8VFTP5k+ddBBHmHQfrKA/wB7YPyFP+MJ9WT/AIjiNRiP1eJh/rR44f6aHpj/AKeTDjiedw/2f+5/30mR+Ufzk8v+ZnNvBMbe7U0MFwPTcHw4sd8v8OxcSMg/os+C94+v+qzsGuVtbsVdirsVdirsVdirQG+BW8KuxV2KrFjVSSBQnrkREBC/JJdirsVdirsVdirsVdirsVdirsVaIrlc42FDW+VkFLqHDwkquAploFIdkldirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVed/nLq0/1GDy9p5pfavKIF9ox8U8n+xTIylwi/wDS/wBZnHbdmmg6PDo1jBp1uAI4ECKPkMEI0GtMMml2KuxV2KsR86SnULi08vpv9bcyTU7QxkM1faR+CZXM7V/O9P8AxTIMrSMIAiigFAB7DJgMV+FXYq4iuxwEK+cvzL8gWXmzz7b6NpQFlPFbm5uJolAPKv7smn7W6ZjcHhD0bWfTH1cEf83+H/MSBw7jZkdtr3nL8vU9PXIjrGmKafWIqmVR0q6/aI/4LLhqQTWQeGf50foTxg/Vt/Si9A8qfmVofmqqaZcK0wG8TfC4+aN8WXmFCx6h/Oj6kmHXn/VZVkGDznz3KLjzX5fsxSqPPOdq7BOA+XxHK5blkOT0bLGLsVdirsVdirsVdirsVdirsVdirxf8t5I9P/MDXtNEfpmULKu+xFeRNP8AVkTKYCk9HtGXIdirsVdirsVdirsVdirsVYb54/LPT/NNLne21KLeK6i2kUjpU/tL/ktmOcZieKHol/sJf1oo5GxsxG1/MTWvIz/UPO8LT2gIWPUIVqpHb10/Zb+ZsuhmjP0y/d5f5v8ABL+rJmCJc/RL/Yyep6TrFpq8C3enyrNA/RkIIOWSiY7FEokc0bkUOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV//9b1QBkapLeKHZJXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7Bauwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWlauKt4q7FXYq7FXYq7FWjkTapHeectHsJWgu7yCGVBUh5FBp/sjloxyPQ/Js8Mj4/wCb/umP6h+d/lO02N8shH++1LfjTjkvC7zGPx/4niZeEf6Pz/4niY3qv/ORGjTKbeytLq9SVSp4JTYghvtZXIwjsZAf1WBEYjmxDyVq2paK048n+WHieY1aWZjUg/EKlgq8f8nnmJDLijveXN/R/wCkOL/cNUZwHLjn+P6MZ/7llYP5samCQLHT6dK0JP8A1GL/AMKuXfmq+nGZ/wBY/wDFTwT/ANi2jIBtw3/Sv/j0f9wpjyF+ZV9Rr3XooPEQpUf8JHbY/msg+mEP87h/30cv+6QMshtUK/zZS/6Z/wC+VP8AlSGt3qcNV1+5m6/ZqNj/AK5bI+Nm5jgh/R9X+84P9ygZZxO1CJ/rf8Uhrf8A5xQ8s8/Uu5J52O5+ILX58RlfhzP8X2NXCb5/Ymuj/wDONXlPTrh53tzcKxqqSMaL8uJWv+yyvwZE7ylw/wBH0/6bZkI7b7s20n8v9A0n4rGwt4z4iNa/8ERXJflYdRx/8MPH/sZelicYlzHF/W9X+6T4W0a9FX7hlgwQjyjH/NEWwKgFOnTLgKVvJK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVkjcVJFT8sjLkodC/NAxFK9jgjyVfk1dirsVdirsVdirsVdirsVdirRAP0Yq3irsVdirsVQGr65ZaPCbnUZkghXqzsAPxyUYGXLdkIkvPrj827rXZDaeSLF7+QbNcS1jt09y7fFL/NxT7a/YfITyQhsf3k/9Tx+r/TT+mKnhH9L+jH4/wAX0qQ/J+88xOLrzvqMt6diLW3Jit1PhQH1H/1vgbKjkyz2B8CP83H9cv685/7nhl/RYmUj/QH82P8AvpS+v8epnGg+TNI0GMR6ZaxQKB+yoqfdmPxM3+U3xZCOnjHf6j/Ol6pf6aTARA3/AOkk8pTLxEBm3kldirsFq7FWG+cfyq0HzYOd/bhbgbrNH8Mg/wBmvxZjeDR4oE45f0f99Fjw0b5f1WD22oeYvyscR6uz6p5ertcAVlhFdvUH2mRcyI5uI8OT0y/hy/wT/r/zWzj4tpf6b/inrmj6zaazbJfafIs1vIKqymoIyyUTHmiUaR2RQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVB3cSKgU8SDVtqCn/DfFkb6Kr5JXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXlGhSDzX59vNS+1aaJELWPw9ZyfWb/AFlo6/6vHKpbkDu9X/EsyKD1fLWDsVdirsVdirEPKkg1bVNQ1jqiSfU4duixf3xB/wAqd3/4DKhvL3en8f7Fke5l+WsXYq7FUr8x69BoGnz6rdhjBbIXcIKtQeC4BQ57f0pLTyr8gI5PMt1qfn28FJNQmMUK1+zFHtT/AIiv+wyvnLyH0spF7OVDCh3Bywi2LA/Nn5N6Nrrm8gVrDUButxbngwPuBs2Y4xnGbxng/o/VCX+b+P6qAK5bMVk88eZvy4YQeaoG1LSAaLfQD41Hb14/5v8Agf8AI55dHPGR4Z/ucn876sUvx/pv6EWYmJfV6D/O/gl+PxFEaf5jsPNfn+yudKmW4trbS5JCyVoGeQJxb+RuJ/a/1cckeA0f+Oyj6v5qSCPi9gybB2KuxV2KuxV2KuxV2KuxV2KuxV4jfubH83bdRsL2zNfeiP8A9kv/ABLKhzLIF7dlrF2KuxV2KuxV2KuxV2KuxV2Koe8sob2Jre5RZInFGVgCCPcHITgJbFBFvKtV/KjUvLNw2reQJ/QY1L2MpJhfep4V+wzf5tkI5J4hX99i/my+uP8AUl+P6rKMjHbnH+b/AMSmnk/85LTUrn9C67E2layu3oTbK/vDIfhfl/L9rMiAGQXD1V9Uf44/5v4/pMhES+nf+j/H+PxJ6SDXcZFg7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVGN3LMGFADRd+op/XKoyJJ2/48khZV/Wptx4+O/wB1P+NsBslPRE5cxdirsVdirsVf/9f1SMiFdkldirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeP+d/+cjLDyjrUmhXNlcyvEFq6AUJYB/gDFarxP2slEwI3P2ftbAI1uT8v2oAf85RWc7+jY6PqMz9wEFR9CGXIHLhj9UwPhH/AH04MRPEOcq+Ef8Ai4rz+ePmTUdtI8tXXT7U9V38KMIv+JYPzWAcpSyf8LH/ABPio48Y53L+lH/pGf8Aul7eZPzQ1QlbTTraypQ1kINfEbvLkPzcByjOfz/45/uU8Q5V/nNDyx+aF1V5dSghLfsqBt8qI22H81MbCA/2PF/uoo8U8uEf1tv+Kab8uvzEmWja6i+NK/T/ALq/42wDPk6RiP63D/x9PiSHKv8AO4f+qcmk/wCcer7UVpr2uXVxWlQtTQDsPWeVf+SePj5zyMcf9Xi4f9LilpY/7pHiTPUD+dH1f72UI/7BM9O/5xs8sWy/6SJ7mTryeQr9HGL01/4XKjjmdzI/5oj/AL7jn/smsA9/4/3TJ9K/KLyxph5W1hDy8WHI/jj+WiefFP8ArSKOAdbP9YsmttJtLXe3hjj/ANVQP1DLBhiOQDOgjMtpLsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVxwEK7EK7CrsVdirsVdirsVdirsVdirsVdirsVaqK074LVTnnSBDLKwRFBJLGgAHUknthG608ov/zhufMV82ieQ4BdzKSst5ICII/cH/drf5P7WGc44tj68n8OOP8Av5M5VD+lL+bH/fSRum/kpBeMbzzbcyaret/OSIk/4xw/Z2/ysx5ceX6jwD/U8fph/nfzmEpGXP8A0sfTF6Ra2kVrGIYEWONRRVUUAHsBlkYCIobIXxIUFCS3zp/DCAlUwq7CrsVdirsVaBB6ZEFW8kqjNCk6GKUBo2BBBFQQfEHISAkKO6vGfMvly9/Ky6PmTy0Gl0aSSt7ZV2RT/u+3/l4t+z/msYTOP0S3x/TGX8WL/jn4+pMZVsd4/wAP9B65omtWutWkWo2LiS3mUMrDw8D4Mv2WX+bLTspFJhih2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvKfJH55WuveZL3yrew/VLm3ldIeTf3nBih/2bAc1/yMsqMo3G/6XF/vWygRtf8AS4nq2VtbsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqU+atcTQdLutUkoRbxO4B7kCqr/sm+HG0xFsS/IzQpNN8uRXV1U3eoO93MW6lpTVSf+efFsphvZ7z/uUEvQ8uV2KuxV2KpfrupDS7Ce+Ir6EbPTxKjlTAdkgWgvJWknSdItbR/wC8EYaSv+/H/eSn/kY75DGNv63q/wBMpNp7liHYq7FVrIHHFtweoyEoiQoq8X/JhP0B5p8weVIdrKGRLmBK/ZEgHML7fGi/7DBjsCu5l0e1ZYxdiqjPAk6GKVQ6MCCrCoIPiDkJREhR3Q+c7L8t7u883a1feTJ00qaweFI0UH03LASTI4X4VRmT+74uv+RlMZSxfSOMb8UZHjlw/wBHj/4qE/6bIXDlw/1Zfj8fw8LPtN/OOXSZV03z1anS7omizrVreTelUkXlw/1W5f5XHMmE4Zfp9Ev9TyemX+bL6Z/7n+lJkKly2/oy/wB7L8f1nptrdR3UazwOskbioZSCCPYjCRXNiRSvgQ7FXYq7FXYq7FXYq7FXYq8W87AJ+aGhyEdYGWvyEwp/yWyojdkHtIywMXYVdirsVdirsVdirsVdirsVdirsVYz5z/L3SPOFr9V1aEORXhINnQn+R/8ANf8AJzHlis8Q9E/50f8Affzvxw8KCLefC/8AMn5VhYr71Na8uKKCVQPXtwOgff8Aepx/aZv9nF9lrBnvbLtL+HNH6J/1/wCbL/Zf8Nl9M+O/q/00f9/+P86X0vTvLXmvTfMtqt7pU6TRsASARyWvaRPtI3+S2XSgY/72X8MlMa/4pOcixdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVaoK175Guqt4VdhV2KuxV2Kv/9D1TgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUoufLGnXN/Fq01ujXsAYJLT4gGHEivfb+b7P7OY8sEZG/8ATR/hl/WitJqEA3AyYxxG4A+SrgKZYArsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV1MFK+Y/z281695o80x/l1o7GC1kEYlI/b5/ES5Hxekq/s/5LYTl4I7fV+PTFnxUNub3P8u/INj5H0tNJ08VA+J3PV2P2nbKMcK3O8vx9P9FrAplOXpdirsVdirsVdirsVdirsCuwq7FVC5to7qJoJ1DxSAqynoQRQgjISiJCj1V455Dvv8BeZ5/JVwx/R91++smJJClj/c17cvs/6/H+fHGSRwn6of7KP4/3zMbj3PasmwdirsVdirsVdirsVdirsVdirsVdirsVcK98VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsCuwq7FXkf5a/mNrmueadX0LUI43s7KQ8JFAUoK0jQ0+3yX+b4v+I4TkiRVcMv6J4v8ATcX+8/0rMke56lqEUk1u6ROY3KkBhSoPjvkTfRg88/IvzTqOtaVdLrEhnms7uWASnqyofhrTq2A5L3Pp/nMju9LEikVyImCil2WIdirsVdirsVdirsVdirsVdirRYDqcVbxV2KuxV2KuxV2KuxV81efvLI03829J1C3iBjvGidvDkp4PJ/rKvDKY7Ej/ADv9MmIfSuXIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeY/ndO+oW9l5Xt95dUuURhXpEhEkjfL4QuVzNBkOT0i1tktYkt4hxjjUKo8AooB92SAoMVbJK7FXYq7FWJfmCGuYrTTFHIXd1Gjj/IU+rJ/wqZVM0Pf6WQ2ZblrF2KuxVazU2yuUqVhH5s+eJvK+lqNPAfUryQQWy9Rzb9ph/Ko+LLLERZ5BlHvPRQ/Kz8sk8oxy317IbnWL74rqdu5Pxemn+SpymPFI8Uuv0x/hhFjudy9Ay5XYqskkEal26AEn6MVeXfkREbldX1pjy+uX8gH+rGSE/wCFfK482Uno2q6RaarA1rfxJNC4oVcAgj6cE8Ynz/6RYEW85f8ALjV/KLG58kXP+j1q1hcEtGd9/Sc/FEcRknAVL99H/pbH/O/jZCZHP1/7v/TJ/oH5lW93ILHV4n02/wCnpz7Kx/4pl+y4/wCGy2Bjk+g8X86P0zj/AJqaEvp/0v8AEzQGu46YsW8VdirsVdirsVdirsVeNee0c/mLohBooQ9fnvTK+rMcnsuWMHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVjorgqwqD1GQlESFFXmPmP8rLjTrs+YPJMosdQp+8gP8AcTAb8Xj+yjf5S5VEyw/T64fxY5f7yX4/oqCY+Y/m/wDEojyT+b8Wq3J0bXoTpurrt6cmyvTvE7f8R5NmTExyC4Hi/nR/iizoS3H+l/iek4GDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqjDbpEWZRuxqfnkAKSrZNDsVdirsVf//R9U4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXEgbnFUh13zro2gxmXVLyG3UDo7gE/6ifac+yq2WRxSluBt/O/h/wBN9LMYyfx6WES/nxaXZ4aBpt/qTMfgZISkTf5Qmft/sMqOTFHnOO31Rx8WWcf8z0/7DiY3Ecz/AKWMp8P9GSrH5v8APt8edtotvbxnotxOS30mL4ch+ZxnlHNP+lHhjH/Sz4ZLxx5VP+t6eD/imv0p+ZFA5srEb7qJT0+bY/mB/Mn/AL7/AGLMTA/hv/O4VSPzP5+tq/WdGgmXsY7gA/dTH8xD+IZY/wBWBy/8SiRjz3/zfXJRi/Oe9syV1rQ9QgK9WijMi08eR9Lb/V5YnUYLri8P/h3o/wBjGU5/7BiZQ53wX/qg4f8Aj3+wT7y1+b3lrzETHaXiJMKAxTfu2qew9Xir/wDPNnzJGIneP7z+r/uuH6+H+lKLYcfdU/6v/E/X/sWag13GVNTsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdTArsKuxV2KuxV2KsXf8v8ATn8wr5rYE3yQ+iOnGm/xdOXLi3H7WUcHqvp/N/pKyjL1dirsVdirsVdirsVdirsCuwq7FXYq7FXm353+Rj5g0g39kOOpWH76FxXl8PxPHt/PlE/QeIdPq/qqDW6f/lp5sXzVoVtqVf3pXjKP8tdn/wCC+1mQWUgyrAxdirsVdgBV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYFdhV2KtUyBCt5NXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWmYKKnYDFXkH5GK17qnmDWaAQ3F5wRvERgqSD/LlUeddySzz8wvM0XlrQ7vU5ukcbcR4sw4oPvy4LEWkP5E6BPo3la2ju14z3Badx3rIeW/vxyiNSHvUln4jANRkY4QDakrxl6HYVdirsVdirsVdirsVU5pkhUySEKqgkk9ABimninmr86tV1a9bRvIVr9bmFQ05FVB6VG6qF/ymbGWSGL6vXP+bH/jvqkyNQ57sYufyA87+bqz+Z9Z9Mvv6SlnCn/jGhihH+xbKzq838A4P87wvT/ySjKUv85HjT6bf0b4f9x/xSH8t/lf+Yn5d6nA2mT/AKQ04uBJGkpCca784ZuPFuP7UfLH87PlkEjxf8l/9LKPrh/n8MFGU8pbj/Tf6X+KL6bQkqCwoTSoyxivxV2KuxV2KuxV45/zkPpz2iad5qttpdMuFLHvwY/81ZXdH3+llF6zpt9Hf20d3DvHKgdT7MOWWkUgikVgQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXluhsfMfnu7v8Arb6TELdP+Mj/ABSEf7HKjufd6mZ2epZawdirsVdirsVYfflr3zXawjeOzt5JW9mkPpJ/wvLKyd6ZdGYZOmLsKuxV1MiAr5j82fmtolx+Y0E2pSk6XpaMqsFLr63dgF5fZb9rDKHFtYH8XNtA6WB+P6PE+h/LvmSw8xWaajpcont5OjDx8CD8Sn/JyRjTCUaTXAxdirG/MPmezj0u/ntpkka1ifmFYEqaGganTDOBA32tnwEc0k/I7TfqXlSzJFHnBmbvUua1yuLEm2f5NDsVQGqaNZ6rF9Xv4Umj60cA0PiP5T/q5TLGJc+n0y/i/wBMgi0XDCsEaxRiiIAoHsBQZclUxV2KuxV2KuxV2KuxV4x+YEBP5jaC4NBwatTsdzsB26ZXe7IDZ7PljF2KuxV2KuxV2KuxV2KpXf8AmTTdOnjtL26hhnmNI0kdVZj/AJCMeTZOOMkWAzECU0yDB2KuxV2KuxV2KsZ85eQdM822/oajH+8XdJV2dD4o/XKJY9+KPol/Oj/vv5yGDwebNc/Lp/qfmZHvtIBCxXqCrIvYXI/42yyOYSPDP0ZP538E/wDiWwSEufpP87+GT1DSNas9Zt1vNPlWaBxVWQ1GWyiY82JjSOyKHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq/wD/0vVOBXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgKuwq7FXYFdiDauxKtHIG1YZ+YfnuXybYy6rLF6lvGDUDrX9n/gsjCdmi2AB5L5IuvNH5xyzaheXb6boqEosdu1GY+FftfZ/ayU8hHpx7f7ZL1fj/N+lTMj6dv6T0/QvyZ8qaIOYtEuJhQmW4PqNX+b4/hVv9VVyqWA5N5meT+tKXD/seHjj/X4mkw4udzv+czBdQsbfjEJYk7KvJR9AFcyo6cxHpidv5sW8YZ90v9LJGJKriqEH5YKprII5r8UOxV2KsZ8x/l5ofmJT+kbWN5aU9VRxkHymTjJ/w2Yv5aI+n93/AML9P+mj9E/8+MmHCBuNr/m/77+d/nMJk8j+a/Jw5eVb43tmu4tLqhIH8kb/AA/D/wAC3+Xlvjzj9YGYfzo+jL/nfzv9Nw/0G3xD19f+6/H+limXl/8AOmwmk/R/mGNtL1AChWUUQnp8D/5/62XQMcv92eL+jL6vx/pUiIP07/0XosMyToJImDIwqCDUEexGAimJCrih2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK7CrsVdirsVWSRiRSjbqwIPyOAi1eP/lGj+WvMereVHJMPL6zADQbMfioPtd8rxnau5l09z2PLWLsVdirsACuwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWP8An7WRo2hXt+aVjhalTTdhwXf/AFmxSAx/8itJbTvKtrz+1ccpzX/iw8sqgpLFPzInbzx5qsvJlseVlakXN6V7FTVI2P8Axr/rYchoV/P/ANyy5D3vZ4oliQRoKKoAA9hsMmBTBUwq7FXYq7FXYq7FXYq7FXYq8d/NfWbvzHq9v5G0aQo0g9S7df2U/kJ/1fi4/wCrgnIxG31M74R73o3lPyhp/lazWw02MIgA5HuxA+057tlUMYjv/Efqk1gUnmXJdirsVdirsVdirsVdirHvP2hJr2h3mnSf7shalOtQOSf8NlWQWFeHaD+bF9oHkzTGswrPFeizm5itEB277Mynll0Zj32G2wPO30fDJ6iK/wDMAfvGBqeYfnN581ryOLTWLNYJNK9QR3KOD6hLE0KMPhC8R/wX82MZgHhMb4v47+n/ADeL/eT/AM1nEjqL/pfxR/3r0y0uBcwpOvR1DfeK4sFbFXYq7FXYq7FXYq7FXYq7FXYq7FXYqlnmPV00fTrnUZT8METP9IHwj/ZN8OKRuxD8kdLa28vpfTA+vfu9y5I3+M1QHv8ACuVw3371JehZYh2KuxV2KuxViHldhea5qt6DURvHbj24KGcf8EcrHNkWX5Yxdirga4q7FUtj0DT4zIUtoVMxrIRGvxn/AC9vj/2WYp0uM84x/wA4MOAdw+TyP8vSPKXn/U/K0R42V1GLuCMbKpNC4Qf7LLsew4f5rYBtXc9uyxClPCJo2iaoDArt4EdsBV4R5s/LHTvy48sapNp0kst3qjJCWkbqXeoUBf8AZZUBLnI8fwTAHqbe1eXbJbHTra1UUEcSLQewGTgKClMsmh2KuxV2KuxV2KuxV2KuxV2KuxV4152VpPzK0VTuqwk09v3u5/2Qyo82XR7LlrF2KuxV2KuxV2KuxVIfO3mu38qaTcazdH4IEJA/mY7Ig/1mwgWmIt5F5X/JGHznpUmvebDIdZ1GsscnM1gU7wBEXiv2ePNW/wBT4cxZSnk9QJFf3cf4fT/O/rIkTI3y/mpr+Xv5gaj5d1NfI3nM/wClL8Npdn7M6/sBif2+P7X+wf48yYZBmH8zJH6o/wC+izHq/rPZsWDsVdirsVdirsVULq1iu42gnUSRsKMrAEEe4OQlESFFFPKtX/KbUfL1w+r+Q7k2z15PZOawyb8iq1/u+X+bZXGc8W399i/my+uH9T8f5skiRj5x/m/8T+P9Mm3k3837XVrv9B6zC+ma0vWCbYOf+KJD9v8A1f8AgeeZEeHIOKB4v50f44f1vx/WjFnwgi4/6X+OP4/EXo2Bg7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq//0/VOBXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2KuxV2FXYq81/OPzN5eXTJtE1djNPcoVWCEcpKn7B4j7PxfzZXPDY4ifD/pSZ8O2+weYfk5+XXnO2tp9MEzaVpsjh2LLWUgjYR/yfD9vKoagnaAB/pS+mP+b/ABMRk7v9NJ6vB+SWgsoOpifUJR+3czOx367KVWn+tyyz94djOdfzcZ8KH+lj/wAUpkSNzL+rfDH/AGLdv+RflSKNo/qasGYtUkgj2DLxNMr8H+lP/Ty/W18Pv/00v+KUH/Ify+h52X1i2fsY53H4FuOWR8SP0znH/Sz/AN1FkCY8if8Adf7pv/A3mXSBXRdXeYDpHeKHWnhyX4sPi5BzEMn+wn/pvpZnIetS/wB0op+Zuq6C3o+a9NkjRaVuLYGSOn8zKPiX/VXlkhmxy23xz/m5Pp/zZrcZd8P630/6dm2geZ9O1+AXWmTrNH34ncHwdftK3s2WSiY/8V/D/pkmJCb5Fg7FUj8zeTtM8zQG21SFZR2boynxR+q5jzxCW/0y/nRQQ8xGja7+V9x61g0mo6ASecR3eIeK+Cr/ADfZ/wBTJRzmPpyb/wA3I2Cd7S/zZPS/KnnPTfNFt9Z02UNT7SHZlPg6dVzIMa36fzllGk/yLB2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2BXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeP+d2Og+ftJ1Y/wB1fRtat2+Ku3z+0mUjaRH+cyi9gy5i7FXYq7FXYq1XIkq3kldirsVdirsVdirsVdirsVdirsVdgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8g/Pq/bU/qHk2yNbnUplMg3NIlPxM3gv22/55ZCZoMhsHo2o3cPlnR5Lig9KygJA8Qi7D/ZEccMRQQN3n//ADj7oDjTZvNF7vfaxK0zHwSp9NR/xLKx6pGX+bFSbL1nLkOxV2KuxV2KuxV2KuxV2Kpdr+sw6JYz6ldGkVuhdvoHQe7H4cICQLeX/kJ5enmS683aj8VzqTkxseojBO/+yb/heOUA8Ur/AM38f7lSbL2HLkJL5h816X5eh9fV7mO1jOwMjAVPsvVv9jk4QMuXz+mP+ml6WUYGXL/if9lJjUH58eS539KPVIuR/mV1H/Buir/w2W/l5f0P9Pj/AOKZDETtt/po/wDFMt0zXrDVU9TT7iK4Wlaxurf8RyqWOUeYP+9/0zEwI/Hp/wBMmWQYuxV2KuxV2KuxV8Yec4m0OLVdMYVS11eGYLXYoxlQCn+rDlEOX+xbLfZVr/dIP8kfqy4Nbxr/AJyrvlXy3Dpy73F3dxqi9SQA3Kg/1mRf9lgOwvuZB6/pVt9UtIbepPpxqtT12FMY8kFF5JDsVdirsVdirsVdirsVdirsVdirsVeafnrcPNpVvocBpNql1FAAOvGvKQ/JfhyEzQZReh2FolnBHbRgBI1CgDwApjEUKYojJq7FXYq7FXYqwv8AK+QT6bcalyDfWru5k5AdhI6L/wAKmVDqykN3nXlw+b/zOebVotSbSdISV47dIBR3CkqXL9/i/m5ZKWeX0wENvqlkHH6vx/VWUiNo1/Wl6kbrv5D67qKFV8x3jE7/ALw7f8JxOCOfOP8AU/8ANEosfEyDbZ5F5kvPNX5SeYLfTpdVluLeRUnY7t+75lHqj8v5H+zlkdROQqfD/N/o/wCm+tsjMkb8P4/2T630HXLTXLKLULCVZreZQyuvQ/0/1cMokc2BFMK/Oex8zy6bFe+UJmS5tJPVkhXYzKKfB/lcaH93+3/rqmVHN4e9XH+L08XD+P4pQ9UVEuHz/wBkwX8tYfMHnjzgnnDWrFtNgsrb0VVlKmRzsdnCsV3dv8j4U+LKxlhM/u+X1SlfH/mcX0rxg/S+gcyEOwEK8r/O4fXZ9D0QH/evUEZqGh4xUL/8K+VSiyD1JV4ig7ZZuxXYkq7Dauwq7FXYq7FXYq7FXYq7FXYq8a8183/NPR412UWjMflS6/42XKr3+TMHZ7LlrB2KuxV2KuxVjHnL8xtF8nxiTWLhY2b7KDd2/wBVB8WTjjMt/pH86X0shG92Baf/AM5H6fLqEcGoWdxY2Fw3CC6mWisa0+IfsK3837P7eRjLHP0xlxS/2P8AmpHDLYG5D/Sqf5nR/wCM/OGleTuVbGGM390o3DBTSNH/AMlqcf8AnrlOS64RtfpR0972VIwgCKKKKAD5ZYBTFhH5tfl9H5z0h4IqJqMH721l6Msi7gcuyyfZ/wCG/ZymYr1j6o/7KP8AN/4lHms/KDz5/izSil0DHqdiRBdxtsRIopzp/LJT/iS/s5kWJDiHVnKuY6s9wMXYq7FXYq7FXYq7FWM+cvIGk+b7f0NWhDMv2JV+GRD/AMVyfaH+r9hv2lyiWPfijcJ/zo/77+d/vf4ZRQR/0kwKCfzR+WZK3hl13QOQpIKm5gXp8Sf7vjX/AD4LkxqOmX0fzc0f7qX/AA3+Z/W/2U5M+O/q/wBN/wAX/wAV/wBIvQPJ3nzSfN1t9a0mYSAVDIdnUjs8f2lzIlCvP+lH6UyjXmP50fpZHlbB2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV/9T1QMAVvCrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVWswUVPQYq8r1vz3qfmy9fy/wCSvhjjJW51BhVIz3jg/nk/yv8ANhPIMew9eX+b/DD+lNmfT5y/3P8AWZH5N/LDTPLXO4AN1fSmslxN8Tk+1fs/7HMfwjI8U/XL/YR/qxazvud2Z5kpdirsVdirsVWlQ2xG2QMRLnSsG8wflRpt/P8ApLTHk0zUqfDPbHjU9vUiHwSL/k/tZVGEsf8Adnh/2uXqxS/zf4f97/NWNx5f6X+H/SpQ3njzB5McRebrcXdh0F/aqdh/NdQfsf5TLxT+TllozRltMeBk/wBPgn/Vl9Uf6vqnL+bGLO4nn6D/AKaH/FR/338EWfaH5isNdg+taZOlxEe6MDQ+DD7SN/ktlsoGPP8A47/pllAx5ppkWDRAO2RItXlvnP8ALC5tbn/EXk5vqupR1Z4VoEmHcUPwhm/lb4G/yH+PKAZYd4+rH/Fj9Uv9L/FL+r9Uf4P5qiXD5j+b+P8Ac/6VP/y//MGDzPEbeYGDVLcBbiB14sGGzuiEs3pc/h/mT9vj8OZIqQ4o7xl/sf8Ac/6b+L/NkyPKx+Px+P4maYsXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqklp5s0271OfQ4bhW1G1UPLDQhlVgCrbjiV+Nfs8uPJeWExIF7b+ceL/SXxx/zkmO1/pH+5TvAhAa3dTWljcXFonqzxRO6J05MoLIn+yb4ciZcO5SHgHkz81/P3nxJ5dEhtY0t2CMHUncivWuHJqYw5RlP+rJlKY7v98m07/nFLG5iFiCCAtKAkU+0OTsv/AAWVx1o/mE/6b/ioJ8Sv4Qfx/WTb8svzL8xT66/lDzjaRwagsJmjljNA6qaHb41c/wCUjKvwt8GWDLHILAMJX6o/w/7L1R/2f9dFiQuuD+j/AA/j/TPYsLB2KuxV2KuxV2KuxV2KuxV2KvIv+cigLez0vUBXnBqEVKf5VTv/AMBlcubKL1xegr1yYLFvCrsVdirsVdgIV2FXYq7FXYq44q7FXYq7FXYq7FXYFdhV2KuxV2KuwK7CrsVdirsVdirsVdirsVdirsVdirsVdirsVaWtN+uAK3hV2KtMwUVOwGKvGfywi/xd5t1TzmzF7SBjZ2o7HjQNIv8AzzVG5f8AFzZUfVKukP8Adfji/wBiyltt3PQPzK0qXVPLl/Z29fWeBinHqSv7wKP9bhxwzNBikP5EeZ7bXfK1nHAQJrJBbyp3Ux/AtR/xYiq+WCNBkQ9FxYuxV2KuxV2KuxV2KuxV2KvKf+cktQktPKxSI8fWnRD8lWSYD/g4UwWziXougWUNhp9vaWx/cxRIqe4AAB/2WRhGgwpMcmrwYeTLPzj+ZGrw+ZEe5trK3gNtE7EIA6pzICleX7wv/suWUzvIKs7X6Y/8X+JfT6uFZbimS/mF5c8h+UNIbUtW0q2FuCqBY4U5szbAIfh+LiOX2vscsrjpIHrOP9LxMv8AxXqYxxg7fT/SuXF/xSVW3/OPnlXV7SLVNCe6sUuY1lRopWFA45r8DluPw/s5ZEZMZuM5bfT9Mo/7niTRididv87/AHXqRdn+XPnTy9Jx0TWxc21P7u8QsR8mXJfmcv8AHGGb+lE+FL/ZMzlkfqqf+6ei+Whq31amuej9YB2MFeJFBvRxs3LJRlxb8Ph/0eIT/wBlFBN8vT8eJOckh2KuxV2Kvjv/AJyQ06aDzp6FupJvjbyhOzsB6I6f5SP/AMNlINXbIGn2EgooB67ZaGLw3VkTzj+a1vYS72ug23rFD0aU8XDgf5LTQf8AIrK5+oV5+r8f5vD/AJzIjZ7plrF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5hext5g/MCCMfFa6LbGRvATS1VB8/T+L/Y5VLcgf53+l/48yPJ6flrF2KuxV2KuxVSuJhBE0p6KCfuGRPJIYj+UduYfKtirfaeNpD/s3eX/AI3yAG3vtSkX/OPUoj8vSaeaCWyu7iJx3rzLiv8AsXyUOV96Sxb/AJyS/MHWfLVzp9lp1wbOzuamWdVqwIIB+hVblx/byyOSjQ4eL+kyia/m/wCc8b0vyTqH5oeZ2trbUJrmGGAGW6nUqwjJoVSP7RVmf4F/a+LKMmWVfwTyfT6f7r/Ol/RYykT/ADT/AFfoZd5h/Lfzp+TyHVPKt7Jd6ZH8ckdKhd/iMlseasnH/dkfx/6uHHqpQ9OQR4f4ZfXH/TemcP8AcoGUx2PqH4/0r1X8oPz+0vz1EtndlbPVh9qFjQOf5oGb7X/GP7a/5X2sy5QsXH1fzo/xR/4qP9L/AE3CzMb3H+l/i/49+OJ60BTKAGt2FUvg1yzuLyTTYpVa6hUO8YNSoOwLeHLCRSaec+b1XUfzF0K0fdbSC4uKdqsrIp/4JBlJ5/j+sno9Wy1i7FXYFdhV2BXYq7CrsVdirsVdirsVeL6w/rfm5YoNvSsSa7/y3X/NeVkbsuj2jLGLsVdiriQNzirxXzn+dV/qGrDyt+X8SX2oCvrTneOKhod/stx/bb4l/k5NkpyjhFy9cj9OOP4/33p/iZkiPPf+ijvIP5LvDev5k85SjUtZl6chWKIeESN8P/NOYsuLNvPaA+nH/wAU1G5c/wDSs388eSbHzbpMuj3qAo6n0zTdHA+CRP5WX/m3GWIV6eY+n8fzZfxJMXjP/OLWnznU9bn1SQz6hZmKy5MakJGXTip/l/cp/wADlnFxkSP81nIk7l9F5YxdiryCCwHlL8yWmB4WnmG3NFHT14uJLN7svLj/AJUrZVj2Jj/nRZDk9fy1i7FXYq7FXYq7FXYq7FWiK7HpgIVgXmr8pNO1ab9I6czabqgIYXFv8JJBqPUQfDIP9bKIwli/uzwfzoy9WKX+Z/xKBY5f8dRXkY+aoJprPzL6E0EYHo3EWzOa0o8f7O3xcstGXi24TCQ+r+ZL+ozJvpX+5Zpk2LsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf/9X1SMiFdkldirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVaJpucCvHvMGrX35mX0vl7QJGt9FtnC3l6pP7wj7drb/sn/Kb4v5vscPVhOZh6Y/3v8X08OKP87+v/pf91JmTw7D6/wDcf8eeneX/AC7Y+XrNNP02NYYIxsB492b+Zm/abBDGIf76X8UmsCk0y1LsVdirsVdirsVdirsVWOiuOLAEHqMjKIkKKvPtf/KOBp/0p5ambStRAPxQ7RvvypNCPhbk32m+1lMRLF9H0/6nL1Q/zf5n9H+CP8xYkx5f6X+FLbP82L3y5Ommeebf6szHil5HvC/+t/vs5kQyQybD93P/AFOX+9n+P81kCJ+Uv5v/ABMnp9rdxXcaz27iSNhUMpBBHsRhIpBFK+BDzv8AMP8AL6W/f/EHl8/V9egAKOpp6oX/AHVJ+ySy/u+T/CyfA/wceGNRxnij/nY/4Z/zvT/veL1cPF9fqUGjY/zo/wA78fj+GURfkH8yYPMi/Ub1fqmsRCk1u+xqPtNGG+Ir+1x+0v8AlJ8bZQqY4o7w/wBlH8fzv9NwS9LMxvccvx+P90znAwdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqXa1rtlots17qUyW8CdXc0Hy9z/kr8WSjEy5MhElI/KX5n+X/NjmHSLtZZVBJQgq1B3CuF5D/Vwyxkb7H+r+OJMoV5/1WW5Bg7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq0WpucVSPXPOukaJE0t/dwxBQTQuKmngK5YMUjvRbBjJSL8v8A83dH88ySQaWJRJEgdhIhApWmz/Zb/gshIAciD/R/j/2SJRA5EFnWBg7FXYq7FXYq8f1JF8vfmfb3zVEOs2ZtyabepGQyCv8AlKiLlUeZH+d/xSQ9gy1DRAbY5ExtUu0by7p+irImnQJAsrF3CCnJj1Y5CGIR5IApU1jV7bRrSS/vXEcEKlmY7AAZbGN7BkBbyn8otHu/MOtXv5g6orJ9ZBgs0YUIhB+3T/K4/wDEmyji45bfTD/ZSUmzt0eyZeh2KvLfL+pXepfmHqUMsjrbWFpGkcQJCkuQ7SFfss1T9rIcZO3v4mV7M480+bdO8r2bX+qyiKJR36k+CL9pjlsY2sY2wHyx5u82+dL+K90+CPTtAVqlp1LSzL4Inw8Vb+b9j+d/s5V48b4YDxP52SR4YR/q8P8AF/p/6cYLxx5Acf8ASl/vfxJ6xk2LsVdirsVdgV5R/wA5Frz0azUGhN/B+s5CTKL1YdMkGLeSV2KuxV2KuxVazBeu2KrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVUWlZXCBSVPfwyBnvSaVsmh2KvPfzu81PoPl+SO1r9bviLaKm5rJsT/sVx4q37mUdt0+/L3ypH5W0W20qMDlGgMh8ZG+KRv+C+H/VyrGKHv9TFkmWq8T8z6DqP5deYJfN2gW7XWl3ope20f2gR/u6NB/n9r+bKITGL0y2xH6ZfzJf8SmMgNj9J/wBjJkmmfn95UvV/e3JtpBSqTqUYH/ZZlcAIsSgf85kIg7gx+bJfL3nvSfMbtFpcpmKdSFYL/wAGRxyMgB1gf6MZRlL/AEqJRrrE/wBUxkyPAxdirsVdirsVdirsVeY/85E6Z9d8pTuqlmt5I5QB4A8HJ9ljd8qma+agsm/LTWk1ny5YXaNyJgjRj/lIBG//AAy5cUkMowISPW9QtNHliv7iNQZnW3ebYFQxPp82O/p+rxX/ACeXLK4wHFf8R9P9b8f8dSI2Xhn5i3h/NrzjbeTtPlB0rTyZbmRN6sPtiv2fhX92n+W7ZLLcfSPqP4/2LKWwp9EWdpHaQpbQKEiiUIijsFFFH3YxjQpgr5JXYq7FXYq7FXYq+WfzJ8yWvmH80dNtEIEVhPDG7jrUOHbf+VWPH/gshKLMh9TZNg8G/MC7Xy1+Z2k61OPRtLmE28knRSTyT4z/AJPNP81yuA9RA/i9X9b8cMWUe7ve8g13yxi7FXYq7FXYq7FXYq7FXYq7FXYq7FVOeURRtK3RQSfkBXFQ86/JaBryC/8AMUopJqd27iv++0+CHf8A1cqjuSf81kS9Jy1i7FXYq7FXYql3mFS2nXIXqYn/AOInIy5JCR/lNc/WfK2nSf8AFAX/AIElP+NcYqWF6fdr5H89XNrcn09O14CWJj9kTrs6e3Ov/BNkcW9x/m+qP9WSRvs9L8w2ulyW5m1hImgiqxMoBApvX4sE8Ay8xxMeDi25vNPyWaLXta1jzVaxiOylZLW2oKApGPjZR4M3FsEYiJqPIJIA2HR686LICrCqnqDkzEEUUPnf86P+celBbzP5NX6vfwt6rwoaBuPxc4FA+CWv7K/C/wDr5jC8G4/u/wDZYv8Aiof7KP8AsWI9HL/pFlX5Jfnjb+brM2GrsLfVrVaS8yFDhfhMi1Ox/nXNhw8YuO/9GP4+lvI4t4/6VH6z+Yt15nuX0HyRSSQGk98RWKEdG4f79l/l45VOYxbfVkP0x/30kbR85fzf+KZd5J8mW3la0+rxM01xIeU877vI/wDO5/4iv7K5XEG+KW85fV/xMf6LWTe5YVoEo1n8ydQuxumnWa29a7cmYP8A8Rd8SN/9kyOz1nLWLsVdirsVdirsVdgV2BXDEFXZJXYq7FXjVu/1r81pHXcQWQQ7A70Y9e328q6sjyey5axdirsVWSxiRCh6MCPvwFXl3lDyD5d/J6K71W4u2WO6YBpLgj4dyVjTgOTcq/5WV4cU5H1VP+qOD/TcUljEnzemWV7Fewpc27B4pFDKw6EEVBGWkUq3UrxLK1luZCFSNGYk+AFcVAt4B/zibdm/n13UG3M9wr18amR/+Nsh1SX0Tk0OxV5x+demONMh160H+laTOlyh7hAf3w/1eHbKiaIP+b/pkjmz7T72O+t47yE1jmRXU+zDkuW0tInFDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FXYq7FXYq7FXYq7FXYq7FX/9b1SMiFdkldirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeTfmN5mvvMGor5F8uPxllAN7cL1hiJ4uo/4sZf8AK5ZGc/DH9M/T/wAU2A8H9Y/T/wAU9D8teXLPy5YRaZpycIIRQeJP7Tuf2nY/EzZXjhwjv/nS/nSa6TbLldirsVdirsVdirsVSnzHr0WhWMl/OrusYrwjBZmPZUUftNgJA5mv6S2Ou39J5y//ADkXptuA2oabqVtGdw7wAj8HxhkxSNDJD/Z/8SiE4S/iiP8ATf72Mk38r/nx5W8xXK2NvctDcvsqToYyx8FY/By/yeWXHFf0mOT+rxf7mUYcX+bxNxx9xE/6vF/vox/2L0XKmpgn5l615ZUW+g+aaenfNWMMDxqhG7P+x8RVcicAydeE/wAO/BP/ADU8HExq48ia55C53/kyb61Y/aexnYkUG/8Ao7/st/n8WVDLLHtP95D+d/HD/ikiZ5H1/wC7eeav/wA5Yay+oxWek6aoJIR4pQxkLk8eKcD8PxfzK2ZQnjiLNzH86+D/AHsmQMfOX+x/4p9LaXPPc2kM93H6M7orSR1rxYirJXvxb4cpBvf/AHTBgX5pfludXA17RSYdbtaNG67cwprwb/K/kb/jXKSDjPFH/Oj/ADv6X4+pjyNpn+Wv5ixebLYxTr6OpQCk8LbEEbeoB/KxzL2I4o7xLMjqGb5Fi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWmYKKnYDFUltvOejXU5tYL2B5xsUEik/dXLjgkBdFtOKQ6Jyrq4qpBGU010uxQ7FXYq7FXYq7FXYq7FXYq7FXiH5l6VHr/nvStG1wltHeF3jjNQryitQadS3wLlcrl6Rt/FL+oyG4r/jql+bn5WW/l6zTzX5PhWyv9NIkKxDiroPt8kHws3H/gsqgPBNjiMT6ZRkZS/3TAelnn5SfmRF580ddQ4iO4Q8Jk6gNTt/ktmXIDpybJCuTOMiwdirsVdirsVdirsBCuwq7FXYq7FXYq7FUg84edtL8o2R1DWJhFCNh3Zj/Ki/tNkoQ4j3f0pfSyjG1byx5r0/zNYJqmlyepbSVo3TcdQwPQ4JRo1/uVMaXXnmvSrME3F3ClOtZFr91cn4Uj0KRAljWpfnd5SsDxk1CNj/AMV1b/iGT8EjnUf60oxZDEf6Mf6xSG7/AOck/LcLiOBbm4J6enGB+ErRNlZEQLMoiv63+64eD/ZMTEAXY/2X++9P+yU3/PLU7luGneXb+TlQK0isgNe9fTaPj/z1yj8zgI2nxn+bERl/uJzl/sEGUKsE/L/iZSXDzH+Y+r1jtdNt9PB6PM/I0PgFLDl/rKuP5mH8EZz/AK3ph/ucUv8AdKZRHISP9Y/9If7laPyi8w60efmPW5nBNfTtxwUew3wHNlly4Mf9X1SQZyPdD+qmukfkF5XsXE1xA15MN+Vwxb8MqOKU/rlOf+xj/wAX/s2BBl9RJZ7YaVa6dH6NlEkMY/ZjUKPuXLIYow5Cvx/O+pIiAjMuS7FXYq7FXYq8r/Py1e2sbHzBFXnpd5HKabHiTwff6cqNAg/5qRzenWl0l1Ck8e6SKGHyYVGWo5K2BWMed/P+n+T4Y5b/AJvJO3CKONSzO3goGEVzJAZAXz2YPb+Xta/Mi8ivfMkJsdCiPKOyJ+OU/sNcU6L+1xyiWXxPTCxD+LJ9PH/RigysVHYfzv4pPWre3S3jWGIBY0AVQNgANgBlkYiIoIVcmrsVfOnnH8yYvy+89ajdTp6sl3axrEqkULA7cz2yMI9+3++bIi+aXWnmPy/eTDzF58vlvrzlWCxgq6x71UFE+Fm/1v8AZ4JY5ZPq/c4v6XolL/ff75ZRJ5+iI/hZov5seaPMaeh5N0KSOMii3F5+7jA7EJ8PL/Ys/wDqZEZ8UNo8WYj+HGPR/pv+K4P6zDjgOVz/AKvpj/pv+PRZx+XeneZrO3kbzZdxXVzK3JVhXisYp9gGilv+ByQyGfOIx/zY3xS/zt5/7uSmV9BH+r+P+L/rMwyaHYq7FXYq8g/OympatoWiAVMt0JW33on8MqmdmQ5PX6UywMXYVdirsVdirsVQF7pv1qWKVnYLCxbiOjHty/1cgRaQaR+TQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXDAFdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV43+d13HY65oF5qLenpcNwWlZvsBh9gv9HLK5eo8Peyj3d7N/KnmibzRO9/ZAppCVWJmWhnbvKnL4vQX9hvh5t/k5IkXQ3r6pf0v5sf8AfINdP85luSQ4iuxwEKls3lzTZ2MktrA7nqWjUn7yMo8CHcEUEZb20cC8IlCKOygAfhlkICPIAf1VArkrZYl2KuxV2KuxV2KuxVD3tlFfQPa3Ch4pVKup6EEUIyMhYpXhVteXv5Nam9vch5/Ll0xaMqKmM/8ANX/ElyOLJ/BLb+bJMZA7S5/wsvm/5yK8nQwmc3ZqB9gIeR+SZleF5w+bZ4XW4/P/AHrB9Y1vzH+c8T6Vo9qdP0FyOdzOu7AGo4r/AMax/wCzdcxJ5oj0w/eS/nfTCP8Anfw/7v8AmxYSkBtHf+l+P+kmb/kr+Ta/l1BOZ5lury4YVkClaIPsoKn/AGTZCAkTcqv+ieL/AHsGAvq9PzIS7FXYq7FXYq7FWmBIoOuKvlTzh+T155Uin80X7pJcPqKygqTURsxIH+szZjRlK99lid+59RR3fq2y3MSliyB1XxqOQGZBNJebWv5Uy+Y9YXzN5wb1JYiPqtkrViiA+JfU/Zll7vx+D/WyiXFk2+jF/N/in/Sl/N/q/V/VYyJltyj/ADf+K/469T6Zel2FXYq7FXYq7FXYq7FXYq7FXYq7FWG/m3qzaZ5avJYtpHT00p1q54DATTKKa+RtJGk6JZ2I/wB1woD8yOR/E5GA2QU9yaHYq7FXYq7FVOaJZUaN91cEH5EUwEWryLyP5mj8i6jL5L1z9xC8rPYTtUJIjmvo82+FXRvh44MXqHD/AJSH1R/o/wA6LKI4v634+ln/AJx8lab5xsvqOppzSvJGU0ZW7MjjdTkJwvlcJR+mTAj4PP7P/nHCw9T/AHJ6heXtqOkEkhC08Dx+0MZTzT2lL0/0R6mUpylzL07T7bTtDt0sbX07eCIUVAQoAyyGLhG1qIkJPrP5o+WtGDfXdRt0ZOq+oC30IvJm/wBiuXjBLnVf0pemP+mkz8Mjnt/W9LC7j/nIODVH+qeT9OutXn/mCGOIe7ySDl/wSL/rZRKeLH9UrP8AqeMcc/x/ShxsSYx5m/6Mfq/H+bKLzzzb/wA49+ZvNTXHmW6NrZ6iw5C1tlIDfzB5lO7t/N8XL+fMQZTHeETCH9b1/wCk+n/c/wBVhxVuBXx9X/EM9/Ij8wdNltB5XuYF03V7T4JICOPMj/di1+0zftZl44RI4ob39X85mIAi4/53856j5n12DQNNuNUujxit4y5J9hsP9k2SAREWwj8itFkh0qXXbuv1vV5TcvXqFJIjT/YrlEdyT/mxUnd6ZlyHYq7FXYq7FXYq7FXYq6nfI0rVMUtj3whDsKvFfKrSSfmhqhG6rAAa7U6Up45WObLo9qyxi7FXYq7FWN+fPI1h51019J1NaxturDqrDoy5TkiTyNfj+JBeT+W/Nmt/lPOmhebVNxopYJb3q7hB0RJfAZZjyjJ6JejL/sZsxIS2O0v909j1iyt/M+kTWsMgaC7iKh0O1GGzAjDOJG3JiQQx/wDKP8tIvy/0n9GrIJpXcvI9KVP7IHsoyqAPOXX+agebOcuS7FUPf2Ud7BJazCscqlWB8CKZCQ4hSsa/Le3l07Tjo9wSZLB2iB8UqWiI/wBhjCVjf/OSWW5NDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf/9f1SMiFdkldirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirGfzB82R+VtHn1F/wC8C8Yl7tI3wxoPflhH3MohJ/yf8lt5f0s3V78WpX7evcMetW39Pfslcx4eo8R6/T/VY3e7PsvV2KsM/MT8y7PyZFGsqPcXlweMMKdWPTr2GEVzJr/dM4xthM1l+aWrUuIbi0skloRGVqUB7MaNybKRrCPpx8f82Uv+koshlA/hH+d9X+6Qd7qn5g+U9S046xeWl3aXtwtu0aKQd+r8vTVgeP8AlP8A6mWDU8Q9UBD+lf8A1dlH/YrxA9I/7L/fSe64Wp2KuxVCfVZfrXr+ofS9Pj6dNuVeXOvy+HI72lFEA9cBiJc6V4t+f1pb6pe6LosCL+kLi8VlanxKibuaj4uP7OU+FHH6ogQ/h9Po4v8ASprq9qG2ZDF8w/8AOX9rJ9b0u4VtqOgHgSQ1fwysE2yBep/kr52j1TyqlzfSUexBimdj2TozH/Vy6uL4siLOzw9tS0PzT5o1HzPc3qaXFbkCzkUDk0i/Yk9GjNL/ADPxX+XKhhkDUOEV6pcXD4X9X18MVED04RX87h4f9k9d/Lb/AJyA0fX0XTtWuI7fUlPp1aqRzdhLEXC8Of8AvuTi3L7OZAhxbx/zo2OKP9X1euP9VJhfL/S/8T/PevAg7jK2p45+aGnt5Q1m288aeAqllguk6BgxoHNP2qZTH0Sr+Gf+6THu73r1tcJcRJNHujqGHyIqMuQq4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqhdRtzc20sC/akRlHzIIGRlyV4p5Y/5xU0G2tkbWTJLe1LMY5Cq7noNuWURGQ78Rxn+jw8Uf8APYUe8j+qyMfkTb2O+iarqdgw3AScsnyMbjiV/wAnLRPMP4hP/h0I5f8AfQZ8cx/Fxf8ADIjL/sfSg9X8w+b/AMvFN7rDprmjL9uSOMR3EYH7bon7t1/nb/iOEZwTWQDGf4cmPilGX9eEvo/zWQmD9Qr+lH/fR+mP+azH8ufzG07z5p/6S0zkqqxVkenJT70PfLpRrlumUa5bssJpkGDSsG6YrTx/zZ+fq+XfN0flmS152pCepMpJZS/cRqG5KuEGNb7f0v4fx/S4mYqv99/C9fjkEihl6EA/QcDBfirTMF3ONJUWu4VFWdQD4kYeAnvTwlwvYCKiRaD3GNFFMP8AzJ8u6Z5lsVtbi7S0uom9W3n5qGR16OvJl+H9lsHgZJeqAPFD+jKX+a2RxTO8Qdv6MpPMtR/O2TTdF1LQ/NBjOqQRenC8ZDLOHBRJPhLBW/afJEcY3Esf86Mh/uOJJj3+ivqjL/eor/nGH6joHl+Sa9uYY57qTmVaRQwVRRarXbrlWOJlu1gW9d/xtovEv9ch4jqeYzIOKQbDhkOjzu+0/WdXllv7nzLFYW3ImCO3CFQv7PqvKV5N/k5CJzHaMYj+tHxZz/3XB/mepIjk5RA+Xi8X/E/5qI8g/mhJDfT+WvNN3bPdwgPDdq6LHPGe/Xiki/yZZGEsn8JhkH1Y4iUv8+P9FTjJ6ES/m8Mv9M9BPm7RwafXravh6yf81Y/l5/zZ/wClk1nHIcwR8EO/nzQlJH1+3JXc0kU/qOR8MpjiJ/tig5fzT8tQ/b1CAf7LCcMhz2+MVljMeaBu/wA7PKlr9q/RqdeAZ/8AiAbGOK+sP86cY/7op8I1fp/00Uuk/wCchvKKg8Ll3IHQROPxdVX/AIbBwDkSP9lP/plGSIwvrXwlL/cRmhk/5yH0Of4bO3vJ5OvBIgTTx+F22yE5Y4bmcP8AZQ/6axxIqP8AOjv/ADf+PcCl/wArxurpiLDQ76WNerMOFP8AYsP+NsqOoxD+K/6o4/8AcSkxnKEet/D/AKSUp/zV82yfFZ+XZuBNP3jUPz+HCNThI/j/ANKkyjW1lLtD/Mjz35m5SaRp9qscbmN+cgJRh1DKXibJePAfwzP82XqjH/c8P+zSZRrYH/Tf8VH/AHyN1o/mLHbPeXl/p+mWsILO6oWPEfzB0nX/AIFlyEM8pbDH/wArJD/eZJf7LEwjIkbRF/0jw/7mWWH+xea6b+Vfmf8ANwLrOt35+oBiITIhBZP9+xwrxjRW/wCGyE805+mIj6f4r9HF/peKSznI7Dh2/H8MYcX+xeh6H/zjNY6Ygi/SF20VatGCFUn6ByxjLMBw8QH9US/38pI4pVV1/V/4/wATILT8gfK8LF5YXnY/79kLZE4pH6pT/wA30LK5dSxHzX+V/lzS/NmixWdqircPIJI9yrBRyUkNy/awDFW1y380iL2u2022tAFt4kjC7DioFPlQYY6bGDYjD+twx4v9MxEAOVIzMlk7FXYq7FXYq7FXYq7FXYq7FWNfmRo41jy9f2PeSB/wHL+GVz5Klv5M6jJqHlWwmm+2Iwh6/s/D3yY3SSzfChh35meRj5rsES3f0b61kE1u/YOvQH/Jb7OU5AR6hvw/w/zlGybeUdUutS0+OXUImgulqkqEU+JdmKfzRt9pWyUZie8f+kf6KSQeSd5Yh2KrXHIEdK4Cr5e/Nf8AJjT9E1ix1rUZZruyu7rhdczuAxqlD+yv7OY9zkakef0yj/Au8jv1eh/lZqnkC+1CbS/LdtHFeWtQeafEQPhLI78uWSOjjzJ8T+dxHi/2P0JOIDfm9fAA2GWgVyQ3kldgV2FXYq7FXjupg6j+aNtEd0srQuO+7fqykmz8WXR7FlpLF2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KoHVdHtNWhNrqEKXEJoSkihhUezZTkxiYo/eY/wCyj6kEWr2tpFaxLBboscSCiqoAAA7AD4RlkYiIoKr5JLsVdirsVdirsVdirsVdirsVdirsVQ95YwXsZhuY1ljbqrgEfcchOAlsUFjkP5W+WYJfrEenW4lrWpQHf5HbKPy0fP8A00v1tYxgf2lk8cSxqEQAKOgG2XxiIih9jaNlTJq7FXYq7FXYq7FXYq7FWAfnrp/1zylfcftRKsi/NWGVzNJDIPIWonUdBsbtuslvGfwAyxSn+KHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXmP5x89QutH0KM0N1eK7DxWL48rmaDMF6aqhRQdBkwGDeFXYq7FXYq7FXYqlHmPyrp3mS1NlqsCTwnsw3B8Ub7SN/lLlM8Ylvyr6ZR9MoqRbz0fkbPpYI8u61fWMRNRFz5oPkG+L/hskMmYczDJ/wyHFL/dcP+xUyl3/AOmHF/xKtJ+Tmo34A1XXr6ZO6qQo+jjuuIy5u+EP+Fw/4pPHOuYjf82LSf8AOOvl1jzvHu7pu/qzsR92AHKec5/5voYkyIq5f5p4U+0f8nPKmkNztdNg5jfk45mv/PXllP5cH6jOf9aR/wB7wxl/nMeAHn+P836WYQwJCoSJQijsooPuGXQxxh9IEP6oEWQFK2WpeWfmz+R9p5z/ANyVi5s9YjHwTJtyI6CSn/EsxzGUDxQ/zo/z/wDjyNxuHzVrOq+cNLvV8j+YrmR4HmiDITyJUkUKt9plZT9nLzqDkjvt/Sl6JRbOMkbvt/ToFt7aKGMUVEVQPYCmRiKDBEGo6ZIlQ3irsKuxV2KuxV2KuxV2KuwK7CrsVeMeTmB/M3VwfhPoKKeNKb/jlY5prZ7PliHYq7FXYq7FUBrGjWms2r2OoRrNbyCjKwqDlc8YmN0EW8euNN1r8oJTPpCPqPllm5SQVrLBXqY/5kwRy8Ppyf5uX/eyZxn0l/my/mvVPKXnDTvNdkuo6VKJYW2I6FT3R16qy5fKNIMaR2q61ZaTCbjUZo7eEftyMFH/AATYxgZct0xiZcnlXmH/AJyk8p6Yzw2rTXsqmgESUUn2dyv/ABHLfDEfqlH+rH1T/wCI/wBmyMAOZH+6/wCO/wCyZv8Alz54k846aNTktJbKrFQkvcfzLstVzHEoy+k8TA0eTK6Ab4AEN5JXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq//0PU46n/PtgCrsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5DrSHzz51i0vZtM0QCaUdQ0zfYQ/wCrleQ36e/6v6rI7Cu969ljF2KuxVj/AJp8laf5mFudQQlrWVZY2U0IKnpX+Vv2lyieO9xt/wAT/NVOzMit6ZYBj0Fd8vEU0g7/AES3vri3urheTWrF4wegYjjy+aj7OVShxH3MUxy1LsVdirsVYp+Yfn6z8laa1/dfHK3wwxD7Ujn7KqvWn8xyQHU7RH1SZRHexD8rfJWqX2oN5283U/SU6cYIP2YIz0FP52XMcS8Q3ygPp/p/0kE35D+F61lyHi//ADk/5cttS0JLt50t7m0fnEG6uT1jQfzftZSYm7G9fUkAl88eS28xa9O/lKwk9FdTIaRd1UhRy5V/l4/sr9vJeLQ9O/8AumQlts+nfIv/ADj75d8twIbqBb27AHJ5fiWvfhGfh4/66s2UDCZbyJ/qxPDH/Y+qX+m4f6LTw3z/AB+P6Se+cfy40/WNPa2s7a2huo/jgdol4q4+zyCjdG+yy/F/q4+BGO8QLH830cf9GUvx/WiscYjyAZFoX1pbSKPUFRLlEAcRVKVAp+7qF+H/AGOZAkJbix/Rl9Uf+K/rNpDH/wA39KXU/K9/CRUrEXFOoKnlX/gcjkGzEFEflZftf+WdPuHJLNAlSfECmWA2ksrwodirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVaJA3PTFWAeaPzm0bRp/wBH2vPUNQJ4iC2HNq+BI2XJECAuZEB/sv8ASszED6tv90xw67+ZuuFWsLK20yBzSs7cnUeJ+3/yYygaqJ+mMp/0pcUYf9Opf7KSOMDkL/rH/pCX+6Qmu/ll521S0nbWvMA9H0m5xxRUUgAkg8DArfD/ADRY+PkO3DiA/wBPL/ZwlL/pagZJcqgP9n/vYS/2bw38hfJ2p+Y9Zn0+xu5bWxgq0rRmhO5VKD7PJqZI5pw2h6bZico8tn0JL/zj7G5BOrXzU8ZCKD2pglkzH+L/AGMWqUpy/i/2MVq/kC8JY2+tX8YO4Acnf3+P4sAnmH8UP9Ii5d/2f8eePDyxNZ+c71LjX47GS2oj3U7cZWBAb4EaT4/9lLkryT5RGT+lKOPwof5k4f7mLdEyu9v84R4f9LJnTNpscZe989TSdj6MoH3Ijz5cRqJcvAh/Whj/AN1xYmRjkP8Aqf8ApYQl/sMkf9yhYrLyfdmp813bsepdiKj5mJcnEakfxQ/zT/1dkzE8h2v/AGUf99JN9P8Ay/8AKd4P3fmCeVOpAuKbZXOOo6y/2OOTUceTv/3Ke2X5GeXr0DjeXk8K7hDOSu/fplAGaPOZ/wA0cEv9PGSCZjrKN/zUWv8Azjr5W4kSJPJX+aU/8ahcMhkPPJl+cf8AfRk0y4pfxT/2P++ivh/5x38oRLxNtKxG9TPL/wAauoyo4pHnOcv6wxf9UlArz/0v+9jF5d+bP5M6RYa9olnpcbLFfTGOVPUdiQtCSC5fiOJx4THr9X8XDH/eRizp65afkT5TtloLMNU1qzEnI+Cesp/PhY15lUl/IzyjKKNYr4D4m2/HB+X/AKU/nH/iVr3qCfkJ5SWp+qGpFP7xx/xFlwjAR/FP/pX/AMQoH49P/EvMvMn5L6Ba+dNM0e3WUW1zDJJKgkYkcSaEP9pRgGMjbiu/4uHHxx/2HB/posgNuf8Auf8AiXpcH5BeU4kKi2ck9WMshb7+WTGIj+Kf+xj/ALGEYw/2LXXnL58P+59KKtvyP8pwKALBG92qSfmx3yJ09/xT/wBMyA9/zTGL8rPLUQomnwgfI/1yR08T3/OTHgH4MkTB+Xfl6AEJp9tv/NErf8TDYjTQHK/9PP8A4pIgB/x71f7pM7XQ7G0XhbW8UajsiKo/4UZE6TEdzGEv6UoxlL/TSR4cedD5BFiCNTyCivyy0YojkB8mxUCgdMsAAVvJK8i1m2XyJ5wt9WgBTTtZrDcAH4VmG6S06LyXKsfpPD3+qP8AxLKG/p7/AKVl5K35sambG3LJ5asJP3zj/j6kU/3Sf8UL+3/NhyyP0R5n+8l/Nj/M/rLI1t/ppf7161bW0dtGsMKhI0ACqNgAOgAwxiIih0YUrZNLsVea+auEvnrRogAXS3nc17CoAI/yuWVnmy6PSssYuxV2KuxV2KuxV2KuxV2KuxV2KqVzEJoniPRlK/eKZGXJXm3/ADj9cE6DLZt9q1up4yPD4uS/8KcYnZlJ6dkmLsVUpkdlpGeJqDWldu+RKVXJIdirsVYn+Z3lL/FOg3Omp/fFecR8HX4k/wCacpycr/m+pDxryr+XNr5w0tNd8vyHS/NNkxjmZKgGRPhImT+WSmRAlA8UN4n/ACcvo/zWW49UeR/h/gZ9+XX5l3OqXD+WPNMX1PW4OtDxWUD/AHZC3i32uK5fxDILhY/nR/ih/pmQqW4/zovUgKYWCE1DVLXTk9a8lSFB3dgo/HCIGXLdlGJPJ51rv58aYkv6P8uxvq1+TxCQAlAf8uX7Iwz4cf1nh/ox9U0mIj9X+l/iZB+WOnaxZ6c516guJpnlEYYt6asaiPm3XjlMcnHvuP5vF9TEytmOTtDyH8vCNX8763rEfxQw8LZW36r9qmU9WZettGCwY9RXLCN2K/JodirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FXYq7FXYq7FUBrOt2ejWr3+oyrBbx0LO3QVNB+OGMeI0EgWoaJ5n03XIhPplzHcIwqCjA/ev2h/sslLGY8/wAf5zIwITbIMHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqkfnayF7od9bnflby0+YUkf8ADZCY2Vj35HXwu/KVjQ19JWi7f7rZou3+phH4/EmUgz3JMXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXmVyV1b8xY4TummWJf5PI23/JPK5bll0em5YxdirsVdirsVdirsVdirsVdirsVdirsVdirsVeUflz+Xl4NV1PzJ5qgja9u5h6CmjhIk+xwr9k78f9jmL/AHpsiQ4PpjL0ovi939J6vmUl2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV4z5LjZvzM1p1+wsKA1HeiUofpbKo82RezZaxdirsVdirsVdirG/O3nrSfKFk17rEoRCCFTqzn+VE/awjHx8/p/i4vpZRjbwGx0fzbrmoz+Z/y+tDotlKhIWYgCc7/GIHDRqzfsfsf5eY0c0cXphx5oD6v5kf6n0y/zYzlL+ix4+HaNz/3H+YjPyw8qaH5r1F088z3V15mSpe0vCUUAfEDBGvFZU4/s8uHD/dPD4ssPFnjxcX7r/U8folD+v/F/nQjD+lLiZG5i7v8Aox9HB/m/8T/nverHyXotgix2tlbxKn2Qsainy2ygaXHzril/Ol6pf6aTVwC7oJ0qhRxUUA7ZkgAcma4YhXZJXYq7FXYq7FXYq7FXYq1yAxVvFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX//0fU69T8/4DAq7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqX6/qqaRYXGoS0428TyGvfiC1P9liFG7AfyB0qSPQTrF1vdapK9y5PWjH93v8A6nxZVHcksibenZaxdirsVYb+aPntPJukteIOd3KRFbp/NI32f9iv2mwiuZ6M4h5XpGqeXvLrRax51vnu/MLn1fTjkd+BPxJEsMR4r/qt8GMYzn6pSOHH/Djvwo8P9KP1SZ1I7k8Ef5t8P+w+tP8A/le+sSrJe2fly8l0yEcmmLBG4Aci6xsnF/h+L4Zcr/MYLrikf4ZSjDihD+vLi9P+fwtXHDvkR/OjHi/33+64GYal+bGk6doVr5nuRMunXYQhwlfT5iqmYA1Vf2eS8/iyza6sf0f6TLh3r/ZMp0fWLTWbWO/0+RZreYckdTUEYyiRsWJFI7AhjXn/AM5QeUdJl1WYc3WiRRjYvIx4xxr/AKx/4XCK6piw/wAkfltdajdp5s85H6xqrfFFAf7q2B3RET7LOv8AN/N/wWY8ic3PbEPpx/zv6U/+J/0/8yIlIy8gPpj/AMU9Vy9UNqFybW2lnUcjGjMB4kCtMiTW6vDfy38o3H5iXLebPNrNLEjtHbWzKVUBT9sp4V+xlMpnNsNsQ/m/xplLi2H0j+ajvzS0hfLXmnQ/MligSN5BaShRQAE0B+H/ACHb/kVjGAge6/8AdfjhTEM4/NvXbvSNAkk0xuF3PJFbxPSvEyuI+YH8yg5fxcO/Oljs89u/MfnP8r5I5tek/TmgtxDzqvGWEnb4uPUV/wB+clb7PNHwR1HEayiOOZ+mWP6Jf7GH+l4Yy/m8aifF9WxP0yj9P+5j+P4pfQ9o0bV7bWLSLULFxJbzKHRh3ByZjRQRSUfmXN6PlzUX8LaT8RTIS5LFCflBD6XlTTQe9ujfeK4IclLMcmh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVazBRyOwGNKEq1LzXpWmCt7dww9/icA/dWuWRwylyBbBjkejGbr88vJ9swRtThY1p8LVofoyfgnrQ/rSjFMcRP8ANH9YxiynQvMmna9B9a0q4juYenKNg2/vx6HKpQMebCUSE0yLF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvL/z/ANXvrHRIYLF/TW7uEgkevGisGanP9jlx48sjxmPLn/Czgnv5b+QbPyvp8aRxR/WWHJ5AKsSfGQ/E2Y8MQkeKX1f0mBFFmeZSvNP+cgPOy+VvK1y8bcbq7HoQgdav/eEf6sfL/ZccIZRCH/5x38hDyr5Zhlnj4X14PWlYijUb4o1b/VXtmPD1erv+n+r/AMeYB6nlyUo80a/HoOm3GpyglYEJAALEk7IOK7/E/wAOII67f1vSkB85flb+WUfmjzTf3PniIy3yxx3IiY/CRLUgvxP7K/D6f/B5jE+NyuMf6Ppl/pv4f92iQ4vc9+sPy18tWBVrTTLSNl3BWFKg+NeNcH5WHI2f605z/wB1KTDgHXf+t6v90mzaDYMOJt4iD4oP6YjSY/5sfkvAFOPyvpcZ5JaQA/8AGNf6YY6aEeQSIgJjHEsahEAVR2ApmRGIHJIX5JLsVeXa6n6W/MXT7SlU0+ykuW2rRnb0lHttlUufxZVs9Ry1i7FXYq8q8ryL5i8/anqqbwaXClkh8XYl5qf6rLxysizXd6mR2eq5YxdirsVdirsVdirsVdirxb8/pbnzPbnyhosQnu0T63M9aCJUDemK/wC/ZviVF/5qyrJIQAJu/wCHh/2Uv6rLkP8Ac/8AFM1/KC4s5/Kunyaeixw+ioZQOjr8EwP+V6qvyyUYCPLr6kEUzTJodirsVeS/mTqw8uecNE1m52s5lltHamyljyTkf9Y/8SysVxV5M4i3rQNcsYOxV2KuxV2KuxV2KuwK7CrsVdirsVeSflAP0Z5j8yaETQR3S3KL/kzCtfwTK8fL+r6U9HreWIdiqU+avMEPl7S7nVrggR20TOa7VIHwr/sm+HCBaQLY1+TGo6pqnl6HUdaYtPdM8q1G4jY/ux/q8fiT/JysT4/9ymRtneTYuwKsllWNSzkKo7nbDVpDwPzL5w0v8vPOY1eC5jfTtUXjeRRsGMcij4J+C/zf81YMeKUPSdon1Rl/uosxAjY7X9KS/mh+YOg+dwjeXrW8n1iAj0LmGNgFNa0LD94y/wCx+H9jKsnDiPFxxhP+b/P/ANPwR/0sp/1JMTUDzqX4/q/7HiVfJHnL8wvPrSaRBPFp72ICXEjR0kruASG5Nzbj+z6WWS1O1wjGd/xX6P8Aif8AN4ZpOTqAPx/W/wCIZxZf849afcuLjzJd3Opz9W9RyFJ/1V6j/WZspkcs/qlwf0cfp/H+a1kyPM/6X0vRdD8r6ZoUfpaXbR26U/YUA/f1yMcMYbjn/S9UlEQOSb5kJSjzVrCaLpd1qUhosETv9IHw/e2RpIYp+SPl5tJ8vx3FwCLq/Y3UtaVJk3StP8jjleM3Z7/p/qxUm3oWXFDskrsVdirsVdirsVdirsVUlmDOY6Gq96bb+ByIkCaTSrkkOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KupirsVdiqUeZvLVl5msJdK1NPUtpxRhWnQ1FCOhU5VOPEK+n+lFS8cuv+cZ5dCnXUPJWpS2Nwv7MhLKf8/wDKyMZ5cXdm/oy9P/HURlKPW/6yOh1H81NAINzb2uqwjY+m3Fz7/wCa5Z+ajylCYP8AOx+uLI5f50f9KiG/N/zdCC0/le5IrT4HJNflw6ZL8xg6mY/zI/8AFKJR/p/6Rw/PLXod7nytqKqOpUFvuHp74nUafrKQ/rQj/wBVGQMP6Y/zP+PL/wDoYiOJeV3omqQ+PKA0+/4cj+YwdJj/AGP/ABclJx/zv9j/AMeVl/5yV0BTSa1v4gBuXtyB+vJieM8pwPxYcUP5wZBof52eVtZb04L1Y5Dtwm+Bj9DZcMJP01P+qeJt8Inlwz/qlm0MyTKJImDqe4NR94ymqayFXFDsVWNIqCrEAY0kBbHcRybIwNPA4SCEmJCoCD0wMW8VdirsVdirsVdirsVdirsVdirsVdirsVdiq11DgqdweuAi1eRf846O1naapoUq0k0++kU+FGFBT/ZxyZGBsMyXr+TYOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvMfy0/3JeZvMOsP1FxHaIf8mIEH/jXKo82Unp2WsXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXi/kW34fmfr7j7JgSnhUi3J+nKonf5/7pL2jLUOxV2KuxV2KuxV57r/5N6b5h8xR+ZdUkkn9BUEduxHpKU78e/JviZf5sonGUtifR/N/48g2dun816AqhRxAoBloAGwSxHz3+XGnebY1easGoQENb3ce0sTA8lKt+0nL/dbfD/qv8WVGBB4onhn/ALGf9Gcf4v631RXrY2S3yt5h8zWmopoPmOy9ZeJ4ahb/AN2wUE/v4j8UUjU/Z+Dl9nLBmjLYiWPL/Nrixy/qT/hj/W/2KTMH+jL/AE8P9N/D/nPQsmh2KuxV2KuxV2KuxV2KuxV2KupXfArsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv8A/9L1QP44Fbwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYFef8A593htPJmouvVkRPoeREb/hWwSKYsm8m2IsNFsbUAD0raFdumyKNsENgiqTrJq7FXYq+efzO8vXHn38xLTy28rrp9pbevJw2Kk15EH+Zj6K8spnI1Q2spN1s9V8q/lT5e8sgNYWiGYf7tkHNyfHm/Q/6vHIeACbneT+t9P+l+lgY3z3/rJ/r+mHU7C4sI5DCZ42j5gVK8hxqBlpjtUdv5v81mpN5X09tMGhtCrWIiEPpkVHADjShys4QRX+y/pfz/AOsxIedflJ5YbyTrep+VbSd7nTFihu4g3WFpGkQwFu/NY/U+z9n/AIayEpVwy6fTL+dFluBv/m/1XrmWIebfnl5U1HzDpMEujqJbqwuo7pYidpPTDfu/9b4soyS4d+cf4uH+b/OXirzQvl3/AJyA0S7f6jrYk0i/WgaK6HFa034zf3fH/W45kwEcguEozHv4Zf7L65f1OJmIiX0kH+t6fx/mvRdN1e01OP17CaO4iP7UThx/wSFhhljlDaQMf6yJQMeYIRxAI3ytisjjWMcUAAHYYBEDkrzz8+tFn1LyxNLa7TWbrcg9wEqJCPdYndsrmao+f4/2TKJpgX5sfmDHqPlzy5fKf96763llRdz+5J9ZVH+TL8OWkfj8f8SzAr7Hvd1axXcTW86iSJwVZGFQQdiGB6jIyiJCi0vHvLeov+W/miTy1e/u9B1El7Bzskbn4mg5fs8m+Hi38sb/AO7Gxwm/Qfqh9P8ASh+P9nxfzoNkfUK7vp/pfj/df12U/nxqBsvJ1+y7tIqRj/ZuiH/hThJRFPvJ0SaP5f0+C4IT0raBGr2Yqqcf+DPHBAWPx/WQBfJkWTQ7FXYq7FXYq7FXYq7FXYqx3X/zA0PQVrqV5FCf5SwLbf5I+LLRikd+X9b0tgxn/pJg99/zkHYTt6HlyzutUmIqPTQhf+Cb4j/sVbKpzx4/rkP831/8TH/ZLUY/Uf8AS+pQ+vfmf5hJNtDaaNAaFTKeclD26Sry/wBaBcrGpB+iEp/0snpj/W4f3U/9L4rDjHQX/W4of8ej/pJLH/KXzjqpUa35mm9PcFbWP0iQexKFEb/WaLAM+bkBix/zZf3v+8xT/wClqPFn/RgR/N9f+9xS/wB0tj/5xl03/d2pahKCatWUfEffiFyRy55Def8ApY/8XKSylI9T9iZWP/OOHlOChuYZLpwKVmkZsoOKUvqlP/N9DWQTzJNMgh/J3ynChRNNg4kUPwkmnzJwHTRPPiP+dL/eoOIfgy/W8z8z/kFfeV7w+Zfy4na3uYiXazdiY5APiMYNfst9n05P+DXJxyTw7f32L+KP8UP6XD/Fw/0fX/Rk2RkYecP4o/j6v91/WejflJ+Zlv580oXgAiv4SEuoO8cnyPxenJ9pP+A+2jZlSA5j6ZfT+PxxMyOo6s6yLF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxViH5p+Th5v8v3WkqeMzqHibwkQ84/vYccpybCx/D6lYn+Qnm7U761n8va7FIt/plELuDRk+yvxd2X/hk45OOSM9xz/iizlIH3/xPV5JFjUu5AUVJJ7AZNg+Xda1iX82PzFsbBVLaHYyMyVqFkWM8ppf8pZpE9NP8jjleUiuEf1Zf7//AEsWUj0/HE+pVAUUHQZMBi3hVogHbIkXzV5b5jdNE/MTTNRlBWHUrSSyLDp6isJY+f8AlNURpkYjev8AOZB6nljF2KuxV2KuxVxNNzirzD8rpH1vXte8xyCsT3CWcB/yLcFX4+zO3L/WyrnL3D/dMpbbPT8tYuxVIvO3mRPLWjXesSb/AFaJmUeLdI1/2T8VxCYiywj8uJNO/L3ylDf6/cpBJeVu53f7TSS0fiqD947KnBeKqzfDkMUDO5d/+bGMf4fVL8epkAZbrNL/ADA1nz/P6Xli3ey0gGjahOoq4B3W1hbu3+/G5cP8l/hwyyRB4YfvMn871eFH/i5f0fR/pfUgyA2j65fzv4I/8V+OKD1SNeChak0HU9ckxX4q7FXYq7FXYqkPnHzNH5d0971hzl2SGMdXkbaOMf6zf8Lg5blIFoD8vvKT6DavcX7CXVb1jLdS+Lnoi+EcS/u0XKojiPEf4v4f5kf5v/FIu90hg8vax5L1S4vNEj+vaNeuZZbQELJDIx/eS2vMrG6P9p4mdP8AIxjPg9MhLw/4ckY8fB/QnCP72Uf5soxlw/zf5yJUKP8Amyj/AAf5v1Sj/V4pf76Z6TqV3f8ACd7d7WAq1UnoJeQICfBE0sYRl5N8UnP/ACFyYmDy9X9KpYv9hljGf+m4f85AIP44f9jKPF/uf6qcZNLsVeP/AJ7anYa5pz+VrMNd6zIyNBFCOTRup5LJI/2Yl48vtfs8sryxERxS9P8AN/nT/oxiy4a3Pp/m/wA6T0zy3FeR6bbR6nT64sKCXjuOYA50/wBlhibH83+igm00yaHYq7FXYq7FXUxV2KuxV2KsM8x/m35b8ualFo2qXaQ3coBAatAD9n1H+ynL/KyyOIyG1f1b9UmYjbLbe5juUEsTB42AIKmoIPShGVkUxIp5boH+j/mfqin4Rc6fC4HiUKpX/gcqjz+Kej1jLWKhcXkNuOUzqg8WIH68NWkAl4F+ZvnrTvOeuw+UjdRwaJaOJr+ZnCrIVPw26NXf/K/yv9XBKEq4Y3xy/wBjFs4TVDn/ABf0Ysxvf+chPJekILa2uDP6YCqlvGzbD4QqE8Y/8n7eTjhEBzhAD+lxf6bg40cFczEf7L/ccSWx/n3fav8AD5b0K9uRTZ5RwX7/AIlP/IzKZZ8Mf4uM/wA3GOP/AHHFL/TQYcUB1M/6v4kunk/M/XlHpra6TG3Xfk4H/Db/AOq2R/M/zIE/0sn4/wB4kZO6P+mbg/I7UtUPLzNrNzcg/ajjJVSPDHxc0uscY/oj1I8SR/o/1U5i/wCcffJ8cDwfUg7OpUyMxLbila141/2OUnCTuZTP+c18N9/zTH8s/Kl55StX0Of05LKBq20ygByhJJSdf51/mX7S5KEe+IEv4pfz/wCl/R/qyZj8f0mJ+eIpfJfnCy81W446dqBFregDbkaiKUgf7H4v8n/KyUPSeH+f6o/12UO7v/3T2PrvlrFvCrjgKvOvzYgk15rLyrbmhvJhJOQaUhiIeSv+s3FcqnLhG3M+mP8AnMxyegxRLEojQUUAAD2HTJxFCmCx7pEkWFj8TAkfRjxC00r5Yh2KuxV2KuxV2KtV3pgtW8KrBGFYuOpp+GQA3tV+TV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2BXYVdirsVdirsVdirsVdiry/Q/wAztRvvPV/5Te3VrK2RWWVagr8KufU5HieTPx+H/JweJGq5S/3TM1Xm9QwsHYqskkWJebkBR3ONJAYzqf5neWdNqLrUrZWGxUSBmr/qJyb/AIXLvAmOYr+tUP8AdcLPw5e7+t6P90xbUP8AnInyjApMMsl12pFEak/89fTyEsUf4jAf7L/ZQjOH+yUwA5mP+y/4nh/2SQ3f5y6tqQ/3C+XJp4/5ploDvt8NF/42zFlk04/p/wBWP/STXeP3/wCb/wBJf7pI9c0Dzl5si9ObQbGFD/OoDD6aq3/DZSZYv4YT/rR4of8AHEcUTyiRSG0T8nfzF0eCT9F6hHaJJ0txISAPBOQlVP8AYvmRHVZBtwynX0yl4cp/7OX+6ZeLIef9bh/4+yPT/wAl/OF1GG1bzFMjnqsJkYf8nIl/4TE6nNLpCH+l4v8ApVj/AOnqTlme4fj+hwf7pH/9C6xzCt7rF/O9KAsw/wCNxI3/AA2GObUD+IV/N4cn/VX/AHq+JM/Ub/03++lNbD/zjXp8YAbUb07U+0B/xELiZZTzl/sf+KlNrN99fJXj/wCcdbKFg0OpXqAVqBId6+9ciDlH8X+xitz7/sUX/wCcf7pP959ev4xuacmO5/1ZFyXjZR1if8yP/EySDLv+z/jy1vyN19OQt/M14in7IPqGnz43K8sIz5h/qcv60Y/77FPhZCRHd/pf+POb8nvN0Irb+aLlmpT4xIR+Nw+P5jMOmI/DH/1QSJkfzT8P+km28i/mNaLyttcjmYAAB0IHzPItkfzOXrCH+aY/9U4JOeX82H+x/wCJUksvzYtTRZ7OdenxAA/MfZyQ1B/ih/pS18ZlzAH9Wl7ebvzK0yIPd6VFdEE8hEw3A/l4Fm5f7HB+bh1jMf0vV/xPD/s2w5Idx/2X/EtR/wDORDaeQvmLSLuxVqANSu/faX0P+FyyOXDk2hP/AE0f+qUpy/2CgwOwP4/3X+wZbo/51eU9VIEV+kTntMGi/wCHlVY/+Hy3wSeXDL+rKPF/pL4/9iyOI9K28+H/AGM+Gf8AsGWWGtWWoCtnPFMPGN1b/iBbIyxyjzEo/wBYMDAgXR/rUj8gxdirsVdirsVdirsVeP8Aktjo/wCYms6aQVjvYkuEG/Ubt/wTPM2Vw6+9l0ewZYxdirsVdirsVdirsVdirsVdirsVdiqldSCOJ5D0VSfuGAlXnH/OP6c9BlvTu13eTzEnrueO/wDwOQiyk9Myxi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXn35p3HmyxSHUPKojligq08DD4nApsh/1eWVnL4fMcUD9Uv4oJE+HpxMm8oeYR5i0uDVPSeBplq0cgoykHiykH3GWWD9Kmuid4odirsVdirsVdirsVdirsVdirsVdirDfNX5d/p2c3kOo39lPQAG3nKoKf8Utyj/1vh+LK7yR+mX+bKEJw/wBzGUv86aLkORNfzfTwf7nj/wBk8Q8v2vmry7591G20qaPU7wwgytc1UugEZG6dH+DjyweKRvKPH/O8P0/6SP8AvWfGf4hf9X0f6WL1aD84xp4C+adPudMfYcyvqRHxPqJ9gf62WRnjmfTKv6OT0f8AHZf5qLiTQ2/ren/ZfSzXRfNOma3GJtNuYp0PdGB/DrlksZjzZGBCbZBg7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/9P1TkQrskrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirzv8/oDP5OvlAqB6bH5LIjn8Blc0hlvlK4S50eymj+y9vER8ii5MKU3wodirsVeQ+UA0/5m63OfsxWkUY+n0m/41ysc0l69liHYqwr8wfzJtfKcQgjU3WqT7W9tHu7E7VIH2UH82CwBxS9MP5387+qzEep5f7p5ZP54v8A8u4p5bmIX/m3Vm+szxqSUiijB4KWX7Kxx8uC/wCt/L8VcJxPrl6R9MY/xfj8fzknvO382L2b8v8AzT/irQ7TWynpm6j5FRvQglG/4ZcuNdGBDIsCEm1zyppWvJw1S1huRQ09RASP9VvtL/scx54IyN8j/OjcJ/6aPD/smBiDv/x2X+m+p5h5p/ICx02NtX8kvJpmrQVkTjI5R6bmNw5dlVl+H4fh/nR8ETPDuJSnD+LHLh+n+jwRj/s+L/N+pnGRjy/0v4/3zNfym88N5z0KLU51CXKloplHQSIaNt/lD4v9lmSee3JlIMzxYoLWNOTUrOexmFY542jYezAqchMWFfInlLynqWua/p/lG6hdU0e6mkmdgQPTLI9f9k0fwf6+UGYI2+o+nh/H8xeIF9kZkqk3mjyvZeZbJ9P1GMSRuDQ91PZ0P7LL/NlU8fF5SH0y/iigi3k/5safdWHljSfLl05nnmu44S1allBdo6n4asq8F5YLJHqZgk7l7RdWEV1A1pKoaJl4kdqZYY2KYsc/LrWn1CyltJ2Lz6fPJaux6sEP7uRv8poinL/L5ZIG+fP+L+sykyzCxdirsVS7U9fsNLQyX08cKqKnmwG3jTrk4wMuTIQJef6v/wA5E+V7ElYZJbojb9zGSPoduK/8Nh4APqlCP+y/3HEzEB1IH+y/3KVH/nIO5v0B0HQNQvSTQll4L9Dos/8Aw3DKDnwxNGXq/mxjxS/0spQn/pYzahKNc7I/hj6v+Pf7BW/xV+Y+vER6fpcGlxmtZLl+TA/5K/8ANUGAaqH8MZzP9LihD/ZRxS/0spMhkj0BP9bijH/c4pf7po/lJ5n1uo8x67KYnoTFbDgK/wDEeP8AqquEZ8vTgw/1fXLh/wBLH/Zca+JLpUNuH0/j1/50U50X8hPK+mutxJbm6nUD95Oxckg1qVPw5ScRn9cpz/2Mf9K1GJPMks9stNtrCMRWkSQxj9lFCj7lyccUY8h/nfxf6b6mVVyReXJdirsVdirsVdirwXzHAv5e/mLZ6vbD09O10GG4A2USVA9Q9h8XCT/kZ/NleH03Dv8AVH8fj6uFlHu73vWWMXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYCqxYlUllABPXK44xHcdVeY/mRrFx5ivU8kaLJweccr2Zan0oe8e3R5vs/6uTnLgG31z+n/imY9Ivqfp/4pA/lDols+u6nqlogS1s1TTrenTjF8Ux+bSftZTCFH+qP9lJBFbPX8yGLsVdirAvzl8uyavoMk1kpa/sWW6tyPtB4zy+Gn8y1XKpmvV/N/wBz/EkGt2QeSfMieZdHtdWTb14wzDwYfDIv+xfllpUik9xQ7FXYq7FUp82amdL0q7vhuYYXcfMA4Ehj35NabJp/lWxScUlkQyue5MjNJU/7FshD9Kndm+WIdirFvzH8l/4y0aXRvWNuZCrCQDlQqQ4qlV5dMqnxV6a/zvp/3ysR0D/nH7TYrhdR8yzy6zeIFCmfaNQvQJAp48f8lvg/yMrMZ5BUzUf9Tx+mH+m+v/S8H9LiQTKX1f6WPpj+P9K9LsrBbTkIiRGacU/ZUAUog/ZGTxw4dh9P8Ma4eFKMy5XYq7FXYq7FXYqx7zB5YGsX9hdzEGGxlaYoehfiVif5xt8WVTBO3T+JNshy1DsVdirsCpbrmjR6xbNaSvJGrUPKJirbGuzrgsj6Tw/j+kyjIjkhfLflDTfLyMmnxBGk3dz8TsfF5G+JsrGMA8Rucv50vVJgB/0knmXJdirsVdirsVS271QQ3MVkoJklBIPai/b38aZG/wAb/wC64eFIr8fjhTAV3rhQ4OG2B3GFV2KuxV5d+Zv5BaH5+uBf3TSW94FCmSOm4HTmjD4sxZ45g3E1/RkOKP8AuosSD0/4qLC7L/nExbKUPaa3eRRr9kIKEf6rh9v+By0ajUxFcQ/2fD/peJnHJkH8X+l4v+LY9L+W+raR56t9Mt9auv8ASbY0upHPqELWsIYdfip8ORjnyG/onk/ncPo/0nFNeOR/mn8f1npJ/I/UpyHu/MF9Iwp3HTwyQzZ++Ef6okyjlmBV8P8AV/48h7v/AJxws7yF0vNSvZ5CCFZ3JAJ78PsnBKeaX8Q/q8PB/sosDOXf/vUV5Q/5xs8t6AvO7Vr+Yihab7Ne5CL8P/Bcsp8GU/rP+bH0/wCz+qX+xYcN8/8AY+n/AHz0DSfJ2j6OB+j7OCAgUBSNQf8AggOWEaaHUcf9LJ6/93xKIAb/AOy/i/0ycqgXoKZkRiByZrsmrsVdgV2FUh86+WYvM2kz6VNt6q/C3gw3Rh/qtlOQWNuY9UVVPJ63iaVbR6mON2kYSTetSvwcv9kByycJcQvkkp1k0OwKk1r5fji1KbVpGLyyosagjZEG5Vf9ZvibKOE3Z6fSlOcvtCGvLKK7ULMtQCCPYjuMpnGz3JBpEKvEUGWgUhvCrhiCrsKuxV2Kup3wUrsKuxV2KuxV2KuxV2KuxV2KuxV2BXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeSflTam781+Y9YcfanjhU7dEUV/UuUAWfcyL1lmCCp2A75cxeYeaPzqgjuW0byvC2p6p9mkf92h/4sk+zkpmOMXP/Sx+qTMgR+r/AEv8SVR/lDr3mwC4866nKEbc2lqeKAVrxL/tf8C3+vlPjZZ/TWCP+my/8d/0/wDmsfEkeXo/q/V+P9MyHTvyD8mWNGTTY5HA6ylnr/rB2Zf+Fyr8vfOUz/ncH/TLga+Hvv8A00v97wxZhp/ljS9NT0rK1hhQdo41UfcowjTQG9A/0peuX+mkkRATNVCig2GXCIHJkuyauxV2KuxV2KuxV2KuxV2KuxV2KuxVRuLeO4QxyqHQ9QwBH0g5VPHGYqQEv6w4kEXsWI6v+T3lTU1Kz6bbqSalo09Nq/60PBsqGnA3BmP8+fD/AKScpQ/2LEx94/qmUf8AcMUvf+ca9CIA0ye5sqNy+CQsP+SvPJRjkgbjK/60Y/7zgZAkdfuQP/KrPO+ksTpOtmSMD4UlB7dK/s5P8zlHOMcn9L/pNs8aXM1P8f0lGTzJ+aOgsGvbGG/gQgH0hVmHj8BZl/4DD+bh/HGUP6X8P/E/7JAmL3H+l/hRtv8A85K2Fq/oa5YXVnOOoKggf8EVk/4TLoSx5N4y/wBNGX+84mQEZfSf9N/xziZpov5t+V9YAFpqEIc7BZSYmr/qTemTk/CJ5VP+qROX+lh6l8M/g+r/AEn1/wCxZfHIJByUgg9CMq5MOS/FDsVeQec4f0R+YWkasSeF3G1sfCtGCj/h+WVDaXvZR3ev5axdirsVdirsVdirsVdirsVdirsVdiqR+d7z6nol7cV48IJDX6DgKYpP+TdqbXypp6MKExcj/siWyEFLNMsQ7FXYq7FXYq7FXYq7FXYq7FXYqldx5m0y2uVsJ7qFLl/sxs4DE+yE8ssGKRF0a/nMxA800BrlbB2Kpe2u2Czi0NxELhjQR8xyJ/1K8skcZq6LLhKPAp0ysCmLeSV2KuxV2KuxV2KuxV2KuxV2KpfqWrQ6f6aybvM4RFHVifD/AFftNikC0wxQ7FXimhDl+ad6aAlbf6Rt8v2sr6suj2a4t47hDHModG6hhUH5g4ZQEtjuwYLq/wCSPlzUJPrMET2NyTX1bVzE1f8AY/D/AMLlcccofRKUP6P1w/0slj6eVhJx5E87aBX9A6yl5FXaLUIyaD/jNF+8OWHPkH1Rhm/pR/dT/wBJ6Yf7Jl4kuojP/Yf7n/fNf49886MhOtaAt0i9ZLGcHbxED8pMRqMR+oZMP9aPix/00eGEf9MvHE8xOH+ly/7GH/FIi0/5yB8vgiLVo7rTJe63ULKAf9deWWwMMn0ShP8Ao36v+I/2bKonlKP9X6Z/6X/jzMdI896HrC8rC+glHgHAP/AtRsmcMh0/0vq/3KnGQnqOGFVIIOVMSuxQ7FXYq7FXYq7FXdMCuwq7FXZE7K4GuG1dhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv8A/9T1QMgOaW8mh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVKfNWkx6vpV1YTDkk0LqR8waZXMWFYf+Q+utqXluK3m/vrJ2tmr/AJBoP+ackDbKT0bJMXYq7FXi93cDyz+aCSzHhb6vaiME9C6nYe3xBMrhzI/zmQFvUtf80af5fgN1qcyQx9uRAJPgo7nLIAyTGBLzCTzr5o/MBzbeU4Tp2m14ve3A+Ijv6Cd/8/jXK5aiMdofvZ/7CP8AX/H+ZJeIR5es/wCxj+PxFGjy5oP5VWUmt3Be91aX4RNMecssjdI4gfsBm/l/2btkOAzPFkN1/pIf1Y/8V/m8KIgy3kb/AB/Cx658vzaB5U1fzT5iUNrOoxuTWhMauOMcCn9n4ac8gPWeLl/Nj/R/nLfEb/0r0f8AJ7TH0vynptpJ9pYAf+CJcf8AEsvgdmLMsmrsVQmqzCC0ml/kjdvuBORlyUPNv+ccbdV8tvcjrcXU0h+kjIRCS9Uy1DsVUVto1cyqoDtSrU3NPE5WIAG6H9ZFK2TSpyA0NOuUyFbpeMfmNqH13zjoemXCn07dmuGr0PH7Jp/NkQbH7Gb0jzT5pi0jTX1MvwgVeRelaD5ZYDxGgsQDzeff841Sz3+najq85ql7eO6E9wO/44RLf3MSbZ55m/M3y95YqNWvooX/AJOXJ/8AkUnKT/hcyBikd+Q/nS9Ef9NJkMZO/L+t6XnMv56ap5mn+reRtMkukXcz3AKIaeABX4f9ZuX+RlGTLjhsSckv5uP8f8SgyjH+n/V/H/Eo8+Q/O3mL99rOrfUFYbwWg2A/1/2sH5jIfojDH/W9cvx/nI8Q/wAIEP8AdI3TP+cfNEik9fU5Z9Ql8ZnNP+BXISE8n1Sl/Vj6WJJPMs903yxpmmII7K1ihWgHwoAdulTSp/2WRGmh1AP9b1/7phwApoAB0y+MQOTNvJK7FXYq7FXYq7FXYq7FXYq7FXlv/ORWgjUfLL3sakz2DrOhHUUPF/8AhTlU9t+5RszTyPry69otpqankZolLH/KA4v/AMMMuITLZPsCHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWE/mV56Pl23SzsE9fVrw+nbxDrU7eofBUx4hEWeQZAdT0a8peU4/J+jTTzH1b+RHmuZm3ZnpyIr/ACr9lFyiIJ9UvqP+xj/NRdndhH5X/mBo/ljyxHcalOBc3c8sywR1eVy7bBI0+L/gvhy+EKHEahD+dL0QbDHryH86TP8AytqOua3L+kb2IWOnlT6VuwrK1ejzn/dX/GNf9nlfiCe0R6f9Ul/H/Uh/N/rNZI6f6b+L/S/wsvyxDHvN3nO08qxRXWoK/wBXkkEbSKKiOvR5P5U/ysY1dE1/N4kjdiXm784rD0xpnlcrqmq3QKxRxHkq1H95M4+FVX+XJZAMQue39H+OX9WLLh4dz/pf4pMg/K/yhN5U0SPTruT1bgs0khH2Qznkyp/krlECa32/o/zYsbtl2WodirsVdirHfzBtnudAvoY1Lu8DgKvU7dBkJmgkGkP+WmtwaxoFpcW0UkEaxiMJKKMCg4H6K4YkVseP+kjbpuyrJK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXVGC1dirRYA0742qVRaUfr7X7vJXiUCkgrTxA+0Mro3/va/33/HU2m2WIWhQNx3wCICrskrsVdirsVee/mz5Jvdbht9V0NgmradJ6sNdgw/biJ/yspkTA8Q3/nR/ordK/5a+Ydd11rm51u0awROEaRNT7QH7yRWHVWbJDLGf0/7IGM/6qeIHkzvLELIyxHxUr7YAVXgUG2CldklWmvbIkqHNy7YlV2FXYVdgV2Kuwq7FWsgrsQClxxPNDeTV2KuwK7CrsVdirsCuxV2Kuwq7FXYq7ArsKuxV2KuxV2CldhVoGuR5q3kldirsVdirsVdirsVdgCuwq7FXYq7FXYq7FVkr+mjP4An7hgOyvMvyDAl029vSKSXF7Mzb1OzELX6Mrgykx781L3XPMvmm38k2rvZ6ZLGJJZkBq4/aUP2/lwnPwio/wB5/uV4q5c3p/k7yNpnlGzFlpcQQD7Tnd2Pi79TkIY+Hc+qf86TACmRZel2KrSD2yJVdkldirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqFvNPt7xDHdRpKh6h1BH3HKJ4YTNkRP9KvV/pmMog892Eap+RnlHU1cNYJCz78oS0ZB8QIyq/7HjxyBwV9JnH48f+xy8aBCuVj4y/3MvR/sWLyf848S2Xx6FrF3at2qQR9PARcstGTPHbijw/zfV/xXB/sWwTnHYH8f5kox/wBgqLoH5k6EpFrew6iopQSCh+9+Tf8ADYnUy/jh/wAq/wDjvCk5O8cv5v8AF/vmh+cuv6ISnmbRpY0TYyw7r/rb7UyUdRiltZhL+bL+H/fLxQPfAn6Ysf8AzX/MzQvMWn6fqOnz1mtLuNzEx4PQn46BvtceP7OTlAg2D/nR/wB9H+FsEa830Ba3C3ESTp9mRQw+kVxqmohWxQ7FXYq7FXYq7FXYq7FXYq7FXYq8/wDz0vWtvKl2ENGl4xfPkaUyMjTKLLfLVsLXTbWACgSFBT6BggKDFM8mrsVdirsVdirsVdirsVdirsVdirzTzB/zj/5Y164ub+7jk+t3Lc/VEhBRv5ox9n/guWYxhK7EpxI+nl6f99/sooN95Ynb655i/KGf0fMMj6p5ZdgqXXWWDwEo+0y/8L/I/wCxl8M/GeHJ6Mn8Moj0T/H+m/rtglxbS5/zv+L/AB/pkTF5v8xfmpKYfLYfTPL+6veOB6sorQiBf2P8/j/Zxlm4Dww9eT+dL6If8V+PpXiEdo7/ANL+b/VeheVPy00Xy0qtZwB7gbmaT4pCfEu2+VeHZuRM5fzpH/cx+lrqzZ3ZZl6XYq7FXYq7FXYq7FXYq7FXYq7FWG6RMNc8wXV3WtvptLeMdvUI5Tt81/u8rO5ru9X+cyPczLLGLsVeMWPH/lbNwFG/1IEn/Yr/AFyofpS9ny1DsVdirsVQt3p1teKVuIkkU7EMoP68pnijPmAUEWwvWPyQ8qamS7WSwyH9uE+mw+RTIDCY/TKcP6p9P+lYiPDyuP8AVSiH8lLnSyW0LWr2022VyJV+6TLBPNEc4ZP+GR4f9lD1MxKXfxf1h/vmm0n8ytLqbW9sdQQdBOjIxH/PPitf9nhOol/Fjj/yRnw/9NZf71JyGt4j/NPq/wBl6UJ/ysnz1pFf0z5cM6D9u0lDf8Ivrt/xHD+axHmMuH+tEzj/AKfhxQ/2Uk8cD0nD/pb/ALmPD/s0wh/P7SYlA1W0v7CQ9RNbtQH/AF16/wDA5OE8U+U8f9WUuGf+l9X+6X03XFEf1vTL/S+pMNP/AD38n3nwrqCIT2kBU/iMuGEnkRL+qf8Aimfh91S/qspsPN2kagvO1vIJB/kyL/XIyxSj0QcZjzR8eoW8n2JUb5MDkeEsKRAIPTIEIQ1pqEF2XWBgzRMVcdwR2OIKSEVhQ7FXAU2GKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv/9X1OO+RHNV2SV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvIvIvLyt5y1PQJvgtr8/WrfwJP2wP8rK8fKv5n+5ZDce567ljF2KqFzdRWsbTzuscaipZiAAPcnEC0gW8D/NrzDafmG8eieVbeS+1C3cMt1GSscRruTJ3yvLw4yCT+8/hjH1cTKQEP6382LHdNeby5qhl/NG1uL5ogBBLQyRADvwX4XbKzkjn2lLw6/yf0/7KKOIT2keD+j/ANIPQrr/AJyBtbhlsfKenXOpXDABAsZjQeHNmHJVX/U4/wCXlhOLEN5D+rj9Upf73/S8cv6CbjHmf82P4/3HEmflX8vdU1TUE8yed5EmvY97e2ir6UA8fi+3L/lf8Syok5Onh4h/D/FP+lNiZcXkP5v/ABSF/wCckpS/l6KxVirXV3DHQdwTuDlsjSYvT9Jtha2kMH++40X7gBko8mKLwqk3mvzNbeWdOm1a9DNDAOTBBVqey4ARdHa/4kxFvK/Nv5txa/oEVroDM2pa2xhgiJHNEJ4vI4T7C8Q32uX7WGXpBlzH8O3Dx/7KX+m9P9VsI4d+f838W9N8i+VovK2j22kRbiBAGPix3c/8FleONDdqZBlquxV2KuwK0wrtkZWrx650w63+Y8lKcbGyHXs0nQ5jkbefvbDs8m8/S+YvOXmZvJlnI5hR+Eg5fDQdS1Ph4rlpzcMeW5/hWU9ttmS+e/zVtfIelxeRfJzhr+ICGSboEY7Oat8JkZv2v2MtxDwxZ3kfVw/V+P6qxHD5p3+Sv5FT6TLNq3m+K2vbi4CvEXPqspO7Fua+nX/KVmzGleY+sTH9Y8MZf5kJf7Gf+laT6+f+y/4m+F7dP6dhE0qKqRxqSQABsB1/2K4RjGP6QI/1QziA+evKfmPzF5887fpbRC1vpdq/pzVclGQV24E8ebf5OXnOY+gcU7/hl9MP6bZLJXpG76SyTU7FXYq7FXYq7FXYq7FXYq7FUHDqtpO5hhmjeQdVVwT9wNcmcco8wR8GRiR3q0VxHLURsGKmhoa0PgaZEghBFK2BCE1TT49RtZbKYVSZGRh7MKZCUbFK8l/5x31N7OPUPKl0aT6dcNxHfgxI7/5S4wlYZnk9lybB2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KoXULh7a3kniQyOiMyoOrECoUf62RJobqHzT5X8+X1tq9xrOpaVeX+vyuY4YwhCRRj9hC3Q/5WV+LjkeKUvSPpxxj6/6/wDNZGcJcz/VjGPqZxc2H5h+eQbe6MWgaa4o4WkkzKRuv+T/AMksJ1F7Y4n/AIZm9Mf9J/x2X9dHifzRX9KX/E/j+sxTyZ+V+u+VZLjR7TS0e5ldlj1d5FPCJurJC3Jlfj9hV4/HmOJxl9QyHLH6cfDLwP6/H9H+/YCQ8zL/AGP9b+b/AL99A+X9LfSrCGxlme4eJAplk3ZiP2mzLjf8TMknmmRwkoUbi2juYzFMoeNhQqwBBHuDkZREhR3QUBpflnTNJZn061ht3f7RjQLX58RlMcEYGx/sjKX+l4+Lh/zVEQE1zJS7FXYq7FXYq7FVoUKKAUGRArkq7JK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsKuwWrVANx1xpVvM8+FDSla9sFqpzxngeJ+IA0yJHVIKjpcc8cI+tOXlO52A+gBckJGXl+PeqNySHYq7FXYq7FXYq7FXYq7FXfLArhirsKqUUbKWLGoJqPYZAA2lVyaHYq7FXYq7FXYq7FXUyNK7CrWQrdLeWIdirsVdirsVdirsVdTAQrsKuxV2KuxV2KuxV2KuxV2BXYVdgV2FXYLV2FXYq7FXYFdhV2KuqDirsCuwq7FXYq7FXYqhNVlENpNKdwkbt9wJwFWAf84/W6p5XinX/d8s0h+l2yEUl6KYELiUqOYFAaCv348Au0KuTV2FXYqt5CtO+BK7Ch2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KrGQOOLCoORkAdih5Z+bn5QaFq2jXl5DaJHexRNIjxfBuvxmqj923w8vtLmMcQhvGx/R+uH+lnxcP+ZwoEa5bPPfIVr570ny/b+YNAvV1KzCEvZS1LAISrxxs/L7NPsxtF/qNmQdSY/XETx/6pH64x/nT+iX/AE14W3jr6hxf0v4/+K/2cv6j2H8t/wA1NM882xe1rDeRUE1u+zoe/wDrJX9r/g+OXGIrij6ofzv+KQR1G7N8gxdirsVdirsVdirsVdirsVdirzj86m9e00/TRT/S9QgQ122B5HK58mUXokaBFCDoAB92TYr8KuxV2KuxV2KuxV2AK7CrsVdirsVdir5+1PRdf/M/zWLLXrSey8s2LMQjgqJmQ8V5v9l/Ub4vh+Hh9h/28olmExwQ/wA6VS/zv6n+6UyBHCL/AKW0vV/nJz+gNR/KW6N1oqvd+WJnrPb7s9tU/FPD+08S/adf+usYZOD05Pp/hy/zP6OX/i/xIxl0l/my/mf1v6L1nRtZtNZtUvtPkWa3lFVdTUHMmUSFlEhH5FDsVdirsVdirsVdirsVdirsVQWsanHpdlPfyn93bxvI3yQFj+rFRukf5baa1lolu8v9/cg3Ep/y5T6j/i2VwF796SbZTliHYq8bAWD82CUIBmsDyr7BAtPf4MrHNkHsmWMXYq7FXYq7ArsKuxV2KuxVSkt45RSRQw9xkDEHmikuufKmk3QIntIXr1rGv9MxzpMZ6BEogpHc/lH5VuBR9Oh32+EFf+IlcmMIj9JnD+rKSIwA5fpS0/kJ5R5CSO0aNh3SWRf1PhEcg5ZMw/zo/wDEs7PQyj/VKtF+TekW4H1a41CH/UvZh9H2+mS/e/6pkl/WGKX+6xqZTPOU/nH/AH0Ut8l/ky3lfzBca7FqVzNDPy/cSEt9r/fkjl2lK/zfC2RGTLykQYf7KX+bH0R/zYp45HYn8f7n/YvUMvQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsKv/1vUqElmB8f4ZWOZSqZYh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvNPzp0Gd7WDzHpwJvdJkE22xaMbyp77f8AG2USPCeL/NkyiaO7KdP88aXdaRFr0lxHDaSoG5uwUA0+JTU/aU/Dx+1mUIEmhv8A8T/OTwG6DAb789J9Zkex8j6dNqUykr67qUhB8eR6r/rNE3+Q2VzyY8e0jxz/ANTx+r8f1uHg/pqTGPPc/wA2P4/47/Saj/KTW/NLpded9RZ0FD9Utvhi+Tt+1/seOVHLknsOHDjP8P1Sl+P87+sxM5EUPR/V+p6ZoHlrT/L9uLTS4EgiHZAB9574wxCHL/TS+piI0mMsSyji4DA9iK5KcBLmBL+sOJTu1DCkQpGoUewAyMMUYfSIw/qxjFQAOSrlpCXnX55eVbrzBoB/Rqepe2kqXESjqxQ14f7LKZy4d+g+pbpl3ljVf0tptvfcWjMsakqwIKmnxKQf5Wy0EHl/sU+5N8khSlhSdDHIoZGBBBFQQetQchKAkKO6pHo3kPQ9Ene702xgt55N2eNAD8lP7C/5K8VyqOCI7zw/TxSlPh/q8cpcLDgH4/3v83/NZDmQzdirsVdirsVQ97ewWMLXF1IsUSCrO5CqB7s3w4gE8t0gW+bLbz/q+q+aNX/wdB9Ymu3jhS434okY48qn4V5fa5NlJmMZ39U/4Y/j6mZkI+b0zyz5Lh/LvRb7Wr1xPqjRSTTzN3IBYIhb9nl/wWRjAyPFLr/D/NYDc2ebB/yI/Ke31nR7zXPMEQlm1fkIywBZYzX94hP2XZjyVv8AJXIyj4hvlX0/1v5/9JEtzb3jRNJj0iyh06Es0duixqXNWIUUHJu5zIF9d/6SSWBfn15ql0fQ/wBH2VfrupuLaIA0PxUD0/4JI/8AZ4TLhF9zKO2/cnn5XeSh5Q0OHTW4menKVlFOTNu1fH+XKsca3PVhbMMuV2KuxV2KuxVgf5h/nBpXkiaK0u1lnuphyWKJatxqRyP0rkoiPOREGYiDuTwrPy1/OPS/P0s9vpySxy2wBcSLTYkgfEPh/ZwzER9JE7/rR/3SZRA5HiZ/kGt2KsM/OHW5NE8qajqEBIkSHipHUF2WHb/g8bpMebDPy0/JnRJ/LlpeTpIL+7gSV7j1CJAzgP8AA6n4Qtfs5SOM+rin/R9Xp/0qknvk8w/IzznH5S853+iXt1JNYXUzQRSyVIaVXKoS32VaRf8AjXMoTlMVI3L6v+kWyydjuX1rlbU7ArxbWOHlr8zrW4HwxatAUbwLio/4Lkif8HlUNiQzHJ7TlzB2KuxVrIq3kldirsVdirsVdirsVdirsVdirsVdirsVW8RWtN8r4Bz2VdliuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuGRCtUySW8BCHYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgKuwq7FXYq0TTATSrSG5duOR3StikLVqKEf59cETalVyaHYlXYVdirsVcRgItXYVdirsVdirsVdirsVdirsVdirsVdirsVdgBV2FXHAVWvUj4djgKrhkldirsVdgpXYq7CrsVdirsVdirsVSnzXMIdIvZSaBLeU1+SNkTySGJ/kJA0Xk6wLjiZFd/oZ2K/8AC5GCl6FliHYq7FXYq0FANe5yPD1VvJK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqo3VstzE8En2JFKn5MKHIyFhXlf/OO07W+m3+iTCkunXskZ/wBka/8AE+eRxmwyKUfnn5Sk8usv5heXD9X1CzK/WFUfDKjEIS46VXl8f86f6uQh+5O393P6o/w8X/Hv916kQPCff9UXr3lrWY9c0221SH7FzEko/wBkA2XqRSZ4odirsVdirsVdirsVdirsVeYfms3q+YPLVoByLXjuR2ogWp/2PLK5bsgHp+WMXYq7FXYq7FXYq7FXYq7FXYqoXVylrC88hokalifYCpwKp6ZHLHaxJcHlKsahz4sAOR/4LIg2LSUXk0OxVayhwVIqDgItWGaF5Dby3q0l1o8gh0u5Baa1oSok/Zlt+0fP/dq/ZyqFw9P1Q/hlI+rF/R/pRl/sVBoV/pf6P/HWa5crsVdirsVdirsVdirsVdirsVYN+cErNoq6bHs+o3VvaD5SSL6n/JJXyEzQTFm0USxKEQUUAAD5ZICkL8KuxV4zrAaL82LENxZZLJiPEfDcb/8AJPj/ALLKurLo9my1i7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWL/AJiecIfJ2jT6/cxtKlsAQiGnIsQign7IXk32myPCCdzX4/m/xJCl+WXnxPPGjRa0kD2wkLLwff7J41Vv21/ysNi6G9Ka6MtwodirsVdirsVdiqxAR9o1OAKvwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq//X9UKKVyIVvJK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVKaBJ0aKUBkcFSD3BFCDkZCxSvnjTfy2sR5nHlDXS72MMr3lipYhXVgC9u4+yV5Jy+Hi7PFN+w2Yw4pjhuuD0y/px/nR9XFGf8AT9X1/wA6LLeQ934/H+e+gdP0220+IW9nEkMK9FRQqj/Yr8OXwxiHLZgBSLyxLsVdirsVdirsVaAA2GAClbwq7FXYq7FXYq7FUHqOq2umxGe8lSGNdyzsFA+k5IQMuW6REnk8w1X8+Ybu4Ol+T7OXVr3f4lBWJabVL/aZeX7X7uJv9/ZGc4YvrN/0MfrlL/dcX/JKOWX86MWZEYfUf82P4/3EZ/0uFBw/lh5l85yCbz3eBLMEMLK2JCnwEjD4fh+Jf92v/wAXZScs8m0R4Mf83jl/u/8AZS/5JRYSmTy9H4/zv91L/NZ1+Xn5f2Xkuzks7FQPVnklJ6mjMfTWp+L4YuC5HHCtzufx/wBJIApi/wDzkvqT2fk24WM0M8kUXzBbkR/wmWySGT6N5i0bQYLDQLi4ht7swRLHAzAN9kLRV+eSxQJjYZcBLLvlgLB4vesnm/8AMmG0NHtdEhMhB6CXbf8A1uU0P/In/Jyqfqofj8fR/pmZFBnfn7zVqOgWofSdPl1C4cgKqU4g1H941ajbLPEhD67/AM0MAQPqv/NYbp3/ADkAlq3oeadOudMkUVLFSyV9mXJwnjyfTL/Nl6WY4ZfSf9Mz/QfPeia+B+jLyGckV4qwr/wPXLZYpRF9P5ynGRv/ALJPweXTplTBvFXYqxfzl+iNFgm81alAjS2UJpIQC3HqI1r/ADO2USwRmd/+O/6VIjZecf8AOLfliez0i71+7ThLqk5kUEf7rWvA/wCyd5P9jhgQTt/VUl7flyFKaZIEMkhCooJJJoAB1qT2xAtQLeC/nl+c+gahol55csHe7uLhAOcQ+BSrh+XNvtiqfsKyf5WSnARG5iD/ADfr/wCO/wCy4v6LYYiPM/j8fzeJhlv/AM5AeYNH8qWlkmncFktzawXJJBZkBh9SNP2mXj/weCOXHy9XFD6v5ibj52P9KwfV7u50rQrXybLp0kOuPdreeqd3YtyCAJ9pfh9P4f8AIzHiYH95Z/rS+ngY3EDi3/3v+Y+zfKGttq9hHPJDPBIoCMs8ZRuQAqeJ7N/Mvw5ZGUZbxIn/AFfxxf6ZZAdE9wsHiH/OR0R02XRPMMYq1rfKrV/lJE9Pl+4yqql7/wAf75siXtymoqOmXDdrbwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqtJA3OKrsVaUUFMAVvCrsVdirsVdirsVdirsVdirsVdgV2FXYq7FXYq7FULFqEE00ltE6tLFTmoO68hVeQ/wArGk0isUOxV2AlXm9hrN1YefLjS5SxtL+2E0QY1o8Y4Pw8FZRlcMnFt/NLO7HuekZYQwcMQrsKuwEK7FXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsCuwq7FXYq7FXYFcMQrsKuxV2KuxV2KuxV1e2KuxViH5s3DQeVtSdDxb6vIBX3FP+GyMimKr+VlsLfytpkXhaxH71DYI8lLKsmh1cFq7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiq3kK8e+KrsVeP8AlAfoX8xdW08kLFqEK3CDxYEcv1zNlUO7zZVsjv8AnJLVUsfJ11CT8d00cKj3LAn/AIVcmViGZeQdNGmaBp9kBT0raIEe/Ecv+GwQ5ILIMmh2KuxV2KuxV2KuxV2KuxV5b5mVbz8w9HgPxfV7aeU96VHFT7bjKZc/kyvZ6llzF2KuxV2KtVpkSaVvFXZJXYq7FXYqx/zwS+mPar9q5ZIPokYRn/hWyE+TIMgyQYuwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWDebpjdeZtE007xq8903sY42SM/8FNlcu7zZdGc5YxdirsVeMeYuLfmvpZNKraN8/s3FP8AY/FlZ5suj2fLGLsVdirsVdirsVdirsVdirsVdirsVdirsVeXf85Fz8vLDaaoJe/nhgWnu6s3/CrkJckh6BoGjW+iWMOm2ahILdAigeA/i32sGONBjVJjliXYq7FXYq7FXYq7FXYq7FXYFdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwAK7Cr//Q9UjIhXZJXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXnn5weUJ9VsotY0s8NV0t/XgIqSwG8kWxXlyX4kX+f4PsO2UT9B4h/nf1f+O/7niSDSe/l750t/OGkxapbji5HGVO6OPtr/AMbL/kccyCO5MhTJsDF2KuxV2KuxV2KuxV2KuxV2KrHcICzEADqcUsG8y/nV5b0ImKS5E8429OH4yT4VX4f+Gyw46+qof1vq/wBKz4O/Zig85ee/NxP6CsV02zY0Wa4+1Tx4n/jVGzHOpj/ADl/pfwfj/OYjJEchx/7lV0z8gzfTpqPm+/m1G6U8uIYrGD4eNP8AjGsWVyOXIKkeCH+px9X/AB3i/wAyX9ZiZSPPb+jH8f73/OeoaLoFjotuLTTYEt4V/ZQU+kn7TH/Kb4slDFGHLmfql/HL+tL6v+J/hYiICZZcydiryL/nJyF38sJIBVIruF38KVK7/wCycZXJIYB5I/L2y/MbzXrWpa20jxwNGIuLcSOYrG4K/Z4xp8GVHiNAEwr+b/RWQPufRN5dQ6FprzzMfRtYiSzGrUQdWPdtsyAFAt5l/wA496EZbS7823greatO7Anr6YYmn/Izn/wC5SBxG+70pJ3evdOmTGyEPe6fbX8fpXUaTRnqrqGH3HIzxRnzH/Ff6b6mJFsA1/8AILy1qpE0ET2M6nkJLZihB+XxL/wPHIDEYbwlKH+yj/vZf7JABj9O34/03+yYfeflx518iB9S8raq+pRpu9rd1IKjc8C7svL/AFWibLBqJw+sDJj/AJ0frj/S/nf7LL/UbBll/F+8/wB3/wAV/s/8x6V+WHnj/Gmix6s0LW8vJo5IzuA6058G/aT+X/gctJB+nf8AH0qa6MvxYvD/AM4rq487a7Z/l9p5Ii5Lc3zA0AjWtEP/ABLj/P6eQnKht9R9LI7D3vZ7GyisYI7S3UJFEoRFHYKKKPuxjHhFMKU9X1OLS7Sa+nr6UCNI1NzRRyNBkiyG75Rk88at+d3mH9BWtz+jtNNSsTP1RftOUHH6xO32kVvgT/gmaU5yiKx+r+d/D/pp/Vwf0P4v4my6Hp/zvx/N/ovofy1+VmjeXtKbSLaISCRGWSSQAu5YUJd6f9c5h+AOct5fzq+n+p/Ni08NvEfy/wDy0t/PWmXHlzULiWG80G6kWCRf2VkJr8Lfa/ew+pywniIBjQ/o/wAMmciemz0/8u/yMtPLF+2uancPqWqtsJpR9jbj8A/mp+1+zkqnkN5K/qx+liSZbyTv8xfzZ0jyF6A1X1Xe45cEhTkxC05N1XbfMuAB5mMP63F/vIyZxiD1Efn/AL13kX84PL3nUmPSbilyvWCUcJKeyH4X/wCebPkpYqFipx/nR/4mXDOP+dFMsdbipf1f+PcMv96g/wA+tJXUfKd2SOT2/GdSOxQ1Y/8AAc1zEn3+bAJ5+WWunXfLtjfuayNCFc9fiT925/2TJyy0FMhTKMLF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2AK7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiq3iK1A3PX6MFWq7CrsVdiqxpFXZiBXGlpeCDuMVdirsVQGsa3ZaNA13qEyQQruWcgD8clGJlyZRiSqaZqUGp28d5ZuJIJQGVh0I8cBQRSLwIdirsCuwq7FXYq7FXYq7FXmVG0Xz+AFpBqtsST4yR9P8AhcoHOt/5zMHZ6SknIlaEEU7Gn0HvloLBUySuxV5z+YtokGu6LqZYoRM0BYf8WD4a+3IZjnY7dQyD0OMEKAxqwG+XBivwq4YhXYVdiqlNIUAIG1RX5ZCUqSAqgg7jJodirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FXYq7FXYq7FXYq7FXYqtDV+jAFXYVdirsVapXfBSt4Vecf85AXJi8pXSr1lKJ86sNshJlFmPlSH0dIsoyKFbeIfci4wGyCmE8Czo0bfZYEGnvhITGVG1tpaLaxLChJVBQFjU7eJwRjXPf+kspcRvvRGTYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KreArypvgpbXYVeR/mEzaP520TV02SblbSnrs32R+OVcj72UUr/P5m1jWND8uwUZnuRLIOpAB4jHIdlHJ7cqhRQdMsApiuwq7FXYq7FXYq7FXYq7FXYq8s08m9/Mm5kG62tiqE9KFidqd+uVdWXR6nlrF2KuxV2KuORKuwK7JqtYVBA2OBXydceVNau/Ol1omsazc2M8nKSyl5twepqigc1/Z+Hirr9nIw1GWQqB+j6scv+O/8RNt8WZ2Bqv4fxJl/lfzN+YPkrUxpfmW3m1XTnJC3EY5tT+cP9r/YyYPzcZbTHhy93/ER4Jf7ph4gP1Cj/RH/ABP/AEk9L86eYLeC60f1wwSa5VqU3FVPplx+zxkZeeE0UgM0lmSIVkYKPc0ywAnkxAterBhUdMFIXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwOyP1zzzcMd1s7FFHzkfkf+FTK+Z9yWeZYh2KuxV4vfTJL+bNuh3MdmafMq/wDXKevxZdHtGXMXYq7FWiQN+2KrIpVkHJCGB7jfCRSSCOapgQ7FXYq7FXYq7FXYq7FXYq8v/MpTqnmfQNH3KLM129PCMECv+yOVy7u9kOT1DLGLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVcMVdirsVf/9H1QMgOaW8mh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVxFdjirxTzHaS/lXrh8x2CE6FfsBeRLWkbmtJlH2R/N/wAEn7WU4jwHgP0n+7/o/wBH8fw/1GUO4/5v9F7Dp2owalbpeWjiSCUBkYdCDl5FIIpFYEOxV2KuxV2KuxVY8ioOTkADucaXmwXzL+dXljy+5guLsSzj/dcIMhr4Ep8Kn/WZct8Mj6qh/W/4j6v9i2eGeu34/mx9TFP+VpebvNRZPKWkmCCtPrF0QNj0ZVJSP/gWn/1cxjqcY2jeaQ/m/R/Vlw/76eJiJxHL1/7n/df76P8AVWp+S+v+YWE3m3WJZB1MEBIX5Voi/wDAxLg8bLLYViif9P8A7H+L+vPKg5JHb6P6v+x/mx/3X9ZnXlf8qfL3lpB9StUMg39ST42r/rPlYwA7yvJ/W/4lhwswzIAZOwq7FXYq7FWJ/mnoJ13y1f2CfbeFivzUch+rKp7D3K8U/wCcSdU+sXupxyE+qY4Sa9fg/dZMbszu9A/5yF1ySPRk0Cyqb7VJBEir1K1+P6G+zjI8ItA2Fs98n6N+hNItNNoFMESoQDUVA+Pfv8WRx8kFOHYKCTsBk6tQwfzf+b/l7yqtLu6Rpe0cfxsT8kx8KQ57f1mzg6nZivln/nIq31zV7fTTYTwW92xjinkoAzdvh8MnxYzsDch/pUEQ6G/9y9idA4KtuDtkCGtDadptvp0C2tnGsUKbBEAAH0ZGEBEUEBF5NLyP80fy1vFvT508rytDq8CDnGPszIvVCPHjlHEcZ4vqxy+qP83+lFRIx8/6LL/y48/WvnXTVvrf4JkPCaI9UcfaUjw/lzIPeOTOQZTLCkyGKQBkYEEHoQeuQIvZg+afzU/5xuvrS/TXPIK+kwYEwI5Vkav95C7niF/4r5Jx/YzHhOWA9Zx/hl9co/0ZR/ih/S9X9JESY8vx/pn0B5Pj1GPSbVNaYNfrEomINRyA337n+Zv5syBLi3+n+iyu/J5To7r5W/M67tXqlvq8IZP5eex2/wArkn/D5DH1HcyG4e4ZaweffmQsVjqejaxKq8YrkwOzdlmUp/xLMeeMSNEX/WZRFoH8w/yQ0rzJGb3TEXT9Xjq0VxCOFW6/vQnHlv8Atfb/AMrIRxnFvj9P9G/TL+r/ADP830fzosIjg3j6f6qQ+WvzDvEVvJX5hQi2v5ozFFOxrFOCOA+P7PP/ACv2v2+GZIlHODW0x9WP6Zf5n4/qtgIny2l/FH/iUR/zjfqbxWd95euP77T7ggf6rbbf7JOX+ywQNhSNnsuTYOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVJvN2vDQNJutVI5fV4mcDxIG3442kB5p5C/LpvNdmNe85SPeTXi844S7COJW6BEQr8XH9rKTOczsZY8f8McZ4Jf1pspSJ8v6MfSyTylDJ5U1U+WGdpLGWMzWjO1WWh4vb1Y8mVftJkoykdpXOUf4v50f6X9JFmQ33/pPQMsYsR/ML8xLPydaiWYGW6lPGGBftOx6bfy/5WEAAWdohnGN7lhegflpfecLka/56PM/7psgSI0HbmP2mzGMzm2Hoxf7Of8AWYmV+Uf5v/FPW7S0itIlt7dQkUYCqo6ADoBlsYiIoIef/nvrUukeW5Lq1upLS7V09Exmhd67RH+ZW/aXJgkbjh2+riHF6WUbZR5a1eVtGtb3WCsM8kSGTkQoDEe+2CB8T6Vri5J3HIsih0IKnoRhQqYodirsVdirsCurXFXmv5yxS2KWHmKAVOnXKtJTrwb4H+jKyaPv9LKJeiWs63EazoapIoZfkRXJsVbJKgdY1JNLtJb6VWZIVLkKKkgDegwE1z2UPCPzH/N6bV9JjuodKuksxNHKlyQCKIak8R8S5CU8d0JeofzoyizuMTz+xmmnfnt5W1YRVvWtWBDUlUoGNOhZxxZf9XLvCJ2jKHzjKX+6ZCN8jH5vQtL1uy1aP1dPnjnTxjYMP+FwTgY87DGUDHmj8DB2KuxV2AhXYq7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FXYq8j/5yInZtLtLEEBrm7jUdegIrlUj+L/462R5PVLCL0reOP8AlRR9wpkw1ojJK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYFdhV2KuxV2KuxV2KvKP8AnIuwdtBTVYK+tYTJKCOtK/FlUjRBSCxb8pbmbz95qm82yqfqttEscYauz04/D/xLIy3lXd6mUj0fQGXsHYq7FXYq7FXYq7FXYq7FXYq8r8gMLnzrr09K+n6cVaeHauUjcsy9Uy5g7FXYq7FXYCFdiArsKuxViH5hfl5Z+crQRSkwXkJ529wn243HQg/y/wAy5ROBvij9Y/0sv6Ml5cmGad+Z+reS2Ok+ebaWQJ/dX1uhdJF7eoq/YfLY5oT2lWHJ/Nl9H+b+P9KnjiedY/630pB+Yf5kab5qimi0K3urq+WACF1iYBH5epUsenwrkMvBA3xw2/mni4mdiPWJ/q+tG+TvyuuvO9nHrfm7UprkyqPThgcxogG1G49XVskcuSXI+DH+j9Uv6XGiUpdDwf1Ux8iXd35K80SeS7+5kubG5j9ayeU1YU+3FzP2slGZmKl9UP4v50VsyG+9fxPY8LB2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVgf5ej6xrGuXx6G6EKk+ES8TT25HKxztJZ5liHYq7FXimnQIPzYuA1S/1XkPlxXt/ssoriPuLJ7Xl7F2KuxV81fmpqXmDz15zHkGzmax09FDycagutORlanxOv2eC/YweOYj0fV9PF+P4f6v1M+KhtzVbHy/qX5L+YLGOK7ku9D1NxA6yHdZDsrU+zXl+1kceWR9M6P82Ufp/wBnKX+6RCRO0t30hk2LsVdirsVdirsVdirsVdgV5lrhMf5jaazAkNYTgeAPIZX1ZXs9Ny1i7FXYq7FXYq7FXYq7FXYq7FXYq0CMAKt4VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf/0vU47/PIhK7JIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqE1TS7fVLZ7K8QSQSqVZTuCDlc4CQooeOJJefk9fFJC9x5XuW2O5NuxPT/V/4n/r448leifP/Jy/nf0GcTex/wA2T2Wwv4NQgS6tXEkMgBVh0IOWkUgikTgQ7FXYqh7y+gsojPdSLFEvVmIAH0nDGJlySIk8nmGrfncL2f8AR3lC1k1K5JK+oAREpHfl+1/wuM5Qx/UfV/Mj9TIgR57/ANGKBi/LLzT5tb1/N+omCA/8etqaCng7D4fi/wBnlRzZJfQI4Y/6ef4/zosfFkeXoH+yZp5d/Kny5oCj6nZRtIP92SAO1fHk/Q/6vHKfAB+q5/1vp/0n0f6aLXwDr6v63/E/SzAADYZkAAcmbeSV2KuxV2KuxV2KuxVZJGsilG3VgQfkcBCvl38mrNvK35l6ho8vwLKJgvuK80p9+V49x7mQ3D0Bj+nvzQ9OXeHSrWqjrRn7+2+GW+ynk9lyxixz8wPLdx5l0a40m0m+rSzqFEgrtv8A5O+QkZAenmkGmOeTvyK8ueXYkZrdbq7AHKab4iT3oG2G+Y8sJybzMp/H0sDG+e6XfmRFYeWLu18y6g8aWdiD6UIWhMh25A/6v2FXDDHvwjhH8XF+IsxG+4Jr+Xv52aD56maz013S7VeXpyKQSB1ZT0ZczpQoWCJNkoVuCJPQsranYq7FXiHmaJvy083Q69bjjo2rMIrlRsqSH7MnHt/N/wAFlWL0ng7/AFR/4lMe7ve2I4dQymqmhB9jlqF+KuxV5Z+evlKa/sofMGmj/chpbiVadSgPJx/sftf8FmPL0ni/zZJBpmfkXzXD5p0mDVYdvUWjr4MNnX/gsyCpDHvz2ZYvKd3ct9qDhKnsyuChyuQTFmmj3LXVlBO5q0kaMSPEgE5NB2STz/5EsfOWmyadeqORFY5B9pHH2HRu2+Uzx36htOP0yY+bx78lNPv/ACd5tudA1t1a4uIAwcMTyIoRu3VuOOOXFudv9K2XYfROXsHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq4HBauwq7FXYq7FXYq7FXYqpvHypuRTw/jkSFXrWnxdcIUt4VdirsVdirsVdirsVdirsVQ13fQWgDXMixqxCguQoqegFe+EAnlukC0SCDuMCHnv52+f38l6BJd2rAX0pEcAIr8R6nj34rhBrcso956I38o9d1rW9AhvvMUQhu3rsBQsv7DlP2S2VjIJ7x2H4+lBkDuNma5NDsVdirGPzK0iTWPLt/YwV9WSFgtO5G9MqybC1tKvyV1hdS8sWm9ZYE9KQVBIZdiG4/Zb/ACcmAzkw384dVmTzr5dsraqtzLkjwJKkf8CMjxUoeieffPVr5V0ya/YiSaMBUiBHJmY0QU6/ay4DqVEepYb5E8kOJx5t84uJtWno0cZ3EIb7Ecafzf5WYpJy7nbEPpj/AMUxJM9+76U/svzFuD5kHlzULQ26zRmS3kLA8wvXkv7Lf5OWxnGQ24vT/OH+5ZUCOrPckweSfnJ+VWt+cb2yvdIu4oVtKnhMCV5VqJAAGDN/rZROchtw+JE+fB/plMiP5p/rPLvzP8i38Mlromoancatrt8wEaVKxRJXeT01OHxcgFy4ccY/Tjxj6pf1vR/uWfFIizt/Ri+kPJfl7/Duk22lczIYIwpZjUk98nAkj1bsSbTzLEOxV2KuxV2KuyNKlXmbSE1bTbmwcV9eNlp702/4bK5x2VIPyk1Vr7QIY5TWa2LQP41jPDfLAb3ZSZjLIsSl3NFG5wksWiqyqVYVVh99cjQKl5lc2cflC+k0u7p+gNU5KnLcQyMN4/8AJSSvwf5eUgcQ4DvX93L/AHv9aLOO+3+lRX5daPpmr6P9Qv7eGd7OR7duSKdlPwncV+JcHgRkNxw/1fTL/YsDAIDVPyZj0u4GpeS7g6VfE1KVLQSU/ZkiP/GuMTPDy/eR/wBTyf7yf8P49SxuPLf+jJOvKH5gzXN0dA8yQiy1mMAha1jmH+/LZ+//ABj+2uZUJDILjY4fqhL6o/8AFR/pM6Etx0+qP83/AIqLPMWDsVdiqiyvzBUgL3BG5+RrkeqVbJIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FXYFdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5D+fI9W60K3G5kvl/CmUzH3Mw9dUUAHyy0MG8KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvP/z01iHTfKl76wDesnpKCepY/wDGv2sjIWkMc/5xalt38qBIf71ZnEld968h/wALkYxr4qXseWIdirsVdirsVdirsVdirsVdiryz8niLnVtfvR+1fFP+BGUx5sy9Ty5g7FXYq7FXYq7FXYq7FXYqpyRJKKOAw9xXImIPNHNinkRorqTUb2NAA908YIAFVjpEPo2yuMAyIp5Pc+dLj8ofNcmmahzby7fH1IiRURFjV+B/lVj8a5ZhN+g9Ppl/uWUTex5pt+ZHmLTdX8z+Wn0eZZ7szFuUZB/dMB9pl+z+3hnA4zZ2v0qYmPPZ7jhYOxV2KuxV2KuwK7CrsVdirsVdiqxpFBCk7npitNswQFm2AxVgP5JE3Gg/pB93vLieYn5yMF/4VchFJegZNDsVdgKvG9NQP+bF2zipWyHGnYcYev8AweVDmyeyZcxdirsVYdqf5exXPmK181W0rQXcCGKZQPhljI2R6FfiVu/xL/kZRRBscNfxcX+6hL1f6X/Zfzmt2GfnRIdX8x+XvLUIrI1z9bf2SPev/CPk58v9ikGg9kpliHEVwK7CrsVdirsVdirsVdirzTWGD/mNp8R6rpsz/fJxys80jk9LyxDsVdirsVdirsVdirsVdirsVdirsVdirsVdgJVShmWZBJGaqwqCPfEFMgQaKrhQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq//9P1MvU/P+GRHNK/JIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVQuo6db6jA1rdossMgoysKgjK5wExRQXkNzZaz+Vd0bnTVe+8uyNV4Ru8NT1T/JyMM3B6cn+bk/4tlGXSX+bJ6d5Z816f5ktVvNNlEiEbj9pT4OvVTl8o1/xSZRpb5k85aV5ah+satcJCvQAmrE+CIPiY/wCquGMCfL+lL0xSIEvNG/ObW/NbPbeR9KlljDcfrdx8KDsWQH923H/jKz/8U5VLNjga3yz/AJsB/uv4vV/T8L+svFGP9P8Aq/T+P6/hN2P5H6jrkq33nfUpLyWtfQiJWMD+T4eO3+qq5CU8mTY1jh/Nj9X/ABP+6l/TYGcj/R/q/j8fznqujaDZaLALXToUgiX9lAB9+GOIR5f6b+JAFJjlqXYq7FXYq7FXYq7FXYq7FXYq7FXgf502a+WPOGiebYRxEsohmbt1CVf/AGEn/CZVEVL+syinn5QRm680+Zb+WnqfWhEB3CLVkP8AqspwxPFupewZYxdirsVeK/nXoq+aPM2h+XLpwLOT1ppVrSoQf2ZTO+Q6pef/AJf6Zca5+ZAvNEiVdI0lniMsa0RlAKIOQ+2zN/wmRFY/SPqP1f8AFSTIgbDb+c+qsyGKDh1KKW6ls1P7yFVZv9lXj/xHAmkZhQxP80fLkfmLy7fWLLycws6bVPNAXTj71XjlOQbX/N9SpX+Rvmg+YfK1rPK3K4gBgl8eSfD8Xuy8Wy877spPQMDF2KqU8KTo0Ug5I4KkeIIoRkSLV41+Vd0fKPmnUvJVxUQyN9ZtCehUgVUH/VP/AAayZHEbFfzGY3HuRX/OTutJa+WRpa73GozRwoPYHkx/4iuSPf3IAeq6TB9Xs4Yf5I0X7gBjHkxReSV4t+eUX6B1nRvN0VFWCb0p36fAfiHz+D1sqAqXvTHm9lhnWZFkQ1VgCD7HplqOSpirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsCuwq4GuKrXdUHJjQDxxpaXYq7FXYq7FVrLyFAaYquxV2KuxV2KuxV2KuxV2Ksf86eT7PzZpz6ZfA8W3VgSCrgfBIpH7S5VOJPI0f4VYP8Alh5ru9Fkn8pea5Al3YgtDM5oJYR9lw7faZV+3lsJ+IP6Y+qP++bPr9/8X/FJboNq35o+ZP8AENyp/QemEpaKw2levxTEH9n/AJtyjJ6zwjp9Uv8AeMJ93d9X9Z7SoCig6ZcBSG8KuxV2KuIrgIV5HcanF+V2o3TXLhtJvmM0UMYBlWU05RpHVSysfiXjleMcOx2jH/Kfw8P9L+kzAsb7AfxKh8uan+Y0ttrGqRtpFtbljFGtfrLKwpV5fswq38qpz/y8rMuM3j/5WS/3mLh4f8+U5f0YsTL+b/ppfV/mx4fR/sk682flBpeuaV+iLetmQ6yCWMDnyX9p2bdz/rYyxkbg3k/nZOKfF/smJv4/zpepM/J/kOHy8pllmlvbxlCtNOxYkDpxX7Kf7HJ1KW8zf9GI4IR/qxZWTzYf52ZX/MXQokBMggmZqeFGp+o4n9SQHreWhi7Crxf8w/KXmTS/M6edvL0UeoBYhE9u5owA6mNsxjPhl6wTD+GUf4P81PFXMX/VZD5I/OGHX9SOg31lPp2piMv6c3QgdeDd8yRKEhcTf9YcEmWxFxN/Dhej4GDsKuxVbyFad8aVdTIq7JK1U1p2yNq870SD/DXm25sa0tdWj+sxDoBKh4zKB4sp5ZXj2uJ/h+n+rJkNx7mZ+YNbt9CsJ9UvSRb26GRyBU0Htl1WgC2A+RP+chfLXnG5+oW0j29yxoiTADn/AKhUstf8nLTj7vU2GHdv/sWfa7otvrVnLYXahopVKmvY9mH+Uv2sxJw4v97/AEWp49+UU995a8x6n5V1RuUxQTW7nb1FX4AR/M3Hhz/2WMZ8QvqPqizB4h7vqez3Np9cWNizIVYN8Ox26qf8lsSOLcfdxMXnn53Wq3tvZWFnGTq9xcKLSUdYivxySkj4vTVftrglUDxfxD/Zf0Ejbfuei2JZUEUr85kVQ56VNPtU/wArJxNoKu6cxSvcfgckRaF+SV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5B/wA5DQvZ2+meYlUtHpl4kktOoRtmbKpbEf0vSmJZDb+fI/MGvW+j6HMskEEf1m6kQgijDjDDX+ZmPJstncdj1/3LIjh5s+xYOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvCfzgvX85+ZLHyPYfEImE1ywP2QdyD/qxD/gnXKspoeZ+ln9I96L/Km2HlXzjq/lfpDKq3MA7U2rT/AGL/APCZHFy3/h9KOnue15exdirsVdirsVdirsVdirsVdiryv8hGMsGr3BFPU1Ob8AuVQ/Uyk9Uy1i7FXYq7FXYq7FXYq7FXYqpXE6W8bTSGiICxPgAKnAVYr+VEXHy7azHrcc5z/wA9HaUf8K2QhyZS3Kr+YHkbSfONgLDWVHDkPTcEBlY7Dgx7t9n/ACsjPHxctpfzmBFsc/L/APIPQPJV2NStBJNdqCFeUg8a90UDZuPw8srhjldylx19Ma4f99JjEHrv/sXpuZTN2KuxV2KuxV2KuxV2KuxV2KuxVaVB+jIkJSjzjfjT9Fv73/fNtNJ/wKM2EqEt/Kqx+o+VtLgYUb6rCzD3dQ7f8M2RhyQyvJqsrvTt45EKvySvFNClMv5u6kIzQR2QD7Vr8FoRv2+Jv+Fysc/x/SZdHteWMXYq7FXYq8P8m3qeY/zV1i8LEppdsttEp6A1VZiP+egkys7keTIh7hljF2KuxV2KuxV2KuxV2KuxV5drO35nadx35aZMG+Qckf8ADZX1/H9Jl0eo5YxdirsVdirsVdirsVdirsVdirsVdirsVdirhgVpVC7DECl5t4VaLAbeOKod5GVq0Hp8SSR1r/q0yJl/0ltwff8A8d/pMgAR53/m/wCmRAIPTJMW8VdirsVdirsVdirsVdirsVdirsVf/9T1Oo3PzyIVdkldirsVdirsVdirsVdirsVdirsCuwq7FXYq7FXYq7FXYq7FXYq7FVOSRY1LuQFHUnGrSBbAfOX51+XfLoMDS/XLk7CGD4ya+JHw0ycsQA9dQj/S/wCJZ8HU7PGrfy95u1zVpdd8lWb6JBIhPxsFWQ7mvBxx5NX+Xiv+TmHDUjH6cfFm/nRl6oR/H+mYDII7Ruf+4/H+yVvIlpo2mai0X5nRSrrBf4ZLv4rd6nZgfs/5P7xmg+H4MmP8J/iO3+R9WKUP9l/pIx8KX9CbK/E68v4fp/H9X08f82T6W0/6t9XT6jw+r8Rw9OnHj24cPh4/6uWDGMfprgr+H6WPDw7cv6KLySHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXl//ADkboY1TyjcScuL2bxzqw7UPpv8A8CkjNlU+/wA/x/suFITv8r0s9S0m18yJGgv7+1h+sSqKF2ReLB6fyvzw8ABsbf0bPD/pfpQY0Wa5YqT+ZvNWneWbYX2rzrb25cIHatOTVKjb2XJRjaQLYPrP/ORXlLT1/cXJvJSPhSBSxJ7L/ssmcVbyMYfFnwULJAeH/mrrHmDzZdaf5h1S2fSNIM4tYpekoSX+8kfflx9NXb/gkzHGeJP7vi2/i/glL/jiBMX6eIf0n1H5P8n6f5SsE0vSo/ThTc1+0zH7TyN+07ZGEOHzP8UmAT3LVeefl5qrav5i8w3IasUNxDaqPAxR0k/5KNkRzZyeh5JgskYKpZugBrkZclDxn/nFYiXQL65AosuoTFa+HCLAGRe05Ni7FXYq8u/O7yDc61Zrruhck1zThzhZPtOq/EYv8o/tIv7X2P2solLwzxj/ADv6v87/ADf4v6H9VQaNvP8AQdC8wfmp5os9b8xWb2Om6UiERuCOcinmeAYb8pfif+REVP2sEs8cvpx7/wA6X838fTH/AE6TMS+ncPpECm2XodhV8q/85JXPnK2ubyG5Uz+Xp+DQlVqsZWn2ivxI/wBtX5fbV8q8eJ9Ehw/zZfzv87+L+oyGQDavx/We4fkjrT6x5P026mYPL6IjY+8ZMW/v8GW2smdYsXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq81/wCchbeZ/Jt7PbytBJb8JQUJFeLAcSR+zvyyPEY8tkxJHLZG/kj5xbzX5Ws7+Y1uEX0ZTWpLx/ByPvIvGT/ZZM97KTPcDBx2xV8+an+YeuxeZ7LW0mZdAvL9rBICDRlSkbXH+ykLsn+pkPG3MegH1f022+n+y/pPoPJtTsVdirsVdirsVdirsVdirsVeHfnvYzedb238naJGrX6IbmaY7eklCqRlh/v5j9n/AFcpyEY/UL8Q+mPD/FD+NN0Pey/8ndfSfS00O5g+p6lpqiKeClBtssyfzJL9rl/NyyWMRIuH+d/OhP8AmyXbmP8ApF6FliHYq7FXYqwX84vzBfyPojajbx+rcyOIolPTkwJ5N/kqq4gjqzjXVIPIPktdPsv8Y+apRNrEsZmaWcjhACKoiD7KKo/lzHMZZjZ3H+Tx/wAP9aSN5n/cxTf8i9ZuNY8tR3d2WaRppvjYk8hzJDpy+LhvxXLQb8/97/RWRt6Fk2LsVeO+bJVi/M/R2dgq/UpQCehNX2/1uOUH9TMB6ppWsWmrQ/WbGVZoqleSmoqpowr88vIrZiRSOxQ7FXg3nfy55w0jznJ5s0S2j1CFrf0o1ZqemKCop48hyzG8URPqB2+nh/3yeOuYv+qjdGsvzL8zRh9Qu4tJibqEjBkG/T+XLPzZl/dxj/WycXD/AMUnxP5oH+c9A8l+Xta0X1I9V1E6jC1OBeMK6nvUqaMuETnL6hAf0sfF/soyQZE86/zWWZYhZ6a8udPiHfI8O9qvySuxV2KsL/MzRJLizj1exQtqGmOLiED9oA/vYj4rJHX4f5uOUz9J4v8ANl/Ul/xKQaRt8IPO3lyZLUj0tQtmVS3QF1p8dP5G+1ksg22Uinx3+ZH5J6t+Wi2l96vrI4BM0YI9OYVan83D7PxZXjzG/V6P5v8AxP8AWYxkRzfXv5V+aJvM3l2z1O7UpcOnGQH+ZTwLf7KnLMjiB5MpMU/OT8pNS83XdrrGh3gs76yRlTqKknkPjX4h4fy5QZTxniiAf5387/ZemSOIjklGlfmx5i8n+lZ/mFYNHbgBDfwVdKj7LzInLjy/a4/8Blsc0MprfHk/mz9MJf1Zf9JRZccZc/RL/Y/j/TM08k6nD5uu5fNETiSyWtvZ7/sj++mK/svM/wAK8vi9JV/myMo+qv5n+ylL+b/Rj9H836kyFbfiTOwADUdckBuwbySuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVoiuRIVwFMQreSV2KtFQTXwyJCt4SLV2FXYq7FXYq7FXYqhNS0231O2ksrxBLBMpR1PQgihGQnESFFUk8mfl9o/k2F7fRYBCsrcnNSzE9qu5ZqL+yuVQx8O5JnL+dL+b/AJvDFAFMmzIS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUs8x63DoWnz6ncmkcCFjXuQNh/sm+HEBMRby3/nHrQ3uorvzffr/puoytQnqEBqaH+Vn/AOFRcxh6pX3JkbKn+aBTQfOmi+YlqvM/VpD0BDErQn7P2X5f7FcIlU672URb2nMhrdirsVdirsVdirsVdirsVaY0BOKvMfyFjKWGpV2B1K4NB81ymH6mRen5cxdirsVdirsVdirsVQmpalBpltJe3jiOCFS7segA3JxG6QLeBXn/ADlXNqWoDTvKmkyXx5GhLHkw/mEcatwXvyd/+Byc54sY9RJ/0sfV/R+uUv8ASRZnghz4j/V9P/FcX+xRfmv8yPzATS7qS60GK2tmhYM7ShmUMCjbK3xNv8K8cp/MYpbAZP8AO9Mf9njijij0E/8AOMf+JhJlH5MfmKuqW3+HtQtjYahYQxgRMftxhQFkSvtx5YYcMhcLP87i/nKQDuP8559/yt2780+YLXTp2CW/6Yj9CMLQ+nCSpZ3r8TM5RuOGcttun9bin/x1k+lsLU7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwP8APC7a38p3wQ0aVUhB/wCMjrGfwbIyNMosz061FpbRWw3ESKn/AAI44I8mKJyauxV2KvFPy7lM/wCZevyt1ESqNuw9Fev+wyqI3Zl7XlrB2KuxVxxV8Qaf54v/ACL+Yt/fVYxSXsi3C9eUbyE7/sr9rkn8rccjjltv1ZxN/F9twzrMiyoaqwDD5HcYQwVMKuxV2KuxV2KuxV2KuxV5fLSf8zo9wfR0o7dT8Uh+7K+qa2eoZYh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KtEVyJS3hQ7Cq3jvWuRApLlNRXCChdhV2KuxV2KuxV2KuxV2KuxV2Kv8A/9X1SMiOauySuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVa4JBANDgV8wSf847edbvVWhvtWMmmSyFnk9RixBJ3MLfDz/2XHKzq8xHDR/rcX7r/ey/zeBmc0yKP/HXs/kz8ntA8qqrwQCa6XrPLRmJ7nf4V/2OVDDe8zxn/Yf6VqMb57s6ApsMyQKZJfrGiWesW7WeowpcQPsySKGB+/Kp4oz5jl9MvplH+pOPqj/moIt5u35L3WgMbjyTqk+mkmv1aX99bk+Hpvuv+s3NlwieWG1xzw/m5vTL/Nyw+n+rGEeL+OaROQ2+sfzZf7yX8P8ApeKX85MLXzb5v0YKmv6Ul2taNNYSVoPEwTBG/wCBbD48P4hPF8PFhKX9HglKUY/10mUetw/2cf8AN/iTyw/MnSrvaT1rZ6gcJoXU1P0Mv/DZbseUoH/O4f8Ad8KeG+VG/wAfxcLKY5VlUOhqp6HAxIX4q7FXYq7FXYq7FXYq7FXYq7FUu8w6VHq2nXOnTCsdxE8bfJgVyExYV5V/zi/eFNAuNGmb/SLC7kRkruobfp9ofvfWyUTYtkXs2Fil+taFY63bmz1KFLiAkEo4qKjocrnAS5oItLdJ/L/QdIf1rCxghkJrVUFa+1fs5UNPDnX+mYiACVfnD5LPm/y3c6ZFT6wAJYa/zoeS/wDBDkuTmKFj+Fmv/KbzoPNuhQXsu13GPSuFPUSIKPUf5X2v+F/Zy/nuGUh170y8+eboPKWkXGr3O4iWir/M52jT/ZNgAtYi2MfkBpUll5WhubpSt3fSSXMxbqxdjxc1/mjCZVE2Se8/j/fIJt6TlqGEfnN5guNA8q31/ZBvrCxhUKipBchOfyXlywGQjzZRNJd/zj3oR0bydZI4pLPznf5u23/CBMrgb37yx5vSMtV2KuxV2KuxV2KuxV8q/wDOWvm4tfQaNp91JUREXMKN8G5DR81/n/41442Y+4toJA/rfwvdPyY8vnQvKenWbD4zCJW7GspMxr7/AB8cqhu1M2y1XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwz84rM3flLVIV3JtpD9w5fwyuZ2+SXnn/OItjJD5cnnZm9OW4+FWGwKgciP9bkuIJv3KXu2WISHztqb6dpM8sNfWdfTjA/nc+nH/wAM2RJoMovMfzc0S30jTfLukQirwX8CoR1JVW5n/ZN8T5Tw0N+48X+csQ9szIYuxV2KuxV2KuxV2KuxV2KuxVi3lnyNFoep6jrHqtNNqMiueQHwBRxWND/LlMQSblX82PD/ADVTqTRbV7tNRMY+tIpQOOvE9VPiMPAAbG387+l/WVH5arsVdirsVY1+YPk6Lzdo82ky0VpBWNjvxcfYbKckSRtzH0qwPTfyb1bVY4rbzpqb3llbgKltDVEYL09d6Kz/AOfxYDkyTFenCP4uH1ZZf72P49LIzkdth/V+qT1fTtOt9Nt0s7NFigiAVEUUAA7AZZCAiKDCkVk0uwKwX8xfyug84yWt2s72l3aMSksdOXE/bT/ZZROMgbjX+coJHJlulaXBpdtHZWihIolCqB4DJQhw/j+JQjcuV2KuwEK7CrsVdirsVdgAV2FXYq0QDtgItWCeW+PlnWZvL7mlrdE3NpXoCSTPCv8Aqt+8X/WyrHt6f5n+4/h/0rIbj3f7lmd7Yw3qelcoskZ6qwBH3HHJjE+e7Ai19tbR20YihUIi9ABQZOEBEUFCtk0sP/MsNdafHpSEKNQnS3Y+COf3lPfjlOQWO/8AmsgE68u+WNO8u2wstJgS3gBrxQUqaAcj4tt1w48fAP4v86Upf7pgBSbZYl2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYArsKuxV2KurgJV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8Y/5yE1eW9Fj5RtD+81GUc6bniCKAjwZv8AiOQmaDMbB6r5d0SLRNPg023/ALu3jCD3p1P+yb4sEI0GDEvzu8tnW/Lc/pAevbUmjNKkFNzT/Y5DIK9XckFNvyy8xL5h8v2d+DVzGEf/AFk+Bv1csupMhTKcLF2KuxV2KuxV2KuxV2KtNuCMBV5v+SEytZ6jENimo3FR8z/ZkIBlJ6TljF2KuxV2KuxV2KuxV49+fuqa/cwR+WdDsXnj1AcJZwpZUBNCtF+y3H4uTZTPNCG0vrl9Mfp/6SSJAf1v4WU/lf8AlbpvkOwW2tEVrpwDNMQOTHwr/Iv7K5DHj34pby/3H9GP++YgKP51zEeX3t0NGuJooh78nG2WzLOLH/zh8l3EEdv5u0Sq6npijkF/3ZEB8aN48Vyq+A8X8J9Mv+LQJcJ/3T518j65bXHmfTrqlEGoM9O/7wh6U/yWGW8LOn3RljW7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq86/OVTdQadpan/ey/hUj2Q+of8AiOVz5JBei5Yh2KtcRWuClbwq8U/JUPc+afMF63xD1eAYdOvT/gUXKo82Re15axdirsVdirw38y/+ca4vNOqvrOn3ZtpLl1NwhUFSBTdOPFuXw/tZiSE4n08Mo/0vTKH+d6+L/Y/1mJvo9p0+zWytorVDVYUVAT4KAor92ZMRQZInJK7FXYq7FXYq7FXYq7FXmflCE3/nnWtSNCttFDaD2P8AekZX1ZF6ZljF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2BXYVdirsVdirsVdiqmz0BIBJHbASml4NRiChvCrsVdirsVdir//1vVOBXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVWlFPUDKjjB5gfJXKoUUA2yYFckBdkkuxV2KuxV2KuxV2KuxV2KuxV2KvnXQLiPyX+a13ZSkx22qLVa9OUnxj/gpUbK8fUdzKO4p9FZYxdirsVdirwrzj5c1j8ttVn84+V4/rGnXDcryz3qKmryIF/yvi5fsfF9pWyiGTwvTP+6/hlf0fj/ZfT6Uxlw7H6f9ykMFxrv53atBJPbSWXle1cOVckGQjrv/ALsf9n4fgT/Xw5M0ZejGeL+dL+b/AFvq4f6vF61lMco7/wA6X44v9K+joIEgRYogFRAAAOwAoAMsAoUxVcklRuLeO4QxTKHjYUKsKg/MHISAkKO6F0cSxKEQAKoAAG1KdKYYxA2CVTJK7FXYq7BStVHTI2rq+OSG6vIfzF/O9LO4/wAO+UlF/rcrcKJukderM32WZf8AgF/byUuHGLn/AJsf4vx/smyhHeX+lYZefkNcx6fDJqr/AFnWtSvYWnl3YRpXk4B/4m2YcpGR4jtfpjH/AIpqu9y+j441jUIgoqgAD2HTMkCkr8krsVdirsVdirsVdirsVdiqhdXcVqhluHWNB1LEAfecIF8kgWlkPnDR5q+neQHjsaSL/XLDhkOhbfAl3FMbTULe7XnbyJIp7qwP6shKJHNrlEjmicixdirsVdirsVdirsVdirsVdirsVdirsVdirsVS/WdbstHt2vNRmS3gXq7kAfLfv/kj4slGJlySIkpb5V8/6L5rDnRbpLj0jRgAVI/2EgVuOMoGP/HSJJMaT5ZkZigILDqO+RYsV/Nm+Sy8r6jM/T6u6j5sOIyJCQg/yV0R9I8rWVvKQWZBJt0+IAgZXj+W6s6y5DHPMcTXt9Y2SH4Vk9eQf5Me6f8AJTjlU+5kOTAPOkw8yeftJ0aDddMBupvAH9gf62HJ3d6eQ972LLGDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgOyuwq7FXYq7FXYCrsAV2FXYVdirsCuwqxvzroDapaCa22vbVhLAw68l/Z+Tj4cpmK9Q6f7lINJloOrpq1nHdp8JYfEvdWGzqf9Vsnz5KUyySHYVYP5+UajqGmaOm7tcCdqbEJF8RNf9bKp+SQzjLUOyIV2SV2KuxV2KuxV2KuPtgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ASrsKuxV2KuxV2KuxV2KuxV2KuxV2BXYVdirsVdirsVcfbAVcMQFdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVZJIsal3NFUEk+wxV4r+XCSecfOF/wCaZRys7asNuTv02qv/ABLKZeqVfzUye25chSuIEuI2hkHJHBVh7HY5CQsUrx38qLp/K3mK/wDJtx8MLM09sD0oTUhP9j/xHBiNiu5nzHuez5YwdirsVdirsVdirsVdirsVeYfksQk2tQj9i/f8RXplcGRen5YxdirsVdirsVdirsVdirsVebfnFIskmkWT9J75KjxC75XNlF6LJEsimNxVSKEe2SIsUxfEX57fl9L+X/mJdQsgfqU7+tFToGB5GP8A2OV4jw+k9P8AcLE0+yPJ2sjWtHtNRH+74Uc/Mjf/AIbLQUlOcKHYq7FXYq7FXYq7FWmBPTISBPJW8mrsVdirsVecedz9a826FZV2jaW4I/1RwH68hJkOT0fJsXYq7FUJq119Vs57j/fcbv8A8CC2ApDyv/nG+zK6Team5BN5dOxoNvhJXrTf4jlcN0nm9fy1ilXmDzNp/l63N5qk6QQqNy5p9w6tkowMuTKMSXmUv/ORMN67J5c0m/1MKftxxkKR7H4m/wCFyMsmLGalMf5vq/3RgkcF0T/pRx/8Sqv/AM5Cw6cvLX9G1SwA6u0HJB/z0qn/ABHBHLhmeGM4xl/NyeiX+kh4qCYd9f8ADBwf76TMvKv5neX/ADUoOk3kcsh/3WTxcH/jG/Fv+B5ZdLDICx6h/Oj6o/8AHf8AO4WRxkb8/wCr+P8AdMryprdirsVdirsVdirsVdirsVeW/ke73bazqTmoub9+J8Qg4ZXHmyk9Syxi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7AqjFOsgruCexFDt88RuyMaX1I28cbQuBr06YIm+SG8krsVdirsVdirsCuwq7FXYq7FX/9f1PXenfK73+CV2WIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir5s/5yw0R7K50/wAy2y/GjemxHWqnmhJ/4XKb4Ze9IL37ytq66xpdrqCmoniR6+5Hxf8ADZaCshSa4UOxV2KuIrgIVaAAKDICIiKCrssV2KuxV2KuxV2KpDqvnfRdJqL68hiI6guCR81HJsmMUj+OFsGMlg15/wA5EaNJMbTRYLjUphUAQISK9tzkZ8EBcpCH+yQRGP1EPKvzE/5yN82aXdCwayGmFgGHNS8nE9DRvSXl/k5CGSEhcfX/AFpcMf8ASx/4tlxjoP8ATf8AEf8AHkJ5M1Dz/wDmhNJbWt7c22mtT17iT4Vp/vuFIgqryX9leX+W+CWqI9MeEy/oxj+6/rT9Uv8ATT/qQixlm6Rr/Sx9H+6l/s/9K+hvIX5ZaN5KgEOmwj1yB6kzCrufEuf+IrmPCAJ4pevJ/Ol/D/V/mtfD1LMaZkkJdkldirsVdirsVdirsVdirsVWuwQcmNAMVfKv/ORX5lp5xT/D/l+OeZLWb97NGCY2NKcBx/lbBOYxc5cJ/m/SyJ4Vuhf84f3F7bw3N3qIhMqhiojJIqK0oSu+YviZT9IhR/pS/wB7FquXkyrS/wDnEGxs5FdtVugB19ICMn5NV+P/AAOXRy5xykIf1eP/AIqLKMpxNiVf1R/x5lll+Q7aaK6dr2rRN7zhhT5cMPi5/wCdCf8AwzFx/wC6mzOSZ68X9b1RRC/lNre5PmXUa/6y/wBMHjZv9p/5VcP++YXI8+H/ADRwty/lt5oh/wB5fMdy3/GVFb9QyQz5RzGA/wCbKP8AvmXHIchA/wBYLl0D8w7VeMGp2M9O80Lgke/DE55dYRP/AAuXD/u08ZPMQH9XiaK/mfGfhbR5B/lCYfqOQ/Mf7XP/ADcmL/fFjfl9qxNV/M6En1bDSpV/yJZV/wCJlsmNRHrjzf6fAxGQdYz/AM2UHDzZ+YKKTJotsxA/ZnO59uWS8fH/ADc3zxsxkh/NyfOC2L8x/N0BH13y9KwP++ZFb9ZyJz4v6cP6w/4llxQPITH9bhVD+ct1EKXGhagjdNkBH31yI1GH+eI/1hL9TWZwHUD+shm/5yI0iBgl5Z30B3rWKtKfI5fGWOQsTh8p/wDEsomB/jh/sv8AexTGy/5yA8nXAo176L/yyRSA/gjL/wANk44jLkQf86Mf93wshC+Vf7n/AHfCn+n/AJl+W9QFbbUbc/OQKfufjicMh5/1ZRn/ALgyTLGY93zjL/clj/mX8/vKnl+6FlcXXqydzCOar83U8f8AgcIxHrUD/Nl9S8HwZj5b806d5ktRfaVMs8J7qeh8COxyuUDHmxlGk3yLF4N53MXnLzjNY3/7/R9BtjPLFuFaShPF/wCbpxyrKSRw8uL6uH6+H+v/AAMyNq70h/Iqz1vXtZXzLY2ttpujqXjYQpx9Va7Lwq3Jl/343HIRkInhgJf0pSlKUf8AZS+v+p6UGYGwH9beX++lJ9KemteVBXxy4Bi+Zf8AnJb835mnl8n6UFMaqPrLjc16+mPDj+3kzQHvZ/SPe9W/IrzPNrXl+KG8h+r3VoBEyUIqABwkof5lyEZRP0sSQeT0fJIYWmv29nBf+arpqWqKVjJqBwTbav8AvyTKojil7vT/AMUzA3pi35C6PcXqXnnLUlIudWkLID1EQPwAf5LYAeKV93pixkbL13LkOxV2KuxV2KrXYKKk0GK0oNqFsuzSoPmw/rkuA+aeEoKfzXpMG015BGR/NIo/WcsjgmeQl/pS2jDM9JfJJ7r81vK9ptLqdsSP5JA//Jvnj4MvKP8AXMYf7sxQMRPd/pox/wBjKSUXX5/eToOl8JPZUf8A42VcHhVzIHx4v9xxIEO8xj/WQS/85F+W5KiEXUhH8sJP6shLgjzlD/TMaHeFJ/8AnITTmH7iwvpT0oIiD/w/HImWMfxj5S/3qZcA/i/2MlM/njqE3+8nl7UpFP2SUoD8yOfHK/zOAfxX/V4f99KCiUO8/wCaIy/3yqn5n+brkVg8sTKKbepOqn7mRaZGWqxDl4kv+SU4/wCyjHLFiJw/pn/NlH/ezWDzp+YcxpHoUMQPeSYED/gHyf5nH0jlP4/pxikyj3T+cf8Ajq8XX5mzk/urCIU2+Inf/ZDANSD/AAS/zpcH++kkzH83/ZLf0T+ZVynxXtlCSO0ZJB+a4PzEumP/AE04/wDHWIyf0R/nLR5N/MSUHlrsKE/ywg/8STD4+Q/wY/nL/ipIOQ90PnL/AI8sk/K/zrNUyeaJAT14wBf+B4SLxwePm/m4R8eP/dYmYyy/of6WMv8AeqKflD5tVjXzLcEdejA+/wDuxsPj5u7F8o/9U4o8SX9H/Sqi/lZ5xhJ9LzFKRWo5An7+RbD4+UdMR+COOR/m/Jankf8AMS13h1uKX2kQ/wBMH5mf8yB/H9ZkMhHSJc6fmpbH4TY3AHTtX73XI/mO/Gf82Uf+Kkx8S/4f9z/xSg3nf8zrBSbrQoLlQesMorT/AFBK7ZL83iHOOSP+ml/06knjj1Ev82X/ABMZqqfnvqNhvrug3lsh/bQFwPnVEUf8HiM+E/xcH9YcP+7Mf9yolA/zof1h/wAVwMg0H89vK2sMI0uvQl/lmHE1+fxL/wANmQMV/SYz/qn/AIpn4d8qLO7O9gvEEltIsqHuhDD8MgYkc2sikRkShwwKl2peYNP0sVv7iKAf8WOF/wCJHJxxylyBLMQJQ1n5x0a9cRWt7byuf2VlUn7gcPhSG9FJxkJ0DXcZBrdhV2KupkaViopoWrEEkWmoHYU2WYe/b1V/4bK4bHh/zo/76LIbsqy5i7FWPWehXA1u41e4KmNo0ihA3KgfE9ajbk38uVbmSWQ5ahwyIV2SV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK7CrsVdgV2IV2Kuwq7FXYq7FXYq7FXYq7FXYFdTvituwq7FXYq7FXYq7FXYq7BSuwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8e/PL8020Ph5Y0xPV1O/XiKGnBWPEH/AFmwkgCyziABbMvys8nf4S0OHT3IM5rJKRt8Tbkf7HKcfKz1YMvy1XYq8n/O/wAvXESW/m3ShS801wz06tHX4h/n+zlBPBLi7/TJMTReg+VfMMHmLTYNUtTWOdA3yP7Q/wBi2ZBCyFJvgQ7FXYq7FXYq7FXYq7FXk35QtTzF5jiHRbsHw6jw+jKoMi9Zy1i7FXYq7FXYq7FXYqx7zj510/ypai81Fj8bBI40HJ3Y9EjT9psIHf6QPqlL6WQixey/OeBZ0i1vT7zSYJiBFPdIFjJP2Ud1Lekzf5WRhPHk2hK5fzZDg4v6n85NRltEn/OHD/pZcXqSv85tbg07VfL15I4ERujv1FGAWvv1yJFmkxD1xWDCo6HJNbFPzL8k2vnDRp9OuI1kk4MYieqvT4GB7ZRlj/F1gghD/lBY32n+WbOx1RClzbqYyD1opIU/7IZZjmJiwyu2aZYh2KuxV2KuxV2KuxV2KuxV2KuxV2KvOb0i6/MS2jIr9W012+l5OI/4XKzzS9GyxDsVdirD/wA29S/R/le/mrRjFwWni5Cbf8FkSUhDfkrp5sfKenxspR2hDkEUNW+LpkYckJj568/6b5Nsjeai45naOIbvI3ZUTr1y6Mb3/hH1SZRje7zryX+XV353uf8AFnnlSxY1tbJtkiT9gundmzElM5thtiH836p/8dRKXF/V/wB09mtbSK0jENuixxqKBVAAA9gMthAR5bMVRkVxRgCDiYiQo0UsA82/kl5f8xH6ysP1O9G4ntqI9fFuPwv/ALLKY4jj3xk4/wCj/B/pf4f8zhYxHD9Pp/qsZ+t+ePy+5G5H6e0lSPjG06L8v2v+Gy4anplHB/tmP6f8/wDH+czOT+cP86LOfJv5n6N5rSlnL6dyNmgk+GQH/UOX8Fi4+uP86LLh6jcMvyDB2KuxV2KuxV2KoTVrsWdnPck0EUbvXw4gtgKhhH5D2/p+VLWVt2uGkmJ95HZ/45CIpJehZYh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqE1okxDMPiXocqlDi6kf1SzjMxXGZFYIWAY9q75bRY0eaqNsACHYVdirsVdirsVdiqwSjvgBTS/Ch2KuxV//9D1RTIcO6W8mh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kpffa5Y6fte3EMJO9JJFU/8ADlcshilLeIlL+qDJkIEiwCfglOofmV5c04qLnULdS/2aSBv+IcsmNPM9OH+t6P8AdcKRjJT2x1C3voxNayJLGejIwYfeMqMTHmxII5onIoYJ+dPlQ+Z/K97ZJtLGhmj/ANaMF6f7JeS5TPlfd+JIOzHf+cZ/Ni615XjsnHGbTmMD1PUD4kb/ACfhy7o2SD1G21OC5uJrSNqy25UOPAsA6/8ACtixIRmKHYq7FXYq7FXYqhb3UbeyQy3UiRIN6swH68lGJlyZRiZcnm+v/wDOQ3lzTZPq1k0moXHSlutVr4eo3FT/ALHlkjCMN5kRr/Ol/wARH/PnFlwiO8jX4/0v+mklQ/NDzpr44aBoTW61AM1yTxoe6iQWv2f8n1f9TMb81i/h4s39WPo/qyliOWH+ny4mAnDpc/4o/wA2X+9/6Wu/5Vf5w8yH1PMusGFO8NqNv+CpEv8AySb/AF8fHyS+gRwj+l9f+w/6qyZeJIfTQ/H4+rjTnSf+cevLFkwkuInu5qULTOTX/Y/ZyrwpS+qUv830tRs8yWeaV5e0/SE9Owt44FpT4FAP0nqcnHDGPIf77/dJEQFPU/K+l6rItxf2kNxKmytJGrED2LBsjPBGZs/fKP8ApuGXqWgVuqa5pmgW5kvJoraGMdGZV27AAlftU+HLsWLhFRFf1R6WccZPL/jqro2s2urwLc2MqzwsoIdCGB/2SFl/1sTY2PP8fw/VwplGkzyTB2FXYq7FXYq7FXYq7FXYq7FXn/5y6xc2ukx6XpzcbzU5ltUI6hWqZnH+rGMBnwi+5lHbdkPlHyfYeWNPj06wjVUQDkaCrN3Zz3auY0cI5yqUv4pSYCKf5lJdirsVdirsVdirsVdirsVdirsVWlQeuVmAPMD5JtQnsbeYUmjRh/lKD+vKDpMR/hh/pI/8SwMRLnuwjzL5W8lGKSS/gsI5OLGp9NWrQ/6rVy78kQPSJw/4XxQj/sWYwGI2Bh8OF8+flh5L8japptxf+Z7sRTmd1RfUKlUB+A0UfFyx8DJk3iar+r/vmRxyO/RjXm66i8hakJfI+qvLYzbn0yaqQfsOG+Fv8hssxyyY/TIxP+l/3H8CYSlDqD/pf9yztPzp16ygjOn6ob5mUMFmtSDWlWTkvFXVf5lw+N/O8EV/FxZOL/iIyZeIBz8P+tLxIy/2PoSP8tPzK19ZtUu4dIk1Y6m5+sGJH2BBUoHQSqvX9pcpnkxA1I8N/T64/wC4lGUpf6ZiJR62f6p/3nDKSdfld+c2p+SbSXyzNo9zPNBI7rGKho1Y86Onps3Ff5vhyUcmOrMqv/Zf7JhxRT/Wv+cn9Wt4JCdHktyQVV5OVFJqoNWCqeLZZHNiOwN/50f9y2CeM/zvnF4fb+Z3TTr5po45rvUJATM7fGBUtsG/Zb9tsrIEjZ4tv6PoYWJeb6C0L82vNE8UdvYWdgeKAb3aVIA4gndfDJxAj/Bk3/oyh/vZORHH/Rmfjw/7qKdSeafzB1K1k+pWemsSp+Fbgs9Kb8eD8eTfZT4v9mmDJmERvjzR/pcWP/cSjx/7H/TNcjw84ZPnHh/3kmDa7pH5mfmHYx6de2UFhYo4JjLFOXHpz+OWTjmMdTACoRmf4fp/4rwv9y1eLfIH+t/0nL/es9020/MmzhitIk0+OGNAqqpNABso3H8uWR1AAoQ/00pf8VJnxgfwg/50oq93c/mHZRtPd3GnRRgdXFAPprlsc5PLEZf1cjATv+D/AGaR6R5k8/6/delpd1ZSwrXlMsTiL5CQ/C7f5K5V+Zo1w+r+bxRnw/1+GUeFmJgdIn/Zf7KMmQnyn+YkvxHXLeInslurU+XNMnLPk6Qxf6fJGX+/i1SySP8ADCP9WUv99Ga0/lt5zmJ+s+ZpCD/vuARn/hH4/wDC4xzZf5uKH/S3/dY4y/2TZ4kqr0f6SM/+JXn8m9QmFLrzBqMm1KchT9XLAMubvgP6sJR/3yITlHrw/wBVZH+QFm1frWpX8wP/ABaV/wCI5KU80v4/9hFiZTJ5/wCxivj/AOcefLYYvcPcz17STEj5dK5GsvIzn/m+j/ikyMj1n/pkwtfyM8m2781sEZh/M7t+DPxyo6a+Zmfjw/7gRa/D/rfOUf8Ac8KYH8s/KFkQ76fZoRvVkSv3vhjoweXiT/z8kv8AY8TYMRly4pf6aX/FImNvKloCiNYR06gNEKfMVyz+TgN+D/YyQMHB04fhwq2nXelrM7JPaNG5HpBCgNAByBZT8XxYjSHrHb+H0svCvp9ibJqdjUqs0VR1HIf1yYwcP8NfBeEhXS8hf7Min5EZPhRSsCD06ZEobwqt5DGk03UYopvFXYq7FXYq7FXYq7FVrorCjAEe+QMQeasb138uNA10H6/ZROT34gH7xmP+WjzjcP6npYmIYRdfkSdLJn8pX8+nydeBYsn3H7P/AAOWCWWHI+J/RkyEpR8/6yBb8w/N/kn4PNVj9cslIBurfrSvUp9n/guGEZ4S2leGX+x/H9XjZCcTz9H+4el+U/POk+aoPrGkzrKB9pejKfB0PxLl0oEC/wDZR+lMoEPkv8zNJsrj8zn07VpHayuJlD0YggONgCf2VY5VcpRq/wCqu5e/x/8AON/lJLf0oIHjagpKsjBwfEPXMaMJjcSl+P6P0tYBHUoDRbu9/LLV4tG1S5kutEv24W00pq0Un++pG/lbMqGQz9M/qj/F/Pi2AmWx5/wy/nPZAa7jJsHYVdiqB1bS4dTt2tZx8LDqOoI3VgezKfiyE43/AL1Qt0iSVYxbXRDTxgVPiKkK/wDsqYxlfkklMMmh2KuxV5/+af5s23kiKO3jjN1qdztBbr1Y1pVv5VrhjQ3l6YhmAOZYrY6n+a+or9YFvZWqt0jkNSBlQ1UekJEfzuLhR4g/m/7JHFvzU7DTvDv9/XE6n/a5f6eKOP8Ao/7Jcbb805xQS6ZD9Dn/AJqwfmT0xn/OnH/ioqMn9H/TH/iJOXyt+ZkhJl1q0jB7JACB8ucfL/hsfzEzyxw/zpy/48pyH+bD/TS/4mSxvIX5gvu/mFK+C24H/ESuH8xl/mYv9N/xUEjLLuh9n/EtH8u/PjDfzDuPCI7j3364fzGT+bj/AB/mxT4h/of6Vv8A5Vl5zlNZ/MUgHfig/DkMBzZegxD/AEzHxJj+Yqt+WHnH9jzJJ9MKnAM+b+bh+cv+Ikviy/o/j/Nb/wCVaecmHx+Z5F/1bdf18lbCM+b+bh/3X/TpIyz/AKH+kjL/AHsVv/KrPNqtUeZrgjwKEf8AMxsPjZe7F/pY/wDVOKfEl/Q/0kVT/lWPmwmreY56ey0/jj42Xuw/6RgZy/of6VRb8qPNRqR5juAa7VQHb3yPjZu7F/skjJP+ivH5XebKU/xLNT/jCpOHxs3di/2X/EqMs/6P4/zWj+VvnBdk8zzBT1/cKT9Hx4PHzd2L8f8AJJl4sv6P+lj/AMS5fyt83KN/M07V6/uyPu/eNhGfN3Yv9LH/AKpxU5Jf0P8ASRcv5Z+ckqB5jlK9qoa/fXHx8vdi/wBL/wAdR4h/of6VZ/yrnzwponmBqV7pU0x8fJ/NxLxnuh8ivP5feekI9LzBsOnKIGvz+DB4+T+bi+ckccu6H+ycPIfn9gQfMSqT1pbofuJC4+Pl/mYv9PL/AImS+JIdIfj/ADVg/Lfz0Bv5lJ3/AN8Af8b4PHy/zcXz/wCrSRll3Q/0sf8AiYtN+X3n2gA8wg0/4pp+psI1GX+bj+cf+qafFPdD/SxXyeQ/PtAU11OX/GM0w/mMn82C+Ie6H+lWnyf+Y8e0Ws27D/KjNf8AiGI1M/5kPx/nL4h7of7JSPlz80loE1SyI/yk3/5NY/mZf6nH/Tf9XUeJ/Rj85f8AFLo9N/NiFateaZMfAoR+Kxrj+aP+p/7L/q6vif0Y/OX/ABS4S/mnDTkmnyk9TUj/AI0XB+a/2uX4/wCSi+KP5v2y/wCKUm1z80YZPisLKVB4ORg/Nx6wmPx/WXxI/wA0tr+YH5gWxpc6CsoNf7uQ/wBGyQ1WPqMg/wA1eOJ6SH+yX/8AK1vNsBAufLc7A/77Zj/xGNsA1OL+nH/M/wCPRQDE/wA//SlzfnnqUC1uvLuoIF3Y8WIA8a+kq4fzGA/xV/WEP+qvF/sWfo7z/pf+PL2/5yGtIhW40rUY1Pcwnp45IZsJ5Th84/8AFMbh/O/3P/FK9t/zkj5WlH71p4Cf9+REfxy4RieUoH4pEQeRiyXTvzY8sajtb6hCSOxah/4bJeDJl4RPLf8Aqsjs9WtL1edtMkinurA/qysxI5sZQI5ozIsHYCVdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2AK7CrsVdirsVdir4q82+cG1b8zTqKuPStLhY42BFKREqPtfD8VMjL3f5raOdPs+2mE0SyjcMAdvcYQ1lWwodiqheWkd3C9tMOUcilWHiCKEZGUbFd6HjX5U3j+TPMN75GviwhlczWRboVNSyKf8ofF/rcshilYo/wAHpbOY9z2zLWDsVdirsVdirsVdirsVeOfldqMK+efMtgTWUyJIPkNmH+xZ8riGRGz2PLGLsVdirsVdirsVSvzFr9p5esZtU1BxHbwKWY+Pgq+LM3wquEC0xFvOvIuhXvnHUF87eYozGi1Fhat0jQ9JnDf7tf7S/wCt/q5jGXimh/dw/wClsv8AiVkb/H1PR9d0Kz1y0k0/UY1mt5RRlbf/AGiP5snPGJD/AHMv4o/1UEW+Svz/APJmteUIbSJ5mutEglP1V2JLxE/F6Ln+Vf2G/wBbIxyEnhl9X87+fD/imQmTsef87+c9rb889N0/yTF5ljdJbkQoggLAMZdkZCPtcVb4uX8mZQget8P85nwdU2/JL805vzF0yXUZ7cW7wy+nRSSDsGqK5GRje1/5zCVdHo2Bi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq830ib1/zE1EEf3Gn26g0/mZn3OV9fx/RZdHpGWMXYq7FXkP8AzklfSfoW10q1Ba6vrtERR3oCu5rt8ckeQlyZB6tYWq2lvHboKLGoUAewpjEUGLyXQ/yXvpvN0/mrzNcrfRozG0ioaJUj0zxPwj015Lx/n+PKZmeT0yFY4/zZfV/m/wCyQSZbF7EBTbL6S1gS7BatjJIdhVhXm/8AKjRfMn714/q94N0uIfgkU+PJcx/C4N4Hwz/sJf1osQK5bMOHm7zP+XLGLzPE+qaQNkvYFq6DoPrCf8bf8Sy6OeMjWT93P+f/AJKX/Hv9l/Qiz4wfq9H9L+GX4/EXpXljzjpXmi2+t6Lcx3MXQ8DuD4On2kb/ACWXLZwMDv8A6aPrj/po+lMomPP/AIpPMixdirsVdirGPzOuBb+WNVlrSlnPv80YDIyTFd+W0CQeWtLRBRfqcBApTqinpggNlLJcmh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuOAqFGeBZRRuviOv0ZVLGCb24h9MqHF/smcZUqKOIpWpy5guxVazUFcVXDFXYq7FWiKimAqsSPivEmtPHB70k2uAoThBVdhQ7FX/0fVOR6q7Dauwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqkfmHzjpXlyL1tWuY7cUJAZhyNP5E+07f6q5OGMy3A9I+qX8Mf60mQgTv/sv4XlU3nHzf+ZExh8nD9E6MCVa+nUGR96H0E+L/hfiT9uWJ/gyqWcQPDAeLkH1Sl/dR/03++hOXqj+64PUvGI7R9cv50voj+P6UZ/w+mKZWH/ONXl/0uWryXN/ePvJPJM6lj3+FG+z/rcn/wAvKZDJM2ZyH9UR4f8AZxnL/Z/5sWFyO5PF+Px/EnGnf84/eTrJGRbBZOXeVi5H+ozmq4DhMvqlM/53D/uUEe9JdR/JS/0iU3PknUWsGYCsUhLJt4fa+1/q5ZCeTF/t0f5svx/vmcZEef8AWY9qf5+615Ls7jT/ADVY01iBf3LrX0pqnikm3RftM3H7XDj8OW48kMm+8D/Fj/4j8fT6vUzBjLfl/R/4lEfkp/zkVc+ddQ/Q+s28cMkis0UkXKjFQCYjGwfj8PNvUaRV/ZyWQwPL0/0ZSjL/AIn/AEvDJjKum39Yx/46gvyktv8ACH5iaz5bYhYbpTNENwKCkyBR9n+6mbl/qZj4+VfzfP8AH9FQNnon5Va8mvXeuajE3OI6i0KN1BWKOKIFD3Vqcsn1/H9JMu7ueh5Ng7FXdMVYt5h/Mry/5ek9DUr2OOX+Rauw/wBZYg7J/sssGIkWaH9aUYcX9WMvVP8AzeJmIHn+P9L9TCrj/nImwuCV0Wwu74glaqhC1Ff2lEnh+1xyuU8cDUpC/wCbH/jxhL/YqREczuP4Y/ji/wBih4vNH5i+YKix0+HT4W+y825oe/En7WVDVQP0RlP+bKX08X9L6GPiR/hBP8UZSRFj+Q/6Sk+uebr6bUZzuUDFUBr+z7f6qpglLJk5nw4/zcf44fT/AJyJSketf1fx/vXoOgeS9H8vqF0q0igoKclUcj/rSH943+ybIDBEb8z/ADper/S/zf8AN4WIiE9zJZOxV2KuxV2KpH5m8n6b5ltHstUhEsMg36g/Qw+KuYs8AlvvGX86P1f7LiQRah5V8t2flG0h0PSoXFqgYhiQQN+R5uTyLMzfD8OThHh2JM5fzpV/vIxiiIod/wAv+Osjy9k7FXYFdhV2KuxV2KuxV2KuxV5lr3+5f8wdNsan09NspbtgOnOVhbpX/YjllUjdDz/3LLkHpuWsVkkixqXcgKOpPbHmoC5WDCo3GKt4q7FXYqpSXEcRAdgpboCeuEAlNWhL/XLHT4zNeXEUMY6s7hQPmWOSjjlLkCfgkRJYrdfnV5StpTbnUI3lH7Mau9fk0SOv/DYTjMRxEwH+fj/3PFxrKHCLNUf4uKP+9S+f85PrFV0bSb+8cGm8fpqev2ZH5K3TKPGxD+MT/wCFRll/zZcP0ouPff8AN4RxRl/nfwqA84+er01s9EihXp/pE1CPf4OSnB+Yx9I5T/SqPB/vZRUyjyAl/ncPD/pmmtPzI1Ims9jYxsOyl2Ff5W+zVf8AKXCM56Q/zpT9P+k+pePujX9Y8Uf9ixTzxonmHRLjTo9U166kj1K6S1b0FEfAuNnDj7Xxfs8V+DliM+T/AGrHt6fT4v8ApuOMP90yjKRFbD/NjL/iJMrT8hNPuKHV9R1LUKD7M1yeP0BQrD/gsAnmP8fB/wAJhHF/poy8WEv9Kw4p1XER/OjH6Jf5s+JG2/5B+UYTX6nz2/3ZI7/8TZspOKR5ymfjw/7jhQR7/wDTSee/84+eRtG+sa1aX9tFLc2N60a+ooJVNwlOX7PJHweEMg3uW34/zmUoAjvSj/nJDzB5cn0ltH0W3R7m3lV5JoEUJH1Ti8ijdmZ/s5aMEcVfwyP8P8fD/STwCP8AxP8AxTIvyC/Lpr7y5FrOryPLdTxSR2gYkrBGQ0KtGn2Vdvibl9rhxyBiZbj0gfTGPo4pfz58P1f5ymR/HpTj/nGiYW+l3uhToUv9Mu5Ipu4NSShB/wBYSL/sef7WThEfV/PQdw3+aWj3/lXWo/zC0aMzxxoItQgHVoh/u5feNf8AgPtfY54ARCXq/u5/xfzJf8e/H1JjKuf/AEixz8zfO9j+YK6NoOgvzh1GYPKVHxIK8ODj9hlX1mf/AFFbJ5cYxjp/Rkkxr4/Smn57+SNI03RdOW0tYowuoW8ZIUVKNyDhm+0Q3w88p8ER5fzTHm1xiy/zF+XPkzTLOS+1KwhSCMVYgEEk/CFQIal2b4VVftNiNNEfzh/nyYDEL/bL/iku0v8AIjyte20d3eacba5ccmRZ5QUB6ISsnVV+3/l8sMBIbwlkh/N+n6P6vB/F/N+r+k2AUdrDH/Mvlb8tvL4/0i5dJRsIobqWRyR29NJHYN/rccyjDUDnkywj/OyeH/pvXj45/wCbxNxExzMoV/OP/Fepi8XkXUfNMvp+Wbe90+xqT9YvJ3qQe6Q15fZP7X/B5QNXMfTOef4Rji/0/D/s4NZzHoZT/wBLw/6b8cTL7b/nGuG7tFg1zU7u6koKgPRAe9EP2l/1sMsmefOXB/RiOL/ZMZSnLr9icW/5BW1ogitdV1KFF+yqTkADwAyMTmgNpQ/5Ux/4piDLvH+l/wCPIwfk05IJ13WBQU+G54/8RTJ+Jm6yxf8AKiP/ABTMyJ51/mjhaP5I2r/32qarKDSoe6JrTx4hftY8WX+eY/1RGP8AxSRkmOUpj/S/8SsP5C6Kx5G4vO3/AB8P4Cvf9qlcePN/qk/84Y/+JYmczzkflH/iVVfyN0sJw+t39Oppcvh48xFGf+winiPetT8jdPWn+n6kVHb601P1ZAHL1l/sIx/Siz3kf1VGf8gNEncSyXF6z7VZpyTT+TkRXi2S4so5TnH+qeFInP8AnT+cf+Jaf/nHDyhID6kEzE9zPJX8HyEo5Jc8mWX9bw5f7xgeLrKR/wBL/wASllz/AM4reU5amP6wlf8Ai0n/AIlkBjyfz5f6WH+9jBjwy/nS/wBj/wASoWv/ADip5bhZmM90VO6ASEcfkR1yX73+fL5MwZDqUxt/+cZ/K0RLMbp2PUtMev3ZIeJ1nP8AzfQpJ75fNEQ/845eVI9+E7eNZm3+dMP73/VMo/qmP/Eo9Q/in84/8SqH/nHnyvvxW4UE9BO4Hy643m/1XN/0r/6ppuf86f8Asf8AiV3/AEL/AOXgKBroD/mIf+uHizHnkn8of8SpMupl/sf+JUX/AOcf9KrWK7vo+nSdj0+Z/awcWb+eT/WhD/iUXLv/ANjFTf8AIWFVpBquoRmtaiYkU8KVw8eYfxA/1oRSJT7/ALFY/k7qSD9x5g1BD2qQ1MPi5+/H/wAqos/FmOsP+VcVFvyn8zRb23me7BH88YYfd6mPj5v9pP8AmRh/vZp8Wf8AQ/5Vxd/gHzxCKReYQ43+3bivt+3gOfL/ADccv9LH/p2viy/of6WMf96uj0P8yYKqNSs5V7FoaE/8D0wDUS64wf6uT/jrWZk/wj/Tf8dUmk/M+AUC2E3Xf7Py2rk/zA64z/mzZRn3x/2a5dd/MuAlX0yzl2FCswG/+yOR/Mw/mZB8eL/es+OP82X+nj/xK8+bPzEjUE6FA58BcoPp+30wfmIfzcg/H9TiXij/ADZ/6eP/ABKufPPnWOiyeXqkipK3KH6KV6/7LB+Yx92X5f77hRxR7p/OP/ErP+Vh+btv+dekAIqP3qnf3ocP5jH/AE/l/wAdXij3T/2KnH+anmOKq3Xl66LA0BjKkdPc4nU4e+Q/rBbj/Sbm/NbVnQrL5cvmqNxxBHuOuQnlwy5n7EcUP6f+l/488o812l+1wmreVtB1LStSRyxaNTwap+IGNQ3/AAvwf5DZVDNjxfTMm/8AJyEeH/T8X+64v6PAonGP0mf9WUPR/v3lH5javq3mbzGj63bPa6jwRGRUKsxGyP6bfZZsyIziRxQ2/wBmvEDysfj+b9T6g8p/mjfafplvZTaPqUskESq0jqKsQN2NciM+LrLn/QkvHA9T/pJPO/z0/MseaDYaFHY3UJWcTSq6EOUXY+mB/sviyRnD6oy/o8VcPCniiBsf86uHgeoaN+e2hi3WF4L2ERKF+OB2NAKD4lDVyYlD+fA/7FBMf50f9knln+c3li5AJu/Sr/v2N0A/2Tooy0RB5GB/z4f8UoiD1h/p4/8AFMi0fzVpWtFhpl3BcleoikViPnxO2MoGPNTEhN8gxWcBXlTelPoyNdVX5JXYq7FXlXmX8trjU/P+neYwvKzt4G9QsRQOvIRhEPduStmNKyeHmPq/orb1XMlXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7BSuwq7FXYq7FXYq7BSuwq7FXEV64CFUmjjf4WAJ98gcYPRaQVz5d066UrPbRODsaoD/DKjp4HogxBY7f/k75Vvt5dPirv9kFev8AqnI/lgORlH+qf+K4mPAByY9N/wA45eXBU2DXNmx6GGSlD4/EGyYGSP0zl/ner/cmDKJlHkSgh+T3mbShz0PzJc1UkiO5BkUg/smrsv8AsvSyzx8w5+Hk/wA3hl/p+Gcv9nH+sy8SY51P4f76fitHzJ+Y/lwn9JWEGqW6jeS3YK5Hjx/d/F/k+lj+Zh/HGeP+lH1Q/wCnv+8SJx6g/wBaP4l/uYJpon5/aHdMLfVVl0y5OxS4UgD/AGdF/wCI5fERyfRIT/2Mv99H/ZpEQfpPE9FsdRt7+P1rSRJYz+0jBh94wGJjzYkEc0VkUOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvK/PX5nal+lh5U8nW63WqcQ00j19OAHoXP2eX7X/ABo2A5I4x6vXxfTCP8X4/wA1ntHnv/RY35rvfzM8t6Zcaxe39k0NuhZlWMA09jRd8gM5JowA/wA9hGZv6R/pnz9pnkDzF9Vi15dPlljlYzeoBXkD8VSP2V25ZQdRAHf/AI7/AKdImCX0L5P/AOcgrOx06G11qyubaSJQpKxHjQdKb8vs5lQljlylH+r6pf7mKRwy6xH+m/3sWXWX5/8Ak+7IQ3voudqSRSLQ+54cf+Gy4Yr5GH+njH/dGLMY+Llwn48P+74WSW35g+X7leUWo2jV/wCLkB/4liMMjyBl/V9X+5Y8B9/9X1f7lNLbWLO7/wB5p4pP9R1b/iJyJxyHMEfBTjkOh+TAvzr8kSa3py6rphZNU04+rEyfaKg8nj2/4JP8r/WzEmeA8Q/h+r+p/wAd/wByxBo2m/5V+f4vOukpebLdxUjuE7q4G/8AsX+0uZPPcJkGaYGLsVdirsVdirsVdir5efzHF5M/N+6uNRYQWl2vFmNQKOgZGP8Az0HxtleMcWw72cd9n0zZX0F9ELi1dZYm6MhBB+kZaYmOxYkUiMCHYq0TQYCaVbHIsgqpqOn3YBIS5KpXl5DZQvcXLiOGMFmZtgAOpJyQFpAt42t835waukcAI8r6dIHdjsLmVT8Kf8Yl+1lWU/wR5n+8l/Nj/M/rMpGth/nPakQIAqigGwGTApg2cjuljP5ieRrXzto82i3hISShVh1Vl+w4yvJAkWOY+liXx15s/IXWvKdxGursBpLyhWuUqyqCacnT9n4cEc5l6T6Jfw8X0cX9dRI8uX+5fXv5YeUtL8raHBYaM4mtyOfqih9Rm6yEr/muWRxmH1fX/F+P5qREjmy/LVdirsVdirsVdirsVdirsVdirsVdirsVebeTwZfPXmGXssdmntshP35X1Tb0nLEOxV2KvF/zSX9MeePL+jsfghY3BFd9mD9v+YfK5j7WY2D2jLGDsVdXI2rWVpaOJCt5OKtjCEOySrHjEgKsKqeoOQlESFFXhH5g/wDOOYW5GveRJjpupI5cpyYIxJrWMpyaJuvw8WR/s/BlUZz0/wBPFPGfqjcf9/wxlH+jP/TIgTD6d/6O34/0z13yaNVGlW48wemdRCfvjHupIJo3RfiZft8V4cuXHLYz4xdcH9H/AKR4v93Jld+X9FPcmh2KuwKwf865fT8oan35QFf+CIGRlyTFkPloBNMs40Hwi3ipToAEWmAGqCaTfLGLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FVprXbpkUrskh2KqIC8yQfioKiv8ADBSeiopqKnY42hdhVKOLQXDMpb0+NKN9mu7VBP8AwOU8Ruj/AMe/3Ll3xRra/wCj9X81Hi5+NU4n4hWvbp3yXHvTjmO1ojLGD//S9U4FdgpXZJXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXE03OKvF/zF/Oq7N5/hjyPAb7VXPBpf91x7fEeX2WZf5vsLkjKOIXLeX8OP/iv+JZkiHPf+iqeVPyBiadda86XD6tqjbsHJ9Jf8kL+0q/y/DF/kNmNLjyn1Hgj/AA44/wDFfw/5nq/i42oky5/7H8f7n+L+c9dtreO2jWGBRHGgCqqgAADoFA6DLIxERQZK+TV2KuxVgX5ufllB580w25ol5CCYJO1SPijf/Ik/4V+L/s5j5In6o8x/so/8V/N/48gh5Z/zjUutaLf3Pl2eKKSzgeQOTQSwmvj/ALtikcMvFeXF/j+BG+KI4Jb8P7z/AFTh/wBhL+b/AEf9L/VkAOdf538X+cq/85S+Vb+1ktvN+ih45oEeGeWPZlUgiNyR8XHi8kbt/Lkoy8OV/wA//dfj6f6qiVFlP/OMMFpp/kuOaOdXMs0ksxJpwY0TgxP+QiNy/wArLYwlfff08KeE/Nnmp/mT5d0xhHeahbxsegMgP6uWZMcEzyDLwy63/Mfy5cryi1G2YVA/vB36d8n+Wn3Fl4Ez0LyzVfKWtefvM94LvVZbLQVVVgS1nSsmwBHBHbjyYPI7SKzfZTh/JiHJlHpgJY+D/KShL/Yz9PF/m5UkZI8uKFfxV/vo8P8Aumb+WfyN8r6AqGO1+sTLX97cEyMSerEN+75f5SouY5wmZvIZZCfq/hj/AKX+L/P43GIvn6r/AJ3/ABP0s7gs4bdeMKKg8FAGWRxRjyAHwZAUr5crsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FXmP5eq2q+a9e16h9JXjsoyfCEfvgP+evxZTzl7h/umRenZcxQeqabb6payWN4gkt5lKup6EHqNt8gRY6x/q+mSsA1X8r9R04Rz+TtTnspYVoIJ3aaBwOiMkpZo/8AWTI+Jkj3Zx/FHIIxy/5mWEYy/wBN/plEpD+nf+qf8VH1/j6lOPz75yswINQ8uNNMBvLbXMfpsf5kSX94i/5Ltyw/mMX8XjYz/N8KWX/pbilwSSJR68UP83j/ANlH0qx84edrze00OOAf8vFwCT/yKGHx8Y/hzT/pRjGH+xn6l44japk/zo8PApHSfzB1Xa5vLTToyd1gQu1PZ3wfmJfwwiP6WSXF/poRTx1yjH/OMpcX/EvK/wA9fyl8x2enDzD+lZ797Tdw3wFE7vGEP/B/5H+rjHU5YneoX/qfFw/5yjJIeX9VPP8AnHryx5a83aIL/UbJbjUoGMczTM0gavxJJwctH8S/5P2uWDLA5Pqlkn/R45R4f6vBwy/2TGY4tzZ/zj/vXuem+XtO0tPSsLaGBPCONVH3IBkBggDdR4v50vVL/Ty9TERA5JiqhdhlwADJdkldiryT/nIRwkGis+yrqsDE+FA+Vy3+UmcQ9byxgpT3EdvG0srBY0BJJ2AA61OKQHyR5w1KW/8ANM+q6LJPY6Dqk8VrcXK1VZCCFkdP8nZvi/m/1spjPgJjExMv9wzEqNA7vfNT/J/RrjyzN5XsY1hhmUH1KVYuCGWVz1duQrlRxECx6sn1cUv4v+OtRDLfLmjroum22mRmq20SRVApXgAtae+XwFBLx9tRb8ufzAuHvQRpHmHiwl7JMvw/Gf8AWLf7B1f9nHDuTE/V9Uf6cfx+PUzj6tv9K9vkRZlKMAysKEeIOSlGxRYPmq2/Kix8x+e9Si0qV9OtrFVZXtqCkp41P8v7c2UDihtD01/O9X4/hUAw5bMl85fk55t1SwayXWPrcUbCWNZhRuabp8ajivxftZM5clbxgT/Oj/x9ROXl/vmJaZ5H/MXznxub2/j4WkxCeowK80+FpFWJOL8W+wzfYflwyM9VKW0Yn+lw8MP82Xi/7n1pOQg8v9y9CtPyDe9Rf8SavfXrA14CSkdPDjIJW/4FlywZc8v4hjv/AFMcMv8ATRlGP/SpTOZveuL+b6f9j9H+xZl5X/K/y95Y30uzjjkPWRqu/wDyMl5v/wANlIwA7yvJ/W/4n0wj/mwiwEfx+Pp/zWWAU2HTMkCmTeFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXEZEhWqYOG0vnfXPy3h86ecdejei3UUEDQSb/A9BTp/NTi+Y0uL+Hpxf5yn7mefk354n1WCTQda+DWNOPpyA/tqvwiQfzf5X/BZkAiY4h/nMib3eWeZ/zFvrL8wL7WbDTn1CDTYRA5WvwL1kdf8AK3yBOMUJ7X+PUpkBze0flv8Amtovn2JzpZKzxAGSJ1oy12+kV+HLZYIjlRtZCuW7NDEhFCBT5ZUcMO6PyiwWR2sUR5Roqk9wAMEMEIbxjGP9WIigRAV8yEuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV8w/wDOTen61oOsweZNGnnijljCO0ZNFZTty4/ZVlyENRLGeG/q+mMv9yyjkMdu9BflX50/MrWLaXUdPnj1COFgrwzn4iDvVDksmqrnHiH+18PF/sWUslcwD/V+pn8f/OQV/pg9PzFod3byLszRjkvvgjmwy5S4P6wYiUD1I/rJjbf85NeU5CFneeAnrzhfb50GXCMTylCXx4f90z4AeRH2smsfzm8o3qc4tVtQPB5Ah/4GTi2TOCXSj/VlGf8AuZL4R8v9NH/ik6s/Omi3qepbX1s6nusqH+ODwJnkJS/qjiR4cjyF/wBX1f7lC6zY+XdfiMOofVbhWFPiZCfoatcxpaO9+GQ/pRBixOEnoflJ57N+UMOlyNc+StWNjON/RMgeMmvQrXZf9jiBnxf7ZH+bkj/vv+kWQ44+f9GUWoPzd1zyrMLTzxZEQGgW7txVD2qy/wDDfC3L/Iwxzwma3x5P5svx/wAd/pIBB2PoP4/H8T1vStXtNXt0vLCVZoJBVXQggjLJRI5sTEhG5FDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVSjzXr0eg6VdarLTjbxM+/iBsPvxCQwL/nHvT/V0N/MFyOV/qs0k8z9zuQi7/sr+zlIFky/zf8ANTLmlf50Xsvm67tvIejkvJLIst4y9I41NaOR+0x+Lj/k5LIeAeZ+mKfpHveqabokFjYxacg/cxRiIKfBRxzGGOxui12nac1upjkbmtTTkBUDw+WMcYltIRPwip3WX/ljS9RH+m2kE/8AxkjVv+JDJflcY5RjH+qOGX+mi1eHHnQ+QSC7/J3yndKVbTbdK/77QJ/yb44fy4HI5P8AlZk/4pTG+8f1ZSik9z/zj/5bdjJbrPbkilIpnUfdXHw5x+mch/Wqf+6TuORP+6/3SGm/IaFR/oeqX0PYfvS23h8Ry7xM38/i/rQizE5jr/sYvKPOn5d6t+V97HqWlanNHY3jhJ5eIqpJrV0+y3VmTI48s4nhPD6vp/mf7n0/5rKE5D4/0Y/8eel6b5T89TRRXdj5jingkUMrNAhBB3H7DZLxco2MMf8Ap5f8SwlOY5iHz4f+naIGifmdbii6lZT0/mjC1H+xiyX5iXXHD/NnP/i4pjM9Yw/00v8AiYr/AF/zNtzV00+UD/KI/wCNFyP5n/a5f5v/AFkm2cYP8I/00v8Ailyax+ZMJPq2FlMOopKV28OmD8zH+ZMf1fV/vmJnE9K+MlkvnH8wIDVtFidTT7E1fn2wfmofzcv+kkx8SPdL/Zf8S2PzU80Rg+r5auWII+w9QfGlY8s/MYe/IP8Akl/x5HHD+n/pJSbX849ZUcpfLV+oofA9Pbjyw+Ph/nT/AOVf/H2XFj75/wDKqX/FPK/zVls/zAZLu90bUrG9jHBZViLchU/BIOH2V/YzGnPHdwmN/qjKPp/3f1qeHpIj+tD/AI8yL8rPPOn+QtOOlG11KUs3JmkiNAaUogp8K5bDJE/VOJ/qx+n/AGUmdCt5f7GTMpP+ch9FjNGtrzYf75bLhLGf4h9q8Mf53+xktH/OSHltf75bmOn80R6+GS9H86Pyn/xK8Ef5w+Uv+Jcv/OTHlBq/vZh84WyXBH+dD/Z/8Qngj/Oh/s/+IRB/5yL8nrT/AEl6EV/uzt88Axj+dH/Zf8SgQB/ih/sv+JeFfnJ+eEvnC/XRbCUwaFyUSOuzSD9ot/kr/LkTKthz/nLy2H+me4eWfzV8i6FYxabYXkUMESKAKECtNyT3Zv2srhg4Btwn+duoxV1j808tvzo8pXJoupQAn+Zgv68u8I+R/wA6KDj93+mijx+Z/lg/9LWy+Xrp/wA1ZLwZdyOE+X+mirRfmN5cl2j1K1Y+0qH+OR8MrwHy+cf1rr3XdA1S3e1ubq1mglXiymVCCD4iuQlpzIUQfkx4HlTaiv5SXX1iwuFvPLFw4DxBwz25J+3HQ/FF/k5GHEPTkv8AoZP97NlG+Uv82X83+s9k0jzDYavbpeWMySwygFWDDfLDAhBiQmIIPTIMW8VdirsVdirsVdirsVdirsVdirsVec/l4fU8z+ZJCOk9uv3R5WObIvRssYuxV2KvE/LMx8xfmZfXjHlHpsXpxnjt04U5fzcpJGyk7llJ7ZlzF2KuyKoPUNTtdPT1buVIU/mdgo+9sEYmRobs4wMuW7dlqNvfxiW0kSaM/tIwYfepyU4GJogj+sFlAx57f1kWMQwdUYaV2KuxVxFcBCtDIhLeTQ7FXYq89/PdyPKl1GOsrRx+H2nAyEmUWbaPB9Xs4If5IkX7lAwx5MUZkldirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FViOrjku4wVSSKXGvbCh1MFK3hV2KrXRWFGGQlES5pBpSjkYsVZaAdO9R44g9Px/mpI2tXybF//T9UHKzdpbyxDsVdirsVdirsVdirsVcTTc4CrGdN/MDR9RuJrWC4TnbMVl51ShrSg5hef+xyRjttv/AFTH0/1/Vxx/0rZ4e1shgnSdBJEwdD0KkEfQRga1XFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqh7y9hsomubl1jiQEszEAADxJwgXsEgW8R1LzPq35rai+j+WpGtNCgNLi73Bk/yU9v5F/2b5GeXg9MN8n87+GH4/wCkWRlwbD6v9y9N8lfl5pXlCAx6bFSVgA8rbu1PE+H+SuVQx0bPrl/O/wCJa6ZTlyXYq7FXYq7FXYq8Y1CBPLH5mW90jcItYhKOv8zAU/4msLf8FlUNiR0/H4/zmQ5PWNb0mHWLKbTrneG4jaNqeDChwzjxCmLwnT/+cSba1LRfpW5FqzEmNaLUduX7Jb+ZspjkzfSDEf5sv+KQDIdWVaP/AM4y+UdPYvNC90SKfvmJHz+eA4pz+qUj/VqLHhPUlMP+hdvJdSfqANe3Nh+o4Bpz/Oyf6aP/ABKBHzK1v+ccvJbf8eTAjuJpAR9z5KOKceU8g/5V/wDVNkAR1P8Asf8AiU/8rfl/F5YISwvbxrZQR6E0okQf6nqq0ica/wC63X/KzIEpn6peJ/SlGPi/6ePB/suJlZ6kz/rcPF/poxjJl2SV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KoXU7pbO1luGNFjRmJ+QrioYN+RlmY/LqXzkmS/mluWJ8Xc/wGVQG5KS9Dy1DsVdirsVdirsVQWsadHqdnNYzgNHNGyMD0ow45CQsUinyd+XGuar5Gt9X0rRLQz6ul0sXNgWRI6lfUcKVX7X2MhHLGPqlv/R/pfj+m2A/H+j/C9Yt/yd8y68qz+bNfuSTRvQs6RIp8K/Zbj/xi/wBlkhqMx+ngwfzeEcc+H+lP0S/2eVRmmOVQ/q/V/pvT/suNEf8AKldZ0wf7gfMN7ET+zMRIvtt8OIzZhzMMn9aH++lKafFmTvwz/rDid+jvzN0ShiurTVI+4dfTb78H5k/xQ/5Vn/e+lHiWd4j/ADfQmWlfmH5pkf0L7y/MrjYtHIvH6GcrhOox/wC2/wBXg4v9yjihX8f+lSD82bu41ify/p9/bm3nm1AOYuQc8EBFSU5LX4vs/FkZyEhY4v8AO9Mv9LxJ26X/AJ3/ABzie15cweR/mLqdz5t1mHyPpTssG0l/Im3FAf7rl/M38uQnPhFD6p/T/RZ8gy/zF+Xun6p5ek8txII7f0+MVP2WG6PX+bl8XLKTjobc/q4v6TBIPyM80XOpaZLo+pmt/pMht5Cf2gP7t/8AgcyRLiF97KW+70zFixrz95JtPOGmvpt3sftRuACUYdGFf+Bb/JynJC9xtIfSh5v+X/5lyeVJJvKPnST0bu0r9Xmc1WWKnwfH/wAR5f6n7OXY5eMP6X8UZfj1f75tHr/3zy38t/ztfy75muYJY43s9Sui0kpJBVSzEEH7PFeZwQA8+JOx26vZ7j8w7jzxfNoPlPktqtRc3xU8QvdIP5nb7PLGcxDYevL/ADf4Yf0psTUfOX+xi9J0jS4NKtI7G1XjFEoVf6k92Y/E2QjHhH+6/pSYI/LFdirsVdirsVdirsCuwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsQFeW/ltILvzX5gu+4kjiHyUZSGRCU/nXodxoF3B540RKXNseNxTbkni/wDN/LkQfDl/Qn9Uf6SImj70f/zj3afXdGudauFHPU7mSUggH4a8QD4jDwCRP+lTJm3l3yDo3l25nvdLtkgmud5Ctd969Psrv/Lgx4eA8yf6Mv4f6rACmR5kpebfnv8AmHf+RtC/SOlxB5ncJyYVVAf2yO+MZAHfdlGhzY1+QH58P559TTNZ4pqcdWXiOIde+38y5ZOjuNv6P/STIgHcbPbsra3Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVG5torlDFModD1VhUfcchOAkKO6FKx0y2sF4WkSRL4IoH6sjjxRx/SKUCkQ6BxRgCMMoCXMBKAuPLmm3IPr2sMlevKNT+sZSdNj/mx/3LDgHcPkxu9/JvyheSetPpdsX8VQL+CcRkTpo9DMf1Zz/4pHhg9/8AmylH/cySi7/5x38oXDmVbV4ie0crqo+SBuOHwZDlOcf9LL/ZTjKf+yZb95/H9ZDS/wDON/lt+jXQp4TN/XCIZBymflFNy7yoSf8AONmhop+qXN3DIf2xKSfxyQ8Ufx3/AFo/8eTxS7ylOpfkHrsFs9vpOtyPG4I9K5UspHgeRkX/AITBKeQ7SEMg/wBLL/ZR/wB+nxJVRqf9b8SYBpXlH8xvyyvPrum2xuratZI4W5xsO9Y1PqKf8pYuS4YasR2mJiP9IcfD/nw44R/0/wDXRHNW0hL/AHX+54uFn2lf85WaXcDheafdwzIP3igBgGGxXco3X+ZVzJ4sf87/AE3D/wAU2ejv/wBz/wAUn+nf85IeV7t1jnea2L95UAA+ZVm/4jlkYCW4lE/6b/ieD/ZIERLkYl6HpHmHT9ZjE2nzxzoRsUYH8PtZCUDHmgxITLIsXYq7FXAYq7FXYq7FWmNMVbxV2KuxV2KuxV2KuxVoHICVq3k1eaf85DWd5d+T7uKx3b4C43rwr8VN8hKXCkJ3+WmhPp/lWx025BR1twGCmlC3xbEdPtZGG4QU70by1p+jBhYQrGXqWYD4mJ7s/wBpsjHEAeLeUv50jxSRSa5el1MjSuySuxV2KuxVKvMnl208w2Mum6gnOCUUI8D2Yf5S5VOPEP8AcrTyPyN5gufy01M+TfMTMdOmYmxum2Wh/wB1O/7P/GrZPDPxPSf72P8AD/P/AKjZH17fxD/Zvb1IYVG+Sa3kHnvzv+mvMth5O0gu8sU6y3ZU0ARPioT/AK2QlLhF9/p/pM74R73sOTYOxV2KuxVoqDkDEFWuA8Mj4ce4fJWvSX+UfdkfBiekflFWjDG2xUH6MB0+M/ww/wBLFVrWkLChRafIZH8tj/mw/wBLFFKDaPZv9qCM18VH9Mfy2P8Amx+S0hJPKGjybPZwGvjGv9Mj+Ux933sTAPCPzm8zWtpqP+FvLmkQS6gyirtCpG/aMU3b/Kx8DFDc8Rr+GMpen/ZNgjEDvZV+U35YLc6UZfOOl2i3ZY8OMYrwp1fj0bIRxQybjjj/AJ+SP++azES7x8ZR/wB8zBvyZ8ot10yA/Qf65P8AKx75/wDKzJ/xTHwh/S/08/8AikPJ+RvlF14/o+NR12JH8ckNOB1n/p5/8Uvh+c/9PL/ikG//ADj95QY1FoV9g5GT8M/zp/6YqIV1n/ppIS6/5xu8pT1pFKlf5ZD/AMbBsTCdVxT/AM48TIRI6y+bGNT/AOcVLMTrJo2o3FnD+0jfGf8AYFTHxxGTPDaMgY++cOH/ADY8XH/sGwTlHkfvTmL8itVsR/uO8xX0J8CXZf8AgBMmShlzR3vHP+tD/qqMv+5XjmeZEv60eL/dykqN5E/MKwUmy19LgjoJYQPxb18fzGU/VHGf6pH+5jixf7tlLNI9I/7GP+4xqJvvzS0zeWGzvUHXgQD86KsWE6ocjjkP6Uf+sk/9ypygD6f9KZf8UrxfnRq2mgrr+iXMRXbnEKr+JZskM+KRq5Q/rD/iWPFC6uv6ya6X+fvla+IjmuGtZT1E6MgB8C7Djlwxg7xMJf50eL/SfU2cHcQa/wA3/dM50zXLLVU9WwnjnTxjYMP+FwTxyjzBDCUDHmj8gxdirsVdirsVdirzv8tWDa75jPf66g+6MZAc0l6Jk0OxVhf5weYrry95XvtT09/TuYo6o1AaEmlQG+EnBdebIPOv+cTZX1DTL/VLlvUuJ5wHY/aqASeX+sTyyNWbQTb3nJodiqR+c/M8PlnSbjV5/swIWA8T0Rf9k2NMoi3kHkf8q5PzBjXzT55kkuPrBLw2vIqiIfsVA4t9n+XjmPOU8mwPh4x/M+qX+6/3KmRl5R/mp1qX/OPdrp7/AF/yTdz6Ner0CuzxN/xkjkLN/wANx/yMIllx/TLxI/6nk4f9jOMf93GX9aCIzlHkdv5svVH8f6ZH+UPzSurW7Xy351jFlqo2SbpDP/lRv9lWb+X/AIjl0JDL9PpI+rHL6o/1f5/4+pmAJctv6P8AxKeedtWuvLd1BrquX03aK6j7KrH4Lkf8Y2+3/k4Iyo0eUv4v5kv+JkwHczGC4juI1miIaNwCpHQg9MlyWlXFDsVdirsVdirsVebfnofW0q0sq73F/bLTxAfkw+4ZCTKL0dECgKOgyQDFv5Y2reFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsKrGbjTBdJG6/FDsKuxVazUBOBW61FcbVYVBIJ7H+GRSqZND//1PVORpXYVdhV2KuxV2KuxV2KuxVphyFPHIlWLeZfy903zDCYLsOh5hucLGN9v2eafFwP2eOYwwUbieCX86I/4r0Sl/SnGSSe70f1fT/pv5yfaZp0OnW0dnbArDEoVQSTsPc/EcyAK/4qSEZk1dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVY35089ab5Qsze6k9Cdo4xu8jdkjTv/AK32VyUY9en8UmQFvObXyTrf5mMupeapJLLSieUVih4kjsZv9b/K+P8A1cxzmlPaHox/zv45/j/SfzY/xIM72j6R/O/ik9a0fRbTRrZLKwiWGCMABVFOmGGMQ5MQKTDLUuxV2KuxV2KuxV2KvIfz+sxbfovzAo+Kyu1DN0orf83DKpbFMeb1mCZZ41lTdXAYfIioy1VXBSHYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirC/wA4dSbT/LF7In23j9Jfm54YCyinnlHTl03SLS0UBRHCi0HjQV/HIQFBinGWK7FXYq7FXYq7FXYq8cggHlv8zZAQFt9ZtQa7byIenzbjlMYg2Dv/ABJi9jy5DsCuwq7FXlPnOE6h+YOiW6CotYZZ2p234iuVyO7Lo9J1m4ktrKeeAAyxxuyg9KgEjJk0gPKv+cbSt/pd1rNw4k1C5uH9Y9xQ7J8sjw2eLv8ApTLffvexE03OTYvGfyccX/mvzFqlpvYvMsaMOhZftUyuIo0yO2z2bLGLsVYr5+8i6T5psZV1O2Wd0jYxsdmBAqvBx8S/FmNPGD6vpl/Oj+PUgh8z/kl+SVt5uvrq81UONPtn9NVBILMDuOf8q/tYJEy9IP8AWkpfWOh6DZ6HbLZadEsMCDZVFPvyzHjEOX+m/ikkCkxy5XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYCFdhV2KuxV2KuxV2KuxV2KuxV2KuwK7CrsVdirsBV5Z+SAM0ms3hA/eX8gBFOi7dsqiN2RZN+a03peWNRegNIG2PvthmLQHnv/OLmtu2jSaJcmk1q3JVPUK+/Tw5ZOJtkdxb2/CwdirFPzO8nDzfoNzpAPF5Vqh/yl+JK+3LKcveNyEF8Zfl9p+peSvO1jDqMUlvKJwh5AjkCeFQf2lwwyCY2/wCkGUDb74BqK5aEOwq7FXYq7FXYq7FXYFdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVxFcChwFMKuwUq3iK1wcITa7DSHYVdirsVeM/mh5BudGvh508sx1uYt7iADaRf23CfZLcftf8AB5h8IxnffEfqj/NWJ4fiyryzP5d/MbSlvDawyK20kboOSMPtK37QyyWlh0/zZR9KygP+JSDVP+cedNEhuNCup9NkO9ImJWv+rVcYjJj+mV/0Zf8AFLGRjyP+mS+Hyr+ZPl1mOn38Oowjok/Uj6ePH/g8l+ZnynHj/pR4fx/sWXik8xH/ADfxF0v5u+ctEH+5ry9JIq/akgY0A8fgSdf+Gw/m8J58WP8Arf8AV3wlM4H+dD+lL/j0YR/2aY6D/wA5IeXL9zDqBksphsRIvJf+CiLn/g1TJwHFuDE39Mfp/wBlL0f7Js4BLeJv+t/x3jh/s3pWk69Y6vH62nzxzx+MbBvv49MkYkc7DCUCOaYYsHYq7FXYCFdhV2KuxV2KuxV2KuxV2KuxVQurSK6jMM6CSNuqsAQe+4OQlGxRVVVQooNgMkBSrsKuxV2KuxV2KuxV2KuxVIvN3lDTvNdk+m6rGJIW6Hoyn+aNv2WymePi/oyj9Mo/VFBFvMdP0Tz/AOQK2Ok+jrml1IiEzlZYx2BZiqsq/wCs3+xyQ1B5ZYyP+2Y/4v638X+w/wA5sGS/qHF/SiYx/wBNxfj+kn35Rflxc6C11r2vcX1rUHLSEGoRT9mJTlcbkeIjh/mxYE3u9NzIV2KuxV2KuxV2KuxV2KuxV2KuxV5v+a/ka61L0fMGhgDVrA8lH+/E/aiJ8f5MxpjgPFz/AJ3/ABSRKt0f+X35oWHmi2Ic/VryFhHLFJsQ52oK/a5MMyYgEXHcMzG9xuznFrdirsVdirsVdirsVdirRFeuRIB5qkWreSNF1dSt/ZQS8upZBy3/AMofF/w2UHTQPSv6plD/AHHCwMBXd/V9P+5YDqf/ADjpo4Y3OgXFzpV1T4WhkYqD7qx9T/gZVyURkxfRL+tGQ+r/AJVcH+zjlZRMo8ifV/pf9jwy/wBNKSh9f/MXyh8FzFFr1mv7cfwS0A/aHw7/AOxn/wBfJfmgP7yMoH+djucZf6WP/TrF/WZ+ID9Qr+lH/pH/AHOL/OTTy9+fug6g31XVPU0y9DcDDcKRQ9vjp0b/AClXMiIjPeBEx/pZf7qUf9mkRB+k3/unpFrdw3aCW3dZEPRlII+8ZEgjnsxIpXwIdirsVeW+RwLTz1r9qxIaRYJgCdiGG5AyEb+1l0epZNi7FXi//OVfmU6V5VNin27+QR9vsr8b9f8AY4KtIDLfyV8oHyr5Ys7CQhpWX1XI8X+On+x+zlOMdeVoZ3l6uxV5R/zkXMG0K2sXNI7u9gic/wCSSa1yuZZRenafbrbW8cMf2URVHyAphiKDFE5NWOedvI2necLI2OppUdUcbMjfzI3bKZ4+LcemY+mSKeZxaxf+QmHlrzkTe6Fd1hhvCPshvhEdz4ZMZPF9M/Tl/nfwz/pf12wS4tjtL+d/OTT8p9efRdSuPI19Isgt1E1jJyr6kDbqAe/pD4clEmQ9X1Q9MlNnm9bwsHYq7FXYq7FXYq8y/NVDc675btOz3kjn/nnHzyqR/HxZB6blrF2ABXYVdirsVdirHfLPnG21+5vrS3BD6dOYHruCQK7Y7dGRjSA8y/mlomgTfU55WmvKV9GBTI/0qn2f9lkjHhFyIgP6Xp/0qeCtz6f63/EqXkD81NO87SXVtZJLDcWRUSxyrQjlXj/xHGQjzieP/Y/7pZRA5Hi/2LNsiwdirsVdiqGvb2Cxha5unWKFASzMQAAPEnCIk7BIFvNb7/nITQklMOmw3mosAd7WFnBp1ozcQw/ylwSMIfXOEP60v+J4ospCMfqkB/R/HpS9/wA6fMmoME0XyveuP57k+iPoDLxb/kblX5rB0lPJ/wALhxf7KHi/7mKDPHH+fO/5sf8Afx8WKjL+fmq6Kyt5o0C5sLWoDzqwkVanjVuK8aV/y8nDNiybAzhf0+JCUP8AdRh/uURnCRocQ/rCX/ExevaZqUGp20d7aMJIJlDow6EMKg5MilIpF4EOxV2KuxV2KuxVSlYhaheR8NsBSHQx+mKVJ+ZrkRfn/sf96km1XJsXYq7FXEV2wKpM4VlDHdjQfOlf1YKSq5JD/9X1TgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqseRYwWcgKO5xpXl/mr87raGc6R5XhbVdTY8QIt0U+Lv+1x/yf8AZumSkY4xcz/mR+v8f7L+i2ECP1c/5qzyT+Uk5vv8TecZvr2rMAUjNDHD3og6Fl/4Ff8AK+3mMTLN9W0B9OP/AIv/AIn/AEzXI8Xl/RerdMvV2KuxVSnnSBGllNEQFifAAVJxUMA/ND81k8lpbQ2ts99fXrUhiQkVH81QGP8Aqqv/AAuPFEby6fzfx/xTIAdeQ/mpz5N833Wt87fUrGXT7yIKzRvRlIboUkX4W/yl+0uQjkhP6T/myHDOKCR0/wBLL6mV5NDsVdirDvzb0Qax5bvIKEsieoKdap8R/wCF5ZTk5JBXflRri6z5cs7pdiqemd67oeB3y0FMmX4WLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirzj86Od3b6bpMIq95fwgj/IQmWT/AIVcrnySNnoqKEAUdBtkwELsKuxV2KuxV2KuxV2KvLPz7tWtbC18wWwH1nT7hGDH+U15iv8Awv8As8pOxB/zfx/skjm9J029W+torqMgrKiuCOm4rtlyDsisACuwq7FXlNtxn/NCY1oYNPX6eRH/ABHK+rLo9VIB2OTIYvCNa/KvzF5N1abzB5FkEkVw3KSzY0Xc1K0b4WX+RvhZMohllh9JHHi/H+y/pR+v+ikSI25oua6/MPzo36Kmtk0S1p++nVuTMD1WPdsn+Zif7oSMv9s+mP8AsWQyV9I3/pfwvTPJHkuy8n6cmmaeDxBLM7bszH7TufFsYQrnuT9UmsMhy1LsVaZQwoe+A7q82/IZPQ0ae1I4vDe3KsO9eZbf78rxj7WRelZaxdirsVdgtXYVdirsVdirsVdirsVdirsVdirsVdirsVdiqVeY/MVn5dspNT1F/TtogCxoSdzQABfiJJxH44kgWxryh+cfl3zTKbWwuOFyOkUw9Nj/AKgbZ/8AYtyyzw+sSMg/o/2RZcPcRP8Aqs6ytg7FXYq7FXYq7FXYq4mm5xVoEHcYq3irsVdirsCqN3J6cLv4KT9wwSKvOP8AnHu34+XTdd7i4nk/4dlyMElv/nITUWtfLDwxNR7qaKEe/I7j8MZFlHZitlZf4T/MCxhiHCLUbUKR2LKu/wDsuUeU4hWygvdsymDsCuwK8B/5yD0tY/M3l3UwvIm4EZA6mhDD9eUVRPS4sgkh/wCcorzTPN0uk6vEkelpKYiQPiQA09Qn9r/KzMhwyH++Zijt/sn0fp+oQajAl3aOJYJQGR16EHuMgRWzWRSKxQ7FVC8u47SJp5jxjTcn2xSN1YEMKjFDeKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KtEAih6YCLV4VdwN+WfneKeE8dG1s8GU/ZSUnt4fER/sX/ycrxHh9HT6oso9z3YGu+WsXYFWM1Nsx8k+jIBj2veQ9F19WXU7SKYsKEso5fQ/2hmF4A5j0f1fR/uWJiD/AMV/F/pnnl7/AM45Wtm5ufLV9cafNvQBiyj/AJmf8Nl8cmWHI8f9b/jv++TEyjyP+mWp5S/MjR052mqR3x/llH6ueXjVzPOAr+jw8bIzPcCqH81vN+mJx1LQpJOAIZ46026t8IZeOWDVYv4jKH+l/wB/KKiUDzuH4/p8CI0//nJHQXlW21GK4s5KfEXTkoI7fuyz/wDCZfEQkNpD+jGX/FfR/sloHcH+r/S/0nFF6LofmnTNdhFxpdzHcIf5GBI/1k+2jf5LLjLHKO/+y+qP+bL6VOMjf/Zfw/6b6U4yDB2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvLPzM/KBdZuE8waCVt9atmEi1A4SlTULKvTl/lf8F/NmLwnHvHeP8WP/AIn/AIn8Sbrl/pW/KX51wXFwNF8zRHTNYWimOX4VkO9XhkfitGp9luP+Q8uZMDHILhvw/VH/ACsP6PB9U/8AN9X86EG0RE/p/wBL+P8ApL+i9SBrhanYq7FXYq7FXYq7FXYq7FXYq7FUm13yjpWuxGHUraOZW/mUE/8ABfazHlgjLflL+dH0yYmILzi//KLVfLbNe+R714iCGNtMxaNqfsgn7OSGTJj5/vsf83+P8f7JkJEeY/mo7QPzrhjuf0T5rgbS78MEq4/dOT9lkk7BvtfFl8DHL9B/zJfV+P8AZNgiJcv9K9PjkWRQ6EFT0IwU1r8VeJ/mBrUPkv8AMDS9buX4WmpQPazE9AVI4PX/AFnj/wBjyyMB6iO9lHu73tSsHAZTUHpkmK7FXgXniI/mF+YVp5c4CXTNHHq3AP2SxAd+VDuu8EfH+bllOXcV3/7lJG1Pe0QIAqigHQZaBSF2FXYq8n/5yH0bU9V0uyTR7VrueK8jk4L0AUMav/KvLj8WUZJiPNbpmPkZNdNn6/mMxrcy0IhjG0Qp/dl/22/mbJxnxdOCP8PF9f8Anf8AE/wpMr5Cv91/nMnyxDsVS3XdCs9dtJNO1GMS28oIZT+seBX+bKpwEh/uZfzVp8pfmBpWs/lb5l0u+5tcafbycbaTqxiJ/eWr/wCUqn4Mjjyb1L6h9Uv50P5zIT7/APTf0X13bzLNGsqfZcBh8iK5cN2KphV2KuxV2KuwK848/wAhTzZ5YA6Ga7r/AMiRlZ5sg9Hy1i7FXYq7FXYqpTTJChkkIVFqSSaAAdak9sQL5JAt8sedNWtPLms6kttryxaVqEpuZY7QB5ubA1iSQfu1Xl+1z+z+xgjDJj2qEPV/eZJeqEf+FfVx/wBbhbYiQ7o/0v4/9L/O/rcK3yBqV759eXR/Jvo6PBEAbicnndSKTxLF2+I8v2+P7fHKpR4fUB42Q/5TJ9Ef6kP4f6rAnh3jv/Sk97/Ln8sNN8jW8kdkXlubghp55TV5GFdz4D4vs4wiecjcv9jH+q179d2Z5cl2KuxVxr2xVINd8pWnmS3ht9aQSiNldkBIQsB0YftpXfi2UyiZdZQH8UY/7n/pFJ7k1srCCxiWC1jWKJRRVUAAAdBQYwxRhyAH+6/0yAKRWXKw783PRPlTVPrIrGLWQ+O4FU/4bKJkHb3er+FkAl/5BQTQeStMW4rzMJYV/lZmaP8A4TjlolaCXoOSQ7FXYq7FXYq7FXYqtDgniOo64Oa01y3ocVX4VdirsVUyFZt+q7/ftkaBKVTJIf/W9U4CFdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVjXnPz9pXlC1N1qkoQn7EY3dz4In/G32cnGF79P5zKMbeYGDzV+alwhnEmk+XSalekkqgdG/a+L/AID7X2sx5am/Ti/zsv4/3n+nXxP5v+mZnqVjpn5VeWrm/wBItATboCabs7EhEaZ/tMqs/J/5U5cMjjxxibl/pv8Aifq4fxxMYxAZhoGo/pPT7e+2PrxJJ8NafEA3w13pvl34/nf7JJTHCh2Ksd8/+av8KaJc60I/VNsqnhWleTKlK/7PACBzTEWxvzD5yh8w+RbrXLA8Vltm2PVTXhIhp+0vxLhn6WVUUu/MPydfeYNO0zzB5dKHU9OVJoVfdZFKhjE3v/J/xrlEiYVKuMD6o/76P44mJNG+f9FG/lx+ctl5ruG0i8hksNajU+pbyKRXj9v0yfi+H+V1Vv8AWzIHBIcUCJA/6b/j349MUkAix/x78fjhelYGLsVdiqnLEsimNhVWBBHseuRkLFK8k/IKSTT5NY8tzmrWF4xWvdXJof8Agk5f7LI4zYZnk9fyxg7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8UufPEXmf8xrPy8sJj/QxuZHLkfGxRUQxhenENy+L9lshMAgVZ/nbcHDw/53q/2LZtW3+c9rybW7FXYq7FXYq7FXYq7FWOfmJpS6r5fv7RhyJgdlH+Ug9WP/koi5Vk5KEj/IjU21Lydp07mpEbR7/8Vu0QH/Apkwykz/JMXYq7FXlTRrY/mirN0vtLNK/zI4BUf884+WVjmkPVcsQ7FXYq7FXYqwr8zPzQ038v7NLvUucksxKwxJ9pyoq25+FEX4eTN/w2GMQTvt/spf5sf+kf6zOMb57MG8j/APOUei6/ciy1CF9PZyAru4dKk0Ad6Jw/1uPH/VyzgifpP+bIcH++kyEBLl+P878f1md+RNHl0u+1hSjC3uL0XETGlGEkUbycP8lZOa5iYzzHd72Mj9jM8tYOxV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqozQRzLxlUOu2xFdxlcoCQo7/1lIYx5z/LbSPNVuY7uIJcKKxTp8MiMPsMrr8Xwt8WVDAIHih+7n/Oj/vv5zGt7HP8AnID8nfMlzrGjvbai3K/06eSznbqS0R48z/rL8WZHFxb/AM4cTbLffvZ5hYOxV5j+ZH502vkbWLHSbyBniu15ySg7IpJQECnx8ePJ15L8OSjwnbr+PqZxAP4/3T0iCdLhFliYPG4DKwIIIO4IPg2RYkK2KEo8zeZLPy7YyanftxhiA6bkkmioi92ZtuOIF/76X81kBbzKbSPN35kRtPPcPoWlPvFEgJncdnmKlOCsv7PLKvHJ/ugP+GS/j/q/V+P4k8dfTt/S/i/zWL3en+ZvycuodVuL99S0GSRYpUetV5k0PBy3Fv5JFf7fFHT4sMc8yeHIP6suLj/2XDGX+bwcP9NIyGe0t/6X1PoLT9Qg1G3jvLVhJDKodGHQgioOWEUwIpFYodirsVSnzbdLaaRe3Dmgjt5W+5GyEkhjn5J2YtPKGmp3eESH5uS/8cjE/aVLHvz4U3c2h6YPs3Ooxg/7Gn/NWCZSFD86Stlrnly8UfEt2Ur7Exin3M2ROx+CYh7CMvYOxV2KvJ/zmthNrPlqnxML8jj3oQAzfJcon+hkFHzX/wA40eXfMmqS6xcGSOScDkkZAXl3k/1myvw5jka+HE1kX5PSfLXl218u6fDpNgCttAvFATU0rXc5kQjQ33/pJpNcsS7FVC9iE0LxsKhlIoflkJiwkIfQ9RXUbKC8TYSxq3yJG4/2J+HJBTsj8KHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq87/PTyyNb8s3Dxg/WbOlxER1BQ1en+snLKZit+7/AHKg0nn5a+Zf8S+X7PVD/eSRhX/11PB/+CZeWWgspCiyjCxU5e2YmdlFsZCJV2TVtfHLMaF2XoSrVvLem6vGYtQtop1b+dAe1KgncGn7S5jnTwO9Uf50fRP/AE0eGTEgfj6v9M821b/nGzQbiT19NmubJ6ggI4dQfb1g8i/7GXIxjkx7wl/po+r/AE+KWKX+m45LZBsH/TfiMv8AZpdDoX5leV6x2d1HqVqu68yCxH8tJRyH/I3LRqiPrhf9KPqj/poyxTl/nwk2jJ/OHF+P4peiX+7Wp/zkFqWjFoPMukTRTKQKx1Ap4ktyX/gWycc2KfXg/rf8T6ZIBifJPtE/5yK8saiRHO72sh7SKaD5uPhGX8IlyI/zvR/umfAOhB/2K385/wA4E8p+XV1bQ2iup55FjiPIMo5BmMp4n4uIT4V/m44K4T6ggDh5pT/zj7+ejefY5NM1jhHqsPxDjsJE7sFP7aH7Sr+xxb+bGdHcbfzo/j+FZAHcbfzova8ra3Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqkHmnyRo/mqD6vrNslwnYnZl/1JF4yJ/sWzHnhEje8Jfzo+mX/Hv6s+KKDFgX/KmdV0h6+Wddu7SA9IZ/3yDpQJyK0H7Pxc2y0Zsw5mGb/hkfX/AKb1R/0sINkcsupE9v4o8X/Hf9iiU8u/mLauFj1W0uIz1MkFCP8AgTvgGeQ544T/AKs+D/esZZDfIH/YvRtJiuobWOO/kE1yFAd1XiCe5C9hkgb5/wClQjckrsVdirsVdirsVdirsVdirsVSbzH5U07zJbNZ6pAk0bAjcfEK90f7SH/VyieIS8j/ADo/V/x7+rLiigi3mD6f5j/KxvU08Pq/l5QeUPSWEV5VT7XJVX+X4PtfBF9rJDOY7Zf83NH/AH/83/Pl/N4cv8DIT6S/03838f0vT/Th9L0byf530zzbaC80uUONucZoHQn9mRK7fP4kb9hmy6UCPj+PxGXqZSjSN1zyzp2upHHqkCXCwuJEDgGjDowzGyYhPn+P6P8AVl/NazEFM0QIAqigHTLwKSknnbzRD5W0i51i43S3QkDxY/DGn+zcquSSA89/5x48tTQWV15l1BvUvdVlLluoKqzHkns0rv8A7FI8oBMpEnb+GP8Avv8Aex/zFJt6/lyHYq7FXYq7FXYq7FXYqg77SrW/C/W4kmEZ5LzUNQ+K8uhyqeKM/q3pSjAKZYArsKuxV2KuxV2KvMvzKfh5p8syE/CLmdfpePiMqPP8fzmQem5axdirsVdirsVS/W9Httas5dNvl9S3nUo61IqD7j4shIWOo/pRV84fmonlf8uLqPRdE02KLUbpQRd3ILpErEpzBfmzstG/1MpGCMvqMs0v9TlL0/538KiEevr/AKMj6XoH5CeQNC0i1k13TbpdRv7qqz3K/ZqSHeJE+HivL4snHFKJ9fp/m44/RD/jyTEjn1/0r1/LkOxV2KsZsvPFtd+Ybnywit69tAk5f9khjxK/6y1T/gsdmVbMmxYtMwXc4hLYNdxih2KvNf8AnIbUTa+T7uCP+8u+EC/7NgD/AMLkZGmUWZeUNK/RGj2WnH7VvbxRn5qoU/8ADYIcmKcZNXYq7FXYq7FXYq7FWqd8jSuO2+NJaRuQBpSuEFBXYVaNO/fAqkYl5B+4/pkOHe2XFtStljF//9f1TgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUFquq2ulW73l9KkNvGKs7mgA+ZwxiZbBIFvJL/839U84u+m/l/au4JKtfTqVjXrvGrDwX9r4/8Ain9rIyywxGv7zJ/Nj9Mf6/4jH0+mU/pZGUYGvrl/N/h/zv8Aj3D/AJybeVvyNtLW5XV/Mc76rqWxLTGsasO6Rn3/AJsokJ5frO3+px+j+r/0jwRayTLny/mvUVAAoOmXgUlgv54xPL5O1JY+vpAn5K6u/wDwq4JHZIR/5YX0d35dsfTrSO2hXf8A4xo3/C14/wCxwQ+5MmWZNilXmjWhoel3WqFDILWF5So6ngC1MbA5pHm8h84+dZfOn5cS6xNAbUTSovAmvILKqEj/ACWaq/FkMhB+m6v+Jkava2AajrreRdM1/wAkXXJRM6SWZOwKyMvMA/8AGII3+v6mQxy4o+78f8e/zljuPc+kfLE6aV5ds5b1ljSCzhMjHYALGvMnLIbsat5r+VVjcecPM99+YNwvCyKm1sR0JQGjykfR+1+07fy5VtxUBy+qX8+f4/3qyO9D/pJ7Xl6HYq7FXYq81XSjov5g/X49oNXs2Rh4zQlWr/yI/wCN8ph6SR/nf8V/svV/nJD0rLkOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwEK7EBXYVdirsVdir5i1by5e6x+Z+r3miMYtQsI4Z49wFYrHEjxv+1xmU+n/wAT+BsxzMw3G/qPFH+j6uJnyfQ3lfWG1nToL6VDFLIv7xKEFXU8JEo2/wALq3/N2XRIkLDApvkldirsVdirsVdirsVQ97Es0EkT/YZGU/IihyMtwoeU/wDOMEko8rPbSGqW95PHGe3H4X2/2bvkYlkXr2WMXYq7FWB/mH5Yvrq903zDoqCW/wBNmIMZYL6kMg4Tx83+FW4/EuUk8Js8vplwx4pf0ZRj/RSGeZch2KuxV2KuxV89/wDOTPl5dQ1jQbi/qulGYwTv2UO6E8v5eSK3xf5OUyJvhHOQ9Kee3eyz8xvyH0PXtJkTSbWK0v4kBgkiULug+GNuP2lf7P8AwLfs5R4Ph7x4v6UZSlPj/nfV/F/Ta+Dh5bfj/df0kB/zjl5yvtW0WfR78E32lt6Q59abhI3/AGv3bJx/1OOZZycQsbt8je6G/JL83dY13W77yz5nCJeW5YpQcTVTR4+P7Xw/ErfyZPjExYFIJEhs9f1fX7HR0WTUJlhVzxXkaVPgMRC2IFse84ed73RJo7PTdLudTnkUt+6osagfzzv8Ct/k5V4uOP1mQ/oxhLLPh/n8MeH0p9I5kj+jGPHJL/Kf5v2mtaidC1C2n0zVAKrDcADnTr6Ui/DJ/wAbfs5bGUMgvGePh+riHBOP9ePq4UkA/SeKvq4hwT/0vqehYGDsVdirsVdirybzjq3m7yfqdxrsfHUPLx4s9sB+9jFAj+lxH2eX7z/iWQ8cR9Mx6f4csf4f6/8Auf4mQn0I/qy/i/zk71j84tEsPLf+KklDwOh9NK0ZpKf3NOz8vt/y5fwb7/6b+iy4N/8AfPN/yg/OPzL5l8wxw6xB6em6gshgohAXgC/wP/uz+V/+Cys5oH0jmPx6kGQlsK9L6GxYPB/zE/MvzhL5ok8oeUoY4pIoxL6rgHktAzGsvKMLyPpqqrz5/tZE544xdcZ+n8cMofw/zpMjIAcuL8f1ox/06SH/AJyI8x+TVFt5zsBLK4qjIDG1dvt7ei67/wC6v9lk4ZseXl6K/m+qP+llLjj/AF5en+ZxM7ifL+r/AMf/AIv9i918l+cLLzdpkWrac3KKUCo7q1Pijf8AylwyjTCUaT7IsXYq7FUv13WbfRrKbUbtuMFuhdz7AVwgWkC2EfkXpU1tokup3SlZ9Vupr0g9aSH93X/YBWyiBskj+rH/ADVJt6PlyEm816nNpek3V/brzlgid1Ub1KjlTIGXD+OL/fQ/3SR+Px6Xm/nLRtN/NjySmtSRlbpIHnhKEckkUENFXujOv2W/yfs5XljR4htX+yj/ADVkN0D/AM4sea7rVdEk028LP9TK+mzbng/Ien/qo0bcP8n/AFcv4rTI3u9vxYvKfzf0rU47OfzLE4eTTQktpABVQVYGeWVT8Lu0fNU/lT/LyiUr5j93/FGX8X9f+jH+ayuvP/fM68meZ4PM2k22r2xBWeMMQN+LU+ND/qt8OXmNLIU89/PPzXb3tk3kzTVF5q+oFUESUb01BDmWX+Tjx+Hl/rZDKBGPFL/N/nSl/RTVCz/mvSvLOlnSdNttPYgtBCkZIAAJUANQD3wYxQYlNMsQ7FXYqw7837prXyrqLoaMYGX/AIIcP45VNlFNvJVoLTQ7C3A48LaEU+SLXDDkhgP5vyep5g8uWi1DNeB6jwUpkJsoof8A5yDCL+h5pASI75DUfqwyG/wWL2EZaGDsQFdiryb81OUvm3y1EmxFw7V9hxqPwymXNkHrOXsXYq7FXYq4iuKsc8jXKyWctuBQ21xNER7By6f8k3TK4cmRZHljF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqVzAs8Twvurgqa+4pkZCwryP8AIC+axOp+VZTVtPuGZNqfAx4/rXl/s8jA2GZ5PYcsYLWWozHywsJDQGUgJaAJ+WTjEy8lXjbMkbBi3kldirsVdiqhcWcNyvCZFdfBgCPxyqWOMuYBRVsd1r8s/L2sKUu7GEkinJFCN/wSccqOmjdi4H+dE/72XFD/AGKOEPF/ze/5x507TtEvNU0qeVBBEZPSdQ4PHfZxxZf9ZueI448zxx/zo/7j0S/0sVF+/wDH9H0/7B8yeTPNN55X1WDWLDi09u4cK1aHxQ8f2WX4ftZlggc2YL9BPy48z3XmjQ7fVr+2azuJlq0bV+hk5b8G+0nLIiUZfSproyjCh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpD5280R+V9JudYlRpVt0LcF6nwGIoc9kgW+X9c/5y91+5+DTreG2oepBckfScu4oDkCf6x/4lssD/jz1D8qf+cjdK1yzSDzFcR22p8ipqCqMD9ih+z/k48HH9Nf1L9SiHFy/0r2mC4jnQSQsHQ9CDUfhlNU11Srih2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KtEV2PTAQry3zt+UJec6/5Sf6hrC/FRPhjk7kOg+EM3832G/bRsojxYfo3x/xY/8AiP8AiPp/m8Kwlwcv9L+P9z9H+6R35b/miuvO+j6yn1LW7clZIW250/bj5f8AEf8AgPgzJBGQcUf9L/FH8f8ASTMgHcf6X+a9FwMHi/58Xn6avdN8mwOa3cyvMF6hQeKc/wDJr+8/2GQmaHvZDYPXdL02DTLWKxtV4QwqEQeAAoMYjhFMAEXk0uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvMPzekEGqeXZhuV1JR9BVq75UebIPT8tYuxV2KuxV2KuxV41+e2tG/lt/J+lWsd1q9+p4tIoIhj/AG5d++UZIQ+qQ45D6VMRVn/NZT5J8qad+Vnlsws4EcCtNPIf2np8Z/41VcOKJ6/Uf9LFMRbD/wAqv+ciB571+TRhbCGDgzRNyqx47nn+z9n+XMmXD0tskBWz2zINTsVeQ/l9Imref9f1SOnC3jitQfE7OT/wvHK+rKQp6nql4bG0mugvIxRs9B34jlTJk0gPDvLHlHWPzJ0//EfmDVp7W2nLNFb2zcFRFJX4z/NtkJZch2hWOHu45SZSnLlH0fBN/wDnHO/vriDU7ee4kvNPtrox2sstSxUVDUdvtLtkvEMtpUZR+qUVke/mHsuSYPH/AM/pPrNxoellqJPfoW+Sg/1yubIPYMsYuxV2KuxV2KuxV2KuxV2KtN02xVZGxbft0wA2yIVK4LYrGXmpB75EjiCeSmluFCAkngP4U3A2xApJldq+WMX/0PVOBXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVcSBucVeb+dvzt0rQJDp2nhtS1U/Cttb/EeXYSOvJU/wBX4n/yMlIDGOKZ4B/sv9L/AMUzMRHeXp/3THbT8sNd893Eep+f5vTtEo0emwkhQf8Ai5lPX/ZO/wDlRfYzGllll2jeHF/0tl+P6XD/AEcX8TEzJ2Hoj/spfj8QjL1PXtN0u20yBLSxiSGBBRUQBQB7BclDGIih+P6385iBSMy1LsVSLzotjNpNza6nKkFvPG0TNIwUfEKdTg8MzFR/2KREy5bvKv8AnHnXJVV9HuZg5tzJCFFCKKfUhYN/KwNxx/yOP+TkAT1/49xx+r8f0WcuXub1b/nIq603VLuF9Klk0yzl9FplrUMOpbbj8X2kX+X9vLBkxnYk/wBb+D8f5yLhy3v/AGP+5/3706y1bT/O2iPNp7iW1u4mSvf4hxKuOzLX7ODJChSJRp8+2d9Kv5fX2hT/AN/ZagsWx7NKG2H+sHyrisBkHr/nf8odO84yaffX7mOWzKGQgD94q0Yxv/L8Q+1+x8WVnGT9O1/V/wAVH+k1EFKfNN2fzAlfTLR2h8uWTcr24WoEpTf6tBQfEq0+Nl/yf9lbOXD6I/V/FL08OKP/ABf9Fs5bDmf9ixW4/wCco/L3l4Jpug6dNNY24CB1IjWg/kDBmb/ZcWbL4Y8cBRl/pY8X+y4o8X+lTwxHV7V5O8yjzLpcGrrE9uLheQSSnIb/AMchYP07j+cwNdN08wodirsVSzUtGS9uLW6LFZLWRnWnfkjRMp/2L5XKNm+5bTPLFdirsVdirsVdirsVdirsVdirsVdgBV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq47Yq+cPya1T6/wDmVrd0zVMiugpuPgdUAr/qpldsy+jlUL0G2SApg3kldirRNN8VbwAq7CrsVdiqQ+etcXQ9EvdRcgejC7CvjQ8fxwJiGM/kHoZ0jyjZxv8A3k/KZvm52/4ULkIKXomWIdgV2FWjXFXm35cfmhd+ZNa1TQNUt0tbjT3+BVJJaOpXk/Lv9hvh4/a+zjxRkLFj+dxEf8TH/ff12Zoixf8AnM21DzLpumgm9uoYadQ8iqfuY1yyOKUhdGv538P+m+lRjJ3r/O/h/wBMxS+/PHynaVH11ZGHURgk/qGSOKuZiPj/AMRxJ8KudD8f0UovP+cg9KAA060u7wt04xlR97ZVKUI85R2/m+pgeEdfx/WUD+bHmq42sfLs5qaD1WKfSTwZf+Gyn8zhrYzl/Vjxf7iUpf7BMpRHLiPw/wCJ40p8xwfmH5vs5dNvdKsYrOYbrK9SCDs3JJWYMv2kZUyueeEh6Y5D/N/hl/s/A/3zGUx0iT8f+PYpf7Fhs9z+Yf5fPaaHe3qR2E5EcdwQJUQk0EbyPH6w4/sL/wABlsdSZ7GP7z/bPTKf+dCU4M+MnzP9L+L/AHSceSfyj8+aNc3OowX0EE13IWkJq/MVJ5/5PL7WUxzzHKF/1uGH+l9KBlkP4Qf63D/xLGPM/wCW/mjy/wCbrDUTeodQ1GQxrOgIo1KfGKfEvH/hclHORZMRD+Lh9PBL/SsuK9/SGb65b+dNIiabUfMdnCkW5+AO23Wiemzcss45ZOePH/WycPBH/O4vSyPEeQgK/il6Uu8kRfmBr+qwaha6hPJpSSj1JZ4xEkiDdvTg/vHVvs/ZT/XyI1cj6QIT/hl4frhD/krOPF/peNh4xIrY/wBUR4f9PKPH/sWZf85FWVvDpVtrKkJqFndRGBh9olmAdB/MOPxcf8nDw1LiH+d/VRHv7nqtnMZ4UlYcWdQxHhUVywG2JV8KuxV2KuxVA6xPawWc0t+QLVUYyFunGnxV+jAYce3eoF7Pizy+thP5xtrGWN4/L9xdF7eOaoSjHgJPi/ZZhlRHEOC7pmN/Tzp9rW+l21usaQxIghHGOigcRSlE8MY4ojl0YIvLlYTrP5dC+80WnmqGcwvbwvDIig1lVvsBnr8IT4v2cxpA3tVH6t/X/m/8VxJePfm1+THmfzn5sjLEnRgAI5A4pElP3g4N8TOzf8HkfGI9NH+j/S/pTmgyJ2/2ST/kLDqnk3ztc+WJ2ZrThIzqa0IUVjlC/snbL457juzBsU+q4JhKgkWtGAO/XJA2wOypkldiryr8zJJfNer2nkm0J9AsLi+YdolNUiP/ABlbITNCh/H6f+KkyOw971CCBLeNYYgFjQBVA7ACgAwxFCmKrklUpolmRonFVYEEex2ORkLFK8HjsfM/5cNdaFY6c+r6JeGRrcwmjRNJ9pJNmon+t8P+X9rKI5oxHDk4o19Mox4uP/j3+y/opEhylxf1ojiZL/zj55F1HyhpU1vq1usFxK4aocMSN+Ktx2HD/Ww4pcW/qH9aPD/x5AN+T1jMhVKeBJ42ikAZHBVgehB2IyMo2KV48PyF1DTrmaPy5rE+m6XcEs1ugDUJ6+mzfY/1lyqOTLD0jgmP4ZS+qH+x9SROUdhX+cOJnHkf8tNJ8nozWKNJdS7y3Ep5SOf8pz0X/JXEYyTxSPHP+dL+H+rH+H/df0mPmWXZel2KuxV2KvPvz0lI8szQqQDNJFHv4M4ByuZZRZxp8Qit4ox+yij7hTJR5MXlnnp1vPzA0O06+ikkpHgagg/8LlchuyHJ3/ORUIbTrCSpV0vYyCPuwyWL1mE1RSe4ByceTFfkldiryjzpGJ/P+hoCaxxzMfDptlR5/Jn0er5awdirsVdirsVSbRPqcc93DaEeoJucoBrRmUfdyVMrhGk0nOWIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVePaT/uL/ADPuoFoFvbUOadyADv8A5XwZVAUWQ5PYctYuxVoiuRItW8krsVdirsVdirsVdirsVYN+dl6tn5Q1OV+hgZfv2yuQSHzT/wA49/kdZeebafVdQmliFvKqoIqUO3I8+Yb/AIXjlWQTltExH87ijKX++h/vmJvpXy/48+yLO2S1hS3j+zGoQfJRQZfEUEq+SV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqN1bR3UbQTqHjcUKkVBHyyEoiQooY/F+WvlyIFU0+3Abc/uxmOdLDu/2UmvwopFr/5DeUdZRhLZJC7ftxVVh8v2f+FweBX0kw/2Uf8AZMhADlsxm1/JzzH5RQx+TNWK25JPoXIBUfI8JV/4VcvGbLH6hHP/ALGf+6h/01bBkI51P/Y/j/TRRP8AysLzt5ePp6/ov12NaAz2bHp/MY19f/iMWP5nFykJ4f53F64f6b0w/wClsl44nmJQ/wBlH/if9NlTLTP+cg/Ld26w3DTWszHiUmShB/yipbiP9bMiIjIXGUZf6b/ieH/ZNggJbxMZfj/S/wCyehWGrWmoLzspo5l8UYMP+FwGJHNgYkIzIsXYq7FXYq7FXYq7FXYq7FXYq7FXE064qgrzVbWxQyXU0cSD9p2Cj72OTjjlLYAn+qGcYGXIFKbn8w/LtupaTU7MU8J0J+4NXJnTzHMSj/WHD/uk+Gbrl/W9H+6SWb87PK6ELFdmct09KN2H3hOOQlEQ+qUIf1px/wB7xI4QDRMI/wBY/wDE8ak353aGqluF2QvhbSb/AC2wDg6Tx/6dFDvif6qHk/PfRlXkkF65pWn1ZwfxGQ48Y5ygGNw6yH2rU/PrSG2a01AMeg+quT+AwHLhH+Ux/wCy/wCJZGWMfxw/2X/EqUn/ADkDo8QLS2Opog/aa0YCnjUnpgjmwy5ZMP8Appf8SxEofzofOX/EpNriaR+a9kdZ8pTCPWLI1RiAsm2/B1ry+L9hsGTEcR44VL+dw8XDP/Yx9bIxMNxR/qpBYf8AOR11ZXtjp2sx+lInqR3oYUqyj92yHs3+TlonGQsdf9i2bH4/7FPvyc0ufzNrN5561AArKxjtl68QNmIr/Kvw/wDBZQTxS/qNUj9j2vLkOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5d+dIH1vQS3QaipP3GmVkbsovUcsYuxV2KuxV2KuxV87/nOV83+ZbHTPKiu+s2TgzXMRosSE7pIy/ab/JyuZ8EiW/GfTGP87+syPo3/i/m/wDFJj+et9qGvz2P5faY3O4ugsl0/SiL/PT7Ib7WGU+CN9/0rdD3r/IXljR9J82W+j+X0DLpNs5upwalpJRxCu/7Xf4f2cojjMOe8p/Uojwj3vdMymKWeZNZi0TTrjU59o7eNnP0Db8cUgW8z/5xt0+STSLrzDcgibVrl56EUooJVKf7HKo7k/6VSXrkkayKUcVUggj2OTItD4686/mgdFu7ryXp8rpon1omSSMEOsZP76GPwTlhgeEVtxfTGTcDW3X+c+qfJGm6bp+j20OiALY+mrR07givI/5TftZCMOHbn/Ol/OaapODdRLIIGdRKwJCkipA6kL1pllLTyTzsra1+Ymj6atDHZRPcuD41+HbK577Muj2LLGLsVdirsVdirsVdirsVdirsVUXcKC9aUrlZ72QHRCw6i7ndCFPQ9P15HxB826WIDqiFu0enD4ge46ZIzAazAjmrBq+2IlbBdliH/9H1TgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqkHmzztpflS0a91aZYkA2HVmPgifaY5OMDL/iv4WUY3/wAU8uOp+avzRcppvPSNAOxlYUlkHfh+0vL/ACf+DymWorbEOOX+qS+iKeMDaO/9J6J5J/LTRvJ8XDTYF9cj453+KRj3Jdt/9ivw5UMW/FL15P50v97+OL+k1CPU7sszIZJTpHmfTdXeSLT7iOZ4GKyKjAlSDQ8h165KUDEWev8Anf7lkYkJtkWLsVfOf5w6LeefPPNr5TedoLCKESHj4kFnI8W4/DlU5mqjw/5zKzWyT+W/I91+U3next3uvU069Yqrn4diCirIK/aX+b7ODHOUtpcPF/R/3vFH0/1ViSef4/4lm/5lW1ppPm3SVlqlnfTtJPVjwaQDgvJfs/ZyIhdx6S/h9KY7iu9V/wCcfRAl9rsWmAjTFuwIhWq1oefD2ycdvT/NDGq27mK/mr+V+oWvmSO705jHo19MktyagJG6HkZJK/8ABJlYkY+jnf0/8SsZHl3pv+ZP51rqkX+HfJ0cmoXUtEd4vs06Mgb/ACv2mX9nMmZGIeo/6X1fiTI1Dn/sUPo35NeafMttFH5mvv0dYLQfULUUXh4Hg3Hk380nqtmNHJOqxiOPGf4pf3sv6X08cv8APlH+owGSXIegf7L8f1pf5r03RPyd8r6OENvYRNJHQh5Rzeo/y5OVP9jkfyw/iMp/1pHh/wBLHhh/sWvh9/z/AN79LM0RUAVRQDwzJArYNi/JK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUu16++oWNxdVp6UTtX3AJH45Emkh8z/849Ryx+bfrE1Cb63kn61+0eRbpseX+Vld/eyfVOXMHYFdhVayBuo6b5FV2SV2KvOvNP55aF5fvn0iQTz3sexjhiLb/MYfSBZlEfH1MwB1ICjD+dtuYzdT6bfxWv8Av1oSR9IX4hkPGxchOPF/NqX+6+lfR/OHykw78xfzF0zz9LZeU9JuFWK5lV7p5ax8UQhvT/e8eTs37OGUJV6fWT/NPF/nelNd3qv+a90s7aO1gjggFI41CqPYCg/DIAUKa6eVfmn5y84eX9Vt49BtVu7O4XiF4EkMPtc3qvH/ACch+ZhDaYr+bK5cUv6sPpZCYA3AP+mUB+Z3nlFAfy+Weg5EEgV9vibJjVYf6f4/zYp4o/0/9igdb/PfzBoEH1vV9G+rw1Aq7kE/IUbLIZcc/p4/9io4T/P/ANKxfzF/zlZqK2qvp+mtbFwf3s1Stf8AIX4OX+yZMlx4zyudfw/T/ueP8fxMhKHS5/1v+O/8deM6h+Yeu65rX6Ue6a0u7hRE80VUHCvcQ8WZV/2WInR9AAv+H+Di/wCSvHw/1uJRKj6fTf8ApP8AZ8b1fy9+THlXV05XHmMz3LKC1HVPiPgtx8TLmPKOokf4D/V/e/6aUJJMJ+8/0Tx/7iTOfLn/ADj22iAyaRqQZWof3kSSD76b5jGGS/VHGa/nRlH/AHzSTOPSF/0hJmNjo/m/TSqxS2E8S9vTaIn3PAMoOXcQH+TF/wA6Mo/77/imUaA5D/N9LK9KfUpEB1FIo33qImLD2oXVMtE76SH9Yx/3kpcS7I+GMxihYv7mlf8AhQuSDFiH5waBFrnlm+t5RVkiMqHuGT4ww+7K5jr3FV/5RazLrPlfT7y4BEjQgEnvx+GuWcVpkl35vW4VNLvwfit9Qhp/syUO+QkN0xZFa+RtFtLuTUobSIXUpLNIVqxJ8C3Lj/scqlhEudz/AKMjKUP9L9LWYgp9sB7ZeBQ2ZPC/NM8/5l+cItD05gum6I4lnlIDAyfyAfZb+XI5TXpG8j9XF9HB/SZHbZ7ogIABNSO+WBihr7U7awUNdSLGGIUVNKk9AB3wpARCMT2wWhfhV2KvKvPV3P501lfJdgStlDxl1GUfy1qlsp/mf9rITlQofXP/AGMf57I7D3/7lF/m5+W9trPl/hp8QS704CW24AVrHv6f+q1MxzjGP1Dp9X9KLAbfBkH5bebE806Lb6iBxl4hJVPVXX4XU/TmYd9wzkGVZFi7GlSzzDr1roNjLqV8wSCFSzH9QHu2ERtIFvOvyl0mS9ub7z3qqCCTUSBCr0BSFfsVJ6cvtZQI8cttwPTH+l/OkvM7M103zlZ6pfGx06twkYPqzJvGpHROf2Wdv8nLTUNj9X83+bH+l/NSRXv/AJv/ABTI8kxUL27S0gkuZPsRIXb5KORxUbvNfyPszfwXnmy6B+s6pO5BP++kPGED/Jp8WVA8Rvu9MUy5vUctQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq87/OJDcxabYLT/SL+Ib+C/Gf1ZVkZRehgU2GWAMXkt4TP+Z8KOoAisyVPsRv/AMMcqPNl0a/5yFkJg0q3BoJb1AT7Aj+uGSh6zEAqgdaAZYGK/CrsACvKLhBd/mdECKi2sSfkW6ZWebK9nq+WsXYq7FXYq7FWCeU/Lt/Y+ZtXvrkH6rdGNomrsaChHH+Zf5spjKzXcm2d5ch2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVoqGFDioLeKuxV2KuxV2KvHL+kf5p27VqXtCKHsKDcZV1Z9HseWsHYq7FXYq7FXYq7FXYq7FXAYq7FXi//OVnmA6d5W+oxmkt7KIwO5Vfien/AAuAsgGX/kx5NXyl5atNPIpMyiSX/Wf4myrGOvewZzlyXYq7FXYq7FXYq7FXYq7FXYFdhV2KuwK7CrsVdirsVdirsVdirsVdirsVdirsVdiqT6x5T0rWhx1G1inA/nQE/fmNLTwJuuGX86Ppl/poseEMH1H8iNOSX61oNxPplwDWsTErX/Ub4cIjkh9Er/o5PX/s/qZRJjyP+m9SCW1/Mfy6SY5LfWIBTZvgkAHv+02WfmT/ABw/zsf/ABLLxP50f86P/EqkP56vYER+YtJvLIjZnCcox78vhbj/ALHJRzYpmhKpfzZD1f7DjW4E1df1v+O8Scj89vJwj9STUUj6CjK4NT/klOWZAwk9Yf6fH/xTIYj/AEf9NH/c8SsPzv8AJpTkNVgIP+tX7uPLJ/lpf0f9Pj/4pmcJ/o/6eH/FLZfzq8tgAwSy3FTQelBI30/YXbKPSDRljj/WnH/e8TVEA9Y/Nan5wadMQLe1vpAehFu9OtMrlkhHYyh/m+piTGJokfbJUH5iX8rMlro16wHRpPTiU/8AI6RDickOhlP/AIXCcv8Ae8LLa/4j/VhL/f8ACgtX/MLVLKGN2t7GzdgeYvb5UKUP8sSS8/h+L4WycSZbxhmyQ/nVDF/p+OXp/wBKz4eojOcP53pxf6aXrYpbfmb5y1u5+r+Xo7G+jJIM0cU6woPE3MzKrt/kxxPlUs0YGuEE/wCpxy+LP/O4ccccY/58Woz4TVR/qxnLLL/OlCMIMusPJ3mwwhb3XCGJ5H0oVrU7lQ78m4r9lcHiZOgxR/rcUv8AfJGSQPKHylL/AHyMl/Ly+nFJtZvSCNwpVa/hthMsh5GEP6sIsTKV2DEf5kV1r+VljGtLm6vbjah53Lj/AJNGPEnJL6pH/NjCH+9kyMpE2Sf9jH/cxVX/ACk8rzENPp8UzDvLWQ/S0pYt/sshPGZ/VLJL/kpk/wB7KPD/AJrCUeLmZf6ef/FJlp3kbQtOUrZWFtCp6hIkWv3LlX5WB5jj/wCGGWX/AGUzJBgDzpNU062j2jiRaeCjLY4Yx2Aj8mVBXEajsBkvCj3D5BIXUGSEQlumHhCLWsitsQCMBiCrxLzlokPkbznpfmDS4/St9TlNtdqmylm+wxH2QzNT/hshj/dnh/hl9P8AQ/qphtt3qX/ORH5Rx61bHX9PSl1BRpgo3ZR1cf5S/tf5GVEcBsfSfq/oyYct3o35U3WnXHl2zOj7WyxhaHqGH2w3+VyzIEOHz/pMzGtuaUeYvzu0Xy5qzaNq6XFuVAPrGMmIgitQy8m/4XLYiMthKPH/ADZen/ZT9H+ySAD1H4/2LKdB85aR5gjEulXkNwp7I4J/2SfaU/6y5KWKQ3I2/nfVH/TfSy8MjfmP50fVH/Tx9KeZW1uxV2KuxV2KuxV2KuxV2KuxV2KuwEK7CrsVeS/n/cC2TRZmqFXUoQWArSp+TfayEmUXrKsGAI6ZIMW8KuxV2KuxV5B5r/MC783X0nlTyZIF4VW9vz9iEdDHC/2XmbDOXh7D15T9Mf5v9ObbXD5y/wBz/SkuXzV5I/KOxNrHNG11QGQR0eaVu7SFf2m/ymyGPTSj6pfxfVKR/wBzD6+H/Yo8IjeXpv8AnfV/pXk3kuPzd+ZOuah5h0dlsre5PotcN1SMf7qh/wArifjZcrnmqVRHHIfT/Mj/AEpsTOjt/C+kPIvkWx8n2Is7McpDvLK27yN3d26nGEK9R9Uz9UmCY2mofWtQuIVrwtgiHw5MPV/4g6ZZdlnVD3vOv+cmL6ePyv8Ao+2Hx6hcRW3SuzHl/wASVcZSpAeg+T9Cj0HSLXS4PsW8SJ9IG/45GAoITnLFePfn1+VttrHl65uNItR+koz6i+koDPU/vA3d9vizCOOOI8XL+d/F/wBIoAAYP5A/N3zPcaTb+W/K2ivJc2kYheediEVl6lx8IX/VZ1zJ8fFEDeWSR/hiP+J45cP+a2ccB3z/AKP4/wCOvVPy58k6zaTvr/m65F1rEq+mqoaRRR1r6caAKtWb4nb/AK6wCcshsjw4/wAOP0/6aX1ev/PYGRl/R/o/j/ippH5Y5ar+Zmq3ibx2NvHD9LCh/wCIYb3ZkbPYcsYOxV2KuwK7CrsVdirsVdgV2NqsZh9OQkaG6aQkcw50ZaM1fw6Zj8X/AEi3GO3uVoxxqHNScYCue1/zWB35L1b4qdssjLdjWyrmQxf/0vVOBXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqA1nWrPR7dr3UJVggQVLOaD+0/wCSvxZIRJ5MoxJ5PH9Y/PHUvMfLTvIWnzzyuSgu5UKxLvxMi/snj/lNy/yMhPNjx9fEyf6nH8cf+xjH+mkmMf6f9GP4/wCJTXyZ+RsMMq6x5smfVdVNGJlJKIfBEPw/DlEuPN9e0P8AU4+n/TNZJlz/ANL/AAvV441jUIgAUdAMujEDYJX5JXYq8+8xflqBq8fmjy+wttTVgJV6RzISBIsqj9vj9hv5sxwDiPp+k/Vj/wB9FQa+P1RZB5s8xjQFt7uei2zzCKUmm3MHg1f8lhl4LKItgnlH86pdR179F6nAtvZ3nJrGappIFJXie3JqcslGUZbD6ofUzIB2HT/ZKXnORdE/MTSdRcAR3kTW7Meld6fT0ygD1f7JgN0v/NrQm85ea7TQrWUxT2tq9wki/syVBj5/5ORyEx3HP/dLuBsyzUfJUH5jeXbe18xRyQ3kXVhVXSRfgdkr1Vqf6rYCeP1RNV+OGSJeWySHzf5Z/KfTV0LSCby7BNIkIZ2c/aaZh9nfLoYuAXM/1v50v8xkIV9X/Hkss/JvmH8y3S98zzi20s/EtpEd/YPT/jbITyyntAcEf50vqksieQ9D1jy35P0vy3D6GlW6QrTcqPiP+s/2jkYYYjfnL+dL8en/ADWsCk2luY4iFdgpPSuXGVMqUorsSGigEdjUbjxFMr8T37JpEgk5OMrQ3k0OxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK7CrsVdirsVdirsVYT+c2pfo7ynqEwFSYuAHjzIT9RyHJIebflpph0/znbWkiqrw6Ug2p3CE7jv8AHlWM/BJ+T3/Mhi7FXYq7FXYq7FUqt/L9tHdvqDIjXL7c+IrxrUD5/wCVmOMIJs0SikzZQQR0y3hFUl5j5h/Lzy3pNnqOteY2+smZSZJpgtUAFI44AoVVZT9j9rnmNHTcR5iP83wx4UIf0vq/03qYxgZfjh4VX/nH66vrryvDNfO8iF3EBf7XpA0i5GvxfDmTxmR7/wCl/ObJG3pRUHrhMQWKVeadTm0vS7m+tY/VmgiZ1T+YqK0xJEeaR5vFfyc8tN57EvnTzg/1qQuywwvX04gp3PA/DleT96a5QH8Mf4kyPH/xLPrjy5a+fHKX8KtoMBAgShUysvWWqFf3C/ZRf2/t5ScQO0PRX1Sjw/6WPpl/nIIrb8f1WE/mR5B0K080aDEbK3SyuDJC0YQBWIHIcwo+L7X7WAYRHYXv/Slxf6b6kRgGc3/5HeVLtOIsVgP80JMZ+9OOEYK5Sn/nSOX/AGOXiiivOX+mkw/VvymTy/N6vl/V57W6oCI5GqtK9XPZf9ZsvjLNAUCMn9GX1S/zfp/2DZAzrb1/j+ik+pfnP5h8psItTksr0AAD05AWP+UeHJvs5cZ7eqMof0v4f+JZdPUOEn8fwoyL/nLDTooeV7p9ystafBTj8wzlW4/7HJXA8j/m/wAf+x9H+zYenv8Ax80DL/zk/qWrzCz8t6UJLhtgJpOpNeiD0q9P9+4TLHEX+8yf1Y/T/wAqo6j/AHrImI/nz/qj/iI5f91FEa75s8/2mh39/wCaLa1t7KS3MaxKfj5yHgAOBb9k8viZsxxqBPYRlH/bJcUP9hOXH/sYKJg7cNf0vxKf+4i9W/K3Qn0Py3YWEv8AeRwry+ZFTjDcMLTfXtAttbijgu6lYpUmFDT4kPJa4ziTyQmmWK88/OjzlrPljR/W8v2b3l5MxjBRSwj2/vGRQxb/ACf2f58rOTHj+vhH83i+mSQRHm8o/J7zN5g8u2EiWnl28u727kMs88rCIMx8A6fZX/WyqOfFz4jMn+HHDjjD/Ohxf7hickf6Rv8Amx9P+n9UXpNsPzA8w73BttFgI3C/vZflU/u1P+UuWDNv6In+tmP+8h/vmRn/ADR/ys9X+xh6WXaF5LttOInuHe8uzuZpzyNf8gfZT/Y4mJn9Xqr6Y/TCH9WLE789/wDc/wClZHlqVrE9sVSPzt5mi8taRc6rL/ulCVHi5+GNQO/J8QmISf8AKryq+iaULi9+LUb5jcXLncl3+LjXwRfhyqG/qP8AF/uUE3uzYiuWEK8o0ML5N863GlnkLLW19eDb4VmWvrRj/WX4srx7en+Z6o/1ZMhuKer5axdirwr8wfJPnvzVqodhaNpNvIWhgeRgr0PwPMqj42/a4s3DMaeoJHDwzj/OlcfV/ncX0f5sUifSq/3yfaf+TNzqTrceatQmu9t7aNikK/5AVeqL9njkhLIRW2HH/Nx/V/p1MiduX9V6VpWkWuk262dhEsMCCioooBkoQEeX/HkAI3LFS3zDph1XTrnTweJnieMHwLAqDkZXWysL/Kk65pthD5f1PT/q62S+l9Y9VSsgUkK8cahm+L/K45HHkhIbcYl/FGUOCMf8+UvX/mw/zk2D33/F/wBJf8dejZah2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVgnn2L19b0GAgkfWJZP+ATv/wAFlUkhneWoeRaYvq/mjeEbiKyTrvQkJ08MpHNl0Wfm5F+kPNPl/Tt2BlaRk7UX4qn/AIDGajk9gplzF2KuxV5X5AB1Hzrr+oybiEx2yHw4V5DKxufckvVMsQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7AVdhV2KuxV4/dsX/ADSiRt1WyJHzoP65V1ZdHsGWsXYq7FXYq7FXYq7FXYq7FXYq7FXhvn/S4fPHn6z8vXBJtNPhE8g7FyRIq/7JfT/2PLKcm+w6/wC5ZEbPb0QIoVdgAAPkMtAYr8KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KrWUNs24yucBLY0fery/z3+XNr5q1yys7jTUOmxK089yAqlm+xHbVX943+/H/wAnMbw4j0xBgT9XCOCHB/WjHh4v6PFGTWIxGwFf1fT/ALLh/wB8qXf/ADjn5LuDy+o+n3pHI6j7udMkcB6SkP8ASy/3cZJjER7/APTSl/ulOP8A5x48vwArbPdRKegWZhT8clwZB/Gf9Jj/AOJTchyNfCK9PyF05el/qC/K4YZMHMP4x/yqgoMupv4IyL8kNFoRdzXt0p/ZmuXK/wDAoUw/vP584/8AC+GH+9kyBI5GQ+KaaT+VXljSmD2mnQCRdw7rzavjzl5tXK5acS3nxZP53iTlKMv60L8L/YNZgJc97/nXKP8ApZellkcSxrxQAAdhlkICAqIEf6vpbAKX5arsVdirsVdirsVdirsVdirsVeZ/85CxOnlaTUoNptPmhuEPurhP+N8qlsQfNlEvQNPmW+tIpjRlljVvGoYVyZFjdBeS2i/8qz81C1+zoest8HXjFKP2f5RyZgv+px/lbI4v5nd9P4/H+yWO+3+lesano9nqsRgv4I7iI9VkUMPuYNkJ4oz5j/O+mX+bOPqj/pmJiCwPVv8AnHzyjqDmeO0NrOejwSOlD4hOXp/8JkBilD6JTh/ncX+ymJT/ANkgR4eRkPjxf7viStvyo8z6Lv5d1+4KLuIrv96P9WvwqB/sMu8fLHmIZvhwS/0/ql/s4tviy61P+sPV/pvV/sV7ea/zB0UhdR0uHUIhQFrVyGPvxbiox/Mw/jjPH/Sj64f76SOOJ5gj+r6o/wCyREH5+aZC/paza3enyAfF6kZKj/Zp8P8AssthLHP6ZR3/AJ3o/wB0kCMhsR/uf9lJluifmN5f1oL9QvoJGboocBv+BJ5ZYcMudWP50fVFl4Uunqr+b6mSI6uKqaj2ypqXYq7FXYFdhV2KuxV2KuxV2KvIv+cnbKV/K36RtyRJp9zDcCm/Q8K0/wAlnXK5cwoL0vy7qI1LTbW+AK+vDHJQih+JQ3TtkwUlMsKHYq7FXYFeNXv/ADi15ZuryW9WW7iWZi7RRygJU+Hwc6f7PKAMkRUZmMfd6v8Aif8AYI3qrkP9L/xLEfzq8l+XPy/8vx6Zo9si3+qSiITSku4RSHmkMj8mCr8HP/J5YI4P4pGWSQ+niP8AF/RhHgimMep3Zn5U/Nfyb5Y0q0063mK2sapH6yxMIi1OLM0hHGrMPibL8eEDa4eJ/FHijxcTYMY74/NkHmb84NLsIIRo7DVL+8PG3ggYEsf5nI/u41/aZstlHwxc/QB/pp/0Y/0k+Hw/Vt/vmQ+TdGudMsv9yDiS+ndpp2HTm5rwT/IjWkaf5K5jxJO524v9j/N/H85ru03uLWK4p6yK/EhhUA0I6EV/awyxiXP1f1mJFojJpdhV2BXmPm9bjyPqX+KbBS+lzsF1GED7NaAXyAftJ/u7/J+PKI1jPCdozPpl/Mn/ADf6k/8Adsonoev+xl/x56LYXsN/Al1auskMgDKymoIO4IIzIMaQRTyT8kXN75h8z6iKmN74xqfZGkNPuZcqHP4JL2TLGLsVdhVo7ZAqtROIpUn54YpK/JIdirsVdTI0rqYVWekK8u+DhTbRhUihHXIcA/H1J4ihI3SQsqgoY277V9/cZSa6cw2kEb94RSyAmlPb8K5aObVSrlzF/9P1TgV2Kuwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqxD8zPy/tPO+lNp10Kuh9SI1IHMA058f2G+y+UzBPIkf77+irA/yP83+YLu8uvLerWltDBpn7omGispB4oPSX4WRqN8SquGEoV6YmF/xfw/0uLjlKXGykQRsOH/c/wCdxSe15axdirEtN/MvRtQ1u48tRyldRtiQUYEcqD4vTY7PxyQjYsb/AM7+izMNr/EVbztry6T9QBofrN7FBQgH7Qc1FenxL9rIEoiGpPNDWnmBdCvAqx3UXq2rg7sU2niZfFfhkX/J/wBXBHe/6P8AuZfjhSBYYt/zkfYmfyjNdKd7OWG4p2PFuFD7fvMjJiCl/wCXXlTS/PPkXTUvl+KNDwkjPF43UlSUf9luQyEsfUeiUfpl/wAV/OU875In8zPy61O/8vW62E73esaW4mhlcAO9DUpt8PLj/wAFx/ysZyI9RokfVwx/h/q+peIjf8f6VjnkS8uvKwv/AD358H1e+vyqQ24BMnFB9lI2PIcv8riqr8b8MlAjKbHpxj+KX/SPq/0vqZC5nudeeb/Of5ixrbaFZtpumTkBrljRuNdypbix+H/fa/7PIHUQhtDinL+dXp/2Ppj/AKec/wCjFfEA+n1f0vx6f92qeefy80n8vvKl3cWcbT6rdBIFnbdzJIQPg/k5f5OREDfFM2Y+r+jH8f0mA7ywI6P5x/J2KHUvWN1ZTAGZCSVBI5NGWb4kf+Rv2sshqTLaYq/p/n/5v9P+gzjlPXkzWb/nKXSbuKOOP1LVyv70lQWU06R8vhZuX+tl/B/NIP8AW/H/ABLYAP8ApJfov5r3Pmq6+oaH691GlCzCiOD3Jm+yybOvFYuf2f5sx5ng51/WjGU/9jL0x/r8X+agSA/6R/4qPC9ksrVb2GKSbmeG4EgAO4pvT4v+CysC+X+x9H4/zfSwKbgBdhmSBTBvJK7FXYq7FXYq7FXYq4YAFdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvM/z0mElhp+kKfj1DULeLiO6huT1/yV+DK8h2SAl/lOT6z+Y2rlVottawxCtK9E3A/l2wAAFSPx+P+JeuZah2KuxV2KuxV2KuwKhr69hsIJLu5YRwxKXdj0CqOTE/RhAtIFvnm91G9/PXW10+xDw+VNPlDTSmo9cg7Ae7L9hf2V5O/wCyuQy5OH0R3mfql/Mj+Pp/ny/qJka2H+dJ9D2NlDYwJbWyiOGMBVUdABsBghARFBgiMmlRuJoolJmZVX/KIA/HER4tuf8ARSIk8nk+p+dPLU0r6FFdQ2ekwlmnZGC+q9atDGR+xy5eq37f2EwRwECo7X9Uv5v9D+v/ALmLMYyOX+m/m/8AHv8AcrtT/wCcjfKelRiG1eS4KigWNKAAbfblKL/w2XRxCIq47fzfX/ueL/ZJ8PvP++/47/ppPIPzX/Pb/EktjPp9p9Xk066EqNK4LE+Bj+FeHwfGyyt/scrPDzjxS+HDH/Yyl/vf6qNhys/j+hx/7pV1n8ztc1G2El/r0dvK5H7q2VqKCfi5vEIlqq/ss0v+v+3khkn0jCH9aUeL/p7KP+mj/VbN+Y4IfxR34/8Ac8c4/wCnUTq/kSF/V1LU9Rvnahei8QdtwSp5cchKGSX1Th/yT4pf7tjKJveQ/wA38cSd+V/zC8hxX8Vjo+hzXTSsEEjqHJ5HjXg+UzwYx9c5T/rcX+99TUYw77fR8ug6fPB9VktoWg/320alf+AI45H8tDuH9b+L/T/Uw4R5fJhurfkP5V1LkTamBm7wuyivisdWjH/AZHwCDcZTjX9Wf+yyxnP/AGaOGuRP+6/6acbxvzx+UCW2u2XlDQ764aa6BuHExBjRE5cGIiCb8kb/AIXLJZsoHqPifzY+qP8AppSlOP8AsW7ilXOx/N/Hp/2LOLfzH5+8mD0tWtRqdmgp6ke7UHuvFvs/zK2SGqjynEw/pR9P+544f7hfEj/EK/pR/H+8gm2j/wDOR2g3PwajHNZSE0AdeQ6fzL0zJAjL6ZD/ADvQoiDyIZtYfmDoN/F69vfQMh78wKfME5LwZdzMYZHkL/qoW7/NXytaCs2qWopWtJVJ29lLHAcEuR2/r1D/AHXCgYjdbD+tKMP91JBW/wCcOh6gRHo5n1GQmnG2hdgD/lSOscSj/KZ8qmI49pShA/zb8Wcv6scXHJgQBsSNv4fq/wBxxMxsp5J4FlkjaJ2FSjEEj2PH4cjYP/HvSxP4/HqV3kWMVcgD3yQFpAtD2upW10zR28qSMn2grA0+dMkYkc0mJCLyLF51+eUsttokN8kTTQ2t7bzzooqTEjVeg/1uGVTIHPa/SkEDm9AgkEqK6igYA/KoywHuVVwoYB+cmhS3+jfpOxH+n6U4u4adT6e8kf8AqvHy+H9r4cpkeH1d31f1ZJBo2yzy7rUOuafb6pamsNzGsi/JhWn+x+zl52UikzwIdirsVdirsVdirsVdirsVdgAV2FXYq7FWj7dcBUN4VdirsVdirsVdirCde5T+cNKgUEiK3u5mPYCsMa/8M2VS5/j+kyHJm2WsXjXlIs35n6yRUhYIwaUoKrGVrlHX32zvZV1mQX/5o2Fv1FpZs9PciTf/AJKLh6/Fej2DLmDsVcSBucCvLPyAc3thqOrOeRu7+Zgx68QFA37/ABcsrjzTJ6nlqHYq7FXYq7FXYq7FXDArsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVwGBXYVdirsVdiryDa5/NX4fi9CwPKnaoWlf+Rn/AAy5V1/H81nWz1/LWDsVdirsVdirsVdirsVdirsVdiryT8ph+mvMvmHzHIAaXP1OIg7cYiUJ/wBkiQNlNXL3f7qX4/2TIvW8uYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVYlejZEKvySuxV2KuxV2KuxV2KuxVLrrXrK1vIdNnlVLq5DNFGerBKc+Pb4eWEC00mOBDsVUJ7uGCgmdULGg5ECp9q9cQLSIk8t1fFDGfzK0oat5b1KxIqZLWUL/AKwUsn/DhcrnyUID8mdXOreUNLum3b6usZ+cZMJ/5N5MFJUvzn8s/p7y1dIg/wBItx9YiP8AlR/Eaf60fNcpyDr3fiX/ABX+ahMfyz8y/wCJfL9nqTf3rxhZP9dP3ch+TMvJf8jLyWUmU4sXYq7FULeafb3qGO6iSVDsVdQw+5splijLmB/W/i/0yCAebEtZ/Jvypq1Tc6fGDT/ddU/CNlX/AIXK/wAuB9JnA/zoy4v+mvGx4Rz/AB/svSxlv+cfobFjL5c1bUNNelFVZOUYHgUHpMy/5PqZb4meP8QyD+bmh4sv9NKXDH/lUzE5gVxXX+qDj/2Pph/sVT9CfmRoyAWmo2uqIAPhni9Ntv8ALXkz8v5mfE6mQ+qET/SxmXF/pP3UI/6Vl4vfES+PD/pYx4IuH5j+ctMYpq2gGVRX47WQEUHfi5ZsfzOLrx4/6w4/9x/xSOKNb8UT/S+n/YqkH/OQGnRsE1SxvbMmteUTMBT3QZcJ4zylH/O9H+6T6SNj9koo+D8/vKMtOV2Y6kD95G67k07rlgx3ylD/AE8f1sow4usf9NFNLf8AN/yncKGTVLUV7NIFP/DlcfCl/Rl/VlGX6UnER/N/08f+KRb/AJm+WU66padK7TIdvobHwZdyBjJ/tCHl/NPQKf6Pc/WWOwWBGkJ+RQcf+GyE4iH1GEP604/7mJlJBhXMiP8AnR/3vEyizufrMKThWTmAeLijCvZh2OVg3yYK+SVgn55q7+S9VWP7Rt2+4EFv+FyuSWP/APONPneXzN5WijuatPYN9XZj3VQDCf8AgPh/2OSMhaSHreEG2LsVdirsKuGAKwH8xPyj0/z1e6feakzenYO5MY+zIr8SY3/yeSf8DyXKMkZHkeEH6v53+b/SYm2UT+WNMuLH9Fy20TWZHH0io40/1cj+XhVV/wAV/pl4RySTyt+VHl3ytdNfaRaJDcMCOYqSAeoWvTBDBwmyZTr+cfpUCu9mOZTJbvX2xVsbYhVCW+hiFZJFQD+ZgP15IQJ5AlkIE8gfkl1/5s0uxUNPdRDkeIAcEk+AAPI5I4z12/relPCeu39b0pnPBHcRtFKoeNwQwIqCDsQfENlMoiQo7sHzprvmfVfyH1QwRwte+Ubti8KV3gdt3iSRuVF5fEkbfCy/Y+Pm2OLIP7uf1D6JfxSj/v8Ah+mf8Uf6vpZRmD6Zf5sv4v8Aj349TMv+cYbgX3l251IDj9cv55ivhURrT/hcERRWT1/LGLsVdirsVdirsVdgV2FXYq7FXYq7FVKeBZl4t0OUZIX5f0mcZUsijWI0UVqT+O+RhGj3qTaIzJYP/9T1TgJV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXkH5lwTeSdZj8+6ehe2cCHUYl/aTZY5v9ZP+NV/mbKInglX8GT/Yz/49/wAV/Oiyienf+Px/x56FqPm6wstNTWZHLWThWV0Baqv9l/h/Zpu38uXmgdyIf1l4d6ND+smenahBqMCXdo6ywSAMrqagg9wcSCOaCKfM/wCbmjy6P5xu9btFpdW62upRb05Rxt9Xuov9k37x/wDir1P5sxYy4T8eH/Nn/F/vP85nHZ6H598x2+vaj5TjsH5xXl4LsFdzwjTl8Xh/ecXX9n4v5cumK/H85apO/wA4/wAvr3zZZW9xosot9XsJfVt5CSBuKPGxHRW+H/gcjImB4478P8P86LASI3CeaPpd5rfl5bDzbFGbqeIx3KIaqdyodT4svGT/ACH/ANXCSMg5GHF/DL6o/iX0sfqVvIfkqz8maXHo2nljDGWbk25JYlyT9+GAIG5tQGJ+efznttIn/Q+gxHU9YaqiKLdUP/FrL/xFfi/1ftZbIxxi57f0f45f8T+OGMmwgR3l/pf4/wDjv49KA8o/lTeateL5m8+SC71AgGK129GAV5BOH2WZf5fsq322lf41xpSlm5+jF/Dj/il/X/rfzfql/Fwx/dNZlx+Uf5v/ABX4/rfzY9bRAo4qKAdhloiAKCWDfmdp73UujPwaWCLU4XkVRU/ZdI2P+QkrIz5XMgc9r/HD/nJDMNR0231KB7S8jWWCQcWVhUEHJygJiixIfO35jf8AOLPqVuvKzBlJqbeU0I/4xS/8atmNcof7ZHvj9f8Ax/8A3X9FjuPP/dMP/KbydrXlLzdY2uq200EFw7qCVpuByrz+yy8vh5K3Ph8aZOOYS2uj6f50Jf6WXDP/AHrZGY5cv9jL8f7F9iAUzJApDsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvL/AD2zah528vaaF5R25uLp/aicYj/sXX/hlyqZ6f0gkckN+WhN3518zXklOSPBEKb7AMK8vlGvw4jn80kPWctYuxV2KuxVxNMVeD3/APzlbpulajcaZqen3EJt5GQGoJPE8QShCceX2vttlkDjkLEv9j/x5siInma+HF/vkC3/ADl7p8rFbTTp5FqByLKBT+uMhAdb+C1Ed7HfNv8AzlVZ69pd1pMunOEuYmjJMgGzAiu38uJjAjnMfCP/ABTIiHn/ALFi35Q/mz5r0DR30vy/ZRXkEUpcMyksOdWK0R159OX8/wDxrXxwh9Qlv/FH/feiTGwOYkb/AIo8X+y9M0yu/wA7fzQnf00tp4iN6JZ702P7aS/8SyP5zF/tf+ml/wBVP96kzHcB/pv99KX+5QJ8wfmprnIg3cSFhUyMIQCafzel8P8AkqvDANYDtH1f8Lhx/wCyjH/fKMhPIf6WH/HUwh/J3zTrIMus61bwM+5DT8zU7kE8/hbfBLUZzyhkr+l6OBHHkvcEf0lO2/IjSrWUpqfmC0QEV+EkmtT1FVXjt/NkeDPPlGP+cf8AieJBhMJ7p/5U/l1a/wC9uueqx3Yo6qv8p6iXInDlvcwH9H+L/T8UP9wsccj1j/sYz/2Uv96g/wAy/LvkKGKwg0Sf1ZpbyFZ3EzkCD4hIS39yn7HxKnw4BglD+K7v0/uvTP8An+iMZ/6eSjGQNzd+eP8A3nDD/TPR/L1p+XGhTyXUNxZyKVURqVDMgVQHq1HkkeRvi5P8X7CYRoidp1P+tOP/ABX+xj6P6KnASN6lX9KMpf7pAazrv5XS336VniS6uSoXikZI22H7s8F55IaKIH1RhD+bxen/AGDDwBzJofzeL0o61/ObQbNlXTNGnPGnEpAF6+BIwRx4IjaQ28pS/wCKSYwAuwfh/vkdN+c+stvbeXb1gOnJSK/LgknbJx1WA/xf6Xh/30oMwYEc5fKP/FKc/wCZ3naaB5rPy6UCivKaULQdTVH9BjxX+VsfzWIH/KT/AKsZf7qOPLFjGcCaqf8Aso/9O5x/2Tz3yDP55826veedtKhgia6AgV5acVSOgMcAPqt9pfjZl+3y+P7WQnniJbROSv8ASR/rS4sXr/qfzvoTxgHlf9b+H/OjKP8AuHoh8u/mVqNUutStrVKEfu1BP3qkWTOol/DAD+sf+K4/90gZCDyj/uv90lUn/OOV3rA5eYtWkuJN/sRgD2+L7WUETJ2EMf8AVH4ix4peQv8AmhFn/nFXyw0RjeW5Ln9oOK/8MjYBjyD+If6T0/7pG6SXn/OKywTC40y+UcABGJouVKdCzc+Ln/nlg/eR6Qn8eDi/zZ48/wDul4iB0kf6X0f6Wcc6cL5C/MS0HG21eI/CBTYDYmgVRb8fs/6v/C5PHOcNhDGP6oh/xMGQyyH8MP8AY/8AVKLR/L38xLhyZtbCA0+zWnuFCcKZd+Zy/wA2H+x/6pr4sjzjEf1eH/iYtS/84+39+rNqWtXDzMPiK1pWlB9psicmY9Yj/TL4k/8AifqZj+V/5UWHkGCVLWR7i4uCDJNJ9o06KB2XDHiJuR4if9L/AMe/rIs9d2eZaq1lDDiwqDkSLVdkldiq1kDgqwqDkSL2Vg/5XWUmhw3flqWvGwnZoCeht5i00G/fi3qx/wCwyEJWN+cfTL/N/i/z4pZ1lqHYqo3V1FaxtNO4SNBVmYgAD3JwgXySBaUab520XUq/VL2CWlAaOO/TvlssMo8wzljMeadRSLIOSEMp7jKaa1+KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpR5h816X5diFxq1zHbRnYF2Ar8h3yUYGXJlGJKUaT+avljV3ENnqNu8h2C8wD9xyzwZcxv/VZ+Gem/9VkC2NvNdJqSgNKsTRKw/kcq7f8ABNGmYpj6r8mso7JoeSeTIX/5WLrsrGq+jEFIO3SOquPFf2cpjz+bJR8qBb/8zdXvFqRbWqxV7VIh2/4V8PVS9hy5i7FUm846gdP0a9vF6xW8jj5hSRgOyQxn8jNM/R3lKyQ/alDyt83dm2/2NMhBSz/LEOxV2KuxV2KuwAq7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirhirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirRNBXFW8VdirsVdiryLy7V/zP1NyN1sgtR4Vg6/7IZV1/H81lWz13LWLsVdirsVdgV2FXYq7FXYq7FUo8163Homl3WpyfZgiZ/pA2H34piLYl+Q+iSaZ5XgknNZrt3uHr4uaD/hEVsrhvv3qS9EyxDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirBfzl89XHkny9LrNnGss6siKGrxHI8eTU/lxEgDuyjXVMPyy80z+avL1nrN2gjmuEJYDpUEpVfZuOJIJ2RJlWKHYq7FVrOEHJjQDviq2GZJlDxMHU9CDUfeMVVMVaY0FetMBKvFPP9r5619G1nQpf0fb2bM0NswIkl4VBaTfj8XH4F/lyr81w/SOLH/FL/iY/wA3/Ss/E4eW/wDO/H81nv5Wecx5w0G31R6C4IKTKNqSLs+3+V9rLzvyRIfayuSRIlLuQqruSewwBi81uPPll+YUGreXfLFy8V/bRkJOrcVLfsvG6HlwWT4Xb4ccgOMWPq/m/wC99XpZkGLC/J/52+bYZZPL2q6JJfanZUWR4ZApIA2aQMHVi/2vUVlVv5Mgc+IjiPHC/wCbCU/V/U9Eo/1fUxM48/UP6o4v+kXlv59fmHq+oa3ZX0tpNpVzaofTV3DNWobkOH2en+ywwyRO8CT/AFoyh/ukxmP4b/zo8L1T8ovz717zfcw2c2nK1tGAtxdKxAXbeR+Xwr/NxyU8kBtv4kvpj9UUmUTytl/mb84jJO2jeToDqeqVKkr/AHUf+VLJ9n4f5cE5xxfVz/hxx+qSkCPPf+jF5N+aX5e6qn6Pn13UJLzXtQukRIUNIo16t6af5P2eS/8ADfbyoZ8h3PoiPpxx/wB9P/pP+ujikfL+jH8fj+c+pYUKIqMakAAk+2SiTSFPUU520q9aow/DDLkoed/847S18pQW52NvNNEfmHLf8b4xUvSZolmRom3VgQfkRTCRaHkf5ETHSbrVvKkpINnOXjU/yMaVr/q+lkMZsMjyewZaxdgV2FXVyNq1gCWxkgh2KuxKqckKSCjqCPcVyqWOMuYB/rCKCLS2fytpVwKTWdu9f5okP61yP5eHcP8AN9H+5Y8Ee4fIIQ/l75dJ5HTbOv8Axgj/AOacj+Wh5/6ef/FJIHl8lZPJmixkMljbqRttEo/UMfyuP+bFr8KPcPkmcFhBAKQxog/yVA/Vk44Yx5AfJtpEZel2BVG5to7qJ4JlDRyAqynoQRQjISgJCiqU+VPKGm+VLP8AR2jwiC25M/EEndupJcs2Qhj4P6f9KShPMuV2FXYCFdhV2KuxV2KuxV2KuxVgnn3yJqfmeRYINTkstPagmiiX42AP7Etfg5ftfDkPEyQ+nh/rV6of8UzEyOVf1q9X+mSK0/5xw8vRTiaaW6nQCnpyTMVJ8TvldZDznP8AzeGE/wDTRagZfzj/AJvpZfoH5baBoD+tp1nHHL/PTkw+Rflx/wBjj4X84zyV/qkpTTV89/6zKcvSgNX0e11e1ksb6NZYJVKsjgEEH2OU5MQnz/6Rl/Oj/SQRfNj35afl5b+Q9NfSbOV5YWmeUcwBx5UHEcR+yqD7WHGJAeqj/Vjw/wC+kovqzDLUuxV2KuxV2KuxV2KuxV2KuxV2KuxVo9MrkqgVJkBB23qPoysXxM+iIzIYP//V9U4q7FXYq7FXYq7FXYq7FXYq7FXYFdhV2KuxV2KuxV2KuxV2KuxVaQSfbMaQMj7krsyUIXUNPh1G3ks7pRJDKpR1PQgihGQnHiFIp5F+X97J5L1eXyDrJ5WExeSwkk3BQmrW9W68a/8ABf62RgRljwy3nD6v6Ufx+PS2AcQ93+5VbOf/AJVXrY0+Qt/h3U3JiY7rbyk7x1/Zib/P7OOKR+iXOP8Ady/nR/mLE3sf83/iUd54sor3zvo1u6q8dxa3kcyn9qMoNie65XOIlt30o5MW8gfktqvlrzqLpyZdCs0la0d3BKmUEGIR15KVZy32eDfb+22RjkMvSbJh/FXp4f63+94uP+jwMeInYvfcykJbr2v2WhWr32oyrDAnVj+oDucnGNpjG3kt75q8yfmTK1j5ZRrDSK8ZLt9nYd/S/wCbcqlnETww9eT+d/BBlxCPLf8ApM+8jfltpfk63CWUYe5KgSXDbu56tyPYM37K5XHHvcvVL/c/1f8Aivqa/Msuy9LsVcRXARauwq7FWqDI8IKt5JXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8ssJDqf5l3D1+Gw09UWni7/ED/L1yu92XRR/I4NLf+YLp+sl8R/wJk/5qxipes5YxdirsVdirsVSbWfKGk62KalaQ3Hf40BP35jS08JG69X86PpkxMQWGfmD+ROi+bLCKxhUWBgJKNAoA3FOLr+0uRGHg3hsf6X8SBGuWzw9/+cQ9eS5aOO4ga3Owdifv4U5csfEn1j/soos93+daE03/AJxK8xtqIt7mRIbQN8U6MG2/mSOqyE/5LcclHUTGwBEv86Mf9NH0swT7npWhf84ladZOXvNSu5jT4fTpEQa9a1lrtlniZ/53B/V4pf7uSiUuhr+r/wBJSTmD/nGPQ0/vrm7lWtaNJTv/ADIFbplUjml/FXw4mRJvnL/Y/wDEpnF/zjp5WTYpM1DX4pWP68RDJ1lKX+w/3LE2eZl80fafkR5RtyxFircqVqzdv9UrgGn75T/037GIj75f1nlP/ORdlp/khtMm0yxgEDyN6qupYMFpSM1P2WXl9n48nDDAGjxG/wCnOP8ApeCUUxgB/O/08/8Aiks8tabo/wCafmi1/Q+mi10Wxj53LKpUSOQP3ZI7KwVU/a48shLFHH6Imdz+r1znwx/z5S4P6389kQBtEn5y/wCKe5Qfkv5UgbmNPiZg3IcgW3/2XLANP/Sn/p5Mffcv6xlJkFl5Q0iy/wB57SFO+yD+mTGmhd0iMBHkmiQqgoigD2GWDFEcgPlFkBXJ0txHCKyMFHuaZaBbKnlP5zfmvo2n+Xry2sr+F7+aIxxpE4dqt8J+xy4fD+02WSwyjz9P9b0/6WP1SbBjMefp4f531f6X6mOfl3+aM+laFZ6VoOhX92kMYHqECNWdvjchyGVl5t9r+XMUZcMRvK536o448f8AvuLi/wA1ruFcyf6o4o/6f/jjKV1/8w9YQrbafa6aD0aaQuy+/BfhOS/MR/hjOf8AW9EP95P/AGKTOI5A/wCcf+JQ48jfmDd/Bd67HFGa1MMVG3+fw4BqMhH0Qj/WPF/uUnKeggHimqWP5k2euy2cF1eSSQyiFJB9ghyfTdv918W/mb7GEa+hvX9KPDH6/wDS/wCkT45/o/6WL0/y9+V35hXMb3Oqa9NZ3a04BKSKR35opWMf8PkTqsp3EYV/NlGEZy/zv+KQM0j/ADR/Whjl/uVHXvI/5m2U9vFpesyXi3APrOwSNIunRasx5fFwZUyX5ycfqjE/zYxhGX+nnwwh/pp/6ZJzkdIn/MxvZfK2nX2nadFbapcG7ukFHlIoT/tfzZISMt5UP6vpi1k33f5vpTrJK7FXYq7FXYq7FXYqhTaQpMbrj++ZQhbvQGqr95yIG9pRWSQ7FWLfmJ5Fg866U+k3EskIYhg0ZoQR0r/Mv+Tlc+KvSa/3yCT02eO2P/OHtgkJ+tahKZ6dUUAD8anKwco5GMP6vExHF3s78mfkvL5UQpZazfUOwUlWQD/jHKsq/wDA8csGXMfqOOf9eEpf7KOTFP8AzeJs45dSD/Wj/wAe4v8AZPQ7CKaKFUuZBNKOrheNf9jVqHJb9a/zb4f9lxy/2Uv6zG/xH+2X+6RuSS7FWG/mV+Zum+QLOO91MO4mfgiJQsTTkTv2UZOEQeZ4Px/RZRF+SZeS/Odh5w02PVtLYtDJUUIoQR1Vh44JRo96yjTIMixdirsVdirsVdirsVdirzPz/wDk1D5212z1PU5uVhaIVNvv8RJr1/lb4eeUTEjsNo/zv4kGzsl35m/lt5M0nQrjUbvTVMdslR6FVfwFG/42bKxgETtKcD/Ovi/3aI4x5j8f0nlH5bedNVszy8i3QvrY7tpd7IPWUKN/qzVVXH/GL/ZpmWcsoj1iWbH/AKpH+9j/AF4eqX+6i5Bkev7yP87/ACsf83/pN7V5E/O7TPMtz+ib1H03WF+FracUJbuI2PHl/qsqN/rYaExxQInH/Zfj+r/sWHCCLjv/ALr8fjhSj8qp/rHnHzHcOOJ9RF+hQF/hlAP6VKr+SMTXWp69qz1/fXZjXwIQsKjGBsok9cy5i7FWAfnjfG18rXaq1Gn4wjxPNgnEf62RkaDKLKPKVmbLSLK2pxMdvEpHgQgr/wANghyYpvk1dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeQ/l05m89a7JKeTqAoI6AVTb/AITK482RevZYxdirsVdirsVdirsVdirsVdiry/8APW9aewtvLsALXGp3CRgDsqkO5/4FaZXM0GQ2ejadYpYW0VpF9iFFQfJRxGSiKDFFZJXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXm3/ADkFotzrXlO4srNDJM7xUCippyFTTKckuHdINMj/AC48sf4X0G00gsWaGMAk+J+Jv+Gw47rdDJstV2KuxVj35guE0C/Zq0FvJ069Dlckh4z/AM456xqXl+5XyvrT84ru3F1aEmoAP24wf+G45KOXxBv0ZcXEPc+hxiCwdhVaVDCh6HAQryD8oYxoHmXXvLQ2j9UXUQ7Uk+1Qf6xyvEdvd6WXT3PUNb0iDWLOXT7rkYZ1KuFJU0PWjLuMMjtseH+lH6v9kh45+W3l6x8ufmFqWm6VGI7ZbOOgFTQ1Fak/tNTKojhH8R/rKI0GFfnJ+b7aP5uKaBzsruJDbXNxIoKkE1VhH8TMsf2kb/hMvhGMd48M7/hl6YRl/W/46yiQOXX+d9DBfMGreXtM1Kw1iK8k1y8WX1boyAhX8EQP9n4sBhOX94Y0f4Y/wJMb+o3/AEY/ws1/LX8rfMXm97q9md9I0K/l9VoI6qXFTQIP2V4n7WUDMY+nF/V8SX8P9RgJnlHZ9IeU/J2meVbQWOkwiKMbkjdmP8zt1ZsMMYBs+qR+qUvqYgU82tIZPNn5kSXLUay0SLinceo3Wn+Vy+L/AGOSlvUf85sK7zX+Zmv23ny08qaMkUls6K8wZakA1LtzrVeK5aJiI3Fm/TvLi/4n/dJsAcr/ANN/0i9jkUMpU9wcJ5Nbyr/nH2UrZalaAELDqE1Ae3Ik5CDOT1fLGDyHUFXy9+Y1vOh4x6tAUbru69P+CIXKo7EhmDs9ey5g7BSuwq6mRMVdhV2Kuwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq1XtkQVbySuxVrjvXK+HdNt5Yh//1vVOKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvOvzs8ofpvRzfWw/0/T/AN/A3eq/E6/7Jcon6TxDp9X9VINbofTLu0/MvyaPr7ov1pRGD/JKPhX7X+7FccsnkjxcunqizkLO39ZjX5c/l/5sg80Rap5nZHt9OtTbwOrA861SvGvLlxPxs3H9nKxmOQ1UoV9XF9P+bL6f9JxMePi8nuWZDFinnX8x9J8oQ+pqEoMx+zClC7H/AFOw/wApslGG1naP86TMQt51o3lTVvzOv013zSjW+kRHlbWe45Ds8o+1/wAFmNLIcnpj/d/xS/n/ANVjKV7R5fzv5z2m1tIrSJYLdRHGgoqqKAAeAyyMBEUNmIV8ml2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5b+X8XreYfMer8wxEqwrToAiA/8AEhlIslmXf84/QE6TeXj7vcX07E/Jtv15KDEvUssQ7FXYq7FXYq7FXYq7FXiXmL/nKHTNC1OTTrmwujHExT1QoFSOpVHKfD/ssnE45fxfZ6f+L/2LYOAjmb/q+n/dcf8AsF1x/wA5QabwQ2mlanMZN1rCFBHijK8nL/gcr8TFHnOH+b/D/W4/CYRMOsv9L6v90YIdP+coI0k/0rRL+K3HWQqSR/sOC/8AEsRmwHlMH/S/8XJleM/xf7H/AI8hrn/nLXTFkMUOn3DMdl5Mq7npVW6ZaBAixK/6o/3zLhj0N/BFN/zklJGRDJpMouGFQBKhFPnXADA/z/8AS+pnwDun8hxJF5t/OPT9etvR8zaBJPbIaikgJB+alGX/AILIZMeOfI5Yf0uDh/3yfCj/ALaK/of8eR35df8AORflCytZLNrT9DwxH92iKX5+JPpJyD/6/wDweMNPCH0n+tLJ6Z/7rLKTXwR6Gv6w/wCI42VSfnxFdsF0PSr++B6P6RRD8nYNkTlxDYzBI/hxDxf+Jl/sWFw/nX/VEpf8fj/pGv8AGfn7UxSw0eK1B6NcSb/8Kf8AjXIDVY6uMZz/ANx/uYyTxxvYSP8AW+n/AHkm/wDBvnvV6PqOsR2iHqltHuPbk3XD48z9MYQ/rHjl/pv+KgxOQ9BEb/53+mdD/wA4/wBjc765f3uoGtSrykJ/wHxU/wBi2AzzS5y4P+Fx4Jf6b6Zf50FMpHrV/wA30/8AHf8AYo3WfyJ8vT6PcaXpdrFazyrRJivNlYbqeb8pOPL9lWyk4OHcWZf0pS4f9LH0R/zYtfD8f6349P8Amss8m6ReaRpNtYalKs9zCgR5EUKppsvFQF/Zy+HLcCH9GLO7/wCOp9liuxV1BkeEK7JK7FUNYzyTR854zExJHEkHYGg3X+bBdpISfSfPWj6pdS6fa3KG6hYq8ZNGBHgD9r/Y5ZwGrG7M4zzZDkGt2KuxV2KuxV2KqcsYkXia09jT9WRN9PT/AKX/AHwlFINKmSQ7FXYq7FXYq7FXYq7FWJ/mD+W2lee7MWOrqxVDyRkNGU0pVTlGSBlyPBX+d/sUUs/LP8vbbyFpf6ItJGmT1Gk5OADVu238uGESB6t/6qi/ey/LkuxV2BXYVdirsVdirsVdiqF1HT4dRt5LO6UPDKpV1PQgimQnHiFIIfGfnr8iPM3knUJtb0FGaztnMkUsTVdVry3T+8+H7L5RDUcBqV/1q9Ev8/8ApJjLhen6B+jvzt8vi8f/AEbzNp4AMyDiwdR8DVH2o5P5f2Hw5IcB44bX9Uf4Z/14/wC4mykP4o7Jf+QOuyWNt5guNTkD6nBUyVNWPEEcv8r4snz9XK2XN6V/zj5AP8OfXSatdzSSn6ThgWEjb03LUOxV5N+fkgnXStL2JubxdjTopDd8rkyjs9XRQgCjYDJgMV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq0xAFT0GBXkX5Dlby61rUx/u274ivgBXK482UhT17LWLsVdirsVdirsVdirsVdiqmSVO24OYhMoHrPiP+lZPLElPmT8wSo3ttGhp/wA9Hy2RsgKeT1fLmLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVYL5+/MC50KSLTtFs21LVZxyWFTQKv+/JX/YWv83HBKccYud/0Yx+uf9X6v9zJmKG8rr+j/F/uv9yx+1/Om/0WRIfO+lS6YkpAW4jYTQ1P87oW9P8A4JsYZceQ1EmE/wCbkEo8X9WUow/3PD/TZHhkaFxP82X/ABfDD/c/5z0+z1K3vLdbyCQNA45B+xHjXDX4j6mJgQaRQIO4xYOBB6Yq3irsFq4Ygq7CrsVdirsVdirsCpZr5kSyleAIZVHJQ+y1HjkJ8r3P9GLKI3Rtq7PEjvTkVBNOlab0yQNsSFUCmFW8VdhVK/M9ib7S7q0UVaWGRQPcqeP45XPkr501XzpEo8uarYQTGewlFrLI6kR0b916XqfZZuXxfDlcaB5xNx+mP49DYSPf/ReqeW/zRu9R83XflK6tUQQRCVZUcttt8Linv/k/6uXCQI5Sj/W/H/FINV1ei3FxHbIZZSFQEVJ9zQfjiAxAtUGRAV5HYq1v+adwo+zPYK3/AANP65GOyej16mWcLF5B+TsQvPMfmLVR8Qa5EQb2XfjlQG/uDItf85DeaLHRNNjtGs4bzUNQYwwrIobjXbn/ADct/g/ysH5fHfER/vZf6ZHADvLfh+l882f5eN5f1ew07VIiNUa7hJWoKGJiCCn83dXyMZcY/wBjw/xqPxF9xxxrGoVQAo6DL4xACGP/AJgeaU8raLdau1C0KEqPFj8KD78kAGURb568sfminlfSza6GDqPmjWX9Z1T4liLfYR6dXVf2f+DyNCHrnsP4Y/xfif8ApmZoby/zYoz8j9E1TT/P92PML+tqRtfUkYnkQXoSnL/JU8fhyAyeJvy/H81ru9305lqHlf5Imlzrq+GoMP8AhRlcGR5PVMtYvIfz7ZrKbRdVj2a3vB8Q/wAriN/9jzyuRopjzetxuHUOOhAP35YhfirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdTBSuwq7FXYq7FX/9f1TirsVdirXXAlvCh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ktb98CtMocFWFQcSFfLn5pfXPyvfUrSCNzo2qgSWzJsIbgHmd/2cqhL+A/weqP8ASZRlW3d9L0LSP+cjPLsOgWt9eXHq3zxgPBEOT8wKNUdE+b8cy/D6mo/j+bH1M+C/IJDD5n8+/miGj0SMaHpRPEzvUSEV/Yf+8Zv8mNIl/wCLsxpamINYx4kv50vo/wCJj/0tl/VYmYH0b/0pfj/c8X9eDNvJP5GaR5clF9dtJqN/1M1xRqHxRPs/7Jub/wCVlRhLJvkPH/R/g/2XFKX+d6f6LAky+o8X4/H1PSlAUUHTMgBW8KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kqc0npoz/AMoJ+4YCVeP/AJW3BtvKmq61cHiLiW5kBO/2eSCv+yyuJ5sjuyD8hLRoPKdqzChmLyj5O3IYYoL0TLEOxV2KuxV2KuxV2KrXrT4euRJSEt1by3p2r8f0hbxT+mQy+ooahHcVzHnpoTNkf50TKEv9hwsDEFX/AEVaeos3pJ6ibKaCq/6v8v8AscMcER/bLh/0v0slaSzik+2ike4GWHFGXMKwnzt+S3l3zd8d7bhLilBLF8Le1afaynwK+gmH9X6f9KwMe7ZKtI/5xy8pWMbJNbfWS1N5GNRTwocHgzO8pT/zWQHxTK3/ACI8m27iRdNiLDccixH/AAJah/2WHwL5ymfj/wARwoIv+2TJ9N8o6Rpe9jZW8JPUxxIp+9VxGkx9Rx/8M/e/7viRwA9B8k3RFUfCAMyBEDkzXZNXYq7FXYq7FXYq7FXYq7FVrkgfCKnIlWpY1lUxturAg/I7HCVYLe/kp5ZukHG29GYEkTRMVkBPf1B8WUDEY7xlMS/nXxf6b+cxEa5E/NTs/JPmPRzTTNYM8QO0d5EHAHh6iFZMs8TINiIZP6XqxS/2MZRZmZI3qZ/nfR/uf+JZvZC4EQF3wMlN+FaV/wBlvhiSedD+qeL/AHsUfZ8eL/exRWTV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqFw0iJWFQz9gTT8aNkCa75f1f+PShH/ZMo1e6ste+TYt4q7ArsKuxV2KuxV2KuxV2KqcsSyqUcVVgQfkeuRkLFK+VLryyfy8/MmCGxllt7DUGJAV6VqCeB5BVKcv9bh/PlMJEAxu68o/7n1f7xnCxt/xLCNAnvYb/XNVt2KwRo0Tt2YyOFRa/wA3H4sN1t3pBfXf5W6WNM8tWFsRRhCrMPdhyOSxjb3sGV5ah2KvJ/PUf6R8+aHYihEEclyw67Dkn0ZXJPR6xliHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXzr+Zn5x69rOt/4U/L4NJLEf3s0ahjUGjAO/7tIl+y8jftftYZZI4Rv6j/pv83h/in/pmzi8Pzl7uP8A2P8AxTLfyR/MbUdX+saD5pcDWLVyAHUIzKOtQn7surfyfsfFkYzGQcQr+lw/8T/D/S/moPq3H4/zXruFg7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUHrF0LSynuegiid/+BBbAUh5r/wA452Bi0GW+P/H3cSOP9ifS/wCNMrgVk9Wy1DsVdirsVdirsVdirsVdiqG1C9jsreS7mNI4kZ2Pso5HAkB5t+Q9q9zY3fmG5qZ9RuZH5EUqikqlPbKo7kn/ADUyO71LLmLsVdirsVdirsVdirsVdirsVdgV2FWlNRU7YAqhd3kNnG1xcOscS9WYgAfNjgESSkC16Uf94pqCPoxrf/eqe5eV3riqGTTreOZ7lY1E0gAZ6DkQOgZvtFV/lyIgAbRa3UtKt9RtZLG6QPBKpRlI2oRTIzxCQo/5v9FTu85/JZm09dR8o3PJzpFwVjZx1ikq8J+7/heOSieKO/P6Zf5rZxHn/mvUgKbDpkwGtwUDcYgUreKuwq7FXYq7FXYq7FXYq7FUs8x25udMuoAQpeCRQzdBVWFW9lyEuSQpeUrtbzSrW4WRZQ8KHmleJ26ry+Kn+thA7/v4/wDZJlzTjJMXYqxnzr50h8pQJe3sTvaE8XkQV4EkKpcfy++RBANHa/p/m/1WQAPkntlew30KXNsweGUBlYdCCKgjDXeginzh+cnmG10zy7c6E7LDf2WploUHUoQ08UoH7I4TJ8X8+VQhtY6S4Zf1mYG1/jiei/kb+X02g2T65rD+trOp0lmc0JUH4liB/wCJ/wCVgj6zxH/N/q/8eayb3Sv87fPuoeU7lLaYK+l6hBIiNSjRToOaEMOoZuH2ssEhL0kb/VGX+9l6uH/S8P8ASZxP/SW71vSrkXVpDOpqHjVq+NRXJsSHmerE235n2RoCJtPcV7/ab/qnlVbp6PVJ5lhjaV9lUFj8gKnLCh5b/wA46wctCnv9z9bu5nqdz8J9L/jTK4hMmL/85Q6Zc2kmleabaJpk06aswHQAMrpX+Xk3JeX/ADbgMgDR6sQWMfmb+Zel69qPl/zHoy/WJoizSxftgRkO8br/ADKvNkbJygIGz9Jr1NhAHPq+ldE1m21qyi1GyYPBOodGHcHLCKYEUw/86vI+oeddDGj6ZIkTvMjOz1pwUNUfD78coyTMfpHH8RH/AHSLrzU/ys/JjSfIdurQoJtQKgSXDCpJ7iOv2EyuOIk8Ut5fwx/hh/x7+kxAY75ZUn81NW6UW1jPv0i/rlkRX2tnR7NlzF5V+UREeveZIF6C+LU/1iw/40yuApkXquWMXmP/ADkPpbXvlWaaP+8tZElUivj6Xb/jJyyqRr5pBpm3lHVV1XSLO/TcTQRv96g5apCcYodirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf/Q9U4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUm81eVLDzTYvpeqxCW3k6juD2ZT+yy5VOHF8Ppkgi0r8v8A5YeXdB9M2FjCskShFkKAtQf5R/a/yso/Kw63P+tKUo/6X6P9iwEB+PxwsrVQooooMyRERFD/AGLYuyauxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqMtxHFQOwUtsKmlThAJ5MhEnkrYGLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqUebLw2Wj3t0p4tFbzOD7qjMMjaQ8paU6N+VBmJCyXFsHA8TOwag/1lfK4jb4pD1LybpA0bR7PTlp+4gRDQACoArsMlj5MU7yxXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqpTTCIcm6VA2HiaZEkDmkC1XCh8u6zL+by+abqPTfV+rmRvTrxNuI6/AU5/D9kj/L/AJ/2sj+dAFGPFX8PB6v+VvDD/TcXCk562r/N4f8Af/8AHk7tIfznuWYvJbRAkijcB0HUcU/ayA1Y6Ql+P85Ayn+b/puFGL5O/Nm5txz1eCJyC1Au9TvxrT/Y4fzcx/k4n/S/7lPjE/wxCaWv5YeermJJLvzLJFIVHJVhUgHuK/Dy/wBbB+YyneMcX+dxf8TJAyTj/M/H9aKqPyo86psnmmah2obdT+IdW+nlh/MZ/wCbh+f/AFYk2+PP+h/pI/8AENyflZ53qWXzO+56eiwH/J9skNTm/m4f9h/2TRT4x/of6SH/ABMXJ+VvnZN/8Sys3gUNP+J5IanL/Nxf6WP/ABLDxD/Q/wBK5fy8/MGI1j8wq1D0aMkUw/mcn8zEUjIe6H+lXfoD80UoE1KwcDu0bA/qyk6qf+pj/TD/AIpJzf0Y/j/OdNo/5qzCi3+mxEUNVjYn5HmjrhGpl/qf+mn/AMRkR4v9GHzl/wAU8A/PqbzXDqEdn5g1GK9uLdDLwtQQIQaASSAJEqM1f+I/zLkxkvcxGG/p+nil/VnxTn/s/wDNQZEfzYfzeH/j/qVvJ8ay+SYtMBJudW1NVU+yqsRr+19uRMplzJ7goNvtCxtha28cA6RqF+4Uy2IoMERk1diryjSqah+Zt9KtGSxsEjPTZpCj0/4H/jbKzzZEbPV8sYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5v+a/mq8VrfynoJpq+qVXmP90wg0luD4fDy4f7L9rjkZT4Bxc/4Yx/pMgeHf/S/1k0/Lf8AK7TPIlu8dhyeeahllehZiB+C1+LjlEMZ+qXql7vp/wB9/smAZS+mW0ky3TxIZk+y5UFh22b7WWeFG+KhxfzloIvLUuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVif5rXxsfLGoSg0JhKD/ZkRf8b5GXJMVv5T2IsvK+nRgULW6OQfFxzP8AxLIw5fP71LLssQ7FXYq7FXYq7FXYq7FUm82teLpF42l/72iCT0vHnxPCnvy+zkJS4RajZ8fRfn15ij0y88v6+0jtdAIkkgIZN/3iHl9pWX4cn4gyCxw/5rbHIJd3+a+s/wAt/qUWg2UGnOJIUhQAjuafGf8AgsqiOHYsJRIZPlrF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5p/wA5DmH/AAXfRSNxkl9NIgOrSF1KIvu1Mie/lXqSGY+TLd7bRbCCavqJbQq1etQi8q+9cEZcQtU6yaHYqhNS1K30y3e8vZFigiBZ3Y0AA7k4QL5JAt57+T00+uXGqebpoTBDqkyC3UijGGFfSjlb/jL9r/mzhlESCTXT08X9L+JSe56blyHYq7FXYq7FXYq7FXYq7FXYq7FVOWNZFKOKqwII9j1wHdWF/krIr+VbIJsE9VN/8iWRP+NcEUlnGSQ7FUJqem2+p20lldoJIJlKup6EHITiJCiinzFqfmO+/Kq//RbaiLvT7J5JLaziNZWZwVjhuT+xFGz8n/4T7S4YmVesRh/OyfzoR/mw/wB82iRr1bf0v50Px/E84876H5q1tbjzprVs6W8vBWd1oAG+GP00b4uKtxj5f81ZT48Zmh/xz/Tfz2AmCdmUzWXmfXNUsdC0bzBcX13PEjzmF3SG3jIFfUaIqvJV/Z4/yp9tly6WoyYx6hAfw44x4eKX9f0x4f8AZen1szOcefCD/DGP+6n9L03/AJyj0qW28l2hLtPNZ3EAMr7s3wPG0j0/aZqM37PLK97F1v8AVw+n/SRYB6r+W7yP5a0tpxxkNnByHgeC1yyJtTuwrzOxX8ztGFNns5hX3UTtT8crv1J6Mz/Mu9Nj5Z1O4U8WW0m4keJRgv8Aw2WEoCA/JrTF07ylpsSftwCU/OUmY/8AJzIw2UstvLSG8ia2uUWSKQFWRgCCD1BB7YyAlsUUwLSPyJ8saPrC69Y25jnXkVQMfTBYFGpH9n7LZjjARsZSOP8Amy4f93w8f+yYCNf8Sx7yDqa+S/N955Ckb/QrlBeWIY7rzr60A/yeSOyL/rfzZkY7MaP8Hp/zf+OtwFj+r/uf+OvZssYOxV4/5LkeX8zdeJJKLbwqATUAhYenh1+zlI5/Nl0ewZcxeV/ljRPN3meOlP31uwH+sJSf+C+1lUP+K/3TIvVMtYsb/MaxW+8ualbnq1rLx/1gpZP+HAyE+SQkf5DXguvJ9gRsY1eIgb04SOg/4Xi2EJk9AyTF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV//9H1TirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirAfzCudau7iHR/LN1HbXrRSTMHIHJAUjUKTHOy/E9eSp/zbA5DDcR8T5f7GUpRhxf0ZcTOO2/P8f0uKH+mhJ5bqP5CeZvMl2s+szxxyFxyujcyTSBV6JDD6cEK8v8AKyk6nJLkMkP60sMMUf6XBg4pfj1SRLKTy4h/WMOD/NjijB9FW1v6ESRAlgigVO5NBTc+OZAQp32pW1gnqXcqRJ4uwUfjkxEy5KIk8khj/M/y1JJ6CajbmQmnHmK5YcEx0ZHGQycEHplLBvFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWC/ndqJ0/wAoajKvVoxGB4+o6xH/AIV8iWUWI/mxZiz8p6Joi8SZLiyhKkdVVDX4R/lKuVnaKgW9nAAFB0GWjZi3hV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqNzcx2sTzzELHGCzE9AAKk4qHlf5Wa15m8w6Fe656yPNeTu1jHKPgjjDcd+PxcafZX/I/wArIyyn+aDwfwx9PH/nfj+JkZeXFX+bxf5y618++YPLGswaX5ySB7O9ISG8gUqiyEbRSBunI/DywwyDJ6aOPJ/Nvj4kxo7cv989YwsHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7AArsKuwK7CrsVdirsVdirsCsA1n8vvL+kaLqvG3jRbuOaS4kkqzMWBc8pH5PxVvsLy4p+zmLLECbJM8n8MpS9X9WH49X8S8Nnz/nfxPlr8tFm0vU9Ai1KVf0dcXfrxrsQp5ogYn9lZGh/4llv17dzYL5f6V9yZc1uxVxNNziryX8k4GudS8w62aFLq/Mabb0iL/tdxSVfh/ZyoGz7h+P9yyL1rLWLga74q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUn82eZLfy1plxq13/dwKWoOrHoiD3ZvhxTEWwv8pPLt1K9z5s1wf7l9RIqp6QxD+6t469NuLP/AJWY0ZeJLi/hHpj/AMV/nfj6llvv/pf6L0zMlDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVccVdirsVdirsVdirsVdirsVdirsVdiry7/nIm4VPLDQEFnnniVQPEHnv/AMDkJFlEPQtChMNhbRMOJSGNSPAhQKYx5MUfk1dirsVdirsVdirsVdirsVeK/m55OtPOfmTS/LjxgQhJbidkADcdlT4v9YZiSgI/TtKXpWtmNW1pr/5J3xIV9S8ssaDjUtCCf+F/4i2SjlH05Npfw5P5zKM+kv8ANk968ueZLHzDZJqOmSia3kGxHj3BHZl/lzKMOFZRpNcDF2KuxV2KuxV2KuxV2KuxV2KuxV2ClePa0ZPPPnmDSozXS9B43E1N1a4P93Gf2fhX/mZleU36e/6v6rM7Cu/6nsIFNssAYPG/zn/ObVfy/wBTtI4LEXFhOhLMSQS9SPTRgGVWVeLf5WShkhfDK7+rij/N/q/xf6ZmCORasfzg826qPSsPLFwJSNmmk9NN+/N0VWH+yys6nB/CZ5P6MYcX+5lPh/0qkwH88/Dg/wBl6uD/ADkVZ/lnrnmy5S/8/wBzG9vGQ0enW1RCD2M7NvKy/wCy/wBfh8GQlklk2A8DH/FvxZZ/1pR+n8emMmBkZbD0R/m/xf50/wDiP83herQQJAixRKFRQAANgAMsjERFBVXJK7FXYq7FXYq7FXYq7FXYq7FXYqtcVUgeBxVgn5LuRoklsX5m3vLqLbtSVnp/w/LIQ5JLPcmh2KpN5s0m61fTJ7GwuDaXEq8VmXcpvuR9GRMiPpr/ADlsjkwryb+SPl3yby1O8/0u83Z7m5oSD3YBvhX/AFsp8KWU3M8ZP8Mfo/49/nIETLn6nmv55/mrJ5o0m60vy/CZNLieMXF22ykhgUSH+b94v2sukYx9P1T/AJsfpi27DbnL/cvPjLdflxbwXHkjWBLeXkcYuYI4hKfUIrxR2jlj+H/fbMr/AOtkYmWM3kEP84x4oR/p+ri4f6f0/wCkRRhz4QP6XDxfj/OgzTyr5Q/MvzxA1n5olKaNcujTLdACQqrB/wBwgT1Im2+z+6yuWqGXaMeP+bkjHwox/pcf+V/0uVicvFtX+dERh/vfV/pZRfTen2MVhbx2cApFCixoD2VQEX/hRlwFBDzD8w/3Pnry7Oh+OkydujcUb/hXbKjz+TIMo/Nzy/deYPLN9pmn73MsY4DpyKkPw/2XHjk5yoXzY3TzvRPz5Hliwt9P8w6NqNobaJIS4iDKeChKhmMf2uPLDjy4Z7RnGJH1Rl/x3in/ALFPHDldH+bL/pKU/wDYpzY/85ReTLk8ZJpoCP8AfkLD6Pg55knGOkoS/wBP/v4RbPDB/ij/ALL/AIlMI/8AnIzyW54/XqdqlHH8MHhecfmnw/OP+y/4l4d5488QeafzB03XPK8c1ytoYVcqh+Lg5Ykf5HF+PxZjTMcR3Md2uVRO5fXuTYuwq8j/AC9Hq+ffMU4FVAhQsPHim3/C5UOfzZF65lrF5f8AlsBL5w8zTg1/e2yfdGcqjz/03+6ZF6hlrFBa1EJbGeMioaJxT5g5CXJXnH/ONrH/AAqqHqk8gPzop/jjEpL1TJodirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf/0vVOKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvLLiVF/MwSyNRYtI6kigHqsSTXK6N/j+az6Jh5h8+62w5+WNNN1bqCz3Fy4hjIH++1fjI4/4s4qn8nPEZ4A1U8v/Cfp/wCVvDOEv6kPUgEDnxT/AOF8P+6l6Zf5ryzUv+cnNY1aJrDQNPC6jGHMz8hIqhPtyR/s8f8AKbll0smOG+/9WX/Hfq/2DO4x33/qy/479TI/y3/K+Dznp9v5o81XM2oy3KllikYiNRUrTgOvTMeRnkO54Ifzcfpa5knyH82L1HSvIWhaWKWVjBHQ1B4Amv8ArNyOQGnh19X9Y8X+x+lr4B+PV/umRZkM3YVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeZ/nyRPpFvpp/wCPy8hjp40POn/CZXPkyigvzit/r2t+XrHjUG8DnuKKUrUZGQ6f5qYmnrOXMHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXn35w38lxpjeXNPPLUtSHpogND6dR68lf2VWPITlwDiZDbdl3l7SIdI0+CwtkEccMaqFHagFfma4IRoMWBfmJeDzLrNh5S08hpop47u6YCoijjPNQT2eVvhRcGQUPM/T/vpMuQ971DLWLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqm8yR7uwHzONJq0o1fzjo+jLz1G8gtxQn95Iq1A8Ax3yyOKUuQLIYyXzL+eP5/DzRE2ieWvU+oCvrzU/vAOiAfsxf5Tfa+HIy4YfzTI/j0/wA6bL6PM/j6WD+V/KOrfmJcw6dpUcdsbKAEEk9nZ/Ur+yzNJmLOfD9IM/i1ylXJ9uaBbXFrYW9veuJLiONFkcftMBRm/wBllsSSN9kFMcmqC1i5FrZzznf042b7gcBSAwD/AJx6tTH5WjuWNWuppZifcnh/xpkI9VL0zLEOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvLPP7/wCJfM2m+UxU2sX+m3QHQhD+5jf/ACWfK8h2r+f6f83+JnyHvepKANh0yYFMG8KvIvO3nPzbqOsS6B5LgjC2wQT3MoB4s/7Kcjw+Ffi+yzZCWeOPajOR/h9X+9/30uFlYHmpPpP5kaMv1l9VsrmMbkTRiNflz/Z/lwQzzlzxg/1Zer/cwSJkmuGMv6vp/wBzFEp+auv6HIF806Uy2rAf6RZkyoK/zD7X/A4Bmxk0eLCf5uQf77+H/OW49bh/WZ75e84aX5hj9XTLhJqbEA0YHwZD8WX8J58x/Oj9KDEj/jqeZFi7FXYq7FXYq7FXYqw781fP48i6JJrXom4KsqBAabsaVJ8MIIv1Mo11eG2H/ORXnjzQ/wDzr2kqyD+VGao/13PHBPU4cZ7/AOtL1f7Bl4kB04v871f7FmVhqv5vXkKzG2souf7L0DD/AFhXInVQPKE/nJiZDoPtRy3n5tUobfTa9Nyfv2kxOoH8yf8Ap4tfGf5p+cf+Kbj1X820HBrHS3p+0XYf8KsuDxxX0ZP82eP/AH3/ABSnJ/RPzj/xTuf5s3g6aZa/Lkx/ESrgGp6eHI/1pR/3mT/etscoI+mv60pf7yUlN9I/NZul7ZgU7KNz/wAAtMfHP8z/AGTDxCOkT/nf8ddDpv5qRH4rmzkAJ6qOn/C4PzMv5n2qcpP8I/2K6Ox/NZzvPYqAT1Xt/sS2P5o/6nf+dH/qpFkM39Efj/ko57D82I1Lrc2DsN+NAK+26f8AGy4/mz/qX+5/7Kf96yOYfzY/7L/qq4eYPzSs05T6faXDeCED8fWX/iOH8zHrCY/q/jKxOQH+Ex/H9eayL84/NdmSuqeXpqgVJiO365cfzWE/z4/1oy/4iCDkx/0r/H9FVH5+3YFH0K9VhTY0/ph8bD/O+xeOHef9K3H/AM5H2Me15p17C1N6oD/HJieM/wAQ+Uv+JUcJ6j7UXbf85KeVJDxmeeGndomP/EOeWCAPKQ/2X++i2cA74/7L/iUwT/nIHya+4v8A33ik/wCaMPh+cf8ATRXw/c8//OH81dA8yW9jZaZciQi6R3qrABQDueS++U5MZ8j/AFSkQr+aXsVl5+0G4RfRvoGFB+2B+vLRikByR4UvxSaRa/YSisdxEwPg4P8AHB4cu4sTAoiK+gl2jkVj7EHImJYmJRGBDsVdirsCuwq7ArsKvMPILjXPNWr60alLfhax16UHxPT/AGS5T9R9zMl6VPAk6GKUBkYEEHcEHxGTlESFFg8G1/Sb78oNZbXtGjaXy5dGt1brUiIk7yIP2V/64yvFk4PRP6f8nL/eJjL+E/5v9F7foutWutWcWo2LiS3mUMjDuDmQRSkUj8CHYq7FXYq7FXYq7FXYq7FXYqw380POb+VtJaa1X1L+4YQ20f8ANI3wr9C/awcQAs9GcR17m/yy8lDyvpgSc87+5JmuZD1aRvib6FrxymA/iPOX+xj/AAsLtmOXqx7zx5KsfOOmyaVqI+B91YfaRh9mRP8AKXKckOLltIfTJSwr8uPNV5oV6fJPmhx9chA+pzkUE8Q2Xf7PqoPh4/5tbjn4g7pQ+qP++j/QZ/V7x9X/ABT1bCwdirsVdirsVdirsVdirsVdirsVdirsVdirAPy0SG11DXLCDkFjvudD0rIiueP+yGVwFJIZ/liHYqxTz/8AmPpXkiyN7qkgDEHhED8bnwRcshj4vIfzmUY2+cdf81+cfzjuRBots8Olg/YJKrTxmk+y+U5NTGHpjZ/q/VL/AIlJyCOwR3n78ltS0Py19d1e/MpieNVtoRxiHIhamnHky/zceX+XmNGc+6OOEv4f4v8AO/6SkxEj7v6v4/4p6v8AkvpGjWcc9rp9rHHNZiJXkKj1OTpzesn2j/wWCOGJ3l6/4o8Xq/0kZemH+YxMR/x78fS9UzMS7FXlH5jivnPy6B1DufoJH9MqI3ZB6vlrFoiopkJREuahA3Gi2NyCJ7eJ6/zID+sZjfk8X82H+kj/AMS1yxxlzAPwQVz5J0W53msoHPvGv9MfyeMcogf1fSx8GPcEdY6LZaeKWcEcI/yFA/UMshghDkA2CICOzIZOxV5Z+TbG51XzBekU9S8Cg+IQFcqjzZF6nlrF5h+UiD9N+ZJCaub1AfkE2/XlcWRen5YxUbqP1Ynj/mUj7xTAVeVf846n0dOv7EHksF5IAT4Hb/jTIQ5MpPW8sYuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV1MCuwq7FXYq7FX/0/VOKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVgWr/nT5d0zVo/L7zNJfSOEKxqWCE/78foP9jyyzw6Fkxj/R9XFL/SRlw/5/C2DH3kf1fV/vYy/2TGP+cgdbl0SXR9QX91DHdgyTgElQN+O37LZQJ0duo7/T/pURLEvzF/5yL/SzDR/KDsivUSXRU8qeECfa5f5X2stlIQ7pH/YxZio90j/sYsj0j819a0jT4LQaLf3nBAonkoGkPXmy/aGYw1WL+KVy/i4YyjH/ADWHiQJ3JP8AVizb8rPzNi8+Wk9wlu9tJbSenIj0O+/Snyy8mJ+ndEq6MXs7dNV/M28YgNFbWEaSBgCCSTTr/rZQRe3enoof85EXWoiGx06OX6vo93L6d1IhAenUIB/Jx+3xyfiGOw2semX8MFjKvef4mCflBoNvpuheY9cgUG1KSQwOdyUUGvxH/Yc8p4bO+9R/2SOvfSa/k/8AnBcPo1j5Z8v2D3d/AhEhc8Y1BYtyY/a4/Fl5nCHPiJP8MR6kkx8y+iLcyNGrSgCQgcgNxX9oA/PJWwVcKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5x+ZxFzrOgWFK1vRMw9kB3+85VMWkIPzgPrfn3RbdaH0YppWHh0ofwwS5/JPR6nlzF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqcsqxKZHNFUEk+w64q81/LevmbWL7zfMp9In6tZ1/30h+OQf8ZH/a/lyonil/U/3TKR6dyYfmD+Yj6VImiaIn1rW7naOMbiMf79m8FXLSRAcUv82P8AFNNVuf8ANj/OTDyB5FTy1A89w/1jVLs87mc9Wb+UeEafsLlMQSeKX1S/h/hhH+bFr57suy5LsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVYH+aVnrd+tjZaJNJbRz3AW4lhALKlDv8XReWVSzHHyr1emPF/OZCXCwXz1+VOmaDpMup6nqN5O6UqJJmpKa/DEqL3f7Pw8sRLMTvLhH8XCODh/zkxlM9f638LFfJv8AzjUfMMia5rINlayMHSzUln4faAllf+b+Xh/wOUyyZMn0kmP+qZPrl/mRa5SMvd/S4uKTLfzr/LnQNA8pTyaZZQwSIyAOFHIAncBz8WCODgN3In3y/wBzxcH+wRGI/Ej/AL5KP+cYraGXVNSvIB8AiiQEAgDZajfv8OXCNFsIp9FZcxdirFfzQu2tPLWoTJQFYG9uvw5CRI80xU/ymsxZ+V9PhBqBCD1r1JbrjDkpZdk0OxV2KuxV2RNq7JK7FXYq7FXYq7FXYq7FXYq7FXYq7FXmGl3ca/mRfRuvxtYQqrewJZhlcatnWz0/LGCySRY1LsaKAST7DFXnf5LTpqFtqGrqeRu76U1rWoQ+mn+V9kftZCPNlJin5sa7J561eDyBobgrzEt7Kp2RUNfTqP2sOSRgP6UvpSfSPe9l0zS4tOtIrGEfuYkCKDvsBTvkeGxR9f8AW9TBJdQ/L3Rr24W+9AQ3SkMJYSY2qPEpx5f7LIRxcH0GWO/5p9Mv8yXFFAHDy2/q/wDE/SycCmXpdirsVdirsVdirsVYz+YfkyHzlotxos7emJgOLDejDdG/4LKskSRtzH0oKQ/kp5G1PyVo7aPqkkcoSQmJo/5D/PXBA3uRwH/TKDfk9Ey5LsCuwq7FXD3xV2KuxV2KuxV2AhWqDI8IVY0SOKMAR7jIHFE8xE/CKlCNodgxq1vCSfGNf6ZA6XH/ADYf6WLX4ce4fIIOfyXos9PUsbZqdKxJ/wA05H8rAchX9VfDj3R+QeLebvIGjap57s9FgtYorZYjLKI1C8v2qHjgOLh2jxC/OTaI0O5nz/kD5SYU+qUFa7MRhGAj+Kf+ma+H3/NAS/8AON3lV25BJ0B7LIQP1ZMRyDlObLcdSozf841eXjvBNdwsOhWUV/FcP74cpy/zuL/eygkGQ6lZ/wBC8W8RDWur6jE3XaUU+5VXJeJn/niX9aOT/qqnxMn87/df8Utk/Ie+XeHXb1SDUVau+Iy5++Hyl/xSfFyd/wDuv+KWH8n/ADRFtB5hnAr+0K7YfHzf0Cviz8mz+WvnqCgtte5Adea9v+BbHx8o/hgV8SX9FS/wh+Z9s1bfV7aWnZ12/wCTWR/Mz6wB/qmP/FwU5D3RP4/zV3o/m1E1PU0+RRTfp/xpyw/mv9rl/po/9VVGX+j9v/VxAaxrH5paZaT3dyLIRRKWLCnQfR1xGqB/gkPx/wAMUZB/N/H+mY1+WEf5hW2nNqGlR27QXkhmPqUqxJ6/6uQGpjA/TKf9KP8A0kkz8rZf/iX80bdgZdOt5VNdlIr+vJfm4fzJj/TI8SPdJBan+Y3na5tpLHUPLbSpKrRtQkihBFfsMuRlqcMhR4x/mp4od0vx/mvN/wArfzn1vyZZ3WmJpj3VraSs0nxEGFSfsnZuP+yy6OSAri4t/pTxDrxfj/Net+R/+cmdG81X8OlpbzwTzbKSAy18CR8VP8rjl0hEDY/6YcH++SYx6H/TDg/30nsmVtTsVdirsVdirsVdirsVWu4QciaAYq8j8tGXz/5qfzEwroul8obQMNnl6SXAH+T9lGyrIeI8PSPql/W/hiyltt3fV/WevZaxdirsVYt57/L/AE/zjai2vQY5Yzyhmj2eNh0ZHymcDfFE8E4/TL/ey/oo5bjZiPlbz7qHlrUU8qedDWR/htL8AiOcdkkY/Cs//EsuhMZNvoyj6o/zv6UGwET8p/zf539KL1fFg7FVoYE074qurkbV2SV2BXYVdirsVdirsVdirsVeceWb1dL80a3DdERwytbyhmI6uOCj/ZZXHmyq3o+WMXYq8yvvyH0jV9cl1/XJJb5nascMh/doP5FUdVzGlGc9pS9A+mMfT/ppf8SxNnm9EsNPt9PiW3tI1iiUUCqAAPoGWwgI8kgU89/5yHRz5OvJIwS0RR9u1Dt/w2GRZBJf+cYvL99Z6FLq+ptym1OQTAk1JUDilf5f9XAJmRKk29lyxDsVeVfmMpHnPy647ySA/cTlZ5sg9Vyxi7ArsVdhV2C1dhV2Aq8w/IyEJDqjDq1/Lv8AI5XBJL0/LUPKPyjdZ/MHmOe3PK3a8ABG4qF+KhyuIo0yL1fLGLsVeNfkkDaa/wCYNOpxCXAYAmppUrleM7Mzyey5YwdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf/U9U4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUHqr3UdrI9gqyXIU+mrGgLdgx7DImVef8AVSHhf5i3PngaSsmoXcVpPcsIo7W1B9R2Y04+oD8K8ftsrZAagjcR4IfzpfX/AJsWYnXIAf0pfUzz8sPyl0zyrZxzywLJqjqGmmk+JuR3IBblx4/5OUjF4nqn679XDL6Y/wCb/OaSL3O/9ZmutR2zWcrXkaywojOysAQQo5HY5bPFGYqQtlV83kf5E6FZ3dveea7mBPVuJ5DGAookadBGP8rKRjjf9EfT/MWQF+56voHmGx163F3p8gkiqVPiCOqsOzZmShWzKUSHlP5du3lTzxq3l25HGLUSLu2I6H+cf62VYuVfzFG49yO/LtxcefPMMw/YEcf0g74jmpZf+Z7hPL90S6pVQtWBPUgcRx35N9lWyE4Xv9X836fT/pliLeUL+Xmv+aNNfRbGD9BaJFGTFEWBaaQ7l5uPL4GyEctCsfFP+dLIOHj/AKMOJAmAKjf9aX8TPPyY/KZfy/sZElkE95cENI4FAKdEX/JyWOJJ4pf5sf5rEX1ekZkpdiqHur2G1Aa4dYwxCgsQKk9FHL9pv5cQLSBaIxQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXnHmNFuPPmkwnrFaTy/iEGQlzZDkhYYjdfmVJIoqLWyUMfAv0yJO6HqOWodirsVdirsVdirsVdirsVdiq017ZE30SuySHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXnv5x+ZZdP0v9F2AZ76/rGipuwjArPIB/kx/D/rNkZSEBZ2ZA1u8mvfzl1uPSodE8o6Nd2qIojEzRsxoNi0Y4KoZvtcviyuGfDAbSGSX+b9f9WMpcSROA3+v8fzfUy/8tPOXljQ1Md8s9nqcprNNfIQzseoEzDjT/JXJwhHIeLijmyf6WUf6uL+BHCJGweMn/Nl/pHs1rcx3UYmgYPGwqGUggj2IywikEUrYEOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KsA1TytP5m8yLcamhGl6YFaBD0kmI5GVvFYvsr/lZRI8fpHIfV/S/opvoz/Lgh5P/wA5O3SweTZwf25Y1HzqW/hkJc2UUq/5xT09ofL01043mnIBPUhAE3xjztS9tyxi7FWC/ng4TyfqVe8QH3soyBTFOfy+QJoFgoNQLePf6MMeSlkOEFDsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5H+aUV75V1m288WKmS0jUQXsaip9MnaWnfhlNiMvV9M/4v5kmUZd/V6NovmjTtZtkvbGeOSGQAghh+rMkwISYEJF588/6Loum3SXV7DFcGFwicwX5MpCUjX4j8R/lw+FKr+n+lL0R/wBkkQPPl/W9L5/8heYfM2leTp/RC2Glh5JDevvJIXP9zawt+2zf7s/Y/Y+zmPHLW0Rc/wCKUv7qH/Fy/o/6ZAlvtzH8Uvpj/wAU9b/IH8tT5Y006nfqTqd/8chbdgpPJEJ/m/af/KyqNzPEf83/AIr/ADmF3u9YzJV2KuxV2KuxV2BXYVdirsVdirsVdirsVdirsVdirsVdiq2u9MCV2FDsVdirsVdirsVeQ+Qx+l/Petamwqtpxt0I6dwfp+DKeZZF69lzF2KuxV2KuxV2KuxVxwEK7Glee/npqbWPlqaOM0e5dIB/szv+rIyZxZb5Y0pdM0y2sV6RRKv3DIwjswTXLFeRfmX+ZF9dXn+D/KC+tqkopNN+zAp2LMR+1gnMYxZ9RP0xbPoFnf8AmxZF+Xf5Vaf5T0ptPlVbme5qbqRwD6hPXly/Y/ycxxi4t57k/wCx/q/8U1c+fVO9E8iaJobFtLs4bZia1jQA1+Y7f5OCOmjE3uf60pT/AN3xIEQGQZlsnYq7FXYq7FXYq7FXYq8v/NjzDeX8sXkny+/HUtQBMsgP9zB+3IadGYfCn/N2RlPgF/xH0xj/AEv+OsxsL/0v/FM48qeWbby1psGk2Y/dQKFqepP7Tn3Zt8hCNDf/ADmCcZarsVdirsVSjzL5XsPMlm1hqkQlhbsdiD2ZGHxIy/zLlU4CX9GQ+mUfqj/VWra8saLLotkljLcSXXp14vLQtx/ZQkfa4r8PLCDI/VR/qjh/Ek2TzTiuTJQ8N83/APOQd1ZalJp/l3Tpb6O2ek81CFoD8Yj4j/hmwGeOH1H1f7n8fiTZxwHP/YvZtM1BNQtYryIHhKoYV6gEV3wE927EikUzBRU9Bk2K7ArsKuxV2KuGAK7CrsVdirwP86vMkPlLXZLy4BMd5ZRkUNKyQzKyqvvxyoR4j8pNkQ9q8u61Bren2+pWh5Q3EayKfZhXLiKYEUmWBDsVdiqhd2cN3E1vcIskTijKwBBHgQeuQlESFFDVpaRWkS29sixxIAFVQAoA7Kq9MEYCIodEojLFdir5989eY55/zZ0jSnosFuoK+5dHcn/jXKyWQfQWWMXYqtZgo5E0AxViPnfWNKvNNudLfUobWaeMoriQc1J6EKDyyUsWSO4Bif4eL0x/2TbwSHl/W9P+6eI/ln+dU/kp5NB8ytLeWitxtboIaMeyEv8Ast+w2CGUZfqMRkH1cJjP/cMRIT2P1/0fVxPpayuRcwpOBQSKGA69RXqMDE7IjFDAPyTtPS0Izndri5uJCd+8jAdfZcqgklS85+YtS1p38u+VP79/huLw/wB3ApNHVH+y9x/kr9j9r4slLJ4e31ZP4Y/zf6eX+bD/AGSb4fOX83+b/WZH5H8mWnlHTk0yyqafE7n7TuftyP8A5TZGESNzvI/UxZDlquxV4z+VgQeePMY/3ZzU7jsXk75VEbsy9my1g0TTAreFXYq7FXYq7FXYq7FXYq7FXYq7FXYCaV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ACrsKrWBpt1yI2S7mBscQVpdkkOxV2Kv/9X1TirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiryddQg1zzybi6kUWWl/6NAGYANcsOcgQd3RfhymQMjw869Utmytq/zno36ZjjlFvcK0LuxVOYFGp3DoWUcv2Vbi/+TlgIOw+6Uf8AdCPF/mseHu3Y3+dGrNpXlPULhDRjFwH+zIQ/8K2JNLHmxGHzBqHlHyxp+keW7CS71B7dX3U+moI5SSPJ9mvL9nMeOSEPq3v+H+L/AHP0psDc7/0XnX/OMXnC7HmS80i5cCK6WSUoOnqqRy4eHwtmQDtt/wBIp5h6N+e8DaNe6R5ugFGs7kRSt/xW/j/kqvqZVyl72MUb+VHl3UtO1zXNR1FVWK/nEkDBgeS7moofhXjx+HK4T4tuVfzv96pQ/wDzkjeltGtNIjJ9TULyKIUFdq/F+tcnxUPcEhJdTs/M/wCVd0LzSFl1Ty84Hq27Es8Rpv6deTcf83/nyQ1JG2Xcfw5P+K/496V8TpLf+bL+ajIP+cg9S1BTLpugXckKj4nbb/gdlrlktRhifqJ/qx/6SRx4xzJP9VWH51eZCxceXbloCBwIqSf9bbiuQ/N4Ospf7H/imUZYz1P+xXW/5iefdcJTSdDW0oN3vGIFfDifSJ/2LNj+axfwCeb+rwx/2Xqh/ppQQZRHISn/ADf4f+O/7Nnnlu01e/sgPN8NmblXDKsAZkFPst++5fvOX8uDbJvwyx/0ZSjOX9b916Wu76f6b1fj/ZMoy5LsVdirsVdirsBKuwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXndwfU/MWFSP7vSmNa/wA0tOn0ZX1T0Q3kZmu/OvmC6rVYxbwjwqoav+y2xHNkeT03LGDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirTMFFTsBirzryGv+JtXu/N8lTbVNrZA7j04zSWZfD1pQ3/AAOVS9Uv6n+7/i/4lJ7u56GEVRsABhER5Ip59+Yn5jeUdKhez1t4rqRgf3CgSOa7U4r0OTlpYy3lUP6X0y/4pmcV/Vt/WYl+Ten6wdWe+063m0/yy8Z429y3IljuHgU/FGv/AAuVxzX6ATmiP8pL+H+jxfxseKxQuX9KX49T3HLUOxV2AlXYVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FXYq7FXYq7FXYq7FXYq7FXYq8d/5yqUHya5J+zcREf8MP45VIbpCYf843W4i8oQMARzlmO/T7bDb22wxUvUssQ7FWBfnqgbybqQpX92n/ACcTK5pCf+Q/+ODYe9tEfvUZIKQn1cNodhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqU0CToY5VDIwoVIqCPcHIyAIoqwG/wDyJ8rXbmUWzQliWYQyMgJPWqqaZVGE4bRnkgP5sZemP9X0sfUOUpw/qyR2gflB5X0JxNZ2ERlFDzk/eMCOhUy8uJ/1cgdOJbzM8v8AwyX+6jHhhL/PjJHD3+r+t+OFg+m6JH5p8xjRrcmTy95fcu9aUlu2Jf02KBFcW1f+CX4+fqZIxIHh/wCdL+p/DH6pfV/xTbI9P86X/E/j/Oe2AAbZeBTFvCrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVWqOIpgUrsKuxV2KuxV2KqVxOsEbSv8AZRSx+QFTgKvKv+cd7ZpdMvNZcgm/u3cU60X4DU9/iyuHMspPWstYuwK7CrsVdirsVUmmVXEZ+0wJHyFK5G01tarkkOxV5V+bxXU9a0HQRU+rcmaQDpwjAap/4bKsnL+t6WQ5PVAAooMtYvO/NfmTVdcuX8veVBxdPhubxvsRA9Uj/nl4/wAv2MrnkENh68n83+Z/SkysR/rf7n+snHkL8utP8nW5jtQZLmX4pp33eRvFm/41yEYG+KW8j/sf6rDzO7LcvS7FXYq7FXYq7FXYq7FXYq7FXnv5a+Rr7SbvUNd190l1W/lrVdwkS7RxIxH/AAv+rlEbmeIjgr0xj6f9P6ZS+pF3vy/ovQsvS7FXYq7FXE0xVquAFW8KuxVQhtIYa+kiryJJoAKk9zlIxRHQb+SKpVUAbDJiIHJkuyaHYq7FXYq7FXYq7FXYq7FXzx/zmH5ee60mx1SMVEExianWkg5J/seUfH/ZZUTR+CeT1f8AKTy3L5b8r6fpdyf30UQL+xcmQr/sefHGBsX+P6KGYZarsVdirsVdiqDvtVtbBed3NHCp7yMFH3uVyUccp/SDL+qOJlGBPIEsV1H84fLFi5hN6k0oA+CEGQmv8vpBlP8AwWGWPhFy4YD+dKQj/wAeSYVzqN/zi8h/MKe68x+ZdM8x+WdJu3vLFwZTJHwV0H2F+LvxL/FmGcuOJ+rjv+GIl/p4MOKPQ3/R4ZPSY9Z8/amim3sLSxqNzPIX7d0T4hlwzx6QyT/rGOJPGO4m/wCK+Hh/zVj+R/OeqqDqOurakndLSAUp/kyOVkBweLk6RxQ/pS4ssv8AOhPihL/Y/wBZkMhHLgH+bx/7v/eqsX5H6XOGOs3V9qjNQn6zcvTatKJF6S9/2uWDiyy5zlH+jhEcUP8ASev/AGMmJnIiiTv/AAx9MP8AN/6SZNpX5f6DpJ52VjBG1KVCCtPc5X4ETzuf9cyn/umHCERr/lLTdes30+/gSSFxShA2+R7ZCeAHl6T/AAyimgwPTf0j+WLJYXZkvvLjGiTnd7UV2Wb9p4P+LP2Mvhl/hyVxfw5P4Z/1v5s2UTe0v82X/F/8U9RtriO5jWeFg8bgMrA1BB3BrlqlCaHpEWkWkdhASY4hQE9dzU1p88rjGhX/AB1CKtbSK1QRQIsaDoFAA/DDGAjyQFfJpdirsVeL+VI2svzS1WF91mteak7E19B6e4WrrlMD97Lo9oy5i7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqpyJU1B3G334Egr8AQ3kldir//W9U4q7Bauwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUs8xazFoenXGqTf3dtE8h7V4jlx/2R+HFIFvGJvKF63kEa4grq0c/6ZWuxrX1ih/m/cf8FmKD/F5/w/zPp/49/VZGW9pn+b/mm08xfltLr1m1Qwt3Sh3ST1I0dTx+y8fN1bMmXpPd/NTVFG/mvqX6T/LKXUP9/wBray7/AOW8Lf8AG2Qlv57o6s68lXEMukWscbcmjgiBrud0RxX/AFldGyPDYUgvErtbfyt+byNJGsVvfQgRUoBzdAlR4cnhdf8AWyuEREV/M/H+/WMR7kL+ef5z213p995V1GzltLzkhiL7ghXDeoCv7LRg5cBHILieX8P0ySK+P8165+T2pprPlu0vxL6zSIoYmlQyAI6Gn7SsP+uchwG9/wDN4fT/AMUsimnm3yLZ+ZpbGe8Z1bTrhbmPgRQsv7Lhg3JcZQJ5Gv523FxR/wCK/pf7FrZMQCKHplxFqtjjVBxUAD2yIiByQF+TS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwD0gPzE5kddG2PyuNx/w4ysc09Ev/ACYKXNzr9+m4l1WdQ3WqqFKfR8eCPP5f75lJ6flrB2KuxV2KuxV2KuxV2KuxVRuLqO3X1JWCrUCp98iTSabM6cQ9RxNAD89hhtCrhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvOvzr81fofSF0+CdLe71ORbZJGbiI1Y/v52bsscXL4v5uOO4Fj1fzY/wA6TOA6/jiSbSvzF+qWkWjeRdKudTtraMRpcECKAlRTkJpQvrfF8TsvHk/+tyyoTx4vTKRnkH1RxDxfV/Fxzj6Yf7KKPSOZMv6vr/00/pjJZL5S86+dogNfvU0mwkALW1mCZCKdHmbdf9X4sPjyP93Hw/8AbMh45/6SPp/3H9KDHxD0HB/Sl6p/xf6X0sm8q/kx5c8t0ktrYS3PUzTfG5O37T/LKfB4jcycn9b6f9KwMb57s6ApmSBTNvCrsVdirsVdiq3mteNd8KV2BDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV4F/zmLrUVr5Yg04n99c3KsB/kxhuf/DOmIFp6Mp/5xnF2vkexW9XjT1PS8TGXLKx+kt/seORBv5qXqmTQ7FWIfmzZm88ralEpo31dmG1d0/eAU/yinHKpmh8khv8pNQF/wCVNLnX/lljX6UHpN/wyZMBSGXYaQ7CrsVdirsVdirsVdirsVdgtXYVdirsVdirsVdirsVdirsVWsvIUOA7qkflLylY+VLEabpilYgxdixqzsxq8kjn7btlcI8Peb9UpS/H4/rcUlCfZarsVdirsVdirsVdirsVdirsVdgV2FVqEkVIociCpC7JK7FXYq7FXYq7FXYq7FXYq7FXYq7FWLfmfqx0ry1qF2m7rbyKPmwKL+JwEpil/wCSek/ovynp8J2Z4zKdqbyEy/qbK4d/mrOcsAQ7CrsVdirsVdirsFK7CrsVeV3LfpD8zIB1WxsGNPeQkV/4fKTzZ9HqVDlm7BRtLKG0X0rdQiVJoBTc7nBGAjyVEZNXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq0QDtirQWgoOmA+atgUwBLeSQ7FXYq7FXYq7FXYq7FXYq7FXYq7FULfWFvfRmC6jSWIkEq6hlqDVfhbb4T8WQnASFHdUUBTbJAKkev8AnHSPLyg6tdw21QSBIwDEDqVT7Tf7FcnGBly/4n/dMowJ5f8AEsKuf+cg9AZjHpcd1qJ/mt4WZa+HMhf+I4CYR+qUI/0eLin/AKVIEepA/q+uX+ld/wArM8yakKaPoE6mmz3LhFP3fFlf5jF/CZ5P6sJf75hxR5jil8PxJTr+ZWpClLCwU1G5LsPcFeS/8Lg/MX9MD/WlL0/6T0zZeIAdo/6aXFD/AGPqi0v5Z+Z9QKrrPmK6C7Glmiw9O3qL8Tf7KLI+PlOwGLH/AJss/wDuuHh/0yeORH8Ef6PDx/6WUuFF2f5B+W45PrF6s9/cVq0l1M7lj/liqxt/skyuccmT6pzl/Rjww4f6n8cf6vEwJJ5mXz/2Pp4WZ6V5S0nSF46faQwD/IQD9QxGmgN+f9KXq/3TERCbAU2GXiNM12SQ7FXYq7CrsVU5YklUxyAMrAgg+B65CURIUVSDy95XPl+aSOylP6NcVS3bcRNXf0X+0ImH+62+w32f5ciOIbH1AfTL+P8Aqz/n/wBGf1fw+pd2R5arsVdirsVdirx3zCRp35n6dcrt9btTEw2FaCQfT8Rjyoc/l+P9iyD2LLWLsVdirsVdirsVdirsCuxV2FXYq7FXYq7FXYFdhV2KuxV2KuxV2KuxV2RtXZJXYq7ArsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KurkbV2SV2KuxV2KuwK7CrsVf//X9U4q7ArsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5n+f90R5c/R6sEa/uIbfkdgAXDsSfDimRkdmUWXeWpLfUtKEUYV7SjwJTcNGhNv8A8NwyIjtR/qrIU8Mg/ITzHDpWseVoJIhp1xNHNaO7mnwPz4uihmQtHx5tx+2v7aZR4kqrhkeDzj6/6vFL/O+r/ZMeM17vN6X598rSr5An0VPiltrFEolSGMKqaLX4qMYssO0d9v53++Sx/wD5xtvrjVrC81a4Ro0maCJOVaH0YUgd0/ZVWZf2f+NcmCCdt6/3yZSvbuZf5z/KvS/NOo2mtXYYXdjQxlTQHieaBv8AVf4sqyQlzieH+dGuLiYjmmHmr8vNE83Rqmt2qTsooGNQw+TrxbK/BEt94T+nij+OFZC0P+W35dWnkOwk0yxkeWGSZph6nVeQVeI/1QmZGMEczxfDhQL67svy1LsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FXYq7FXYq7FXYq7FXn/mlxpXm7StSY8YrqKeycnpUgXEI/wBk8fHK+vw/3LIboP8AIhU/R+pFBQNqt03tvw6e37OOPkpD0zLGLsVdirsVdirsVdirsVdiqQecNDm1rTZbS1me2uStY5ENCGHSo+yyt9luX7OVTvmP9LL6J/0ZemX+5UGvx/uvqSXypoOq6fp0BmCi6FDMjMSpNAOSBS0aNUcvg+H/AGPw5QJSO9E/0b4eD+r6OL/TSkz4h+OH0/1JcP8AumcLUip6+GZY3YN4VdgV2FXYq7FXYq7FXYq7FXYq7FXYqwPz35k1SPUbTy7ohSC4vVdzcyjkqKlOQRP25Wr8C5HxOHkOOf8ADGR4Y/1p/wAfD/UZAgef9FhXkLyR+lfNup3uvzNqp0304YXmUcQ7qHkKRf3Y48f+G/2WUzvJ6Z8o+rhjxcH/AB7+lxfV/EsiZbH/AEv8L28KFFBsBlkYiIobf0YsV2WK7FXYq7FXYq7FXYqh724FtBJOxoEUt9wrir5z/KDyNd+fbe48z3+rXsMzzyJGsMpXjQhwasW5J8f93xVchLNlJ9MhCA/hlHjhL/N4oxZynLkDX9F775asr+xskttVuReXKVBmCcCwr8JZAWXnT7XHESJ+oCH9UylH/ZRj/pWCb5NXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsFq7JK4YAVdhV2KuxV2KvIf+clPLVhqPl46hdRCS5tXUQsa7c2VXFF68l/mzHnHe+X87+kkC2e+QbNbLy/p1ug2S1hH08AT+OWQFBWQ5Yh2KqF3brcwvCwqrqVIPuKb5XL1BXlX/OP2oPZW995Su2/0jSrl1VSd/SY8kIH8vKrf7PDA3G/9N/WZkbW9cybB2KuxV2KuxV2KuJpirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVawWlvChwxV2KuxV2KuwE0rhirsKuxV2KuwFXYVdirzD/AJyD1D0fLn1Fa872eOIU/wBYOant9nISLKL0HQ7MWNhb2g/3TEif8CoXDEbMUdkldirsVdirsVdirRr2yJVvJK7FXlvk9RdefNaumG8MUUQP3NTKBuWRepZexdirsVdXfBauwq7FXYq7FXYq7FXYq7FXYq7FXYq7FWhkAVcGB2GTVvFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWjvgKt4qwmb8pdCur99Uv4mvJmYsouHMioTTkIkk5Kitx+zmNPEZ/VKUh/DH6PT/N9PDxf5yJWeZP9X+H8f1mW2un29ovC2jSNR2VQP1ZOGGEeQA+CgUicvStavbBarsVd0wq7FXYFdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KvHPzTcL528ukmgDn8XX+mVHmyiHseWsXHArsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2RV2SV2KuxV2BXYVdirsVdirsVdirsFK7CrsVdirsVdirWRrdW8krsVdirsVdgV2Kuwq//9D1TirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVSPzb5R0/wA1WR07VU9SAsGoDQgjoVOVShxdTH+lFBTHS9Mt9Lto7KzQRwQqFRR0AGTjGhSovJJaYBhQ9MBCqcFvHAnpxKEUdABQfhkIwEBUdv6qAq5Yl2BXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVY3578pp5l05rUN6VxGyywSDqkiGqP/AKv83+TlUweY/wCkv6K3XJ5F+UHnmbyzfar5e8xxzG9W4MoMMTyqS/X+5V+Ks32OXBcAnACyRj/o5JRh/umZkDz9H9Zn/l78xdW1zVfqUOiXdtYCvK6uv3RoP5YGRmPL/X/4HJeLjO0Sckv6MZeH/p5f8dYkjluf82UY/wCy/wCOvQssQ4YArsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqTxIxDMASvSo6fLIGAJvu+laYxpH5fWulazc67bTT8rvd4fUPpcqU5+mOrU/m5ZCIkDzuH83hjxf6f/AKRXdlmXK7FXYq7FXYq7FXYq7FUv17TzqNhcWani00bID7kUGQly2Vg35BeVr3yx5c/R2ooY5luJTQ9xUAP/ALLjkccrF8lek5arsVdirsVdirsVdirsVdirsVdirsVdgJVaTlMpJdXImSuByQkrTNQVxMqVJYfME7TtG9rIsa7BtiSf9Xt/wTZDxh+Pxxf7CLMRCa2t2LhSQCpGxB6jLYz4mBFLbe4kkLB4ygBoDUGo8dsAn+KVFZah5d/zkY6r5WdWFeU0XavQ8v4ZVJkGeeV6DS7QDp9Xi/4iMlGSE1yaHYqsi+z379chHl3pLyv8x/LGoaJqsXnny3F61xCvC8t12M0Xcr4yJlYPhGz/AHc/q/oy/noB4fcfq/4pkfkv81NI83yGDTRN6yrWRXjZeBH7Ls3w8v8AVzIJj0lGd/Tw/UyIHQiX9Xi/4lmmLF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2BXYVdirsVdirsVdirsVdirsVdirsVdgVaR3HXAltffJIbr2xV2KuxV5D+e7C5vND007ia8DEeIUZXNkOT17pk2LsKuxV2KuxVpa03yIUtjJK1kbVvJK7FXlf5TTNLr/mAvXkLpRv1oBlcd2cnqmWMHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXUwUrsKuxV2KuwEK7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsCuwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8e/PRjYaloWrDpFdhT06EinX55UebKL2AEMKjoctYt4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsKuxV2KuxV2KuxV2BXYVdirsVdirsVdirsVdirsVdirsVdgtXVwEhXVxsK1UYDILTYwhXZJXYq7ArsVdirQFNsAKlvJK//0fVOAq7FXYVdirsVdirsVdgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXgegeZ5k/Ni9smi9FZovT3qeYj+JZF+zTl/ssp26b7/6WTMVT3wZaGDsKuxVYZlDBCfiOC00vwodirsVdirsVdirsFq7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirgKbDAArsKuxV2KuxV2KuxV2KuxV2KuxV2KqDXUStwZ1DeBIrgILIQJ71Qiu+Yp3V3jgCtcqdcjxrTmBI265KrVCQW86SszOGjYDbjvX5+GRiCe7+t6kkotIwNz1y2EK+LFcFpkwK71byRtXkX/OSpb9A26AgK13GDUAjvSuVlkC9P0iAR2kKjtGg9ug6YxgaQSjhloihvJISvVPMFjpo/0meKNzXiruFJI7fEcTjlIXEcVe9sjjlLkCoSebNNgjWa6njhjegDO6hakcgOdeNeP+VjGEpbUb/m8Mv9zwsvCKPs7i0lJ+rNGx78CD9/HAMQx9OC/LhazAjnaMqMkxarkVbySuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVa/VkUvHfOLjUPzH0mz3ItIHmbao/a8OnVcrk2AbdHrscgkTmh69Kgj+3LPd/xTAijuqjYb4QxLeKuwq7FXA1wK7rg5q7DSupjSrG5BTx3amDcBLyv8qSU8z+Y4WHE/WEanbcHK4FkXq52y5gtRuQr0yN3ySuOJQpNKFXkN6eG+VmVDuTSBlvJYE9Qq7c2FBQAgU9v+Nsr8Q8/0f8el/vUhWg1KORPUJIHTcUNa06ZOOS0mKKimWVeaGoOW2CxpfkkOxV1cjauySuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvMv8AnITRxf8AleWcLye0dJl8RQ8Ca/7PllU+h7ikMz8mawms6NZ6hH9maCNvvAy1SE6xQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsaV2CldhAV2FXVwWrQqRvgVsYQrq4LVavXK4y3SV2XIf//S9U4FdgV2SV2KuxV2KuxV2KuxV2KuxV2KuxV2BXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVSC+8l6be6rBr00Vb63UojgkbHxA+1/ssolj3uyP6Mf4kJ/l6XYq7FXxv8A85B/mVrVv5veOykktBY0jj4EjkPteoR9llb/AIhhx5e7/ObRMgbMk8p/m9+aGuW0Labp8VzGwAEzxkBqdWc+oq/7JcrnrMUTRB4v6PF/xLWcg5V/umeabq/5sanGJfQ0u1UkgB/Uqad6Vb4cqOsj/DCZ/rTj/sfXDjSMg/m3/Wl/xEkW1h+akjVa606NTtREJHz+NOWXfmf9r/005f7yUlM/6Mf9NJUbQPzKnoG1S0QDrSGh+8ZD8xMcscf9Pxf7pjHIf5o+fEsHkr8xGFTrcIP/ABjP9Gyf5mf8yH4/qybPEPdD/ZKkn5e+epa18xcK+ECn+C5Dx8v83D85f8TJq45DpD8f1ozQz/ll56iPOLzMzHrRoQBX/Yltv9jg8fMf4cX+mj/1QbPHn3QPwj/1Sk5fJ35l2g5Ra3BOf5XhA/GjY/mMnWEP82X/AB2LE5ZHpD/Yw/3GNU+s/mhafaisbgCg2ah+fRcl+aAH0S/zeKX++Z+IP5v+llJf/jTz/Z0N1osUwI39KQnf7siNTA845If5rWckT0lH4cSxPzq1m2FdS8vXqAdTGpYf8MFyR1WD+dw/1uH/AIpmZYwNzKP9YR/4pEx/85C6IpCXNteQN3EkarSn+tIuWxOOX0zgf6oyS/3EJIiIy5Sif9NL/cRkj7f8+vKcw/3qZDts0b1/4UMMnweY/wBlH/dxiz8P8er/AH0U7tPzP8uXQHpX8O/iSv8AxMLh8I+Xzj/xS+DL8GKcW/mPTblecN1C4PcSKf45E45dxYGBCNW5jb7LKa+BGR4Siiq4EOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVRmZ0oUAbrXf9WAmkhVU1FemIKG8KrXdUFWIAwqBaGbUrZftSxj/AGYyXhy7j8mfBLuPyUpdesIQWkuIlA6kuP64jGT0KxgZckHL520OEVl1C1QHpymQfrbLBpsn82f+lkzlhnHmJfJ5Z5685T67qx0ux1u003RY0VpLiGeNpZCw+NE4livH7P8AzV+xTI5IemMfV/OyD0R/034/pxREH+Gr/nS4fT/p/wAf0ksGgflhElbjU3lmPWZriUsT4/D8P/A5HwM534pH44/9wnwp9ST8Y/71C/4l0XSWDaH5muhHWojZDMnyPIcuO2QvLH6jhn/wzhjL/YpEj1lA/wBbhegWX54aCYkjaWaeYAcmS3ehPchVDU3/AGcpnGhfFjH+fFjIAczD/TJnpv5m2upyrBa2l87MaV+rOq/TJIEjUf6zZimUD/FAn+bE8cv9LGM1HCf4h8pS/wBxGTMYpSy1dSh96f8AGpbL4lgqcQ9D4dMs4OL4LdKmZDFAPq0KSGMndTQ/Olco4wzEVW31GK4XlEa9TTvkhkBRwvJP+cjrlJtO062Ar6t9ENwa9/D4u+VmfF8GQFPYLZeMaKOygfhlwLBVyxDjkTyV+dHnW5vLvWLt9RdmuBO4bnWoNTtRvs/6uHxDIfj0sibUdCsLGa9ii1Od0tGPxsqkleu/Cq4mU5Cgf9MZcH+5mtdOX4/z3u3kn8sPJmowB49Uu0kkcop5cASOmyhuPL+VmysHNHcSA/q/TL/Pl/xLLwpdJf6Xh/30WfW3/OPmmgUi1W9BY7UmO+1dt/i+E4Blz/ztx5Ra6mOv+xiqP+QUqqTa63fRlehZyQNh25rkRqMw3sGv50Y/8SyEpd/2Nr+UPmmxAfT/ADHOWUVUSLUV8G5GWq/7FskdTmPMYp/7H/p3/vmRyy/on4Rh/vZoiTyV+YoAaPX4i3gYEAH0iPf/AIHI/mcl/Rj/ANPL/fR/3zVxy7ofP/q2si8sfmZAa/pi2loNg0S7mnf92uS/MTHOEP8ATy/4mC+JI/wx/wBN/wAcg7h+aVseIeyuB/MaL+CouEaodYS/zeL/AIptjIdRH/TSWx+dvzC00FL7R47rj+1Cx36dAMA1WM8xOH4/pMOMHpILx+ed7ZGmq6JeQjYAqtd+/wBvhk/zGGXKVf1uH/eSkmUoDqY/1uH/AIpE2v8Azkd5YYKLo3FtIdirxEkH/K9Pnl1RPKUf9n/xLMYwRdj5S/3sZRT6z/OfyndCseoxj/XV0P8AyURMl4RP8z/T4/8AilGInu/00Y/7qSdWPnbRL5Q1tfW718JVr9xPLHwpd3+l9X+5QYEf8d9X+5TiKZJV5xsGU9wajKyCGBBCrgQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8i8mxrq35i63qVSRYww26DsCwpJ9PKDKuZ9zIvXcspi6mKuGFXYq7FXYq7FXYFdhV2KvKPJRay8/a9YzChuI4LlPdKcGP/BPxyiNn5lsPL5PVFIPQ1y3kwpdTGkN4hULdKUjLRrVuoAHf71/4llMhX/HeL/eRZB5b50/M648sXSTX5SO2ZWHEfE3w71BX4eW3F/ixh69u7+t/ueFuA6f8V/xLz5v+cmre4vQ6lYrdSSxFSSK8R8DDjyWvL/LyzwgOW/8AWTYHmGRaN/zkpoQdZZrhv3soR0YGiruBIv8AwvPDHER/N/49/wAStA9z0G2/O7yjcCq6nbgV4/E4G/09v8rLhhk1+H7vmipPzc8pxj4tVs/+Ry/1yXgy7q/relAxk93+cYx/3RQ8n51eT0f0/wBKQM3+SSw+9Ay4fAlz9P8Ap4f8Uz8GX9H/AE8P+KTC1/Mzy5dCsOo25+bgfg3HInFL/pGUZf7mTE4iO75x/wCKTCPzfo8lON7bnluP3i/1weGe5jwFFQa3Yz7xXETfJwf44OEhBiQiknST7LA/Ig5GkUvyKGlJ74hSuySuwK7CrsVdirsVdirsVdirsCuwqxPzv5tu9EhKaZZTX14wHpqi/BViV+OT9njx5NlfjQh9R/zY/XJNgc/9L/OYlFp35mamguXurHTydxDwZyP8mR/iX/gcI1J/hx/8rJer/Yyh/smXi1yjGv8AbDLi/wBgyjyZrPmGeV7DzJYrDNEoK3MDhoZd6fCrH1Y3/wAl1xGWM9qnCX8UZRPD/mZY/upf1OLi/rerhgZA8rif5v8AD/p/p/zfqZjk1dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVSzzJpX6W0y606vE3MEkVfAupQN/sa8shMWFYB/zjnrP17ywtnJUTWM8tu9eta+qu3bisnp/6yNhBsM5PUskwdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqxgTSnjkTar8krsCuwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXDIgq6nfCrsBV1MaV2FXVGRsKtI75AxtLkpv7YYADkpXZah//0/VOAq6mRApXZNXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYFdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5j+a/5F6X+YDLdyu1tfIoUSqKgqCTxdf2uvXlmNOEgeKFX/ABRl9MkEMw8neVIPLOm2+l255LbxhOR2rTvSu2MI1zZJ6pBFR0y+NdEN5JXYq7FXYq7FXYq7FXYq7Aqm8KOKOoI9xlMsMZfUIn+sIqlt35X0u8HG5tYZB/lIp/hlY0mMcoxH9UcLWccT0CR3H5ReVrgENp0ALdwgH3Ux/LjoZ/6aTLhSO7/5x58rz1MccsJP++5CPwpkownEemc/871pFjrL5oCT/nHi0UhrbUr2IqKL+8JoPvXDeYfx/ZL/AIplxz/nf7r/AIpx/JrzBCP9E8yXa0GwYOfv/wBIXLfHzf7Wf82EP+nWVkMkh/NP+ZH/AH3Epp+X/wCYFq37jX1cCu8kda/7B+dP+Dyv8xl6xh/po/73FBTmkekPs/6pr00P8zoAB+kLWUA94wKjwPwZL8xLrAf6Zr4z3D/Tf8dbcfmjAaBrKYN7AU/4jyw/mQOcD/mylJkJeX+yU0138zoDSTT7Wb3DqP8Ajf8A2WP5uA/gyf7P/qnJnxx6g/6b/jslZvPH5gwHhLoEbt4rOKfeOWQOrxj+HIP82cv+naDkh3S/2Uv9xjm64/M3zpGQB5celNyJa7+H2Fwfm8X+2f6TJH/p2xGSH9P/AGX/AFSd/wArS83VA/w5KKU5fvB+GH83i/p/6Wf/AFTSMmP+n+P8xav5ueZlZhL5en4mvGjA9OtcfzeHvl8v+OsuPH/S/H+a0n5xeYYwfrPl26BqAvAV6+OE6vB/OI/0qbx98v8AY/8AFLn/ADg8xRnfy5dNUbBedf8AZfumVcn+YwH+KXyhL/p4j0/0v9L/AMecfzg8xkCnlm7BYbVdh9/7jb/gsJ1GHoZn/kn/AMTKbWZxH87/AEkv+Jk3B+a/mu4j5J5bmU1p8UgH08WVWyv81hH8/wD0kv8AiUicPP8A2X/VNfL5889MSIdCUDxeT+hyZ1OPoMh/H9WKZSiOQn/sZKbeYvzJYUTTLYEnqZBsPkxXIx1cTzhP/Zf8TJkMkD/Cf9NL/iVo1D80pCVW1sYwTUFiDt4bS/8AGuE6gdIT/wBN/wAVGH+6YSyVyjfxH/FRXBfzVlXkW0yMkfZ+Ko9ukq5Eaoj/ACRl/nR/6rwZDMOsf91/vcrQ0f8ANCRT6moWUZqKcEBFO/WJW+HJnUE8scR/nS/4rKxnM9Ix/wBNL/fRkul8m/mHcUaTWoUIpUJFxH/C4Bqcg/gh/poy/wB1FnHKQOUf90pL+W/nsnk/mA7GtAm1PpGE5sh/hgGuU5dOFWb8rvN8x5TeZZVIr9iFab/8DkPHzDpiHx/4rHNnDLIfzflGf+6i2n5KapMD9c8yai4YUIRig616c2yUs2Y9ccP+SUeL/TwlikxM53sY/wCk4Zf6eEorG/5x+jkJafWNRkJHH4pBWm23LhXtjHLnH8Q/zROH/TyTMZp/zj/m8X++lNVh/wCceNJVqyXl7IvgZiPxGMpZTznL/Sxarl1N/CKtb/8AOPPluNubm5kr1DTsQd67jIAZOs5/5vpZcUj1l/mlFw/kD5QU8ns+df5pH/41K5E45HnPLL+sY/8AEsAO8mX9ZGQ/kj5QiqRpsJJ68uTf8TZsidMD1n/p5R/3HCxMB5/6aX/FImP8ovKiUK6VaAihr6S12+jB+Vj3z/5WZJf75lw/iymNt5D0K1HGCxt0HWgjX+mJ0cDzDHwxzpGp5e06MUW2hA9o1H8Mj+XgOjPhHkjIraOIcY1VR4AUwxwRHIRH+ay5KoUDLxjAVulcJgrlUDYZKMQNkOOJGypBPZ3LTcyAUJqRQjp7/tdcwi2Aqlmkkbc3Q1AND3Ne3+SuAEJea/mpI2r+bvLmjQ7tHMbmUUqAq8XFR/zzfLbFX/O9LEvZK7ZdxbMW8kCrsVeeecPyQ8veab0andw8Lqo5Om3OldpF+y3Kv2vtZhnCQfSeC/4eHij+P85gR3ML1r/nF/SmV/0fWrkfC7EBQK/YKn9r9tW5c/i+Nfs5EGcOdy/pVGMv9nLgl/vf5svUmII8/h/x7hl/nJrpH/OP+naRSaC4kSZWD8xSoO/Tjxp15L8P7Px88mPEPWP+y/3PFKMm2MiOX++/4rh4WZeX/I/6MvXuDM0sKkmNXJJViArnf5ZYOM862/2bKWQy5pylndGd3SThES1e5JIFGH+qfh45Lf8A49JHEjYYWjVFNGIpU0AFafaAwgV3n8f0mNorLAxcBTJAKpXESyo0bVoR2/hiVCS6RpV7pryKZ2uUkYvWU/Z3PwLx9uGUxlK6NH+r6Ek3z/zWQUy7hBYoO50u1ugRcRRyA9mQH9YzHlpsZ3MYf1uGPF/pmBgDzA+SQ3n5XeWboH1dNtaneoiVT/woxOnj044/1Z5I/wC+Tw9239X0f7lj91+QPlS5dnS2eEnvG7KPoFcrjjkNoyn/AJ3r/wB2kCusv9NJLrj/AJx7tVXjY6lewUrx/eEgH9k9f2cvBzR5S4v60Yrcu/7FCX8t/PGmqBpOumQKKBZ1HbtXjLh8fKPqjDJ/V/GJn4kjzr8f5sf902k/5qWPEtFYXYAoabE++8kW+H81f1Y5D+rL/j2X/cqcl/w1/VP/ABc5f7ltfzH8+WNf0j5eEnShhkFP+FafE6rF3ZYf1hOX/TqCnJAdJ/7r/cwVn/PaS1WuoaPeQyBuLKAWptWvL01WmSGbD/Or+sBGX+k4uJMeA9a+H/FSgibT/nIfy3Mhaf17d12KyREEH78uiIy5Sgf85REHkQUysPz08pXtAL5YyTT94Cv/ABLJeF3GMv6pZHHXd806h/Mfy3NtHqVoT/xmT+JyQ08zyEvkxECeSaW2v6ddDlb3UMg8VkU/qORlhmOYl8pMvBn3S+UkZFMky842DKe4NRlRFNZBHNUDV6Y0hvArsKuxV2KuxV2KuwK7CrsVdirsVdirsVdirsFK7CrsVdirsVdirsVdiriaDFXlP5FRi5k17VqUN1qs4H+qh5Lv3/vTlUTZ+X6WUnq2WsXYq7FXYq7FWqb1wK3hV2KuxV2BXmX5heTdck1u08zeVWjW9WJrSYS/Z9JzySWn7RhdufH9v4cpMjA3XGD/ADf5387+qvFw+bN/LGhjQ9Og04O0phWjO3VmJ5ySH3d2ZstBJ3lvL+JJN801IB69sKG8HNWiab4k0rwz/nK/y5Jd+Wv0haoWeCWMyUrUR/GK/wCqsknJsxgBCV8uL0/0fxJlxPEfyE/Ji18+m5uNRlaKG2ZBRduQYmtD/scOaUv4aCOEl9HeWv8AnHvyvpUckU1nHPyNFZ6luPXf3zHGIy+on/Nl/smBgD3pyn5I+UEFBpkO5J79zU98sjph3z/0zE4x+DJGR/lL5UjG2lWh+cSn/iQbH8nH+n/ysy/8UogPwZfrXyflT5VkXi2lWdB4QoP1DJflY9OP/T5P+KZ0gZ/yS8oTD4tNgH+qtP1YfywH8WT/AE8mJjff80HJ+QPlByf9CUV8CRT5YPAl/Oyf6ZHB5y+aBk/5xt8pMeSxTJUdFkIH6stEZjlOfzXgI6y/2P8AxKC/6Fp0iNSLS/1C38OEoFB4f3fTJ+JnHKf+mE/97lg5AyzHKUv9Mf8AecK1PyCuoVPoa/qQYf3ZaUkDYU5Cu/xcvs8Ph4/y/FDxNR/Oh/pZ+r/pZ/xSDmyH+L/d/wDVRVP5UebIjWDzJcH2cOf+JSNlkc2UdMR/zI/8SwEpD+Z/pf8Ajymvkf8AMW2QrHrcUpNd3Q19uuROqyfzIH/St3jEfwwPwah0780rZhW4sp1XxWhPX3X/AFsA1MusP9KY/wDFNJzE/wAI+z/inDWPzVtwQ1hZT+FGA++s65MamA+qE/8ANl/xyX+9TGQPOJ/00f8Ajzn8/fmPbjlN5fiYAb8JRUnvSkrYDrMPWOb/AEs/+qDPjxjpP5/9W1aP81vNqD/SPLkopT7Mg6d+2R/N4f6Y/wAzJ/1TiwOTH5/7L/iEPL+fl/aufrmhXaRio5Cp/wCNcsjmxS/ir+sECcDyu/x5IiD/AJyO0wjldWV5ANh8UdevX7P8uWcWM8pR+Um0Rj3/AOxkmFt/zkH5Xkf05ZJoq92hf/jVWw0DyMfnwf7vhRwDoRL5/wC+TGP87vKEgr+kEWvZkkX/AIki5LwieRh/ytxf8WkYif5v+nj/AMUmll+ZXly9H7jUbap7NIFP/AvxbHwpe/8AqmM/9zKSDjI7v82UZf7kpta6/p9ztBdQyU/lkU/8ROR8KY6S+SBCR6H5IyO6ilFUZWHscjwkIMSrA1wMXYq7FXYq7FXYqs9MBi9PiIAr8v8AbxVfirsVcTTAVQ8V0spKgMONOoIH0YBIHkQWcocPd80RkmDsAV2FXYFdjauxV2FXYq7FXYq7FXYq7FXYq7FXYq7FXjv5ZgeX/Ouu+X91iuWF5FXYVb45OA6f7u4/6sOVY+Vdx/H+w4WXT3PYstYuxV2KuxV2KuxV2KuxV2KuxV2KqZ5chSnHvkCTf++TtSpk0OxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK7AVcMIV2FXZFXYVdiVcMACrWPbIk9EhvCFbyaH//U9U4q7ArsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVxyJCuySoXUA/p1jYqw3qN/v9srnIhIS6y1UtRZD3PxqKqfEf5PxZQJ35NhCdA13zIBtrbyaHYq7FXYq7FXYq7FXYq7FXYq7FXYq7AVdirsKuxV2KuxV3yyJPcrsKuwq7ArsVdjauGIV2Nq7CrsVdirsVdirsVdirsVdirsVdirsVdirsFK7CrsFK7CrsVdirsVdirsVdirsFq7CrsVdirsVdirsVdirsBVrfI7q3k1dTI0rsKuxV2KuwUrskrVBlfCFWsVQEnYDIiICXlX5eQx+ZvNOqebCCYICLK1Y9CEH79x/svs/5DZWY71/N/wB0yl9z1fL6AYupjSGxkgrsCtHAQqlKjMCFNDQ9sqkCyDo0YKAxqd98YxW1UbDLAhvJodhV2BXDFXAU2xApXYVdirsVdgV2FXYq7FXYqseJXFGAPzyswB6BTugbjQNPuf763ievXkgP8MqlgjLp/vUcISm7/LXy7d/31hAfkgH/ABHjkPysBysf50v+KYmA/Bl+tLLj8lfKVwavp6dvss4G3sr4fy4HIy/03F/uxJIiB/bL/iktk/5x78pMGEVvJEG3okz0+jkzYRgkOU5j4Yv+qaCD0JH+l/30ZSQjf8476MhP1W5u4VP7KyVH4jllsTliKE5fKP8AveBI4h1Pyj/xKH/6F9EMZjtNWvIwTX7VcfFzD+IH+szEpDqsX8mfMFqALTXZ6D+avc7/AM2R8fOf5h/H9Vl40/6P4/zVkf5WedoHcw+YW4sagFa/P7Stx/2OJz5uoh+P+SbHxp/0P9j/ANU0RH+X3n8Jx/xEB4D0Q1fm5RWw+Nm/m4v9N/1aXxp90P8AY/8AVJo+R/zDjX4NdjZgAN4QK0wfmMv82Hzj/wBU1GafdD/Y/wDVNTfyf+ZChnXWIWYioBSg+Q/lwjVZP5kP9NH/AIlkM8v5sP8AY/8AEr4tM/M6Fd7m1enior+vAdTP+Z/sosPGJ/hH+x/4pSe5/NWJyUhsZFAr2FTTp/er+1kxqP6EkeIf5v8Auf8AilVtc/NONCw06wdtqCtP+xnH8xH+ZP8A03/VviUT/on/AE0f+Kc3m38zI6GTR7VuteDf9nGEanGeccnz/wCrbLiHdL5xXR+fvPquVm0NCAK/Cx/X6jYPzOIdJ/j/ADUxIPMS/wBisk/NvzVDVZvLlwSKfZNfnj+bwDrMf5rZePrxj/Srk/PLUYxxufL+oLJ4Klf15H83g/nV/W4f+KazPGOp/wBj/wAUul/5yJs4CRNpWpLx+1+6Wo+j1MIz4v58Gs5Mf84f7H/imk/5yX8vEVktr5BtUtCtBXpUiXLgYHlOH+y/4lIlE/xR+aOh/wCcjPKUgq00kddviT/mktlnAP50P9l/xLf4Y/nQ+cv+JTC3/PTyhONtQjUns1QcHhnyYmFdY/NMIfzb8qz7Jqlrt4yAfryQwyPIMeEoqP8AMryy+w1Wz/5HoP1th/L5P5sv9KV4SiofOmhz7Q6haOT/ACzxn9TYfy2T+bP/AEsv1MvCkeh+UkZHrVjKvOO5iZfEOpH68h4Mx0l/pZJ8GfdL5SV0vIX+y6n5MMhwHzYmBHMH5IgGvTIsEp82asukaVd379IIXf7gcUx3Y1+SmjHSvKtlHIS0sqmZyepMhL1/4HjlUP0qd2d5ah2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVbx3rXArkBAAJqcEQVUL6xhvoHtbpBJDKpV1bcEHYg4JxEhR6oIY15K/LLR/JnqjR4zGJmLMCxbr2WvQZjxwkczx/1mQNMuzKpDsFK7JK7FXYq7FVoBrU9O2KtnIq3XCrsKuxV2KuxV2KtGvbArioPXIGAPNVJ7WKQUdFPzAyBwQ/mx+UUcIKCuPLmm3I4z2sDjwaNT+sZH8tDoAP6vo/3LDw4jpH5RSi5/K7yxdAiXS7Q+4hQH71WuROmiesx/VyZP8AimykpvvyK8pXY/3hWI+MTMh/4Q4Rg4eUp/505S/3fEwEd+Z/00v1pXJ/zjn5brzgNxEx/lmbxr3OPh5Ok5D/ADYs+KQ5GkJc/wDOO9seRstTvLfluQHJ/iuSj4seUuL+sGNz/nfZ/wAeQ0X5H+YLI8rHzHdLXqHDGv3yNTJePnHIYpf1v+sU20ZZR5VL+tX++jNfP5B/Mi2FLHXo3H/Fqgfrhnb/AIbEajJ/FGB/q8P/ABOJByzPMQ/2P/VJa1j+a9uUUXNnN/Mfg/7J4skdXXPGf83/AKzpEwP4b/H9aLf+MPzK0+pudKhuFU9YzuR/k0dcH5mHOUZQ/H9aaBkjI/TKH4/rTVovzh8x2p5apoM8cVNyhqa/7L4cfzWA8iR/W/6RTIwHf/sXJ/zkbYRHje6feQU3JKqf+N8uhLHLlKPyl/vRJjHhl1/H+amumf8AOQXla92kmlgbwkhc7fOJZFyXADylE/Hh/wCmvA2HH3EH/TR/3cYp9pf5qeWdUB+q6hDUbUkJjP3TCPJeGfKX9SUZ/wC4MmJxkd3+mjL/AGMZJ/Z6tZ3v+8s8c1P5HDf8RLZGWOUeYMf6wWUJDmD8kdlbB2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8c/OBH8t69pPnGAHgkgtrindH2Wv7P7TrlHKX9dkHsKsHAZdwcvYrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVQlxDKw/cvx9iKiv8P+GX/IyErHKv85nGQ6j8fj/pJERig3wR5df85iV+TQ7CrsVdirsVdirsVdirsCuwq7ArsFq7CSrsVdirQBGQAS3kihbTI1ul1N/liOarssQ//9X1TirsVdirsVdirsBKuwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXZG1dkldirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVcRXrgKrEiVBxUADwyAgAm14yYCHYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7IlXYaV2FXYq7FXYq7FXYq7FXYAFdhV2KuxV2KtE0ysmkrBLy6A5EZLTS4NXcb4eIoWyOVBIFSO2AzpQEp1jX4NKjNxcuIolBZnY0UD3OVRJkdmwRt5H5g/PO18zPJ5e8qu8l3MCnrBf3aKdncEjkzcfsZdMcAs8J/2v/j8fSzoR8/x/Oel+QtKtND0yLSrQgCAUbqCWO7ueXVmb/WzFhfP/Ol+OL/iWshlAkXpXfMoSDAhf1yYNoWhQNx3wAUldhQ7CrsFK7Cq1jttlaV2WIU3j5MGqRx/H54FVMkrsVdgKuwq7FXYq7FXYq7FXYq7FXYq7FXYFdhV2KuwK7Eq7FXYVdirqZGldkldirsCuwq7ArqYKV2Kuwq1QZHhCqb20T7MikHxAyHhxPQfJUJJoGny7yW8TfNFP8Mr/LQPQIItCS+StEl3extz/wA81/pkTpMfd9sv+KY8AS6b8q/LEpJbTrck7mi0/VhGlh/S/wBPP/imHhDz/wBNL/ilGT8n/Kcn2tMtyf8AVp/HB+Vj/T/5WZP+KT4Q/pf6ef8AxSGk/JHyg9P9x0Skd1qP1HJDTgcjP/Tz/wCKXw/Of+nn/wAUgrn/AJx+8pzbpbyRe0crqPuDZLw5DlKY/wA7i/3TZG48jL/TSaX8g/LqAem10lN/huHH8cmIz/nSTZ75fNXT8ldNjFIr3UUH+TdOMmJ5B/F9kf1Io95/2P8AxLFvP/5QxpaR2tnf6lLLeTRwlZLlmTgT+8LpTiVVF/ayEskwN5Xfp4axx/3qRY6y/wBj/wASzWw/LCCyURrqOptGoCqrXbgAAcVUBOPTDeT+dX9XDpv+qMmNHvPyx/8AEMssLIWUKwKzuFH2pGLsf9Z3LMcluee/wjD/AGMIwj/sWSKwlXYq7CrsVdirsVdiq1jQV6nArlNRXG1XYVdirsVdirsVdirhv0wA2rsKuwK7CrsVdTvirsVdiqw0qK5FK/p0xqkOySuxV2KuwK7CrsVdirRwEq3hV2KuxV2KuxV2KuxV2C1dhV2A7qpvEjijgEHxFcqlijLmIn+sIqd0r1DynpGo/wC9llbz0/35Ejf8SGVjTQH0jg/4X+6/3HCwEBHkB8mOan+SflPUAA1hHERvWEmL/k0VxGCuUpx/z5T/AOmvGyGx6/6aX+54mOX/APzjfo+z6TcXNlKDXkshYH5h8MfFhvGV/wBaMf8AecCRKQ6oD/lVfnbRttE1syRjcJNXr/wy8cs/MZR9UY5Px/ST4suvDM/zf+klRPMX5maGxW90+HUohQAxGjH3+Es3/CY/mo/xRnA/0eLh/wBzw/7NfFj1B/zf+O8apB/zkQtk5h8waTeWcimjFVDKPpl9A5ZHJinyl/ph/wBUuOX+wXigdr4f6344v9gyDTPz98o35C/XPRc9pUZfvYBk/wCGy7wu4xPx4P8AprwNhx9xB/00P+msYMv07zPpWpD/AEK7gmr/ACSKf1HAcch0LHgP49SbZWwdirsVdirsVdirsVdirsVdirsVdirsVdirA/zu0g6n5UvVQfvIUEyeNUPLKcnf3FI2Tb8ttaOteXbDUCatJAlfmBxOXLIUybFDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsCuxCuxKuxVxFcBFq7G1dhBVo9cUuIrkTuh1KYaS3TGkOySv/9b1TirhgBV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqhHuZVuFhERaJlJMlRQEdFp9olsjY5b/wC9/wBMlF5JDsVdirsVdirsVdgV2FXYq7ArsKuxV2KuxV2KuxV2KuxV2KuxV2C1dhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV1cFq7CrsVa5A4q3irsVdirsVdirsVdirsVdirsCuxV2DdXYbV2FWqZHhCupjwq3SmIirTDbIyCvGfzk/LHzP53dreyvI4dNAWkO9WI6lz/AK2UeJKGwjf9K/UpmeQH/FMI8rf84y6r5deO+MsM05PFomBKgHuzrxb/AIHK/GmOYIv+lwz/ANhxoiT+D/vv+kmTaz+YWoeQHhXV7e2A3URQTsXI7OYeHpryX9r4ny2HDL6uMf0peHL/AHco5f8ATz4f5sHIEgRvt8Yy/wCIR2m/85G2GoSRRqgjqR6nVqA9h9n4suEAOXL+lw/8eQAHoD+doZEDQI0hNDsR0+Su2RnIx/sk1kV3o/SPMi6j8PpSRuQSOQ2I8eQ+HHxAeS0ExgvEmJRSOS9RXcYQT+PSmUaRAcE0yQlbGnO3EEk0GO5KtRuHUFTUHvh3GxUhoM/OlPh8cF7oVMmrsVdgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7Aqm0lGC0O9d+22C1VMkrsVdgVquRtW8kFdirsKuxV2BXDEK7CrsVdirsVdgV2FXYq7FXYq7FXYq7FXYq7FXYq0VB3wUreFXYq7FXYq7FXYqtQkjcUOC7Wl2FXYq7FXYqpSuUFQCfYZEmkgWq9cJCHYFdirsIKuxV2Kuwq7FXYq7FXYq7FXYq7FXDAFdhV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KrSobrlUoCXMA/1gm2Pa3+X2g65vqNhbzNSnJoxy/4OnLKRpoD6R4f/AAsyxf7jha+AdNv6vp/3LD9T/wCcdfLNz8VmstnIe8MjAf8AAsWXJcE4/TKX9WXq/wBl9SdxyJH+y/3SXJ+TvmPRW5aBrkoTb4J6kbdvhy3x8w58GT8f0m3xZeUv6yq2vfmNoQ/0uxg1OMGlYm4tTx4jk3/C4/mY8pxnD+lH1/8AHP8AZI4weYP+avs/+cg7W1Pp+YtPu9OYEgs0ZZB9K/H/AMJk4ZMWT6JR/qy+r/Yccf8AZLcCaB/03/HeJmOg/mf5c148dP1CB5D0Qtwc/wDPOXhJ/wALl3gy6er+qRP/AHHFwsvDl03/AKvq/wBjH1MqBBFR0yqmst4q7FXYq7FXYq7FXYq7FXYqg9YsRf2U9oek0Tp/wQK/xyE+SvOf+ccZWHlVLV/tW080RH+q5oPuxibCS9SyaHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXDI2rskrsVdirsACuwq7FXYq7FXYq7FXYq7FXYq7ArhiFdhV2KuOAq7CrsVdirsVdkVdjStE0yEikNjLAhbWhyF7pbVgdxhErWm8mh//1/VOKuwK7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXUwK7CrsVdirsVdirsVdirsVaJpkZGkhvCEOwq7FWsrOyXA4QbQ3kiVarkQVbrjatFsBklbsdjlV8XkrZyRVK9X8t2OsKFvIVcqQysRuCOhB+1lRwg8tv6Xpl/u+JbpLH/LrRJbn67NbRvMNqlR+oDK4acA939GPo/wByxEa5KaflnpEVw93FGUd61oxpU98tGKQ/il/umYke8plpvlmHTImjtGYM3diWp8gcPBLv/wCJW1UaZIX5q/Er0oKA7ftgHk3/AAuCMCDe3/Ff53qXiX21vfKXFxMrg048Y+IG+9fjYt/wv+yywmR/m/7L/jqbCO4FtmI4+H9clV7MWN+br3UdNijbS4Hnj3VliI5gn7DAN8JVW+3lfFwbbj+lw+LH/i2YPf8A7niTby81y9jE99UXDKGYMACCd+B4/DVfs5bGV7/o4WBTPJoU4udDzpWppTwrt+GAEqqYVdhV2AK7CrsVdirsVdirsVdirsVdirsVdirsFK7CrsVdgV2Kuwq7ArsCuGEK7CrsVdirsirsKuwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYFWrX9rAFK7JK7FXYq7AArsVWH4hTKrtLYNNu+SiVbBB6ZISBQ3kldirsVdirsVdirsVdirsVdgV2Kuwq7FXYqtZqU98iUgLskh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqU0KTKUkUOp6gio/HK544z+oCX9YcSKtiGr/AJQeV9UUibT4Y2O/OFfSav8Arw8Gyj8uB9JnD+rOUo/6SZlD/YseGvL+r6f9j9KQQ/kkdKkMnl7Vr2xXqI+fqJX3VxyI/wBll3HmH8Qyf8Ojxf7ngj/sWfHIDnf9YcUf9jwIyI+fNH2k+qarGvhWF+vb7Sk8ckM/86BH9LHLi4v8ySeMHmP86J/3qOtfzHeLbWdOu7LtzKeolf8AXi5cf9licmM7cVX/AA5Bwf7r0rca58P9b0/8dZpb3UdyvOJgynLCFqlXAh2KuxV2KuxV2KuxVgv5TaSdOs77akcuo3bR9qqJWjU/7LhlOI7JLOstQ7CrsAV2FXYq7FXYq7FXYq7FXYAVdhV2KuGRCuxtXYq0Grtjat4VaGIKt4q7CrsVdirsVdirsVdirsVdirsVdgV2FXYq7FXYFdg3V2SVxyJV3XHmrWNKt4Anl3GV1bK2zWm3XE3SFOGQuDyHE/59MANspBC2lk1s5+JmU12JqBuT8++Qx3e7ZPJxDpaYZlND/9D1TirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdgV2FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsKuxV2KuxV2KuwFXDEKtdaimVzBPJIbFcY2rYyYQ7DatHwyJKW8IFocMIV1MBCtUyIiEuPhjJWgvjgjDvVdTJiKGgKYAKS3kqQ7FXYVccBVrI0la5IIAHU/wAMBlSqZQPJyIrw6H3PX8MjzPuVuPlybkdqjj8qf1yYKlVGItW8mh2BWiOQpiFbwq7FXYq7FXUwUrsKuxV2KuxV2KuxV2Ku64q7FXYq7ArsKuxVxFdsFK7FXYVdgVwwBXZJXZEq7JK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYFdhV2KuxV2BVp9sSVC7CrsVdirsVdgKoNDx5SFw6k8hWmwp2p+z/rZRZkb2lX83/fer8fzW091V/D/Wki6U6ZaA1tV4ivXCPNV2G0OphV2KuxV2KuxV2KuxV2KuxV2KtMaDfAdlaDchVe+KrZY1kHFwCKg7+INR9xxISDXJUwodirsVdXASrsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuO2KqFtdR3KCWFg6EkAjcbHif+GGJFJIpXxQ7FXYq7FXYq7FXYq7FXYq7FWqUyIiAreSV2KuxV2KuxV2BXYVWRxrGvFAAB2GQjERFDZQvySuwq7FXYq7FXYq7FXYq7FXZFXZJXYq7FXYq7FXYq7FXYCFdirsKuxV2KuxV2BXYVdirsVdgV2FXYq7ACrsKuxV2KuwWrsVdhV2KuyNq1XtgvvV1MBglxGExtVuzdcjQKrhkoobyav8A/9H1TirsCuwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7ArsKuxV2KuxV2KuxV2KuxV2Aq7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsCuwq7Bauwq7FXYFdirsVWS8uJ4U5dq4CaSK6rxhCHYVdiqi1xGtOTAcjQb9cDIRJVsLF2KurgtXY2rsVdirsKuwK1XBat4VdgpWsibS4VxFq7GlcBTJRCG8Kuwq7FXYq7FXYq7FXYq7FXEVwEK7CrsVccCuGBXYVdhV2BXYq7CrsVdirhirsVdirsVdirsVdirsVdirRrTbInyVy179cIUtOKigNMSqnAjRxqjtzZQAWPcjqfpwRvqkmyrZJDgKYAFdirsKuGAK7CrsCupjSrSoJrgVdkldirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirQYHI2qFtJnk5cypAYjbw7VyEZEsiiwa7jLAWLsKoeJpN/VAHxUFPDtkRL4MyB07vUrgg9MILBvCqg0XUx7MadKb0ysx7mQPe3CzMoLijdwOlfnkgb/48p8lbJMXYq7FXYq7FXYFdhV2KuxV2KuxVoZEG1bwkKtXpkY7BJXZJDsKuxV2KuxV2KtE0yNrSnG3KuxHzxDIquSYuxV2KuwE0rsVdhV2KuxV2KuxVplDCh6HAqHsNPhsIVtbZRHFHsqjoBkYRoUqJyauxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2BXYq7CrsVdirsVdirsCuwq7FXYFdirsCur2ySuwE0rWRBS32w2h1cbV2JKrRtkAUrq5O0Owq0NsgNkqYkUtxBFcrEt00qbHLNihvJBDskq11VgQ3Q5AgJGyEt4Zo5G5uHiP2RTcfT3wRJGxr+jL/im2Uokcql/F/NkjcsaX//S9U4q7ArsKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuwK7CrsVdgV2IKuwq7BauxtXYVdirsVdirsVdgV2Kuwq7ArsKuxV2KuwAq7G1dhV2KuwK7FXYqsDgkgdsbSQvxQ6vbI8QVaQCKHCd1SWTSUR44oQhh3qJCzEEHkvAE8RxP7WYMsf8Pqn/n8HB/pY8X49TnDPYJN8X9Hhh/RlxbJo7pEoRnAPuRXMyiA4gBJulUuFWrYLFbsQLXZIK0zhdzsMBkFAtsHJAobwq7Eq7AqzatTlIlulfl3EhrI2luuStDhhBV1ciJJa5ACuASACqMFysteNdvFSP+JDAMglyZGBjz+8S/3KtXJgsG648SWge2REt0N5Iq7EFXYbV2KuxJVquQMkrTUb/hhulbJxsqtQMRU7E9sG62vGIKtKxJIxibWlxyaHYVdgV2Kuwq7FWieIrg5KpW9wJl5gED3wRmJcmUo8JpWyTF2KtE02wWreFXYq7ASrsKuxV2KuxVoiuAi1bwq7ArsKuwK0MiCrdcJKtAUwq2MQVWk707ZGxaV2SQ7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirq4FdhV2KuwK7CrsVaOVlLSgU2wRAruVdliGqZGlbw0qxCKV6DIx2SV9cnaHYq0yhuuKg00zUwE0la0yrTkaV6YOOkiJKphYuwq7FXYVdgVwNcAlatE0x4lpoE4AUtKoXp1ORAobK2NskDSldkuaHY2rsVdirsKuxV2KuxV2KqCerty4nrWlfwyIJPNka81fJMXYFdhV1MiRatFRgMVbyauxV2KuxV2KuxV2BXYVdirsVdirsVdirQNchGQPJNN5NDsVdirsVdirsVdirsVdirsVdkSVdkldgV2FXYq7FXYq7FXYq7FXYq7FXYq7ArsCuwq6uC1dhVrIEpbyYQ7CrsVdXBauxV2C1dkldgJpWq5DiS3XJAodjatHxwEdUtE5UZK2Om+TidlWswUVOQMqSA5W2rgEqCkNGQDY4DkUBtWr1wxyWhsuBtk5TrzUBxYAVOHiUBDNdqwPA8gOtO2Y5lWzaIHq6K4icgLSpqRgAAUxIVw3bJiXwa6Um5f7qIoK1rXrhMiyFdW4boSLz6Dfse2WRnayhWyuprkolg2MkEOySv//T9U4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXEVFMiRatAUxEQFbphpXYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsACuwq7BSupgIV1MQFdTDSupgpXUxoK6mGldirsKuwUrsKuwK6mNK6mNK7EBXYq6mNK7CrqZGldhpXYq7GlcBgACuw0rsVdjSupjSupjSqckSyKUbo2xwcISDSFsdKgsV4wcgtOhd2A+XNmp9GGun4/031NuTNLJua/0sY/7mMWrvSre8ZGnTkYzVTyP8Dv/ALLBKAPNceeUL4duL6toohrWMqEIPEdqnBwj8GTDjINrkhVPs1+8/wBclTEm15QHrkTEFbXUxEQEW6mSpXUxpXUxpWioORMAU26gw8IQ3TGldTDSupgoKs9MV5d/mf1Y8ITa7iMHAENcAN8HAE22FAwiAC23TDSLa4jAYAq3TJUrqY0rsKupgpXUxpXUxpXUxpXYq7GldTGldTGlaIriQreFXYq7ArsKuxV2KuApgAV2FXUwEWtuwq7ArsKtMK7YKVyrTbGkt4ULBGF6dcFJtfhQ7BSuxAV1MVdiQrsVdhV1MiQrqYaVaqgbjABSt8ceEK3TEBXZJXYq6mCldhV2BXYVdgV2FXYq7FXYq6mCldjSupjSuxpXY0rsaV2FXYq7FXYFcRgICtKoHTERAVvCrsKuwK4iuJCup2xpXYgK7GldTGlUWt0bdhXeu+RMQfgy4iq0yVMW8VUjAhf1KfEBStcaZcRqlXCxdgpXUxpWioOAxtNuAGIiENKoHTHhTbfEYOAIt3EY8ITbdMlSHY0rsaV2NK7FXYVdirsVWGMH6Pc4ptfih1MFK7CrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirqYKV1MaV2KuxV2KuxpXYVdirsVdirsVdirsVdirsVdgpXUwAK7DSupjSuxpXUxpXYq7CrsCuxpXYq6mCldhpXY0rqZExBV2SAV2NK4iu2Ai1aCgbYOAJt1MeAIWSRLIOLdMeAMhIhcI1AoMHhhFtNEp3I6YDiiVtsIBhEAFtzRhuuJxgrdOKAimEwBW1BLKJAyquzdffIDFHu+9mchPwdDYwwEmNaE4jDELLIZc0RQZMQDW6gx4Am1roGHE9PbDwhbbRAg4jphqlJtcBTEBDsKv/1PVOKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV//Z' + + +const staticImg_Base64 = 'data:image/jpeg;base64,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oooooooooooooooooooooooooooooooooooopAMDFLRRRRRRRzxzRSc568UHoaRCc4PahjyRyTikXB4cDIPFPIB6ikAA9KNq5zim4AZuD0zShcflS7sHBB/Kloo79KKKKKKCAeopMccgHjpSgcU1gOwGe2RSrnaM9cc1Fc/w8At2FSqR0FAxnpS0gPOMUuKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKOc0UUc56cUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUCiiiig59KKKKKKByM0UUUUEgDJpFIYZHSloooooooooooooooooooooooooooooooooooooooooooooooooooooo7UwP8ALkjHOKcpyPwpaTIyR6Ubu3eggkUiNkkcZFOIyCKaUDYyORS9+tLiikAOc/pS+1NwMYB596RPvHBzT6Q53A9qWig9KAPfNFFH4UCiiopx0JQMB1yaEcAyMxUKCMGno25cgU6iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiigjIxkiiiiiigHNA70UUUUUUUUUUUUUUUUUUUUUUUUVR8Qara6Jot1q175v2a1jMknlRl2wPRRya8h1T9pf4ZJZSpDq97aXTxt5Dz6bLtDY4OMcjNcx8I/2pPDl9oUqfEC8h0/VIpdqSW9tIUuE7NgA7T7V6X4J+Nfgbxj4v8A+Ea0G7uri5aIyRytbMkb4BJALYOQB3FeiLPAztGJoy69VDDIrzfwx8Sr7WPjb4l8CDSY/sGjxxML5Jecsithl9yT09K9IR0DBPMXdj7orjde+JWh6H8Q7DwbqsVzaz6jGWtLpl/cyMBkpn16fnXO6t+0H8ONLvpbO/vr+CSKQxsXsZACw7Din6V8fPAWp+ILHRrKa/klu3KCQ2jqiHHGSR36V6qOlcp8RPHui+BY9On13zktb6cweeiZWJscbvY9K6neuzeWAXGck8U4EHoc0UUUVTvdV02yvLazvL63t7i7JFvHI4UykYyFz16j86TWdW07R7MXeqXkNpblwnmSsFXJ6DNWreaK4gSeCVJYnUMjochgehBrP1rXtG0doE1bUray+0Nsi86QIHPoCaSHxDoMi/u9YsCP+vhP8afNrmjw273E2q2UcKDLO06hQPrmrdpcwXUSzW8q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iP8AZ58D+CNJvBda59qtYZbRVO9CqFD+pFdf8Q/h/wDD6C4s7698czeGPEFnpMMd3FDIFeUKnp3JIx+FcB4MkufDHwE8a63aRNeW2s6o2nQzXK5JiZeZT7/1qXwZp2nfDb4w+CZvCeuW3iH+2IYIL2PIcw+Y434x93GBivWv2u9a0aY+DbJNTszcW/iG3e4jEylolG7JYZ4/Gs/9sQ2useGfA7Q6kv8AZcuqRRy3cDhhHlSNwIOMgZNYHhm1f4fftE+F9B8IeKb/AFrT9TtYjexyXHmqoZ/mJxwOFBr66oooooooooooooooooooooooooooooooooooooooopCM45xzS0UUU10VhgjikxghB0GKfSZ6UiKFzj69aXAOQRmloooooPSik4xkelA70Z+YcfjS0UYGc0UUyVioGM5+lPooooooooooooooooooHIoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooHFFFFFFFFFFFFFFFBAIIIBB7UAADA4FFRXdtb3cBguoIp4m6pIoYH8DT40SONY40VEUYVVGABSgAHgdaWkZVYFWAIPYijaoXaAAOmKqSaVpkpJk0+1ct1LRKc/pVmCGK3iWKCNIo1GAqDAH4VFHY2cbzPHawK03+tYIAX+vrWZbeEfDFtqX9pW+hafHd5z5qwKGznOaTxN4R8NeJCh13RrPUCgwpmiDED6/jVvStC0jStMOmadp1tbWZGDDHGApGMcj6ViaT8N/A+l642tWHhrT4NQZi3nLENwOc5HpzUHjD4W+BvFmrJquvaBa3l4gC+a4OSB0B9RzWzP4U8Oz+GD4ak0i0OkGPy/sojATbjHT6Vz3gz4Q+APCWqNqei6BBDd87ZXJcpyD8uenSqHif4GfDXxHrNzq2qaCJLy5cySus7ruYnJOAa05PhV4Jk8BHwS2lA6PvMixmQlkcjG4MeQcVV+Gfwe8E/D/UJtQ0Kyma9lTZ59zKZHVeDtXPToK9BooooooooooooooooooooooooooooooooooooHTniiiiiiiiiiimlBvD8Z6U6mMG3g4BFEa4GenOcU+ikJ5xzn6UpIHeijiiik4HNIF4wTn8KdRQBiiiimP8AeXr+dPoyM4zQBjPvRRRRRRRRRRRRRRRRRRRR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5eSeQszuQAW59cZxXQUVz2jlW8b64wABENuvX2c/1roaKKYxzG55GB1rB+HfPhWFs53Sytn1zIxroaKKD0opGOASc4Heuc+KDD/hWXig9P8AiUXfX/rk9aXhVPL8L6UgIO2yhA59EFX9rE7sgH9KUht/D8Y+7/WmmIHHzMMNu4P6VIaKKKQ5zkHt0paKKKO9FJ0GCajymG7DPNGVHbqwxgVLR3oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooHAooIBoooozzj0oooopCqnqoP1FJ5cf8AcX8qTyYv+eSf98imm2tycmCLPrsFNeztG5a2hb6oKjbTNOb71han6xL/AIVDLoWiTHMukafJ/vWyH+lU5/BnhKfPneGdGkJ/vWUZ/pWjpGl6bo9mLPSrC1sbYMWEVvEI0yepwOKuUUHpQMEZFFFFFYXjXw1F4m0y3s5L25sntruO7imgI3K6Z29frWcvhPWkxs8batx/fRD/AEpP+Ea8UqT5fje5xnjfaI39acND8ZKTt8ZIw/2tPT/GkXSfHKNx4qs5Bj+KxA/kaBYeP1Yn+3tJcDoGsyM/kaUQfENQcX+gOccZgk6/gaP+LhqvXw85/wB2Qf1qv4f0jxU/xBfxBrw01IE0s2ca2rMSWMofJz9K7WiiivOdBu/E+gar4hibwje30N1q0tzDPFcxANGwUDgnPatRfFGqxO7jwDq6u33mR4Ofx31Mvi/UtuZPBHiFfoIG/wDalR3PjKQwsk3gzxMyMCGBtYyCPThzXMeGf+EL8O6zd6zpHw48Q2N/dEmaaPTCScnJAwxxk+ldQnj+wYkNoXiePH97SJf6Cj/hYWjgfPpviJD6No1x/RKg1f4haCNKuh5OsI5gcANpNwvOD6pWv8OSzeBdGdkdC1pG211KkZUdQeRW/RRXH/FW+ttP0jSrm7cRwrq9sXduigMTk+3FaKeNPCjDjX7A8Z/1opy+MPC7AEa9Yc/9NhUo8UeHDyNasMkf89xUieI9BbprFgf+26/41IuuaM33dVsj9J1/xqRdV0xumo2h/wC2y/409dQsG+7e2x+kq/41g388M/j/AElIpUk22kzHawPdRXT0UUVz/jvwhovjPRRpWtxSvCsgljaKVo3RwCAwI57muU8NfBPwZo+t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' diff --git a/kylin/hwweb/opt/hanvonwebscan/static/js/WebScanController.js b/kylin/hwweb/opt/hanvonwebscan/static/js/WebScanController.js index f871ee3..b1f835a 100755 --- a/kylin/hwweb/opt/hanvonwebscan/static/js/WebScanController.js +++ b/kylin/hwweb/opt/hanvonwebscan/static/js/WebScanController.js @@ -1,656 +1,656 @@ -(function (window) { - const TAG = 'WebScanController:' - let Result = function (code, msg, data) { - this.code = code; - this.msg = msg; - this.data = data; - }; - - function WebScanController(options) { - - if (options.wsUrl == '' || options.wsUrl == null || options.wsUrl == undefined) { - WebScanController.prototype.wsUrl = "ws://localhost:38999"; - } else { - WebScanController.prototype.wsUrl = options.wsUrl; - } - WebScanController.prototype.wslicence = options.wslicence; - return WebScanController.prototype; - } - - WebScanController.prototype = { - constructor: WebScanController, - - /*****************************************扫描仪相关********************************************************************************/ - initDevice: function (callBack) { - const that = this - this.sendCommand({ - func: "init_device", - iden: that.wslicence - }, callBack) - - }, - deinitDevices: function (callBack) { - const that = this - this.sendCommand({ - func: "deinit_device", - iden: that.wslicence - }, callBack) - }, - getDeviceNameList: function (callBack) { - const that = this - this.sendCommand({ - func: "get_device_name_list", - iden: that.wslicence - }, callBack) - }, - openDevice: function (device_name, callBack) { - const that = this - this.sendCommand({ - func: "open_device", - iden: that.wslicence, - device_name: device_name - }, callBack) - }, - closeDevice: function (callBack) { - const that = this - this.sendCommand({ - func: "close_device", - iden: that.wslicence - }, callBack) - }, - setScanParams: function (appendParams, callBack) { - const that = this - let fixedParams = { - func: "set_device_param", - iden: that.wslicence - } - fixedParams.device_param = appendParams - console.log('final set scan params:' + JSON.stringify(fixedParams)) - this.sendCommand(fixedParams, callBack) - }, - getScanParams: function (callBack) { - const that = this - this.sendCommand({ - func: "get_device_param", - iden: that.wslicence - }, callBack) - }, - resetScanParams: function (callBack) { - const that = this - this.sendCommand({ - func: "reset_device_param", - iden: that.wslicence - }, callBack) - }, - getCurrDeviceName: function (callBack) { - const that = this - this.sendCommand({ - func: "get_curr_device_name", - iden: that.wslicence - }, callBack) - }, - //开始扫描 - startScan: function (callBack) { - const that = this - this.sendCommand({ - func: "start_scan", - iden: that.wslicence, - get_base64: true - }, callBack) - }, - stopScan: function (callBack) { - const that = this - this.sendCommand({ - func: "stop_scan", - iden: that.wslicence - }, callBack) - }, - - - /*****************************************基本接口********************************************************************************/ - - getLocalPic(path, callBack) { - let that = this - const cmd = { - func: "load_local_image", - iden: that.wslicence, - image_path: path - } - - console.log(TAG, 'getLocalPic', JSON.parse(cmd)) - this.sendCommand(cmd, callBack) - }, - saveLocalPic(base64, callBack) { - const that = this - const cmd = { - func: "save_local_image", - iden: that.wslicence, - image_base64: base64 - } - - console.log(TAG, 'saveLocalPic', JSON.parse(cmd)) - this.sendCommand(cmd, callBack) - }, - //获取全局配置 - getGlobalConfig: function (callBack) { - const that = this - this.sendCommand({ - func: "get_global_config", - iden: that.wslicence - }, callBack) - }, - //设置全局配置 - setGlobalConfig: function (appendParams, callBack) { - const that = this - let fixedParams = { - func: "set_global_config", - iden: that.wslicence - } - const finalParams = Object.assign({}, appendParams, fixedParams) - console.log('final set global params:' + JSON.stringify(finalParams)) - this.sendCommand(finalParams, callBack) - }, - //加载本地图像 - loadLocalImage: function (imagePath, callBack) { - const that = this - this.sendCommand({ - func: "load_local_image", - iden: that.wslicence, - image_path: imagePath - }, callBack) - - }, - //保存本地图像 - saveLocalImage: function (imageBase64, callBack) { - const that = this - this.sendCommand({ - func: "save_local_image", - iden: that.wslicence, - image_base64: imageBase64 - }, callBack) - }, - //删除本地文件(为了安全,仅能删除后端生成的文件) - deleteLocalFile: function (filePath, callBack) { - const that = this - this.sendCommand({ - func: "delete_local_file", - iden: that.wslicence, - file_path: filePath - }, callBack) - }, - //清理全局文件保存目录(为了安全,只会删除后端生成的文件) - clearGlobalFileSavePath: function (callBack) { - const that = this - this.sendCommand({ - func: "clear_global_file_save_path", - iden: that.wslicence - }, callBack) - }, - //合成本地图像 - mergeLocalImage: function (imagePathList, mode, align, getBase64, callBack) { - - const that = this - this.sendCommand({ - func: "merge_local_image", - iden: that.wslicence, - image_path_list: imagePathList, - mode: mode, - align: align, - interval: 0, - get_base64: getBase64 - }, callBack) - - }, - //本地合成多张图像 - localMakeMultiImage: function (imagePathList, format, tiffCompression, tiffJpegQuality, callBack) { - - const that = this - this.sendCommand({ - func: "local_make_multi_image", - iden: that.wslicence, - image_path_list: imagePathList, - format: format, - tiff_compression: tiffCompression, - tiff_jpeg_quality: tiffJpegQuality - }, callBack) - }, - //拆分本地图像 - splitLocalImage: function (imagePath, mode, location, callBack) { - const that = this - this.sendCommand({ - func: "split_local_image", - iden: that.wslicence, - image_path: imagePath, - mode: mode, - location: location - }, callBack) - }, - //本地生成压缩文件 - localMakeZipFile: function (imagePathList, callBack) { - - const that = this - this.sendCommand({ - func: "local_make_zip_file", - iden: that.wslicence, - image_path_list: imagePathList - }, callBack) - }, - //本地图像纠偏 - localImageDeskew: function (imagePath, callBack) { - - const that = this - this.sendCommand({ - func: "local_image_deskew", - iden: that.wslicence, - image_path: imagePath - }, callBack) - }, - //上传本地文件 - uploadLocalFile: function (filePath, uploadMode, remoteFilePath, callBack) { - - const that = this - this.sendCommand({ - func: "upload_local_file", - iden: that.wslicence, - file_path: filePath, - upload_mode: uploadMode, - remote_file_path: remoteFilePath - }, callBack) - - }, - //本地图片添加水印 - localImageAddWatermark: function (imagePath, text, textColor, textOpacity, textPos, marginRight, - marginBottom, locationX, locationY, fontName, fontSize, fontBold, fontUnderline, - fontItalic, fontStrikeout, getBase64, - callBack) { - - const that = this - this.sendCommand({ - func: "local_image_add_watermark", - iden: that.wslicence, - image_path: imagePath, - text: text, - text_color: textColor, - text_opacity: textOpacity, - text_pos: textPos, - margin_left: parseInt(marginLeft), - margin_top: parseInt(marginTop), - margin_right: parseInt(marginRight), - margin_bottom: parseInt(marginBottom), - location_x: parseInt(locationX), - location_y: parseInt(locationY), - font_name: fontName, - font_size: parseInt(fontSize), - font_bold: fontBold, - font_underline: fontUnderline, - font_italic: fontItalic, - font_strikeout: fontStrikeout, - get_base64: getBase64 - }, callBack) - - }, - /*****************************************文件管理相关********************************************************************************/ - - //获取批次号列表 - getBatchIdList: function (callBack) { - const that = this - this.sendCommand({ - func: "get_batch_id_list", - iden: that.wslicence - }, callBack) - }, - //打开批次(后端启动后默认打开最近批次,没有最近批次则会新建default批次并打开) - openBatch: function (batchId, callBack) { - const that = this - this.sendCommand({ - func: "open_batch", - iden: that.wslicence, - batch_id: batchId + "" - }, callBack) - - }, - //删除批次 - deleteBatch: function (batchId, callBack) { - const that = this - this.sendCommand({ - func: "delete_batch", - iden: that.wslicence, - batch_id: batchId + ""// 批次id,不能是当前批次 - }, callBack) - }, - //新建批次(新建批次到列表尾部并打开该批次) - createNewBatch: function (batchId, callBack) { - const that = this - this.sendCommand({ - func: "new_batch", - iden: that.wslicence, - batch_id: batchId + "" - }, callBack) - }, - //获取当前批次号 - getCurrBatchId: function (callBack) { - const that = this - this.sendCommand({ - func: "get_curr_batch_id", - iden: that.wslicence - }, callBack) - }, - //修改批次号 - modifyBatchId: function (batchId, newBatchId, callBack) { - const that = this - this.sendCommand({ - func: "modify_batch_id", - iden: that.wslicence, - batch_id: batchId, - new_batch_id: newBatchId - }, callBack) - }, - //加载图像缩略图列表 - getImageThumbnailList: function (callBack) { - const that = this - this.sendCommand({ - func: "get_image_thumbnail_list", - iden: that.wslicence - }, callBack) - }, - //获取图像数量 - getImageCount: function (callBack) { - const that = this - this.sendCommand({ - func: "get_image_count", - iden: that.wslicence - }, callBack) - }, - //绑定文件夹 - bindFolder: function (folder, callBack) { - - const that = this - this.sendCommand({ - func: "bind_folder", - iden: that.wslicence, - folder: folder, - name_mode: "order", - name_width: 4, - name_base: 0 - }, callBack) - }, - //停止绑定文件夹 - stopBindFolder: function (callBack) { - const that = this - this.sendCommand({ - func: "stop_bind_folder", - iden: that.wslicence, - }, callBack) - }, - //加载图像 - loadImage: function (imageIndex, callBack) { - let that = this - this.sendCommand({ - func: "load_image", - iden: imageIndex + "", - image_index: imageIndex - }, callBack) - - }, - //保存图像 - saveImage: function (imageIndex, callBack) { - const that = this - this.sendCommand({ - func: "save_image", - iden: that.wslicence, - image_index: imageIndex - }, callBack) - - }, - //插入本地图像(需返回成功后前端缩略图才能作相应的UI修改) - insertLocalImage: function (imagePath, insertIndex, callBack) { - const that = this - this.sendCommand({ - func: "insert_local_image", - iden: that.wslicence, - image_path: imagePath, - insert_pos: insertIndex,//插入位置,-1表示最后 - image_tag: ''//标签名,可以为空 - }, callBack) - }, - //插入图像 - insertImage: function (imageBase64, insertIndex, callBack) { - const that = this - this.sendCommand({ - func: "insert_image", - iden: that.wslicence, - image_base64: imageBase64, - insert_pos: insertIndex,//插入位置,-1表示最后 - image_tag: ''//标签名,可以为空 - }, callBack) - }, - //修改图像标签 - modifyImageTag: function (imageIndexList, imageTagList, callBack) { - const that = this - this.sendCommand({ - func: "modify_image_tag", - iden: that.wslicence, - image_index_list: imageIndexList, - image_tag_list: imageTagList - }, callBack) - }, - //删除图像 - deleteImage: function (imageIndexList, callBack) { - - const that = this - this.sendCommand({ - func: "delete_image", - iden: that.wslicence, - image_index_list: imageIndexList - }, callBack) - - }, - //清理图像列表 - clearImageList: function (callBack) { - - const that = this - this.sendCommand({ - func: "clear_image_list", - iden: that.wslicence - }, callBack) - - }, - //修改图像 - modifyImage: function (imageIndex, imageBase64, callBack) { - const that = this - this.sendCommand({ - func: "modify_image", - iden: that.wslicence, - image_index: imageIndex, - image_base64: imageBase64 - }, callBack) - - }, - //使用本地图像修改图像 - modifyImageByLocal: function (imageIndex, imagePath, callBack) { - const that = this - this.sendCommand({ - func: "modify_image_by_local", - iden: that.wslicence, - image_index: imageIndex, - image_path: imagePath - }, callBack) - }, - //移动图像 - moveImage: function (imageIndexList, target, callBack) { - - const that = this - this.sendCommand({ - func: "move_image", - iden: that.wslicence, - image_index_list: imageIndexList, - mode: 'index', - target: target - }, callBack) - - }, - //图像书籍排序 - imageBookSort: function (callBack) { - const that = this - this.sendCommand({ - func: "image_book_sort", - iden: that.wslicence - }, callBack) - }, - //合成图像 - mergeImage: function (imageIndexList, mode, align, getBase64, callBack) { - const that = this - this.sendCommand({ - func: "merge_image", - iden: that.wslicence, - image_index_list: imageIndexList, - mode: mode, - align: align, - interval: 0, - get_base64: getBase64 - }, callBack) - }, - //合成多张图像 - makeMultiImage: function (imageIndexList, format, callBack) { - const that = this - let msg = { - func: "make_multi_image", - iden: that.wslicence, - image_index_list: imageIndexList, - format: format, - tiff_compression: 'none', - tiff_jpeg_quality: 80, - get_base64: true - } - this.sendCommand(msg, callBack) - }, - //交换图片 - exchangeImage: function (index1, index2, callBack) { - const that = this - this.sendCommand({ - func: "exchange_image", - iden: that.wslicence, - image_index_1: index1, - image_index_2: index2 - }, callBack) - }, - //拆分图像 - splitImage: function (imageIndex, mode, location, callBack) { - - const that = this - this.sendCommand({ - func: "split_image", - iden: that.wslicence, - image_index: imageIndex, - mode: mode, - location: location, - get_base64: true - }, callBack) - }, - //压缩图像 - makeZipFile: function (imageIndexList, callBack) { - - const that = this - this.sendCommand({ - func: "make_zip_file", - iden: that.wslicence, - image_index_list: imageIndexList, - get_base64: true - }, callBack) - - - }, - //图像纠偏 - imageDeskew: function (imageIndex, getBase64, callBack) { - - const that = this - this.sendCommand({ - func: "image_deskew", - iden: that.wslicence, - image_index: imageIndex, - get_base64: getBase64 - }, callBack) - }, - //图片添加水印 - imageAddWatermark: function (imageIndex, markInfo, getBase64, - callBack) { - - const that = this - - let params = { - func: "image_add_watermark", - iden: that.wslicence, - image_index: imageIndex, - text: markInfo.text, - text_color: markInfo.text_color, - text_opacity: markInfo.text_opacity, - text_pos: markInfo.text_pos, - margin_left: parseInt(markInfo.margin_left), - margin_top: parseInt(markInfo.margin_top), - margin_right: parseInt(markInfo.margin_right), - margin_bottom: parseInt(markInfo.margin_bottom), - location_x: parseInt(markInfo.location_x), - location_y: parseInt(markInfo.location_y), - font_name: markInfo.font_name, - font_size: parseInt(markInfo.font_size), - font_bold: markInfo.font_bold, - font_underline: markInfo.font_underline, - font_italic: markInfo.font_italic, - font_strikeout: markInfo.font_strikeout, - get_base64: getBase64 - } - console.log('添加水印:params===' + JSON.stringify(params)) - - this.sendCommand(params, callBack) - - }, - /*****************************************socket相关********************************************************************************/ - callBackList: {} - , - addCallBack: function (key, listener) { - this.callBackList[key] = listener; - }, - removeCallBack: function (key) { - delete this.callBackList[key]; - }, - getCallBack: function (key) { - return this.callBackList[key]; - }, - sendCommand: function (json, callBackListener) { - if (json.func && callBackListener) { - this.addCallBack(json.func, callBackListener) - } - this.SocketClient.send(JSON.stringify(json)) - }, - //初始化socketIO - initSocketIo: function (socketCallBack) { - this.socketCallBacks = socketCallBack - console.log(TAG, "initSocketIo ===============" + 'ws:' + this.wsUrl); - - this.SocketClient = new WebSocket(this.wsUrl); - this.SocketClient.onopen = function (msg) { - console.log(TAG, "connect onopen") - socketCallBack(new Result(SOCKET_CONNECTED, "", null)) - }; - - this.SocketClient.onmessage = function (event) { - console.log(TAG, "connect onmessage data:" + event.data) - if (event && event.data) { - socketCallBack(new Result(SOCKET_EVENT, "", event.data)) - } - }; - - this.SocketClient.onclose = function (msg) { - console.log(TAG, "connect onclose:" + JSON.stringify(msg)) - socketCallBack(new Result(SOCKET_DISCONNECTED, "", msg)) - }; - }, - disconnect: function () { - if (this.SocketClient) { - this.SocketClient.close() - this.SocketClient = null - } - } - }; - window.WebScanController = WebScanController; -})(window); +(function (window) { + const TAG = 'WebScanController:' + let Result = function (code, msg, data) { + this.code = code; + this.msg = msg; + this.data = data; + }; + + function WebScanController(options) { + + if (options.wsUrl == '' || options.wsUrl == null || options.wsUrl == undefined) { + WebScanController.prototype.wsUrl = "ws://localhost:38999"; + } else { + WebScanController.prototype.wsUrl = options.wsUrl; + } + WebScanController.prototype.wslicence = options.wslicence; + return WebScanController.prototype; + } + + WebScanController.prototype = { + constructor: WebScanController, + + /*****************************************扫描仪相关********************************************************************************/ + initDevice: function (callBack) { + const that = this + this.sendCommand({ + func: "init_device", + iden: that.wslicence + }, callBack) + + }, + deinitDevices: function (callBack) { + const that = this + this.sendCommand({ + func: "deinit_device", + iden: that.wslicence + }, callBack) + }, + getDeviceNameList: function (callBack) { + const that = this + this.sendCommand({ + func: "get_device_name_list", + iden: that.wslicence + }, callBack) + }, + openDevice: function (device_name, callBack) { + const that = this + this.sendCommand({ + func: "open_device", + iden: that.wslicence, + device_name: device_name + }, callBack) + }, + closeDevice: function (callBack) { + const that = this + this.sendCommand({ + func: "close_device", + iden: that.wslicence + }, callBack) + }, + setScanParams: function (appendParams, callBack) { + const that = this + let fixedParams = { + func: "set_device_param", + iden: that.wslicence + } + fixedParams.device_param = appendParams + console.log('final set scan params:' + JSON.stringify(fixedParams)) + this.sendCommand(fixedParams, callBack) + }, + getScanParams: function (callBack) { + const that = this + this.sendCommand({ + func: "get_device_param", + iden: that.wslicence + }, callBack) + }, + resetScanParams: function (callBack) { + const that = this + this.sendCommand({ + func: "reset_device_param", + iden: that.wslicence + }, callBack) + }, + getCurrDeviceName: function (callBack) { + const that = this + this.sendCommand({ + func: "get_curr_device_name", + iden: that.wslicence + }, callBack) + }, + //开始扫描 + startScan: function (callBack) { + const that = this + this.sendCommand({ + func: "start_scan", + iden: that.wslicence, + get_base64: true + }, callBack) + }, + stopScan: function (callBack) { + const that = this + this.sendCommand({ + func: "stop_scan", + iden: that.wslicence + }, callBack) + }, + + + /*****************************************基本接口********************************************************************************/ + + getLocalPic(path, callBack) { + let that = this + const cmd = { + func: "load_local_image", + iden: that.wslicence, + image_path: path + } + + console.log(TAG, 'getLocalPic', JSON.parse(cmd)) + this.sendCommand(cmd, callBack) + }, + saveLocalPic(base64, callBack) { + const that = this + const cmd = { + func: "save_local_image", + iden: that.wslicence, + image_base64: base64 + } + + console.log(TAG, 'saveLocalPic', JSON.parse(cmd)) + this.sendCommand(cmd, callBack) + }, + //获取全局配置 + getGlobalConfig: function (callBack) { + const that = this + this.sendCommand({ + func: "get_global_config", + iden: that.wslicence + }, callBack) + }, + //设置全局配置 + setGlobalConfig: function (appendParams, callBack) { + const that = this + let fixedParams = { + func: "set_global_config", + iden: that.wslicence + } + const finalParams = Object.assign({}, appendParams, fixedParams) + console.log('final set global params:' + JSON.stringify(finalParams)) + this.sendCommand(finalParams, callBack) + }, + //加载本地图像 + loadLocalImage: function (imagePath, callBack) { + const that = this + this.sendCommand({ + func: "load_local_image", + iden: that.wslicence, + image_path: imagePath + }, callBack) + + }, + //保存本地图像 + saveLocalImage: function (imageBase64, callBack) { + const that = this + this.sendCommand({ + func: "save_local_image", + iden: that.wslicence, + image_base64: imageBase64 + }, callBack) + }, + //删除本地文件(为了安全,仅能删除后端生成的文件) + deleteLocalFile: function (filePath, callBack) { + const that = this + this.sendCommand({ + func: "delete_local_file", + iden: that.wslicence, + file_path: filePath + }, callBack) + }, + //清理全局文件保存目录(为了安全,只会删除后端生成的文件) + clearGlobalFileSavePath: function (callBack) { + const that = this + this.sendCommand({ + func: "clear_global_file_save_path", + iden: that.wslicence + }, callBack) + }, + //合成本地图像 + mergeLocalImage: function (imagePathList, mode, align, getBase64, callBack) { + + const that = this + this.sendCommand({ + func: "merge_local_image", + iden: that.wslicence, + image_path_list: imagePathList, + mode: mode, + align: align, + interval: 0, + get_base64: getBase64 + }, callBack) + + }, + //本地合成多张图像 + localMakeMultiImage: function (imagePathList, format, tiffCompression, tiffJpegQuality, callBack) { + + const that = this + this.sendCommand({ + func: "local_make_multi_image", + iden: that.wslicence, + image_path_list: imagePathList, + format: format, + tiff_compression: tiffCompression, + tiff_jpeg_quality: tiffJpegQuality + }, callBack) + }, + //拆分本地图像 + splitLocalImage: function (imagePath, mode, location, callBack) { + const that = this + this.sendCommand({ + func: "split_local_image", + iden: that.wslicence, + image_path: imagePath, + mode: mode, + location: location + }, callBack) + }, + //本地生成压缩文件 + localMakeZipFile: function (imagePathList, callBack) { + + const that = this + this.sendCommand({ + func: "local_make_zip_file", + iden: that.wslicence, + image_path_list: imagePathList + }, callBack) + }, + //本地图像纠偏 + localImageDeskew: function (imagePath, callBack) { + + const that = this + this.sendCommand({ + func: "local_image_deskew", + iden: that.wslicence, + image_path: imagePath + }, callBack) + }, + //上传本地文件 + uploadLocalFile: function (filePath, uploadMode, remoteFilePath, callBack) { + + const that = this + this.sendCommand({ + func: "upload_local_file", + iden: that.wslicence, + file_path: filePath, + upload_mode: uploadMode, + remote_file_path: remoteFilePath + }, callBack) + + }, + //本地图片添加水印 + localImageAddWatermark: function (imagePath, text, textColor, textOpacity, textPos, marginRight, + marginBottom, locationX, locationY, fontName, fontSize, fontBold, fontUnderline, + fontItalic, fontStrikeout, getBase64, + callBack) { + + const that = this + this.sendCommand({ + func: "local_image_add_watermark", + iden: that.wslicence, + image_path: imagePath, + text: text, + text_color: textColor, + text_opacity: textOpacity, + text_pos: textPos, + margin_left: parseInt(marginLeft), + margin_top: parseInt(marginTop), + margin_right: parseInt(marginRight), + margin_bottom: parseInt(marginBottom), + location_x: parseInt(locationX), + location_y: parseInt(locationY), + font_name: fontName, + font_size: parseInt(fontSize), + font_bold: fontBold, + font_underline: fontUnderline, + font_italic: fontItalic, + font_strikeout: fontStrikeout, + get_base64: getBase64 + }, callBack) + + }, + /*****************************************文件管理相关********************************************************************************/ + + //获取批次号列表 + getBatchIdList: function (callBack) { + const that = this + this.sendCommand({ + func: "get_batch_id_list", + iden: that.wslicence + }, callBack) + }, + //打开批次(后端启动后默认打开最近批次,没有最近批次则会新建default批次并打开) + openBatch: function (batchId, callBack) { + const that = this + this.sendCommand({ + func: "open_batch", + iden: that.wslicence, + batch_id: batchId + "" + }, callBack) + + }, + //删除批次 + deleteBatch: function (batchId, callBack) { + const that = this + this.sendCommand({ + func: "delete_batch", + iden: that.wslicence, + batch_id: batchId + ""// 批次id,不能是当前批次 + }, callBack) + }, + //新建批次(新建批次到列表尾部并打开该批次) + createNewBatch: function (batchId, callBack) { + const that = this + this.sendCommand({ + func: "new_batch", + iden: that.wslicence, + batch_id: batchId + "" + }, callBack) + }, + //获取当前批次号 + getCurrBatchId: function (callBack) { + const that = this + this.sendCommand({ + func: "get_curr_batch_id", + iden: that.wslicence + }, callBack) + }, + //修改批次号 + modifyBatchId: function (batchId, newBatchId, callBack) { + const that = this + this.sendCommand({ + func: "modify_batch_id", + iden: that.wslicence, + batch_id: batchId, + new_batch_id: newBatchId + }, callBack) + }, + //加载图像缩略图列表 + getImageThumbnailList: function (callBack) { + const that = this + this.sendCommand({ + func: "get_image_thumbnail_list", + iden: that.wslicence + }, callBack) + }, + //获取图像数量 + getImageCount: function (callBack) { + const that = this + this.sendCommand({ + func: "get_image_count", + iden: that.wslicence + }, callBack) + }, + //绑定文件夹 + bindFolder: function (folder, callBack) { + + const that = this + this.sendCommand({ + func: "bind_folder", + iden: that.wslicence, + folder: folder, + name_mode: "order", + name_width: 4, + name_base: 0 + }, callBack) + }, + //停止绑定文件夹 + stopBindFolder: function (callBack) { + const that = this + this.sendCommand({ + func: "stop_bind_folder", + iden: that.wslicence, + }, callBack) + }, + //加载图像 + loadImage: function (imageIndex, callBack) { + let that = this + this.sendCommand({ + func: "load_image", + iden: imageIndex + "", + image_index: imageIndex + }, callBack) + + }, + //保存图像 + saveImage: function (imageIndex, callBack) { + const that = this + this.sendCommand({ + func: "save_image", + iden: that.wslicence, + image_index: imageIndex + }, callBack) + + }, + //插入本地图像(需返回成功后前端缩略图才能作相应的UI修改) + insertLocalImage: function (imagePath, insertIndex, callBack) { + const that = this + this.sendCommand({ + func: "insert_local_image", + iden: that.wslicence, + image_path: imagePath, + insert_pos: insertIndex,//插入位置,-1表示最后 + image_tag: ''//标签名,可以为空 + }, callBack) + }, + //插入图像 + insertImage: function (imageBase64, insertIndex, callBack) { + const that = this + this.sendCommand({ + func: "insert_image", + iden: that.wslicence, + image_base64: imageBase64, + insert_pos: insertIndex,//插入位置,-1表示最后 + image_tag: ''//标签名,可以为空 + }, callBack) + }, + //修改图像标签 + modifyImageTag: function (imageIndexList, imageTagList, callBack) { + const that = this + this.sendCommand({ + func: "modify_image_tag", + iden: that.wslicence, + image_index_list: imageIndexList, + image_tag_list: imageTagList + }, callBack) + }, + //删除图像 + deleteImage: function (imageIndexList, callBack) { + + const that = this + this.sendCommand({ + func: "delete_image", + iden: that.wslicence, + image_index_list: imageIndexList + }, callBack) + + }, + //清理图像列表 + clearImageList: function (callBack) { + + const that = this + this.sendCommand({ + func: "clear_image_list", + iden: that.wslicence + }, callBack) + + }, + //修改图像 + modifyImage: function (imageIndex, imageBase64, callBack) { + const that = this + this.sendCommand({ + func: "modify_image", + iden: that.wslicence, + image_index: imageIndex, + image_base64: imageBase64 + }, callBack) + + }, + //使用本地图像修改图像 + modifyImageByLocal: function (imageIndex, imagePath, callBack) { + const that = this + this.sendCommand({ + func: "modify_image_by_local", + iden: that.wslicence, + image_index: imageIndex, + image_path: imagePath + }, callBack) + }, + //移动图像 + moveImage: function (imageIndexList, target, callBack) { + + const that = this + this.sendCommand({ + func: "move_image", + iden: that.wslicence, + image_index_list: imageIndexList, + mode: 'index', + target: target + }, callBack) + + }, + //图像书籍排序 + imageBookSort: function (callBack) { + const that = this + this.sendCommand({ + func: "image_book_sort", + iden: that.wslicence + }, callBack) + }, + //合成图像 + mergeImage: function (imageIndexList, mode, align, getBase64, callBack) { + const that = this + this.sendCommand({ + func: "merge_image", + iden: that.wslicence, + image_index_list: imageIndexList, + mode: mode, + align: align, + interval: 0, + get_base64: getBase64 + }, callBack) + }, + //合成多张图像 + makeMultiImage: function (imageIndexList, format, callBack) { + const that = this + let msg = { + func: "make_multi_image", + iden: that.wslicence, + image_index_list: imageIndexList, + format: format, + tiff_compression: 'none', + tiff_jpeg_quality: 80, + get_base64: true + } + this.sendCommand(msg, callBack) + }, + //交换图片 + exchangeImage: function (index1, index2, callBack) { + const that = this + this.sendCommand({ + func: "exchange_image", + iden: that.wslicence, + image_index_1: index1, + image_index_2: index2 + }, callBack) + }, + //拆分图像 + splitImage: function (imageIndex, mode, location, callBack) { + + const that = this + this.sendCommand({ + func: "split_image", + iden: that.wslicence, + image_index: imageIndex, + mode: mode, + location: location, + get_base64: true + }, callBack) + }, + //压缩图像 + makeZipFile: function (imageIndexList, callBack) { + + const that = this + this.sendCommand({ + func: "make_zip_file", + iden: that.wslicence, + image_index_list: imageIndexList, + get_base64: true + }, callBack) + + + }, + //图像纠偏 + imageDeskew: function (imageIndex, getBase64, callBack) { + + const that = this + this.sendCommand({ + func: "image_deskew", + iden: that.wslicence, + image_index: imageIndex, + get_base64: getBase64 + }, callBack) + }, + //图片添加水印 + imageAddWatermark: function (imageIndex, markInfo, getBase64, + callBack) { + + const that = this + + let params = { + func: "image_add_watermark", + iden: that.wslicence, + image_index: imageIndex, + text: markInfo.text, + text_color: markInfo.text_color, + text_opacity: markInfo.text_opacity, + text_pos: markInfo.text_pos, + margin_left: parseInt(markInfo.margin_left), + margin_top: parseInt(markInfo.margin_top), + margin_right: parseInt(markInfo.margin_right), + margin_bottom: parseInt(markInfo.margin_bottom), + location_x: parseInt(markInfo.location_x), + location_y: parseInt(markInfo.location_y), + font_name: markInfo.font_name, + font_size: parseInt(markInfo.font_size), + font_bold: markInfo.font_bold, + font_underline: markInfo.font_underline, + font_italic: markInfo.font_italic, + font_strikeout: markInfo.font_strikeout, + get_base64: getBase64 + } + console.log('添加水印:params===' + JSON.stringify(params)) + + this.sendCommand(params, callBack) + + }, + /*****************************************socket相关********************************************************************************/ + callBackList: {} + , + addCallBack: function (key, listener) { + this.callBackList[key] = listener; + }, + removeCallBack: function (key) { + delete this.callBackList[key]; + }, + getCallBack: function (key) { + return this.callBackList[key]; + }, + sendCommand: function (json, callBackListener) { + if (json.func && callBackListener) { + this.addCallBack(json.func, callBackListener) + } + this.SocketClient.send(JSON.stringify(json)) + }, + //初始化socketIO + initSocketIo: function (socketCallBack) { + this.socketCallBacks = socketCallBack + console.log(TAG, "initSocketIo ===============" + 'ws:' + this.wsUrl); + + this.SocketClient = new WebSocket(this.wsUrl); + this.SocketClient.onopen = function (msg) { + console.log(TAG, "connect onopen") + socketCallBack(new Result(SOCKET_CONNECTED, "", null)) + }; + + this.SocketClient.onmessage = function (event) { + console.log(TAG, "connect onmessage data:" + event.data) + if (event && event.data) { + socketCallBack(new Result(SOCKET_EVENT, "", event.data)) + } + }; + + this.SocketClient.onclose = function (msg) { + console.log(TAG, "connect onclose:" + JSON.stringify(msg)) + socketCallBack(new Result(SOCKET_DISCONNECTED, "", msg)) + }; + }, + disconnect: function () { + if (this.SocketClient) { + this.SocketClient.close() + this.SocketClient = null + } + } + }; + window.WebScanController = WebScanController; +})(window); diff --git a/kylin/hwweb/opt/hanvonwebscan/static/js/fabric.js b/kylin/hwweb/opt/hanvonwebscan/static/js/fabric.js index faaf77e..7e74372 100755 --- a/kylin/hwweb/opt/hanvonwebscan/static/js/fabric.js +++ b/kylin/hwweb/opt/hanvonwebscan/static/js/fabric.js @@ -1,29648 +1,29648 @@ -/* build: `node build.js modules=ALL exclude=gestures,accessors requirejs minifier=uglifyjs` */ -/*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */ - -var fabric = fabric || { version: '3.6.0' }; -if (typeof exports !== 'undefined') { - exports.fabric = fabric; -} -/* _AMD_START_ */ -else if (typeof define === 'function' && define.amd) { - define([], function() { return fabric; }); -} -/* _AMD_END_ */ -if (typeof document !== 'undefined' && typeof window !== 'undefined') { - if (document instanceof (typeof HTMLDocument !== 'undefined' ? HTMLDocument : Document)) { - fabric.document = document; - } - else { - fabric.document = document.implementation.createHTMLDocument(''); - } - fabric.window = window; -} -else { - // assume we're running under node.js when document/window are not present - var jsdom = require('jsdom'); - var virtualWindow = new jsdom.JSDOM( - decodeURIComponent('%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E'), - { - features: { - FetchExternalResources: ['img'] - }, - resources: 'usable' - }).window; - fabric.document = virtualWindow.document; - fabric.jsdomImplForWrapper = require('jsdom/lib/jsdom/living/generated/utils').implForWrapper; - fabric.nodeCanvas = require('jsdom/lib/jsdom/utils').Canvas; - fabric.window = virtualWindow; - DOMParser = fabric.window.DOMParser; -} - -/** - * True when in environment that supports touch events - * @type boolean - */ -fabric.isTouchSupported = 'ontouchstart' in fabric.window || 'ontouchstart' in fabric.document || - (fabric.window && fabric.window.navigator && fabric.window.navigator.maxTouchPoints > 0); - -/** - * True when in environment that's probably Node.js - * @type boolean - */ -fabric.isLikelyNode = typeof Buffer !== 'undefined' && - typeof window === 'undefined'; - -/* _FROM_SVG_START_ */ -/** - * Attributes parsed from all SVG elements - * @type array - */ -fabric.SHARED_ATTRIBUTES = [ - 'display', - 'transform', - 'fill', 'fill-opacity', 'fill-rule', - 'opacity', - 'stroke', 'stroke-dasharray', 'stroke-linecap', 'stroke-dashoffset', - 'stroke-linejoin', 'stroke-miterlimit', - 'stroke-opacity', 'stroke-width', - 'id', 'paint-order', 'vector-effect', - 'instantiated_by_use', 'clip-path' -]; -/* _FROM_SVG_END_ */ - -/** - * Pixel per Inch as a default value set to 96. Can be changed for more realistic conversion. - */ -fabric.DPI = 96; -fabric.reNum = '(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)'; -fabric.rePathCommand = /([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/ig; -fabric.reNonWord = /[ \n\.,;!\?\-]/; -fabric.fontPaths = { }; -fabric.iMatrix = [1, 0, 0, 1, 0, 0]; -fabric.svgNS = 'http://www.w3.org/2000/svg'; - -/** - * Pixel limit for cache canvases. 1Mpx , 4Mpx should be fine. - * @since 1.7.14 - * @type Number - * @default - */ -fabric.perfLimitSizeTotal = 2097152; - -/** - * Pixel limit for cache canvases width or height. IE fixes the maximum at 5000 - * @since 1.7.14 - * @type Number - * @default - */ -fabric.maxCacheSideLimit = 4096; - -/** - * Lowest pixel limit for cache canvases, set at 256PX - * @since 1.7.14 - * @type Number - * @default - */ -fabric.minCacheSideLimit = 256; - -/** - * Cache Object for widths of chars in text rendering. - */ -fabric.charWidthsCache = { }; - -/** - * if webgl is enabled and available, textureSize will determine the size - * of the canvas backend - * @since 2.0.0 - * @type Number - * @default - */ -fabric.textureSize = 2048; - -/** - * When 'true', style information is not retained when copy/pasting text, making - * pasted text use destination style. - * Defaults to 'false'. - * @type Boolean - * @default - */ -fabric.disableStyleCopyPaste = false; - -/** - * Enable webgl for filtering picture is available - * A filtering backend will be initialized, this will both take memory and - * time since a default 2048x2048 canvas will be created for the gl context - * @since 2.0.0 - * @type Boolean - * @default - */ -fabric.enableGLFiltering = true; - -/** - * Device Pixel Ratio - * @see https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/HTML-canvas-guide/SettingUptheCanvas/SettingUptheCanvas.html - */ -fabric.devicePixelRatio = fabric.window.devicePixelRatio || - fabric.window.webkitDevicePixelRatio || - fabric.window.mozDevicePixelRatio || - 1; -/** - * Browser-specific constant to adjust CanvasRenderingContext2D.shadowBlur value, - * which is unitless and not rendered equally across browsers. - * - * Values that work quite well (as of October 2017) are: - * - Chrome: 1.5 - * - Edge: 1.75 - * - Firefox: 0.9 - * - Safari: 0.95 - * - * @since 2.0.0 - * @type Number - * @default 1 - */ -fabric.browserShadowBlurConstant = 1; - -/** - * This object contains the result of arc to beizer conversion for faster retrieving if the same arc needs to be converted again. - * It was an internal variable, is accessible since version 2.3.4 - */ -fabric.arcToSegmentsCache = { }; - -/** - * This object keeps the results of the boundsOfCurve calculation mapped by the joined arguments necessary to calculate it. - * It does speed up calculation, if you parse and add always the same paths, but in case of heavy usage of freedrawing - * you do not get any speed benefit and you get a big object in memory. - * The object was a private variable before, while now is appended to the lib so that you have access to it and you - * can eventually clear it. - * It was an internal variable, is accessible since version 2.3.4 - */ -fabric.boundsOfCurveCache = { }; - -/** - * If disabled boundsOfCurveCache is not used. For apps that make heavy usage of pencil drawing probably disabling it is better - * @default true - */ -fabric.cachesBoundsOfCurve = true; - -/** - * Skip performance testing of setupGLContext and force the use of putImageData that seems to be the one that works best on - * Chrome + old hardware. if your users are experiencing empty images after filtering you may try to force this to true - * this has to be set before instantiating the filtering backend ( before filtering the first image ) - * @type Boolean - * @default false - */ -fabric.forceGLPutImageData = false; - -fabric.initFilterBackend = function() { - if (fabric.enableGLFiltering && fabric.isWebglSupported && fabric.isWebglSupported(fabric.textureSize)) { - console.log('max texture size: ' + fabric.maxTextureSize); - return (new fabric.WebglFilterBackend({ tileSize: fabric.textureSize })); - } - else if (fabric.Canvas2dFilterBackend) { - return (new fabric.Canvas2dFilterBackend()); - } -}; - - -if (typeof document !== 'undefined' && typeof window !== 'undefined') { - // ensure globality even if entire library were function wrapped (as in Meteor.js packaging system) - window.fabric = fabric; -} - - -(function() { - - /** - * @private - * @param {String} eventName - * @param {Function} handler - */ - function _removeEventListener(eventName, handler) { - if (!this.__eventListeners[eventName]) { - return; - } - var eventListener = this.__eventListeners[eventName]; - if (handler) { - eventListener[eventListener.indexOf(handler)] = false; - } - else { - fabric.util.array.fill(eventListener, false); - } - } - - /** - * Observes specified event - * @deprecated `observe` deprecated since 0.8.34 (use `on` instead) - * @memberOf fabric.Observable - * @alias on - * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler}) - * @param {Function} handler Function that receives a notification when an event of the specified type occurs - * @return {Self} thisArg - * @chainable - */ - function observe(eventName, handler) { - if (!this.__eventListeners) { - this.__eventListeners = { }; - } - // one object with key/value pairs was passed - if (arguments.length === 1) { - for (var prop in eventName) { - this.on(prop, eventName[prop]); - } - } - else { - if (!this.__eventListeners[eventName]) { - this.__eventListeners[eventName] = []; - } - this.__eventListeners[eventName].push(handler); - } - return this; - } - - /** - * Stops event observing for a particular event handler. Calling this method - * without arguments removes all handlers for all events - * @deprecated `stopObserving` deprecated since 0.8.34 (use `off` instead) - * @memberOf fabric.Observable - * @alias off - * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler}) - * @param {Function} handler Function to be deleted from EventListeners - * @return {Self} thisArg - * @chainable - */ - function stopObserving(eventName, handler) { - if (!this.__eventListeners) { - return this; - } - - // remove all key/value pairs (event name -> event handler) - if (arguments.length === 0) { - for (eventName in this.__eventListeners) { - _removeEventListener.call(this, eventName); - } - } - // one object with key/value pairs was passed - else if (arguments.length === 1 && typeof arguments[0] === 'object') { - for (var prop in eventName) { - _removeEventListener.call(this, prop, eventName[prop]); - } - } - else { - _removeEventListener.call(this, eventName, handler); - } - return this; - } - - /** - * Fires event with an optional options object - * @deprecated `fire` deprecated since 1.0.7 (use `trigger` instead) - * @memberOf fabric.Observable - * @alias trigger - * @param {String} eventName Event name to fire - * @param {Object} [options] Options object - * @return {Self} thisArg - * @chainable - */ - function fire(eventName, options) { - if (!this.__eventListeners) { - return this; - } - - var listenersForEvent = this.__eventListeners[eventName]; - if (!listenersForEvent) { - return this; - } - - for (var i = 0, len = listenersForEvent.length; i < len; i++) { - listenersForEvent[i] && listenersForEvent[i].call(this, options || { }); - } - this.__eventListeners[eventName] = listenersForEvent.filter(function(value) { - return value !== false; - }); - return this; - } - - /** - * @namespace fabric.Observable - * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#events} - * @see {@link http://fabricjs.com/events|Events demo} - */ - fabric.Observable = { - observe: observe, - stopObserving: stopObserving, - fire: fire, - - on: observe, - off: stopObserving, - trigger: fire - }; -})(); - - -/** - * @namespace fabric.Collection - */ -fabric.Collection = { - - _objects: [], - - /** - * Adds objects to collection, Canvas or Group, then renders canvas - * (if `renderOnAddRemove` is not `false`). - * in case of Group no changes to bounding box are made. - * Objects should be instances of (or inherit from) fabric.Object - * Use of this function is highly discouraged for groups. - * you can add a bunch of objects with the add method but then you NEED - * to run a addWithUpdate call for the Group class or position/bbox will be wrong. - * @param {...fabric.Object} object Zero or more fabric instances - * @return {Self} thisArg - * @chainable - */ - add: function () { - this._objects.push.apply(this._objects, arguments); - if (this._onObjectAdded) { - for (var i = 0, length = arguments.length; i < length; i++) { - this._onObjectAdded(arguments[i]); - } - } - this.renderOnAddRemove && this.requestRenderAll(); - return this; - }, - - /** - * Inserts an object into collection at specified index, then renders canvas (if `renderOnAddRemove` is not `false`) - * An object should be an instance of (or inherit from) fabric.Object - * Use of this function is highly discouraged for groups. - * you can add a bunch of objects with the insertAt method but then you NEED - * to run a addWithUpdate call for the Group class or position/bbox will be wrong. - * @param {Object} object Object to insert - * @param {Number} index Index to insert object at - * @param {Boolean} nonSplicing When `true`, no splicing (shifting) of objects occurs - * @return {Self} thisArg - * @chainable - */ - insertAt: function (object, index, nonSplicing) { - var objects = this._objects; - if (nonSplicing) { - objects[index] = object; - } - else { - objects.splice(index, 0, object); - } - this._onObjectAdded && this._onObjectAdded(object); - this.renderOnAddRemove && this.requestRenderAll(); - return this; - }, - - /** - * Removes objects from a collection, then renders canvas (if `renderOnAddRemove` is not `false`) - * @param {...fabric.Object} object Zero or more fabric instances - * @return {Self} thisArg - * @chainable - */ - remove: function() { - var objects = this._objects, - index, somethingRemoved = false; - - for (var i = 0, length = arguments.length; i < length; i++) { - index = objects.indexOf(arguments[i]); - - // only call onObjectRemoved if an object was actually removed - if (index !== -1) { - somethingRemoved = true; - objects.splice(index, 1); - this._onObjectRemoved && this._onObjectRemoved(arguments[i]); - } - } - - this.renderOnAddRemove && somethingRemoved && this.requestRenderAll(); - return this; - }, - - /** - * Executes given function for each object in this group - * @param {Function} callback - * Callback invoked with current object as first argument, - * index - as second and an array of all objects - as third. - * Callback is invoked in a context of Global Object (e.g. `window`) - * when no `context` argument is given - * - * @param {Object} context Context (aka thisObject) - * @return {Self} thisArg - * @chainable - */ - forEachObject: function(callback, context) { - var objects = this.getObjects(); - for (var i = 0, len = objects.length; i < len; i++) { - callback.call(context, objects[i], i, objects); - } - return this; - }, - - /** - * Returns an array of children objects of this instance - * Type parameter introduced in 1.3.10 - * since 2.3.5 this method return always a COPY of the array; - * @param {String} [type] When specified, only objects of this type are returned - * @return {Array} - */ - getObjects: function(type) { - if (typeof type === 'undefined') { - return this._objects.concat(); - } - return this._objects.filter(function(o) { - return o.type === type; - }); - }, - - /** - * Returns object at specified index - * @param {Number} index - * @return {Self} thisArg - */ - item: function (index) { - return this._objects[index]; - }, - - /** - * Returns true if collection contains no objects - * @return {Boolean} true if collection is empty - */ - isEmpty: function () { - return this._objects.length === 0; - }, - - /** - * Returns a size of a collection (i.e: length of an array containing its objects) - * @return {Number} Collection size - */ - size: function() { - return this._objects.length; - }, - - /** - * Returns true if collection contains an object - * @param {Object} object Object to check against - * @return {Boolean} `true` if collection contains an object - */ - contains: function(object) { - return this._objects.indexOf(object) > -1; - }, - - /** - * Returns number representation of a collection complexity - * @return {Number} complexity - */ - complexity: function () { - return this._objects.reduce(function (memo, current) { - memo += current.complexity ? current.complexity() : 0; - return memo; - }, 0); - } -}; - - -/** - * @namespace fabric.CommonMethods - */ -fabric.CommonMethods = { - - /** - * Sets object's properties from options - * @param {Object} [options] Options object - */ - _setOptions: function(options) { - for (var prop in options) { - this.set(prop, options[prop]); - } - }, - - /** - * @private - * @param {Object} [filler] Options object - * @param {String} [property] property to set the Gradient to - */ - _initGradient: function(filler, property) { - if (filler && filler.colorStops && !(filler instanceof fabric.Gradient)) { - this.set(property, new fabric.Gradient(filler)); - } - }, - - /** - * @private - * @param {Object} [filler] Options object - * @param {String} [property] property to set the Pattern to - * @param {Function} [callback] callback to invoke after pattern load - */ - _initPattern: function(filler, property, callback) { - if (filler && filler.source && !(filler instanceof fabric.Pattern)) { - this.set(property, new fabric.Pattern(filler, callback)); - } - else { - callback && callback(); - } - }, - - /** - * @private - * @param {Object} [options] Options object - */ - _initClipping: function(options) { - if (!options.clipTo || typeof options.clipTo !== 'string') { - return; - } - - var functionBody = fabric.util.getFunctionBody(options.clipTo); - if (typeof functionBody !== 'undefined') { - this.clipTo = new Function('ctx', functionBody); - } - }, - - /** - * @private - */ - _setObject: function(obj) { - for (var prop in obj) { - this._set(prop, obj[prop]); - } - }, - - /** - * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`. - * @param {String|Object} key Property name or object (if object, iterate over the object properties) - * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one) - * @return {fabric.Object} thisArg - * @chainable - */ - set: function(key, value) { - if (typeof key === 'object') { - this._setObject(key); - } - else { - if (typeof value === 'function' && key !== 'clipTo') { - this._set(key, value(this.get(key))); - } - else { - this._set(key, value); - } - } - return this; - }, - - _set: function(key, value) { - this[key] = value; - }, - - /** - * Toggles specified property from `true` to `false` or from `false` to `true` - * @param {String} property Property to toggle - * @return {fabric.Object} thisArg - * @chainable - */ - toggle: function(property) { - var value = this.get(property); - if (typeof value === 'boolean') { - this.set(property, !value); - } - return this; - }, - - /** - * Basic getter - * @param {String} property Property name - * @return {*} value of a property - */ - get: function(property) { - return this[property]; - } -}; - - -(function(global) { - - var sqrt = Math.sqrt, - atan2 = Math.atan2, - pow = Math.pow, - PiBy180 = Math.PI / 180, - PiBy2 = Math.PI / 2; - - /** - * @namespace fabric.util - */ - fabric.util = { - - /** - * Calculate the cos of an angle, avoiding returning floats for known results - * @static - * @memberOf fabric.util - * @param {Number} angle the angle in radians or in degree - * @return {Number} - */ - cos: function(angle) { - if (angle === 0) { return 1; } - if (angle < 0) { - // cos(a) = cos(-a) - angle = -angle; - } - var angleSlice = angle / PiBy2; - switch (angleSlice) { - case 1: case 3: return 0; - case 2: return -1; - } - return Math.cos(angle); - }, - - /** - * Calculate the sin of an angle, avoiding returning floats for known results - * @static - * @memberOf fabric.util - * @param {Number} angle the angle in radians or in degree - * @return {Number} - */ - sin: function(angle) { - if (angle === 0) { return 0; } - var angleSlice = angle / PiBy2, sign = 1; - if (angle < 0) { - // sin(-a) = -sin(a) - sign = -1; - } - switch (angleSlice) { - case 1: return sign; - case 2: return 0; - case 3: return -sign; - } - return Math.sin(angle); - }, - - /** - * Removes value from an array. - * Presence of value (and its position in an array) is determined via `Array.prototype.indexOf` - * @static - * @memberOf fabric.util - * @param {Array} array - * @param {*} value - * @return {Array} original array - */ - removeFromArray: function(array, value) { - var idx = array.indexOf(value); - if (idx !== -1) { - array.splice(idx, 1); - } - return array; - }, - - /** - * Returns random number between 2 specified ones. - * @static - * @memberOf fabric.util - * @param {Number} min lower limit - * @param {Number} max upper limit - * @return {Number} random value (between min and max) - */ - getRandomInt: function(min, max) { - return Math.floor(Math.random() * (max - min + 1)) + min; - }, - - /** - * Transforms degrees to radians. - * @static - * @memberOf fabric.util - * @param {Number} degrees value in degrees - * @return {Number} value in radians - */ - degreesToRadians: function(degrees) { - return degrees * PiBy180; - }, - - /** - * Transforms radians to degrees. - * @static - * @memberOf fabric.util - * @param {Number} radians value in radians - * @return {Number} value in degrees - */ - radiansToDegrees: function(radians) { - return radians / PiBy180; - }, - - /** - * Rotates `point` around `origin` with `radians` - * @static - * @memberOf fabric.util - * @param {fabric.Point} point The point to rotate - * @param {fabric.Point} origin The origin of the rotation - * @param {Number} radians The radians of the angle for the rotation - * @return {fabric.Point} The new rotated point - */ - rotatePoint: function(point, origin, radians) { - point.subtractEquals(origin); - var v = fabric.util.rotateVector(point, radians); - return new fabric.Point(v.x, v.y).addEquals(origin); - }, - - /** - * Rotates `vector` with `radians` - * @static - * @memberOf fabric.util - * @param {Object} vector The vector to rotate (x and y) - * @param {Number} radians The radians of the angle for the rotation - * @return {Object} The new rotated point - */ - rotateVector: function(vector, radians) { - var sin = fabric.util.sin(radians), - cos = fabric.util.cos(radians), - rx = vector.x * cos - vector.y * sin, - ry = vector.x * sin + vector.y * cos; - return { - x: rx, - y: ry - }; - }, - - /** - * Apply transform t to point p - * @static - * @memberOf fabric.util - * @param {fabric.Point} p The point to transform - * @param {Array} t The transform - * @param {Boolean} [ignoreOffset] Indicates that the offset should not be applied - * @return {fabric.Point} The transformed point - */ - transformPoint: function(p, t, ignoreOffset) { - if (ignoreOffset) { - return new fabric.Point( - t[0] * p.x + t[2] * p.y, - t[1] * p.x + t[3] * p.y - ); - } - return new fabric.Point( - t[0] * p.x + t[2] * p.y + t[4], - t[1] * p.x + t[3] * p.y + t[5] - ); - }, - - /** - * Returns coordinates of points's bounding rectangle (left, top, width, height) - * @param {Array} points 4 points array - * @param {Array} [transform] an array of 6 numbers representing a 2x3 transform matrix - * @return {Object} Object with left, top, width, height properties - */ - makeBoundingBoxFromPoints: function(points, transform) { - if (transform) { - for (var i = 0; i < points.length; i++) { - points[i] = fabric.util.transformPoint(points[i], transform); - } - } - var xPoints = [points[0].x, points[1].x, points[2].x, points[3].x], - minX = fabric.util.array.min(xPoints), - maxX = fabric.util.array.max(xPoints), - width = maxX - minX, - yPoints = [points[0].y, points[1].y, points[2].y, points[3].y], - minY = fabric.util.array.min(yPoints), - maxY = fabric.util.array.max(yPoints), - height = maxY - minY; - - return { - left: minX, - top: minY, - width: width, - height: height - }; - }, - - /** - * Invert transformation t - * @static - * @memberOf fabric.util - * @param {Array} t The transform - * @return {Array} The inverted transform - */ - invertTransform: function(t) { - var a = 1 / (t[0] * t[3] - t[1] * t[2]), - r = [a * t[3], -a * t[1], -a * t[2], a * t[0]], - o = fabric.util.transformPoint({ x: t[4], y: t[5] }, r, true); - r[4] = -o.x; - r[5] = -o.y; - return r; - }, - - /** - * A wrapper around Number#toFixed, which contrary to native method returns number, not string. - * @static - * @memberOf fabric.util - * @param {Number|String} number number to operate on - * @param {Number} fractionDigits number of fraction digits to "leave" - * @return {Number} - */ - toFixed: function(number, fractionDigits) { - return parseFloat(Number(number).toFixed(fractionDigits)); - }, - - /** - * Converts from attribute value to pixel value if applicable. - * Returns converted pixels or original value not converted. - * @param {Number|String} value number to operate on - * @param {Number} fontSize - * @return {Number|String} - */ - parseUnit: function(value, fontSize) { - var unit = /\D{0,2}$/.exec(value), - number = parseFloat(value); - if (!fontSize) { - fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE; - } - switch (unit[0]) { - case 'mm': - return number * fabric.DPI / 25.4; - - case 'cm': - return number * fabric.DPI / 2.54; - - case 'in': - return number * fabric.DPI; - - case 'pt': - return number * fabric.DPI / 72; // or * 4 / 3 - - case 'pc': - return number * fabric.DPI / 72 * 12; // or * 16 - - case 'em': - return number * fontSize; - - default: - return number; - } - }, - - /** - * Function which always returns `false`. - * @static - * @memberOf fabric.util - * @return {Boolean} - */ - falseFunction: function() { - return false; - }, - - /** - * Returns klass "Class" object of given namespace - * @memberOf fabric.util - * @param {String} type Type of object (eg. 'circle') - * @param {String} namespace Namespace to get klass "Class" object from - * @return {Object} klass "Class" - */ - getKlass: function(type, namespace) { - // capitalize first letter only - type = fabric.util.string.camelize(type.charAt(0).toUpperCase() + type.slice(1)); - return fabric.util.resolveNamespace(namespace)[type]; - }, - - /** - * Returns array of attributes for given svg that fabric parses - * @memberOf fabric.util - * @param {String} type Type of svg element (eg. 'circle') - * @return {Array} string names of supported attributes - */ - getSvgAttributes: function(type) { - var attributes = [ - 'instantiated_by_use', - 'style', - 'id', - 'class' - ]; - switch (type) { - case 'linearGradient': - attributes = attributes.concat(['x1', 'y1', 'x2', 'y2', 'gradientUnits', 'gradientTransform']); - break; - case 'radialGradient': - attributes = attributes.concat(['gradientUnits', 'gradientTransform', 'cx', 'cy', 'r', 'fx', 'fy', 'fr']); - break; - case 'stop': - attributes = attributes.concat(['offset', 'stop-color', 'stop-opacity']); - break; - } - return attributes; - }, - - /** - * Returns object of given namespace - * @memberOf fabric.util - * @param {String} namespace Namespace string e.g. 'fabric.Image.filter' or 'fabric' - * @return {Object} Object for given namespace (default fabric) - */ - resolveNamespace: function(namespace) { - if (!namespace) { - return fabric; - } - - var parts = namespace.split('.'), - len = parts.length, i, - obj = global || fabric.window; - - for (i = 0; i < len; ++i) { - obj = obj[parts[i]]; - } - - return obj; - }, - - /** - * Loads image element from given url and passes it to a callback - * @memberOf fabric.util - * @param {String} url URL representing an image - * @param {Function} callback Callback; invoked with loaded image - * @param {*} [context] Context to invoke callback in - * @param {Object} [crossOrigin] crossOrigin value to set image element to - */ - loadImage: function(url, callback, context, crossOrigin) { - if (!url) { - callback && callback.call(context, url); - return; - } - - var img = fabric.util.createImage(); - - /** @ignore */ - var onLoadCallback = function () { - callback && callback.call(context, img); - img = img.onload = img.onerror = null; - }; - - img.onload = onLoadCallback; - /** @ignore */ - img.onerror = function() { - fabric.log('Error loading ' + img.src); - callback && callback.call(context, null, true); - img = img.onload = img.onerror = null; - }; - - // data-urls appear to be buggy with crossOrigin - // https://github.com/kangax/fabric.js/commit/d0abb90f1cd5c5ef9d2a94d3fb21a22330da3e0a#commitcomment-4513767 - // see https://code.google.com/p/chromium/issues/detail?id=315152 - // https://bugzilla.mozilla.org/show_bug.cgi?id=935069 - if (url.indexOf('data') !== 0 && crossOrigin) { - img.crossOrigin = crossOrigin; - } - - // IE10 / IE11-Fix: SVG contents from data: URI - // will only be available if the IMG is present - // in the DOM (and visible) - if (url.substring(0,14) === 'data:image/svg') { - img.onload = null; - fabric.util.loadImageInDom(img, onLoadCallback); - } - - img.src = url; - }, - - /** - * Attaches SVG image with data: URL to the dom - * @memberOf fabric.util - * @param {Object} img Image object with data:image/svg src - * @param {Function} callback Callback; invoked with loaded image - * @return {Object} DOM element (div containing the SVG image) - */ - loadImageInDom: function(img, onLoadCallback) { - var div = fabric.document.createElement('div'); - div.style.width = div.style.height = '1px'; - div.style.left = div.style.top = '-100%'; - div.style.position = 'absolute'; - div.appendChild(img); - fabric.document.querySelector('body').appendChild(div); - /** - * Wrap in function to: - * 1. Call existing callback - * 2. Cleanup DOM - */ - img.onload = function () { - onLoadCallback(); - div.parentNode.removeChild(div); - div = null; - }; - }, - - /** - * Creates corresponding fabric instances from their object representations - * @static - * @memberOf fabric.util - * @param {Array} objects Objects to enliven - * @param {Function} callback Callback to invoke when all objects are created - * @param {String} namespace Namespace to get klass "Class" object from - * @param {Function} reviver Method for further parsing of object elements, - * called after each fabric object created. - */ - enlivenObjects: function(objects, callback, namespace, reviver) { - objects = objects || []; - - var enlivenedObjects = [], - numLoadedObjects = 0, - numTotalObjects = objects.length; - - function onLoaded() { - if (++numLoadedObjects === numTotalObjects) { - callback && callback(enlivenedObjects.filter(function(obj) { - // filter out undefined objects (objects that gave error) - return obj; - })); - } - } - - if (!numTotalObjects) { - callback && callback(enlivenedObjects); - return; - } - - objects.forEach(function (o, index) { - // if sparse array - if (!o || !o.type) { - onLoaded(); - return; - } - var klass = fabric.util.getKlass(o.type, namespace); - klass.fromObject(o, function (obj, error) { - error || (enlivenedObjects[index] = obj); - reviver && reviver(o, obj, error); - onLoaded(); - }); - }); - }, - - /** - * Create and wait for loading of patterns - * @static - * @memberOf fabric.util - * @param {Array} patterns Objects to enliven - * @param {Function} callback Callback to invoke when all objects are created - * called after each fabric object created. - */ - enlivenPatterns: function(patterns, callback) { - patterns = patterns || []; - - function onLoaded() { - if (++numLoadedPatterns === numPatterns) { - callback && callback(enlivenedPatterns); - } - } - - var enlivenedPatterns = [], - numLoadedPatterns = 0, - numPatterns = patterns.length; - - if (!numPatterns) { - callback && callback(enlivenedPatterns); - return; - } - - patterns.forEach(function (p, index) { - if (p && p.source) { - new fabric.Pattern(p, function(pattern) { - enlivenedPatterns[index] = pattern; - onLoaded(); - }); - } - else { - enlivenedPatterns[index] = p; - onLoaded(); - } - }); - }, - - /** - * Groups SVG elements (usually those retrieved from SVG document) - * @static - * @memberOf fabric.util - * @param {Array} elements SVG elements to group - * @param {Object} [options] Options object - * @param {String} path Value to set sourcePath to - * @return {fabric.Object|fabric.Group} - */ - groupSVGElements: function(elements, options, path) { - var object; - if (elements && elements.length === 1) { - return elements[0]; - } - if (options) { - if (options.width && options.height) { - options.centerPoint = { - x: options.width / 2, - y: options.height / 2 - }; - } - else { - delete options.width; - delete options.height; - } - } - object = new fabric.Group(elements, options); - if (typeof path !== 'undefined') { - object.sourcePath = path; - } - return object; - }, - - /** - * Populates an object with properties of another object - * @static - * @memberOf fabric.util - * @param {Object} source Source object - * @param {Object} destination Destination object - * @return {Array} properties Properties names to include - */ - populateWithProperties: function(source, destination, properties) { - if (properties && Object.prototype.toString.call(properties) === '[object Array]') { - for (var i = 0, len = properties.length; i < len; i++) { - if (properties[i] in source) { - destination[properties[i]] = source[properties[i]]; - } - } - } - }, - - /** - * Draws a dashed line between two points - * - * This method is used to draw dashed line around selection area. - * See dotted stroke in canvas - * - * @param {CanvasRenderingContext2D} ctx context - * @param {Number} x start x coordinate - * @param {Number} y start y coordinate - * @param {Number} x2 end x coordinate - * @param {Number} y2 end y coordinate - * @param {Array} da dash array pattern - */ - drawDashedLine: function(ctx, x, y, x2, y2, da) { - var dx = x2 - x, - dy = y2 - y, - len = sqrt(dx * dx + dy * dy), - rot = atan2(dy, dx), - dc = da.length, - di = 0, - draw = true; - - ctx.save(); - ctx.translate(x, y); - ctx.moveTo(0, 0); - ctx.rotate(rot); - - x = 0; - while (len > x) { - x += da[di++ % dc]; - if (x > len) { - x = len; - } - ctx[draw ? 'lineTo' : 'moveTo'](x, 0); - draw = !draw; - } - - ctx.restore(); - }, - - /** - * Creates canvas element - * @static - * @memberOf fabric.util - * @return {CanvasElement} initialized canvas element - */ - createCanvasElement: function() { - return fabric.document.createElement('canvas'); - }, - - /** - * Creates a canvas element that is a copy of another and is also painted - * @param {CanvasElement} canvas to copy size and content of - * @static - * @memberOf fabric.util - * @return {CanvasElement} initialized canvas element - */ - copyCanvasElement: function(canvas) { - var newCanvas = fabric.util.createCanvasElement(); - newCanvas.width = canvas.width; - newCanvas.height = canvas.height; - newCanvas.getContext('2d').drawImage(canvas, 0, 0); - return newCanvas; - }, - - /** - * since 2.6.0 moved from canvas instance to utility. - * @param {CanvasElement} canvasEl to copy size and content of - * @param {String} format 'jpeg' or 'png', in some browsers 'webp' is ok too - * @param {Number} quality <= 1 and > 0 - * @static - * @memberOf fabric.util - * @return {String} data url - */ - toDataURL: function(canvasEl, format, quality) { - return canvasEl.toDataURL('image/' + format, quality); - }, - - /** - * Creates image element (works on client and node) - * @static - * @memberOf fabric.util - * @return {HTMLImageElement} HTML image element - */ - createImage: function() { - return fabric.document.createElement('img'); - }, - - /** - * @static - * @memberOf fabric.util - * @deprecated since 2.0.0 - * @param {fabric.Object} receiver Object implementing `clipTo` method - * @param {CanvasRenderingContext2D} ctx Context to clip - */ - clipContext: function(receiver, ctx) { - ctx.save(); - ctx.beginPath(); - receiver.clipTo(ctx); - ctx.clip(); - }, - - /** - * Multiply matrix A by matrix B to nest transformations - * @static - * @memberOf fabric.util - * @param {Array} a First transformMatrix - * @param {Array} b Second transformMatrix - * @param {Boolean} is2x2 flag to multiply matrices as 2x2 matrices - * @return {Array} The product of the two transform matrices - */ - multiplyTransformMatrices: function(a, b, is2x2) { - // Matrix multiply a * b - return [ - a[0] * b[0] + a[2] * b[1], - a[1] * b[0] + a[3] * b[1], - a[0] * b[2] + a[2] * b[3], - a[1] * b[2] + a[3] * b[3], - is2x2 ? 0 : a[0] * b[4] + a[2] * b[5] + a[4], - is2x2 ? 0 : a[1] * b[4] + a[3] * b[5] + a[5] - ]; - }, - - /** - * Decomposes standard 2x3 matrix into transform components - * @static - * @memberOf fabric.util - * @param {Array} a transformMatrix - * @return {Object} Components of transform - */ - qrDecompose: function(a) { - var angle = atan2(a[1], a[0]), - denom = pow(a[0], 2) + pow(a[1], 2), - scaleX = sqrt(denom), - scaleY = (a[0] * a[3] - a[2] * a [1]) / scaleX, - skewX = atan2(a[0] * a[2] + a[1] * a [3], denom); - return { - angle: angle / PiBy180, - scaleX: scaleX, - scaleY: scaleY, - skewX: skewX / PiBy180, - skewY: 0, - translateX: a[4], - translateY: a[5] - }; - }, - - /** - * Returns a transform matrix starting from an object of the same kind of - * the one returned from qrDecompose, useful also if you want to calculate some - * transformations from an object that is not enlived yet - * @static - * @memberOf fabric.util - * @param {Object} options - * @param {Number} [options.angle] angle in degrees - * @return {Number[]} transform matrix - */ - calcRotateMatrix: function(options) { - if (!options.angle) { - return fabric.iMatrix.concat(); - } - var theta = fabric.util.degreesToRadians(options.angle), - cos = fabric.util.cos(theta), - sin = fabric.util.sin(theta); - return [cos, sin, -sin, cos, 0, 0]; - }, - - /** - * Returns a transform matrix starting from an object of the same kind of - * the one returned from qrDecompose, useful also if you want to calculate some - * transformations from an object that is not enlived yet. - * is called DimensionsTransformMatrix because those properties are the one that influence - * the size of the resulting box of the object. - * @static - * @memberOf fabric.util - * @param {Object} options - * @param {Number} [options.scaleX] - * @param {Number} [options.scaleY] - * @param {Boolean} [options.flipX] - * @param {Boolean} [options.flipY] - * @param {Number} [options.skewX] - * @param {Number} [options.skewX] - * @return {Number[]} transform matrix - */ - calcDimensionsMatrix: function(options) { - var scaleX = typeof options.scaleX === 'undefined' ? 1 : options.scaleX, - scaleY = typeof options.scaleY === 'undefined' ? 1 : options.scaleY, - scaleMatrix = [ - options.flipX ? -scaleX : scaleX, - 0, - 0, - options.flipY ? -scaleY : scaleY, - 0, - 0], - multiply = fabric.util.multiplyTransformMatrices, - degreesToRadians = fabric.util.degreesToRadians; - if (options.skewX) { - scaleMatrix = multiply( - scaleMatrix, - [1, 0, Math.tan(degreesToRadians(options.skewX)), 1], - true); - } - if (options.skewY) { - scaleMatrix = multiply( - scaleMatrix, - [1, Math.tan(degreesToRadians(options.skewY)), 0, 1], - true); - } - return scaleMatrix; - }, - - /** - * Returns a transform matrix starting from an object of the same kind of - * the one returned from qrDecompose, useful also if you want to calculate some - * transformations from an object that is not enlived yet - * @static - * @memberOf fabric.util - * @param {Object} options - * @param {Number} [options.angle] - * @param {Number} [options.scaleX] - * @param {Number} [options.scaleY] - * @param {Boolean} [options.flipX] - * @param {Boolean} [options.flipY] - * @param {Number} [options.skewX] - * @param {Number} [options.skewX] - * @param {Number} [options.translateX] - * @param {Number} [options.translateY] - * @return {Number[]} transform matrix - */ - composeMatrix: function(options) { - var matrix = [1, 0, 0, 1, options.translateX || 0, options.translateY || 0], - multiply = fabric.util.multiplyTransformMatrices; - if (options.angle) { - matrix = multiply(matrix, fabric.util.calcRotateMatrix(options)); - } - if (options.scaleX || options.scaleY || options.skewX || options.skewY || options.flipX || options.flipY) { - matrix = multiply(matrix, fabric.util.calcDimensionsMatrix(options)); - } - return matrix; - }, - - /** - * Returns a transform matrix that has the same effect of scaleX, scaleY and skewX. - * Is deprecated for composeMatrix. Please do not use it. - * @static - * @deprecated since 3.4.0 - * @memberOf fabric.util - * @param {Number} scaleX - * @param {Number} scaleY - * @param {Number} skewX - * @return {Number[]} transform matrix - */ - customTransformMatrix: function(scaleX, scaleY, skewX) { - return fabric.util.composeMatrix({ scaleX: scaleX, scaleY: scaleY, skewX: skewX }); - }, - - /** - * reset an object transform state to neutral. Top and left are not accounted for - * @static - * @memberOf fabric.util - * @param {fabric.Object} target object to transform - */ - resetObjectTransform: function (target) { - target.scaleX = 1; - target.scaleY = 1; - target.skewX = 0; - target.skewY = 0; - target.flipX = false; - target.flipY = false; - target.rotate(0); - }, - - /** - * Extract Object transform values - * @static - * @memberOf fabric.util - * @param {fabric.Object} target object to read from - * @return {Object} Components of transform - */ - saveObjectTransform: function (target) { - return { - scaleX: target.scaleX, - scaleY: target.scaleY, - skewX: target.skewX, - skewY: target.skewY, - angle: target.angle, - left: target.left, - flipX: target.flipX, - flipY: target.flipY, - top: target.top - }; - }, - - /** - * Returns string representation of function body - * @param {Function} fn Function to get body of - * @return {String} Function body - */ - getFunctionBody: function(fn) { - return (String(fn).match(/function[^{]*\{([\s\S]*)\}/) || {})[1]; - }, - - /** - * Returns true if context has transparent pixel - * at specified location (taking tolerance into account) - * @param {CanvasRenderingContext2D} ctx context - * @param {Number} x x coordinate - * @param {Number} y y coordinate - * @param {Number} tolerance Tolerance - */ - isTransparent: function(ctx, x, y, tolerance) { - - // If tolerance is > 0 adjust start coords to take into account. - // If moves off Canvas fix to 0 - if (tolerance > 0) { - if (x > tolerance) { - x -= tolerance; - } - else { - x = 0; - } - if (y > tolerance) { - y -= tolerance; - } - else { - y = 0; - } - } - - var _isTransparent = true, i, temp, - imageData = ctx.getImageData(x, y, (tolerance * 2) || 1, (tolerance * 2) || 1), - l = imageData.data.length; - - // Split image data - for tolerance > 1, pixelDataSize = 4; - for (i = 3; i < l; i += 4) { - temp = imageData.data[i]; - _isTransparent = temp <= 0; - if (_isTransparent === false) { - break; // Stop if colour found - } - } - - imageData = null; - - return _isTransparent; - }, - - /** - * Parse preserveAspectRatio attribute from element - * @param {string} attribute to be parsed - * @return {Object} an object containing align and meetOrSlice attribute - */ - parsePreserveAspectRatioAttribute: function(attribute) { - var meetOrSlice = 'meet', alignX = 'Mid', alignY = 'Mid', - aspectRatioAttrs = attribute.split(' '), align; - - if (aspectRatioAttrs && aspectRatioAttrs.length) { - meetOrSlice = aspectRatioAttrs.pop(); - if (meetOrSlice !== 'meet' && meetOrSlice !== 'slice') { - align = meetOrSlice; - meetOrSlice = 'meet'; - } - else if (aspectRatioAttrs.length) { - align = aspectRatioAttrs.pop(); - } - } - //divide align in alignX and alignY - alignX = align !== 'none' ? align.slice(1, 4) : 'none'; - alignY = align !== 'none' ? align.slice(5, 8) : 'none'; - return { - meetOrSlice: meetOrSlice, - alignX: alignX, - alignY: alignY - }; - }, - - /** - * Clear char widths cache for the given font family or all the cache if no - * fontFamily is specified. - * Use it if you know you are loading fonts in a lazy way and you are not waiting - * for custom fonts to load properly when adding text objects to the canvas. - * If a text object is added when its own font is not loaded yet, you will get wrong - * measurement and so wrong bounding boxes. - * After the font cache is cleared, either change the textObject text content or call - * initDimensions() to trigger a recalculation - * @memberOf fabric.util - * @param {String} [fontFamily] font family to clear - */ - clearFabricFontCache: function(fontFamily) { - fontFamily = (fontFamily || '').toLowerCase(); - if (!fontFamily) { - fabric.charWidthsCache = { }; - } - else if (fabric.charWidthsCache[fontFamily]) { - delete fabric.charWidthsCache[fontFamily]; - } - }, - - /** - * Given current aspect ratio, determines the max width and height that can - * respect the total allowed area for the cache. - * @memberOf fabric.util - * @param {Number} ar aspect ratio - * @param {Number} maximumArea Maximum area you want to achieve - * @return {Object.x} Limited dimensions by X - * @return {Object.y} Limited dimensions by Y - */ - limitDimsByArea: function(ar, maximumArea) { - var roughWidth = Math.sqrt(maximumArea * ar), - perfLimitSizeY = Math.floor(maximumArea / roughWidth); - return { x: Math.floor(roughWidth), y: perfLimitSizeY }; - }, - - capValue: function(min, value, max) { - return Math.max(min, Math.min(value, max)); - }, - - findScaleToFit: function(source, destination) { - return Math.min(destination.width / source.width, destination.height / source.height); - }, - - findScaleToCover: function(source, destination) { - return Math.max(destination.width / source.width, destination.height / source.height); - }, - - /** - * given an array of 6 number returns something like `"matrix(...numbers)"` - * @memberOf fabric.util - * @param {Array} trasnform an array with 6 numbers - * @return {String} transform matrix for svg - * @return {Object.y} Limited dimensions by Y - */ - matrixToSVG: function(transform) { - return 'matrix(' + transform.map(function(value) { - return fabric.util.toFixed(value, fabric.Object.NUM_FRACTION_DIGITS); - }).join(' ') + ')'; - } - }; -})(typeof exports !== 'undefined' ? exports : this); - - -(function() { - - var _join = Array.prototype.join; - - /* Adapted from http://dxr.mozilla.org/mozilla-central/source/content/svg/content/src/nsSVGPathDataParser.cpp - * by Andrea Bogazzi code is under MPL. if you don't have a copy of the license you can take it here - * http://mozilla.org/MPL/2.0/ - */ - function arcToSegments(toX, toY, rx, ry, large, sweep, rotateX) { - var argsString = _join.call(arguments); - if (fabric.arcToSegmentsCache[argsString]) { - return fabric.arcToSegmentsCache[argsString]; - } - - var PI = Math.PI, th = rotateX * PI / 180, - sinTh = fabric.util.sin(th), - cosTh = fabric.util.cos(th), - fromX = 0, fromY = 0; - - rx = Math.abs(rx); - ry = Math.abs(ry); - - var px = -cosTh * toX * 0.5 - sinTh * toY * 0.5, - py = -cosTh * toY * 0.5 + sinTh * toX * 0.5, - rx2 = rx * rx, ry2 = ry * ry, py2 = py * py, px2 = px * px, - pl = rx2 * ry2 - rx2 * py2 - ry2 * px2, - root = 0; - - if (pl < 0) { - var s = Math.sqrt(1 - pl / (rx2 * ry2)); - rx *= s; - ry *= s; - } - else { - root = (large === sweep ? -1.0 : 1.0) * - Math.sqrt( pl / (rx2 * py2 + ry2 * px2)); - } - - var cx = root * rx * py / ry, - cy = -root * ry * px / rx, - cx1 = cosTh * cx - sinTh * cy + toX * 0.5, - cy1 = sinTh * cx + cosTh * cy + toY * 0.5, - mTheta = calcVectorAngle(1, 0, (px - cx) / rx, (py - cy) / ry), - dtheta = calcVectorAngle((px - cx) / rx, (py - cy) / ry, (-px - cx) / rx, (-py - cy) / ry); - - if (sweep === 0 && dtheta > 0) { - dtheta -= 2 * PI; - } - else if (sweep === 1 && dtheta < 0) { - dtheta += 2 * PI; - } - - // Convert into cubic bezier segments <= 90deg - var segments = Math.ceil(Math.abs(dtheta / PI * 2)), - result = [], mDelta = dtheta / segments, - mT = 8 / 3 * Math.sin(mDelta / 4) * Math.sin(mDelta / 4) / Math.sin(mDelta / 2), - th3 = mTheta + mDelta; - - for (var i = 0; i < segments; i++) { - result[i] = segmentToBezier(mTheta, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY); - fromX = result[i][4]; - fromY = result[i][5]; - mTheta = th3; - th3 += mDelta; - } - fabric.arcToSegmentsCache[argsString] = result; - return result; - } - - function segmentToBezier(th2, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY) { - var costh2 = fabric.util.cos(th2), - sinth2 = fabric.util.sin(th2), - costh3 = fabric.util.cos(th3), - sinth3 = fabric.util.sin(th3), - toX = cosTh * rx * costh3 - sinTh * ry * sinth3 + cx1, - toY = sinTh * rx * costh3 + cosTh * ry * sinth3 + cy1, - cp1X = fromX + mT * ( -cosTh * rx * sinth2 - sinTh * ry * costh2), - cp1Y = fromY + mT * ( -sinTh * rx * sinth2 + cosTh * ry * costh2), - cp2X = toX + mT * ( cosTh * rx * sinth3 + sinTh * ry * costh3), - cp2Y = toY + mT * ( sinTh * rx * sinth3 - cosTh * ry * costh3); - - return [ - cp1X, cp1Y, - cp2X, cp2Y, - toX, toY - ]; - } - - /* - * Private - */ - function calcVectorAngle(ux, uy, vx, vy) { - var ta = Math.atan2(uy, ux), - tb = Math.atan2(vy, vx); - if (tb >= ta) { - return tb - ta; - } - else { - return 2 * Math.PI - (ta - tb); - } - } - - /** - * Draws arc - * @param {CanvasRenderingContext2D} ctx - * @param {Number} fx - * @param {Number} fy - * @param {Array} coords - */ - fabric.util.drawArc = function(ctx, fx, fy, coords) { - var rx = coords[0], - ry = coords[1], - rot = coords[2], - large = coords[3], - sweep = coords[4], - tx = coords[5], - ty = coords[6], - segs = [[], [], [], []], - segsNorm = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot); - - for (var i = 0, len = segsNorm.length; i < len; i++) { - segs[i][0] = segsNorm[i][0] + fx; - segs[i][1] = segsNorm[i][1] + fy; - segs[i][2] = segsNorm[i][2] + fx; - segs[i][3] = segsNorm[i][3] + fy; - segs[i][4] = segsNorm[i][4] + fx; - segs[i][5] = segsNorm[i][5] + fy; - ctx.bezierCurveTo.apply(ctx, segs[i]); - } - }; - - /** - * Calculate bounding box of a elliptic-arc - * @param {Number} fx start point of arc - * @param {Number} fy - * @param {Number} rx horizontal radius - * @param {Number} ry vertical radius - * @param {Number} rot angle of horizontal axe - * @param {Number} large 1 or 0, whatever the arc is the big or the small on the 2 points - * @param {Number} sweep 1 or 0, 1 clockwise or counterclockwise direction - * @param {Number} tx end point of arc - * @param {Number} ty - */ - fabric.util.getBoundsOfArc = function(fx, fy, rx, ry, rot, large, sweep, tx, ty) { - - var fromX = 0, fromY = 0, bound, bounds = [], - segs = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot); - - for (var i = 0, len = segs.length; i < len; i++) { - bound = getBoundsOfCurve(fromX, fromY, segs[i][0], segs[i][1], segs[i][2], segs[i][3], segs[i][4], segs[i][5]); - bounds.push({ x: bound[0].x + fx, y: bound[0].y + fy }); - bounds.push({ x: bound[1].x + fx, y: bound[1].y + fy }); - fromX = segs[i][4]; - fromY = segs[i][5]; - } - return bounds; - }; - - /** - * Calculate bounding box of a beziercurve - * @param {Number} x0 starting point - * @param {Number} y0 - * @param {Number} x1 first control point - * @param {Number} y1 - * @param {Number} x2 secondo control point - * @param {Number} y2 - * @param {Number} x3 end of beizer - * @param {Number} y3 - */ - // taken from http://jsbin.com/ivomiq/56/edit no credits available for that. - function getBoundsOfCurve(x0, y0, x1, y1, x2, y2, x3, y3) { - var argsString; - if (fabric.cachesBoundsOfCurve) { - argsString = _join.call(arguments); - if (fabric.boundsOfCurveCache[argsString]) { - return fabric.boundsOfCurveCache[argsString]; - } - } - - var sqrt = Math.sqrt, - min = Math.min, max = Math.max, - abs = Math.abs, tvalues = [], - bounds = [[], []], - a, b, c, t, t1, t2, b2ac, sqrtb2ac; - - b = 6 * x0 - 12 * x1 + 6 * x2; - a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3; - c = 3 * x1 - 3 * x0; - - for (var i = 0; i < 2; ++i) { - if (i > 0) { - b = 6 * y0 - 12 * y1 + 6 * y2; - a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3; - c = 3 * y1 - 3 * y0; - } - - if (abs(a) < 1e-12) { - if (abs(b) < 1e-12) { - continue; - } - t = -c / b; - if (0 < t && t < 1) { - tvalues.push(t); - } - continue; - } - b2ac = b * b - 4 * c * a; - if (b2ac < 0) { - continue; - } - sqrtb2ac = sqrt(b2ac); - t1 = (-b + sqrtb2ac) / (2 * a); - if (0 < t1 && t1 < 1) { - tvalues.push(t1); - } - t2 = (-b - sqrtb2ac) / (2 * a); - if (0 < t2 && t2 < 1) { - tvalues.push(t2); - } - } - - var x, y, j = tvalues.length, jlen = j, mt; - while (j--) { - t = tvalues[j]; - mt = 1 - t; - x = (mt * mt * mt * x0) + (3 * mt * mt * t * x1) + (3 * mt * t * t * x2) + (t * t * t * x3); - bounds[0][j] = x; - - y = (mt * mt * mt * y0) + (3 * mt * mt * t * y1) + (3 * mt * t * t * y2) + (t * t * t * y3); - bounds[1][j] = y; - } - - bounds[0][jlen] = x0; - bounds[1][jlen] = y0; - bounds[0][jlen + 1] = x3; - bounds[1][jlen + 1] = y3; - var result = [ - { - x: min.apply(null, bounds[0]), - y: min.apply(null, bounds[1]) - }, - { - x: max.apply(null, bounds[0]), - y: max.apply(null, bounds[1]) - } - ]; - if (fabric.cachesBoundsOfCurve) { - fabric.boundsOfCurveCache[argsString] = result; - } - return result; - } - - fabric.util.getBoundsOfCurve = getBoundsOfCurve; - -})(); - - -(function() { - - var slice = Array.prototype.slice; - - /** - * Invokes method on all items in a given array - * @memberOf fabric.util.array - * @param {Array} array Array to iterate over - * @param {String} method Name of a method to invoke - * @return {Array} - */ - function invoke(array, method) { - var args = slice.call(arguments, 2), result = []; - for (var i = 0, len = array.length; i < len; i++) { - result[i] = args.length ? array[i][method].apply(array[i], args) : array[i][method].call(array[i]); - } - return result; - } - - /** - * Finds maximum value in array (not necessarily "first" one) - * @memberOf fabric.util.array - * @param {Array} array Array to iterate over - * @param {String} byProperty - * @return {*} - */ - function max(array, byProperty) { - return find(array, byProperty, function(value1, value2) { - return value1 >= value2; - }); - } - - /** - * Finds minimum value in array (not necessarily "first" one) - * @memberOf fabric.util.array - * @param {Array} array Array to iterate over - * @param {String} byProperty - * @return {*} - */ - function min(array, byProperty) { - return find(array, byProperty, function(value1, value2) { - return value1 < value2; - }); - } - - /** - * @private - */ - function fill(array, value) { - var k = array.length; - while (k--) { - array[k] = value; - } - return array; - } - - /** - * @private - */ - function find(array, byProperty, condition) { - if (!array || array.length === 0) { - return; - } - - var i = array.length - 1, - result = byProperty ? array[i][byProperty] : array[i]; - if (byProperty) { - while (i--) { - if (condition(array[i][byProperty], result)) { - result = array[i][byProperty]; - } - } - } - else { - while (i--) { - if (condition(array[i], result)) { - result = array[i]; - } - } - } - return result; - } - - /** - * @namespace fabric.util.array - */ - fabric.util.array = { - fill: fill, - invoke: invoke, - min: min, - max: max - }; - -})(); - - -(function() { - /** - * Copies all enumerable properties of one js object to another - * this does not and cannot compete with generic utils. - * Does not clone or extend fabric.Object subclasses. - * This is mostly for internal use and has extra handling for fabricJS objects - * it skips the canvas property in deep cloning. - * @memberOf fabric.util.object - * @param {Object} destination Where to copy to - * @param {Object} source Where to copy from - * @return {Object} - */ - - function extend(destination, source, deep) { - // JScript DontEnum bug is not taken care of - // the deep clone is for internal use, is not meant to avoid - // javascript traps or cloning html element or self referenced objects. - if (deep) { - if (!fabric.isLikelyNode && source instanceof Element) { - // avoid cloning deep images, canvases, - destination = source; - } - else if (source instanceof Array) { - destination = []; - for (var i = 0, len = source.length; i < len; i++) { - destination[i] = extend({ }, source[i], deep); - } - } - else if (source && typeof source === 'object') { - for (var property in source) { - if (property === 'canvas') { - destination[property] = extend({ }, source[property]); - } - else if (source.hasOwnProperty(property)) { - destination[property] = extend({ }, source[property], deep); - } - } - } - else { - // this sounds odd for an extend but is ok for recursive use - destination = source; - } - } - else { - for (var property in source) { - destination[property] = source[property]; - } - } - return destination; - } - - /** - * Creates an empty object and copies all enumerable properties of another object to it - * @memberOf fabric.util.object - * TODO: this function return an empty object if you try to clone null - * @param {Object} object Object to clone - * @return {Object} - */ - function clone(object, deep) { - return extend({ }, object, deep); - } - - /** @namespace fabric.util.object */ - fabric.util.object = { - extend: extend, - clone: clone - }; - fabric.util.object.extend(fabric.util, fabric.Observable); -})(); - - -(function() { - - /** - * Camelizes a string - * @memberOf fabric.util.string - * @param {String} string String to camelize - * @return {String} Camelized version of a string - */ - function camelize(string) { - return string.replace(/-+(.)?/g, function(match, character) { - return character ? character.toUpperCase() : ''; - }); - } - - /** - * Capitalizes a string - * @memberOf fabric.util.string - * @param {String} string String to capitalize - * @param {Boolean} [firstLetterOnly] If true only first letter is capitalized - * and other letters stay untouched, if false first letter is capitalized - * and other letters are converted to lowercase. - * @return {String} Capitalized version of a string - */ - function capitalize(string, firstLetterOnly) { - return string.charAt(0).toUpperCase() + - (firstLetterOnly ? string.slice(1) : string.slice(1).toLowerCase()); - } - - /** - * Escapes XML in a string - * @memberOf fabric.util.string - * @param {String} string String to escape - * @return {String} Escaped version of a string - */ - function escapeXml(string) { - return string.replace(/&/g, '&') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(//g, '>'); - } - - /** - * Divide a string in the user perceived single units - * @memberOf fabric.util.string - * @param {String} textstring String to escape - * @return {Array} array containing the graphemes - */ - function graphemeSplit(textstring) { - var i = 0, chr, graphemes = []; - for (i = 0, chr; i < textstring.length; i++) { - if ((chr = getWholeChar(textstring, i)) === false) { - continue; - } - graphemes.push(chr); - } - return graphemes; - } - - // taken from mdn in the charAt doc page. - function getWholeChar(str, i) { - var code = str.charCodeAt(i); - - if (isNaN(code)) { - return ''; // Position not found - } - if (code < 0xD800 || code > 0xDFFF) { - return str.charAt(i); - } - - // High surrogate (could change last hex to 0xDB7F to treat high private - // surrogates as single characters) - if (0xD800 <= code && code <= 0xDBFF) { - if (str.length <= (i + 1)) { - throw 'High surrogate without following low surrogate'; - } - var next = str.charCodeAt(i + 1); - if (0xDC00 > next || next > 0xDFFF) { - throw 'High surrogate without following low surrogate'; - } - return str.charAt(i) + str.charAt(i + 1); - } - // Low surrogate (0xDC00 <= code && code <= 0xDFFF) - if (i === 0) { - throw 'Low surrogate without preceding high surrogate'; - } - var prev = str.charCodeAt(i - 1); - - // (could change last hex to 0xDB7F to treat high private - // surrogates as single characters) - if (0xD800 > prev || prev > 0xDBFF) { - throw 'Low surrogate without preceding high surrogate'; - } - // We can pass over low surrogates now as the second component - // in a pair which we have already processed - return false; - } - - - /** - * String utilities - * @namespace fabric.util.string - */ - fabric.util.string = { - camelize: camelize, - capitalize: capitalize, - escapeXml: escapeXml, - graphemeSplit: graphemeSplit - }; -})(); - - -(function() { - - var slice = Array.prototype.slice, emptyFunction = function() { }, - - IS_DONTENUM_BUGGY = (function() { - for (var p in { toString: 1 }) { - if (p === 'toString') { - return false; - } - } - return true; - })(), - - /** @ignore */ - addMethods = function(klass, source, parent) { - for (var property in source) { - - if (property in klass.prototype && - typeof klass.prototype[property] === 'function' && - (source[property] + '').indexOf('callSuper') > -1) { - - klass.prototype[property] = (function(property) { - return function() { - - var superclass = this.constructor.superclass; - this.constructor.superclass = parent; - var returnValue = source[property].apply(this, arguments); - this.constructor.superclass = superclass; - - if (property !== 'initialize') { - return returnValue; - } - }; - })(property); - } - else { - klass.prototype[property] = source[property]; - } - - if (IS_DONTENUM_BUGGY) { - if (source.toString !== Object.prototype.toString) { - klass.prototype.toString = source.toString; - } - if (source.valueOf !== Object.prototype.valueOf) { - klass.prototype.valueOf = source.valueOf; - } - } - } - }; - - function Subclass() { } - - function callSuper(methodName) { - var parentMethod = null, - _this = this; - - // climb prototype chain to find method not equal to callee's method - while (_this.constructor.superclass) { - var superClassMethod = _this.constructor.superclass.prototype[methodName]; - if (_this[methodName] !== superClassMethod) { - parentMethod = superClassMethod; - break; - } - // eslint-disable-next-line - _this = _this.constructor.superclass.prototype; - } - - if (!parentMethod) { - return console.log('tried to callSuper ' + methodName + ', method not found in prototype chain', this); - } - - return (arguments.length > 1) - ? parentMethod.apply(this, slice.call(arguments, 1)) - : parentMethod.call(this); - } - - /** - * Helper for creation of "classes". - * @memberOf fabric.util - * @param {Function} [parent] optional "Class" to inherit from - * @param {Object} [properties] Properties shared by all instances of this class - * (be careful modifying objects defined here as this would affect all instances) - */ - function createClass() { - var parent = null, - properties = slice.call(arguments, 0); - - if (typeof properties[0] === 'function') { - parent = properties.shift(); - } - function klass() { - this.initialize.apply(this, arguments); - } - - klass.superclass = parent; - klass.subclasses = []; - - if (parent) { - Subclass.prototype = parent.prototype; - klass.prototype = new Subclass(); - parent.subclasses.push(klass); - } - for (var i = 0, length = properties.length; i < length; i++) { - addMethods(klass, properties[i], parent); - } - if (!klass.prototype.initialize) { - klass.prototype.initialize = emptyFunction; - } - klass.prototype.constructor = klass; - klass.prototype.callSuper = callSuper; - return klass; - } - - fabric.util.createClass = createClass; -})(); - - -(function () { - // since ie10 or ie9 can use addEventListener but they do not support options, i need to check - var couldUseAttachEvent = !!fabric.document.createElement('div').attachEvent; - /** - * Adds an event listener to an element - * @function - * @memberOf fabric.util - * @param {HTMLElement} element - * @param {String} eventName - * @param {Function} handler - */ - fabric.util.addListener = function(element, eventName, handler, options) { - element && element.addEventListener(eventName, handler, couldUseAttachEvent ? false : options); - }; - - /** - * Removes an event listener from an element - * @function - * @memberOf fabric.util - * @param {HTMLElement} element - * @param {String} eventName - * @param {Function} handler - */ - fabric.util.removeListener = function(element, eventName, handler, options) { - element && element.removeEventListener(eventName, handler, couldUseAttachEvent ? false : options); - }; - - function getTouchInfo(event) { - var touchProp = event.changedTouches; - if (touchProp && touchProp[0]) { - return touchProp[0]; - } - return event; - } - - fabric.util.getPointer = function(event) { - var element = event.target, - scroll = fabric.util.getScrollLeftTop(element), - _evt = getTouchInfo(event); - return { - x: _evt.clientX + scroll.left, - y: _evt.clientY + scroll.top - }; - }; -})(); - - -(function () { - - /** - * Cross-browser wrapper for setting element's style - * @memberOf fabric.util - * @param {HTMLElement} element - * @param {Object} styles - * @return {HTMLElement} Element that was passed as a first argument - */ - function setStyle(element, styles) { - var elementStyle = element.style; - if (!elementStyle) { - return element; - } - if (typeof styles === 'string') { - element.style.cssText += ';' + styles; - return styles.indexOf('opacity') > -1 - ? setOpacity(element, styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) - : element; - } - for (var property in styles) { - if (property === 'opacity') { - setOpacity(element, styles[property]); - } - else { - var normalizedProperty = (property === 'float' || property === 'cssFloat') - ? (typeof elementStyle.styleFloat === 'undefined' ? 'cssFloat' : 'styleFloat') - : property; - elementStyle[normalizedProperty] = styles[property]; - } - } - return element; - } - - var parseEl = fabric.document.createElement('div'), - supportsOpacity = typeof parseEl.style.opacity === 'string', - supportsFilters = typeof parseEl.style.filter === 'string', - reOpacity = /alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/, - - /** @ignore */ - setOpacity = function (element) { return element; }; - - if (supportsOpacity) { - /** @ignore */ - setOpacity = function(element, value) { - element.style.opacity = value; - return element; - }; - } - else if (supportsFilters) { - /** @ignore */ - setOpacity = function(element, value) { - var es = element.style; - if (element.currentStyle && !element.currentStyle.hasLayout) { - es.zoom = 1; - } - if (reOpacity.test(es.filter)) { - value = value >= 0.9999 ? '' : ('alpha(opacity=' + (value * 100) + ')'); - es.filter = es.filter.replace(reOpacity, value); - } - else { - es.filter += ' alpha(opacity=' + (value * 100) + ')'; - } - return element; - }; - } - - fabric.util.setStyle = setStyle; - -})(); - - -(function() { - - var _slice = Array.prototype.slice; - - /** - * Takes id and returns an element with that id (if one exists in a document) - * @memberOf fabric.util - * @param {String|HTMLElement} id - * @return {HTMLElement|null} - */ - function getById(id) { - return typeof id === 'string' ? fabric.document.getElementById(id) : id; - } - - var sliceCanConvertNodelists, - /** - * Converts an array-like object (e.g. arguments or NodeList) to an array - * @memberOf fabric.util - * @param {Object} arrayLike - * @return {Array} - */ - toArray = function(arrayLike) { - return _slice.call(arrayLike, 0); - }; - - try { - sliceCanConvertNodelists = toArray(fabric.document.childNodes) instanceof Array; - } - catch (err) { } - - if (!sliceCanConvertNodelists) { - toArray = function(arrayLike) { - var arr = new Array(arrayLike.length), i = arrayLike.length; - while (i--) { - arr[i] = arrayLike[i]; - } - return arr; - }; - } - - /** - * Creates specified element with specified attributes - * @memberOf fabric.util - * @param {String} tagName Type of an element to create - * @param {Object} [attributes] Attributes to set on an element - * @return {HTMLElement} Newly created element - */ - function makeElement(tagName, attributes) { - var el = fabric.document.createElement(tagName); - for (var prop in attributes) { - if (prop === 'class') { - el.className = attributes[prop]; - } - else if (prop === 'for') { - el.htmlFor = attributes[prop]; - } - else { - el.setAttribute(prop, attributes[prop]); - } - } - return el; - } - - /** - * Adds class to an element - * @memberOf fabric.util - * @param {HTMLElement} element Element to add class to - * @param {String} className Class to add to an element - */ - function addClass(element, className) { - if (element && (' ' + element.className + ' ').indexOf(' ' + className + ' ') === -1) { - element.className += (element.className ? ' ' : '') + className; - } - } - - /** - * Wraps element with another element - * @memberOf fabric.util - * @param {HTMLElement} element Element to wrap - * @param {HTMLElement|String} wrapper Element to wrap with - * @param {Object} [attributes] Attributes to set on a wrapper - * @return {HTMLElement} wrapper - */ - function wrapElement(element, wrapper, attributes) { - if (typeof wrapper === 'string') { - wrapper = makeElement(wrapper, attributes); - } - if (element.parentNode) { - element.parentNode.replaceChild(wrapper, element); - } - wrapper.appendChild(element); - return wrapper; - } - - /** - * Returns element scroll offsets - * @memberOf fabric.util - * @param {HTMLElement} element Element to operate on - * @return {Object} Object with left/top values - */ - function getScrollLeftTop(element) { - - var left = 0, - top = 0, - docElement = fabric.document.documentElement, - body = fabric.document.body || { - scrollLeft: 0, scrollTop: 0 - }; - - // While loop checks (and then sets element to) .parentNode OR .host - // to account for ShadowDOM. We still want to traverse up out of ShadowDOM, - // but the .parentNode of a root ShadowDOM node will always be null, instead - // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938 - while (element && (element.parentNode || element.host)) { - - // Set element to element parent, or 'host' in case of ShadowDOM - element = element.parentNode || element.host; - - if (element === fabric.document) { - left = body.scrollLeft || docElement.scrollLeft || 0; - top = body.scrollTop || docElement.scrollTop || 0; - } - else { - left += element.scrollLeft || 0; - top += element.scrollTop || 0; - } - - if (element.nodeType === 1 && element.style.position === 'fixed') { - break; - } - } - - return { left: left, top: top }; - } - - /** - * Returns offset for a given element - * @function - * @memberOf fabric.util - * @param {HTMLElement} element Element to get offset for - * @return {Object} Object with "left" and "top" properties - */ - function getElementOffset(element) { - var docElem, - doc = element && element.ownerDocument, - box = { left: 0, top: 0 }, - offset = { left: 0, top: 0 }, - scrollLeftTop, - offsetAttributes = { - borderLeftWidth: 'left', - borderTopWidth: 'top', - paddingLeft: 'left', - paddingTop: 'top' - }; - - if (!doc) { - return offset; - } - - for (var attr in offsetAttributes) { - offset[offsetAttributes[attr]] += parseInt(getElementStyle(element, attr), 10) || 0; - } - - docElem = doc.documentElement; - if ( typeof element.getBoundingClientRect !== 'undefined' ) { - box = element.getBoundingClientRect(); - } - - scrollLeftTop = getScrollLeftTop(element); - - return { - left: box.left + scrollLeftTop.left - (docElem.clientLeft || 0) + offset.left, - top: box.top + scrollLeftTop.top - (docElem.clientTop || 0) + offset.top - }; - } - - /** - * Returns style attribute value of a given element - * @memberOf fabric.util - * @param {HTMLElement} element Element to get style attribute for - * @param {String} attr Style attribute to get for element - * @return {String} Style attribute value of the given element. - */ - var getElementStyle; - if (fabric.document.defaultView && fabric.document.defaultView.getComputedStyle) { - getElementStyle = function(element, attr) { - var style = fabric.document.defaultView.getComputedStyle(element, null); - return style ? style[attr] : undefined; - }; - } - else { - getElementStyle = function(element, attr) { - var value = element.style[attr]; - if (!value && element.currentStyle) { - value = element.currentStyle[attr]; - } - return value; - }; - } - - (function () { - var style = fabric.document.documentElement.style, - selectProp = 'userSelect' in style - ? 'userSelect' - : 'MozUserSelect' in style - ? 'MozUserSelect' - : 'WebkitUserSelect' in style - ? 'WebkitUserSelect' - : 'KhtmlUserSelect' in style - ? 'KhtmlUserSelect' - : ''; - - /** - * Makes element unselectable - * @memberOf fabric.util - * @param {HTMLElement} element Element to make unselectable - * @return {HTMLElement} Element that was passed in - */ - function makeElementUnselectable(element) { - if (typeof element.onselectstart !== 'undefined') { - element.onselectstart = fabric.util.falseFunction; - } - if (selectProp) { - element.style[selectProp] = 'none'; - } - else if (typeof element.unselectable === 'string') { - element.unselectable = 'on'; - } - return element; - } - - /** - * Makes element selectable - * @memberOf fabric.util - * @param {HTMLElement} element Element to make selectable - * @return {HTMLElement} Element that was passed in - */ - function makeElementSelectable(element) { - if (typeof element.onselectstart !== 'undefined') { - element.onselectstart = null; - } - if (selectProp) { - element.style[selectProp] = ''; - } - else if (typeof element.unselectable === 'string') { - element.unselectable = ''; - } - return element; - } - - fabric.util.makeElementUnselectable = makeElementUnselectable; - fabric.util.makeElementSelectable = makeElementSelectable; - })(); - - (function() { - - /** - * Inserts a script element with a given url into a document; invokes callback, when that script is finished loading - * @memberOf fabric.util - * @param {String} url URL of a script to load - * @param {Function} callback Callback to execute when script is finished loading - */ - function getScript(url, callback) { - var headEl = fabric.document.getElementsByTagName('head')[0], - scriptEl = fabric.document.createElement('script'), - loading = true; - - /** @ignore */ - scriptEl.onload = /** @ignore */ scriptEl.onreadystatechange = function(e) { - if (loading) { - if (typeof this.readyState === 'string' && - this.readyState !== 'loaded' && - this.readyState !== 'complete') { - return; - } - loading = false; - callback(e || fabric.window.event); - scriptEl = scriptEl.onload = scriptEl.onreadystatechange = null; - } - }; - scriptEl.src = url; - headEl.appendChild(scriptEl); - // causes issue in Opera - // headEl.removeChild(scriptEl); - } - - fabric.util.getScript = getScript; - })(); - - function getNodeCanvas(element) { - var impl = fabric.jsdomImplForWrapper(element); - return impl._canvas || impl._image; - }; - - function cleanUpJsdomNode(element) { - if (!fabric.isLikelyNode) { - return; - } - var impl = fabric.jsdomImplForWrapper(element); - if (impl) { - impl._image = null; - impl._canvas = null; - // unsure if necessary - impl._currentSrc = null; - impl._attributes = null; - impl._classList = null; - } - } - - fabric.util.getById = getById; - fabric.util.toArray = toArray; - fabric.util.makeElement = makeElement; - fabric.util.addClass = addClass; - fabric.util.wrapElement = wrapElement; - fabric.util.getScrollLeftTop = getScrollLeftTop; - fabric.util.getElementOffset = getElementOffset; - fabric.util.getElementStyle = getElementStyle; - fabric.util.getNodeCanvas = getNodeCanvas; - fabric.util.cleanUpJsdomNode = cleanUpJsdomNode; - -})(); - - -(function() { - - function addParamToUrl(url, param) { - return url + (/\?/.test(url) ? '&' : '?') + param; - } - - function emptyFn() { } - - /** - * Cross-browser abstraction for sending XMLHttpRequest - * @memberOf fabric.util - * @param {String} url URL to send XMLHttpRequest to - * @param {Object} [options] Options object - * @param {String} [options.method="GET"] - * @param {String} [options.parameters] parameters to append to url in GET or in body - * @param {String} [options.body] body to send with POST or PUT request - * @param {Function} options.onComplete Callback to invoke when request is completed - * @return {XMLHttpRequest} request - */ - function request(url, options) { - options || (options = { }); - - var method = options.method ? options.method.toUpperCase() : 'GET', - onComplete = options.onComplete || function() { }, - xhr = new fabric.window.XMLHttpRequest(), - body = options.body || options.parameters; - - /** @ignore */ - xhr.onreadystatechange = function() { - if (xhr.readyState === 4) { - onComplete(xhr); - xhr.onreadystatechange = emptyFn; - } - }; - - if (method === 'GET') { - body = null; - if (typeof options.parameters === 'string') { - url = addParamToUrl(url, options.parameters); - } - } - - xhr.open(method, url, true); - - if (method === 'POST' || method === 'PUT') { - xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - } - - xhr.send(body); - return xhr; - } - - fabric.util.request = request; -})(); - - -/** - * Wrapper around `console.log` (when available) - * @param {*} [values] Values to log - */ -fabric.log = console.log; - -/** - * Wrapper around `console.warn` (when available) - * @param {*} [values] Values to log as a warning - */ -fabric.warn = console.warn; - - -(function() { - - function noop() { - return false; - } - - function defaultEasing(t, b, c, d) { - return -c * Math.cos(t / d * (Math.PI / 2)) + c + b; - } - - /** - * Changes value from one to another within certain period of time, invoking callbacks as value is being changed. - * @memberOf fabric.util - * @param {Object} [options] Animation options - * @param {Function} [options.onChange] Callback; invoked on every value change - * @param {Function} [options.onComplete] Callback; invoked when value change is completed - * @param {Number} [options.startValue=0] Starting value - * @param {Number} [options.endValue=100] Ending value - * @param {Number} [options.byValue=100] Value to modify the property by - * @param {Function} [options.easing] Easing function - * @param {Number} [options.duration=500] Duration of change (in ms) - * @param {Function} [options.abort] Additional function with logic. If returns true, onComplete is called. - */ - function animate(options) { - - requestAnimFrame(function(timestamp) { - options || (options = { }); - - var start = timestamp || +new Date(), - duration = options.duration || 500, - finish = start + duration, time, - onChange = options.onChange || noop, - abort = options.abort || noop, - onComplete = options.onComplete || noop, - easing = options.easing || defaultEasing, - startValue = 'startValue' in options ? options.startValue : 0, - endValue = 'endValue' in options ? options.endValue : 100, - byValue = options.byValue || endValue - startValue; - - options.onStart && options.onStart(); - - (function tick(ticktime) { - // TODO: move abort call after calculation - // and pass (current,valuePerc, timePerc) as arguments - time = ticktime || +new Date(); - var currentTime = time > finish ? duration : (time - start), - timePerc = currentTime / duration, - current = easing(currentTime, startValue, byValue, duration), - valuePerc = Math.abs((current - startValue) / byValue); - if (abort()) { - onComplete(endValue, 1, 1); - return; - } - if (time > finish) { - onChange(endValue, 1, 1); - onComplete(endValue, 1, 1); - return; - } - else { - onChange(current, valuePerc, timePerc); - requestAnimFrame(tick); - } - })(start); - }); - } - - var _requestAnimFrame = fabric.window.requestAnimationFrame || - fabric.window.webkitRequestAnimationFrame || - fabric.window.mozRequestAnimationFrame || - fabric.window.oRequestAnimationFrame || - fabric.window.msRequestAnimationFrame || - function(callback) { - return fabric.window.setTimeout(callback, 1000 / 60); - }; - - var _cancelAnimFrame = fabric.window.cancelAnimationFrame || fabric.window.clearTimeout; - - /** - * requestAnimationFrame polyfill based on http://paulirish.com/2011/requestanimationframe-for-smart-animating/ - * In order to get a precise start time, `requestAnimFrame` should be called as an entry into the method - * @memberOf fabric.util - * @param {Function} callback Callback to invoke - * @param {DOMElement} element optional Element to associate with animation - */ - function requestAnimFrame() { - return _requestAnimFrame.apply(fabric.window, arguments); - } - - function cancelAnimFrame() { - return _cancelAnimFrame.apply(fabric.window, arguments); - } - - fabric.util.animate = animate; - fabric.util.requestAnimFrame = requestAnimFrame; - fabric.util.cancelAnimFrame = cancelAnimFrame; -})(); - - -(function() { - // Calculate an in-between color. Returns a "rgba()" string. - // Credit: Edwin Martin - // http://www.bitstorm.org/jquery/color-animation/jquery.animate-colors.js - function calculateColor(begin, end, pos) { - var color = 'rgba(' - + parseInt((begin[0] + pos * (end[0] - begin[0])), 10) + ',' - + parseInt((begin[1] + pos * (end[1] - begin[1])), 10) + ',' - + parseInt((begin[2] + pos * (end[2] - begin[2])), 10); - - color += ',' + (begin && end ? parseFloat(begin[3] + pos * (end[3] - begin[3])) : 1); - color += ')'; - return color; - } - - /** - * Changes the color from one to another within certain period of time, invoking callbacks as value is being changed. - * @memberOf fabric.util - * @param {String} fromColor The starting color in hex or rgb(a) format. - * @param {String} toColor The starting color in hex or rgb(a) format. - * @param {Number} [duration] Duration of change (in ms). - * @param {Object} [options] Animation options - * @param {Function} [options.onChange] Callback; invoked on every value change - * @param {Function} [options.onComplete] Callback; invoked when value change is completed - * @param {Function} [options.colorEasing] Easing function. Note that this function only take two arguments (currentTime, duration). Thus the regular animation easing functions cannot be used. - * @param {Function} [options.abort] Additional function with logic. If returns true, onComplete is called. - */ - function animateColor(fromColor, toColor, duration, options) { - var startColor = new fabric.Color(fromColor).getSource(), - endColor = new fabric.Color(toColor).getSource(); - - options = options || {}; - - fabric.util.animate(fabric.util.object.extend(options, { - duration: duration || 500, - startValue: startColor, - endValue: endColor, - byValue: endColor, - easing: function (currentTime, startValue, byValue, duration) { - var posValue = options.colorEasing - ? options.colorEasing(currentTime, duration) - : 1 - Math.cos(currentTime / duration * (Math.PI / 2)); - return calculateColor(startValue, byValue, posValue); - } - })); - } - - fabric.util.animateColor = animateColor; - -})(); - - -(function() { - - function normalize(a, c, p, s) { - if (a < Math.abs(c)) { - a = c; - s = p / 4; - } - else { - //handle the 0/0 case: - if (c === 0 && a === 0) { - s = p / (2 * Math.PI) * Math.asin(1); - } - else { - s = p / (2 * Math.PI) * Math.asin(c / a); - } - } - return { a: a, c: c, p: p, s: s }; - } - - function elastic(opts, t, d) { - return opts.a * - Math.pow(2, 10 * (t -= 1)) * - Math.sin( (t * d - opts.s) * (2 * Math.PI) / opts.p ); - } - - /** - * Cubic easing out - * @memberOf fabric.util.ease - */ - function easeOutCubic(t, b, c, d) { - return c * ((t = t / d - 1) * t * t + 1) + b; - } - - /** - * Cubic easing in and out - * @memberOf fabric.util.ease - */ - function easeInOutCubic(t, b, c, d) { - t /= d / 2; - if (t < 1) { - return c / 2 * t * t * t + b; - } - return c / 2 * ((t -= 2) * t * t + 2) + b; - } - - /** - * Quartic easing in - * @memberOf fabric.util.ease - */ - function easeInQuart(t, b, c, d) { - return c * (t /= d) * t * t * t + b; - } - - /** - * Quartic easing out - * @memberOf fabric.util.ease - */ - function easeOutQuart(t, b, c, d) { - return -c * ((t = t / d - 1) * t * t * t - 1) + b; - } - - /** - * Quartic easing in and out - * @memberOf fabric.util.ease - */ - function easeInOutQuart(t, b, c, d) { - t /= d / 2; - if (t < 1) { - return c / 2 * t * t * t * t + b; - } - return -c / 2 * ((t -= 2) * t * t * t - 2) + b; - } - - /** - * Quintic easing in - * @memberOf fabric.util.ease - */ - function easeInQuint(t, b, c, d) { - return c * (t /= d) * t * t * t * t + b; - } - - /** - * Quintic easing out - * @memberOf fabric.util.ease - */ - function easeOutQuint(t, b, c, d) { - return c * ((t = t / d - 1) * t * t * t * t + 1) + b; - } - - /** - * Quintic easing in and out - * @memberOf fabric.util.ease - */ - function easeInOutQuint(t, b, c, d) { - t /= d / 2; - if (t < 1) { - return c / 2 * t * t * t * t * t + b; - } - return c / 2 * ((t -= 2) * t * t * t * t + 2) + b; - } - - /** - * Sinusoidal easing in - * @memberOf fabric.util.ease - */ - function easeInSine(t, b, c, d) { - return -c * Math.cos(t / d * (Math.PI / 2)) + c + b; - } - - /** - * Sinusoidal easing out - * @memberOf fabric.util.ease - */ - function easeOutSine(t, b, c, d) { - return c * Math.sin(t / d * (Math.PI / 2)) + b; - } - - /** - * Sinusoidal easing in and out - * @memberOf fabric.util.ease - */ - function easeInOutSine(t, b, c, d) { - return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b; - } - - /** - * Exponential easing in - * @memberOf fabric.util.ease - */ - function easeInExpo(t, b, c, d) { - return (t === 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b; - } - - /** - * Exponential easing out - * @memberOf fabric.util.ease - */ - function easeOutExpo(t, b, c, d) { - return (t === d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b; - } - - /** - * Exponential easing in and out - * @memberOf fabric.util.ease - */ - function easeInOutExpo(t, b, c, d) { - if (t === 0) { - return b; - } - if (t === d) { - return b + c; - } - t /= d / 2; - if (t < 1) { - return c / 2 * Math.pow(2, 10 * (t - 1)) + b; - } - return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b; - } - - /** - * Circular easing in - * @memberOf fabric.util.ease - */ - function easeInCirc(t, b, c, d) { - return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b; - } - - /** - * Circular easing out - * @memberOf fabric.util.ease - */ - function easeOutCirc(t, b, c, d) { - return c * Math.sqrt(1 - (t = t / d - 1) * t) + b; - } - - /** - * Circular easing in and out - * @memberOf fabric.util.ease - */ - function easeInOutCirc(t, b, c, d) { - t /= d / 2; - if (t < 1) { - return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b; - } - return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b; - } - - /** - * Elastic easing in - * @memberOf fabric.util.ease - */ - function easeInElastic(t, b, c, d) { - var s = 1.70158, p = 0, a = c; - if (t === 0) { - return b; - } - t /= d; - if (t === 1) { - return b + c; - } - if (!p) { - p = d * 0.3; - } - var opts = normalize(a, c, p, s); - return -elastic(opts, t, d) + b; - } - - /** - * Elastic easing out - * @memberOf fabric.util.ease - */ - function easeOutElastic(t, b, c, d) { - var s = 1.70158, p = 0, a = c; - if (t === 0) { - return b; - } - t /= d; - if (t === 1) { - return b + c; - } - if (!p) { - p = d * 0.3; - } - var opts = normalize(a, c, p, s); - return opts.a * Math.pow(2, -10 * t) * Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) + opts.c + b; - } - - /** - * Elastic easing in and out - * @memberOf fabric.util.ease - */ - function easeInOutElastic(t, b, c, d) { - var s = 1.70158, p = 0, a = c; - if (t === 0) { - return b; - } - t /= d / 2; - if (t === 2) { - return b + c; - } - if (!p) { - p = d * (0.3 * 1.5); - } - var opts = normalize(a, c, p, s); - if (t < 1) { - return -0.5 * elastic(opts, t, d) + b; - } - return opts.a * Math.pow(2, -10 * (t -= 1)) * - Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) * 0.5 + opts.c + b; - } - - /** - * Backwards easing in - * @memberOf fabric.util.ease - */ - function easeInBack(t, b, c, d, s) { - if (s === undefined) { - s = 1.70158; - } - return c * (t /= d) * t * ((s + 1) * t - s) + b; - } - - /** - * Backwards easing out - * @memberOf fabric.util.ease - */ - function easeOutBack(t, b, c, d, s) { - if (s === undefined) { - s = 1.70158; - } - return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b; - } - - /** - * Backwards easing in and out - * @memberOf fabric.util.ease - */ - function easeInOutBack(t, b, c, d, s) { - if (s === undefined) { - s = 1.70158; - } - t /= d / 2; - if (t < 1) { - return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b; - } - return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b; - } - - /** - * Bouncing easing in - * @memberOf fabric.util.ease - */ - function easeInBounce(t, b, c, d) { - return c - easeOutBounce (d - t, 0, c, d) + b; - } - - /** - * Bouncing easing out - * @memberOf fabric.util.ease - */ - function easeOutBounce(t, b, c, d) { - if ((t /= d) < (1 / 2.75)) { - return c * (7.5625 * t * t) + b; - } - else if (t < (2 / 2.75)) { - return c * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75) + b; - } - else if (t < (2.5 / 2.75)) { - return c * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375) + b; - } - else { - return c * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375) + b; - } - } - - /** - * Bouncing easing in and out - * @memberOf fabric.util.ease - */ - function easeInOutBounce(t, b, c, d) { - if (t < d / 2) { - return easeInBounce (t * 2, 0, c, d) * 0.5 + b; - } - return easeOutBounce(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b; - } - - /** - * Easing functions - * See Easing Equations by Robert Penner - * @namespace fabric.util.ease - */ - fabric.util.ease = { - - /** - * Quadratic easing in - * @memberOf fabric.util.ease - */ - easeInQuad: function(t, b, c, d) { - return c * (t /= d) * t + b; - }, - - /** - * Quadratic easing out - * @memberOf fabric.util.ease - */ - easeOutQuad: function(t, b, c, d) { - return -c * (t /= d) * (t - 2) + b; - }, - - /** - * Quadratic easing in and out - * @memberOf fabric.util.ease - */ - easeInOutQuad: function(t, b, c, d) { - t /= (d / 2); - if (t < 1) { - return c / 2 * t * t + b; - } - return -c / 2 * ((--t) * (t - 2) - 1) + b; - }, - - /** - * Cubic easing in - * @memberOf fabric.util.ease - */ - easeInCubic: function(t, b, c, d) { - return c * (t /= d) * t * t + b; - }, - - easeOutCubic: easeOutCubic, - easeInOutCubic: easeInOutCubic, - easeInQuart: easeInQuart, - easeOutQuart: easeOutQuart, - easeInOutQuart: easeInOutQuart, - easeInQuint: easeInQuint, - easeOutQuint: easeOutQuint, - easeInOutQuint: easeInOutQuint, - easeInSine: easeInSine, - easeOutSine: easeOutSine, - easeInOutSine: easeInOutSine, - easeInExpo: easeInExpo, - easeOutExpo: easeOutExpo, - easeInOutExpo: easeInOutExpo, - easeInCirc: easeInCirc, - easeOutCirc: easeOutCirc, - easeInOutCirc: easeInOutCirc, - easeInElastic: easeInElastic, - easeOutElastic: easeOutElastic, - easeInOutElastic: easeInOutElastic, - easeInBack: easeInBack, - easeOutBack: easeOutBack, - easeInOutBack: easeInOutBack, - easeInBounce: easeInBounce, - easeOutBounce: easeOutBounce, - easeInOutBounce: easeInOutBounce - }; - -})(); - - -(function(global) { - - 'use strict'; - - /** - * @name fabric - * @namespace - */ - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend, - clone = fabric.util.object.clone, - toFixed = fabric.util.toFixed, - parseUnit = fabric.util.parseUnit, - multiplyTransformMatrices = fabric.util.multiplyTransformMatrices, - - svgValidTagNames = ['path', 'circle', 'polygon', 'polyline', 'ellipse', 'rect', 'line', - 'image', 'text'], - svgViewBoxElements = ['symbol', 'image', 'marker', 'pattern', 'view', 'svg'], - svgInvalidAncestors = ['pattern', 'defs', 'symbol', 'metadata', 'clipPath', 'mask', 'desc'], - svgValidParents = ['symbol', 'g', 'a', 'svg', 'clipPath', 'defs'], - - attributesMap = { - cx: 'left', - x: 'left', - r: 'radius', - cy: 'top', - y: 'top', - display: 'visible', - visibility: 'visible', - transform: 'transformMatrix', - 'fill-opacity': 'fillOpacity', - 'fill-rule': 'fillRule', - 'font-family': 'fontFamily', - 'font-size': 'fontSize', - 'font-style': 'fontStyle', - 'font-weight': 'fontWeight', - 'letter-spacing': 'charSpacing', - 'paint-order': 'paintFirst', - 'stroke-dasharray': 'strokeDashArray', - 'stroke-dashoffset': 'strokeDashOffset', - 'stroke-linecap': 'strokeLineCap', - 'stroke-linejoin': 'strokeLineJoin', - 'stroke-miterlimit': 'strokeMiterLimit', - 'stroke-opacity': 'strokeOpacity', - 'stroke-width': 'strokeWidth', - 'text-decoration': 'textDecoration', - 'text-anchor': 'textAnchor', - opacity: 'opacity', - 'clip-path': 'clipPath', - 'clip-rule': 'clipRule', - 'vector-effect': 'strokeUniform' - }, - - colorAttributes = { - stroke: 'strokeOpacity', - fill: 'fillOpacity' - }, - - fSize = 'font-size', cPath = 'clip-path'; - - fabric.svgValidTagNamesRegEx = getSvgRegex(svgValidTagNames); - fabric.svgViewBoxElementsRegEx = getSvgRegex(svgViewBoxElements); - fabric.svgInvalidAncestorsRegEx = getSvgRegex(svgInvalidAncestors); - fabric.svgValidParentsRegEx = getSvgRegex(svgValidParents); - - fabric.cssRules = { }; - fabric.gradientDefs = { }; - fabric.clipPaths = { }; - - function normalizeAttr(attr) { - // transform attribute names - if (attr in attributesMap) { - return attributesMap[attr]; - } - return attr; - } - - function normalizeValue(attr, value, parentAttributes, fontSize) { - var isArray = Object.prototype.toString.call(value) === '[object Array]', - parsed; - - if ((attr === 'fill' || attr === 'stroke') && value === 'none') { - value = ''; - } - else if (attr === 'vector-effect') { - value = value === 'non-scaling-stroke'; - } - else if (attr === 'strokeDashArray') { - if (value === 'none') { - value = null; - } - else { - value = value.replace(/,/g, ' ').split(/\s+/).map(parseFloat); - } - } - else if (attr === 'transformMatrix') { - if (parentAttributes && parentAttributes.transformMatrix) { - value = multiplyTransformMatrices( - parentAttributes.transformMatrix, fabric.parseTransformAttribute(value)); - } - else { - value = fabric.parseTransformAttribute(value); - } - } - else if (attr === 'visible') { - value = value !== 'none' && value !== 'hidden'; - // display=none on parent element always takes precedence over child element - if (parentAttributes && parentAttributes.visible === false) { - value = false; - } - } - else if (attr === 'opacity') { - value = parseFloat(value); - if (parentAttributes && typeof parentAttributes.opacity !== 'undefined') { - value *= parentAttributes.opacity; - } - } - else if (attr === 'textAnchor' /* text-anchor */) { - value = value === 'start' ? 'left' : value === 'end' ? 'right' : 'center'; - } - else if (attr === 'charSpacing') { - // parseUnit returns px and we convert it to em - parsed = parseUnit(value, fontSize) / fontSize * 1000; - } - else if (attr === 'paintFirst') { - var fillIndex = value.indexOf('fill'); - var strokeIndex = value.indexOf('stroke'); - var value = 'fill'; - if (fillIndex > -1 && strokeIndex > -1 && strokeIndex < fillIndex) { - value = 'stroke'; - } - else if (fillIndex === -1 && strokeIndex > -1) { - value = 'stroke'; - } - } - else if (attr === 'href' || attr === 'xlink:href') { - return value; - } - else { - parsed = isArray ? value.map(parseUnit) : parseUnit(value, fontSize); - } - - return (!isArray && isNaN(parsed) ? value : parsed); - } - - /** - * @private - */ - function getSvgRegex(arr) { - return new RegExp('^(' + arr.join('|') + ')\\b', 'i'); - } - - /** - * @private - * @param {Object} attributes Array of attributes to parse - */ - function _setStrokeFillOpacity(attributes) { - for (var attr in colorAttributes) { - - if (typeof attributes[colorAttributes[attr]] === 'undefined' || attributes[attr] === '') { - continue; - } - - if (typeof attributes[attr] === 'undefined') { - if (!fabric.Object.prototype[attr]) { - continue; - } - attributes[attr] = fabric.Object.prototype[attr]; - } - - if (attributes[attr].indexOf('url(') === 0) { - continue; - } - - var color = new fabric.Color(attributes[attr]); - attributes[attr] = color.setAlpha(toFixed(color.getAlpha() * attributes[colorAttributes[attr]], 2)).toRgba(); - } - return attributes; - } - - /** - * @private - */ - function _getMultipleNodes(doc, nodeNames) { - var nodeName, nodeArray = [], nodeList, i, len; - for (i = 0, len = nodeNames.length; i < len; i++) { - nodeName = nodeNames[i]; - nodeList = doc.getElementsByTagName(nodeName); - nodeArray = nodeArray.concat(Array.prototype.slice.call(nodeList)); - } - return nodeArray; - } - - /** - * Parses "transform" attribute, returning an array of values - * @static - * @function - * @memberOf fabric - * @param {String} attributeValue String containing attribute value - * @return {Array} Array of 6 elements representing transformation matrix - */ - fabric.parseTransformAttribute = (function() { - function rotateMatrix(matrix, args) { - var cos = fabric.util.cos(args[0]), sin = fabric.util.sin(args[0]), - x = 0, y = 0; - if (args.length === 3) { - x = args[1]; - y = args[2]; - } - - matrix[0] = cos; - matrix[1] = sin; - matrix[2] = -sin; - matrix[3] = cos; - matrix[4] = x - (cos * x - sin * y); - matrix[5] = y - (sin * x + cos * y); - } - - function scaleMatrix(matrix, args) { - var multiplierX = args[0], - multiplierY = (args.length === 2) ? args[1] : args[0]; - - matrix[0] = multiplierX; - matrix[3] = multiplierY; - } - - function skewMatrix(matrix, args, pos) { - matrix[pos] = Math.tan(fabric.util.degreesToRadians(args[0])); - } - - function translateMatrix(matrix, args) { - matrix[4] = args[0]; - if (args.length === 2) { - matrix[5] = args[1]; - } - } - - // identity matrix - var iMatrix = fabric.iMatrix, - - // == begin transform regexp - number = fabric.reNum, - - commaWsp = '(?:\\s+,?\\s*|,\\s*)', - - skewX = '(?:(skewX)\\s*\\(\\s*(' + number + ')\\s*\\))', - - skewY = '(?:(skewY)\\s*\\(\\s*(' + number + ')\\s*\\))', - - rotate = '(?:(rotate)\\s*\\(\\s*(' + number + ')(?:' + - commaWsp + '(' + number + ')' + - commaWsp + '(' + number + '))?\\s*\\))', - - scale = '(?:(scale)\\s*\\(\\s*(' + number + ')(?:' + - commaWsp + '(' + number + '))?\\s*\\))', - - translate = '(?:(translate)\\s*\\(\\s*(' + number + ')(?:' + - commaWsp + '(' + number + '))?\\s*\\))', - - matrix = '(?:(matrix)\\s*\\(\\s*' + - '(' + number + ')' + commaWsp + - '(' + number + ')' + commaWsp + - '(' + number + ')' + commaWsp + - '(' + number + ')' + commaWsp + - '(' + number + ')' + commaWsp + - '(' + number + ')' + - '\\s*\\))', - - transform = '(?:' + - matrix + '|' + - translate + '|' + - scale + '|' + - rotate + '|' + - skewX + '|' + - skewY + - ')', - - transforms = '(?:' + transform + '(?:' + commaWsp + '*' + transform + ')*' + ')', - - transformList = '^\\s*(?:' + transforms + '?)\\s*$', - - // http://www.w3.org/TR/SVG/coords.html#TransformAttribute - reTransformList = new RegExp(transformList), - // == end transform regexp - - reTransform = new RegExp(transform, 'g'); - - return function(attributeValue) { - - // start with identity matrix - var matrix = iMatrix.concat(), - matrices = []; - - // return if no argument was given or - // an argument does not match transform attribute regexp - if (!attributeValue || (attributeValue && !reTransformList.test(attributeValue))) { - return matrix; - } - - attributeValue.replace(reTransform, function(match) { - - var m = new RegExp(transform).exec(match).filter(function (match) { - // match !== '' && match != null - return (!!match); - }), - operation = m[1], - args = m.slice(2).map(parseFloat); - - switch (operation) { - case 'translate': - translateMatrix(matrix, args); - break; - case 'rotate': - args[0] = fabric.util.degreesToRadians(args[0]); - rotateMatrix(matrix, args); - break; - case 'scale': - scaleMatrix(matrix, args); - break; - case 'skewX': - skewMatrix(matrix, args, 2); - break; - case 'skewY': - skewMatrix(matrix, args, 1); - break; - case 'matrix': - matrix = args; - break; - } - - // snapshot current matrix into matrices array - matrices.push(matrix.concat()); - // reset - matrix = iMatrix.concat(); - }); - - var combinedMatrix = matrices[0]; - while (matrices.length > 1) { - matrices.shift(); - combinedMatrix = fabric.util.multiplyTransformMatrices(combinedMatrix, matrices[0]); - } - return combinedMatrix; - }; - })(); - - /** - * @private - */ - function parseStyleString(style, oStyle) { - var attr, value; - style.replace(/;\s*$/, '').split(';').forEach(function (chunk) { - var pair = chunk.split(':'); - - attr = pair[0].trim().toLowerCase(); - value = pair[1].trim(); - - oStyle[attr] = value; - }); - } - - /** - * @private - */ - function parseStyleObject(style, oStyle) { - var attr, value; - for (var prop in style) { - if (typeof style[prop] === 'undefined') { - continue; - } - - attr = prop.toLowerCase(); - value = style[prop]; - - oStyle[attr] = value; - } - } - - /** - * @private - */ - function getGlobalStylesForElement(element, svgUid) { - var styles = { }; - for (var rule in fabric.cssRules[svgUid]) { - if (elementMatchesRule(element, rule.split(' '))) { - for (var property in fabric.cssRules[svgUid][rule]) { - styles[property] = fabric.cssRules[svgUid][rule][property]; - } - } - } - return styles; - } - - /** - * @private - */ - function elementMatchesRule(element, selectors) { - var firstMatching, parentMatching = true; - //start from rightmost selector. - firstMatching = selectorMatches(element, selectors.pop()); - if (firstMatching && selectors.length) { - parentMatching = doesSomeParentMatch(element, selectors); - } - return firstMatching && parentMatching && (selectors.length === 0); - } - - function doesSomeParentMatch(element, selectors) { - var selector, parentMatching = true; - while (element.parentNode && element.parentNode.nodeType === 1 && selectors.length) { - if (parentMatching) { - selector = selectors.pop(); - } - element = element.parentNode; - parentMatching = selectorMatches(element, selector); - } - return selectors.length === 0; - } - - /** - * @private - */ - function selectorMatches(element, selector) { - var nodeName = element.nodeName, - classNames = element.getAttribute('class'), - id = element.getAttribute('id'), matcher, i; - // i check if a selector matches slicing away part from it. - // if i get empty string i should match - matcher = new RegExp('^' + nodeName, 'i'); - selector = selector.replace(matcher, ''); - if (id && selector.length) { - matcher = new RegExp('#' + id + '(?![a-zA-Z\\-]+)', 'i'); - selector = selector.replace(matcher, ''); - } - if (classNames && selector.length) { - classNames = classNames.split(' '); - for (i = classNames.length; i--;) { - matcher = new RegExp('\\.' + classNames[i] + '(?![a-zA-Z\\-]+)', 'i'); - selector = selector.replace(matcher, ''); - } - } - return selector.length === 0; - } - - /** - * @private - * to support IE8 missing getElementById on SVGdocument and on node xmlDOM - */ - function elementById(doc, id) { - var el; - doc.getElementById && (el = doc.getElementById(id)); - if (el) { - return el; - } - var node, i, len, nodelist = doc.getElementsByTagName('*'); - for (i = 0, len = nodelist.length; i < len; i++) { - node = nodelist[i]; - if (id === node.getAttribute('id')) { - return node; - } - } - } - - /** - * @private - */ - function parseUseDirectives(doc) { - var nodelist = _getMultipleNodes(doc, ['use', 'svg:use']), i = 0; - while (nodelist.length && i < nodelist.length) { - var el = nodelist[i], - xlink = (el.getAttribute('xlink:href') || el.getAttribute('href')).substr(1), - x = el.getAttribute('x') || 0, - y = el.getAttribute('y') || 0, - el2 = elementById(doc, xlink).cloneNode(true), - currentTrans = (el2.getAttribute('transform') || '') + ' translate(' + x + ', ' + y + ')', - parentNode, oldLength = nodelist.length, attr, j, attrs, len, namespace = fabric.svgNS; - - applyViewboxTransform(el2); - if (/^svg$/i.test(el2.nodeName)) { - var el3 = el2.ownerDocument.createElementNS(namespace, 'g'); - for (j = 0, attrs = el2.attributes, len = attrs.length; j < len; j++) { - attr = attrs.item(j); - el3.setAttributeNS(namespace, attr.nodeName, attr.nodeValue); - } - // el2.firstChild != null - while (el2.firstChild) { - el3.appendChild(el2.firstChild); - } - el2 = el3; - } - - for (j = 0, attrs = el.attributes, len = attrs.length; j < len; j++) { - attr = attrs.item(j); - if (attr.nodeName === 'x' || attr.nodeName === 'y' || - attr.nodeName === 'xlink:href' || attr.nodeName === 'href') { - continue; - } - - if (attr.nodeName === 'transform') { - currentTrans = attr.nodeValue + ' ' + currentTrans; - } - else { - el2.setAttribute(attr.nodeName, attr.nodeValue); - } - } - - el2.setAttribute('transform', currentTrans); - el2.setAttribute('instantiated_by_use', '1'); - el2.removeAttribute('id'); - parentNode = el.parentNode; - parentNode.replaceChild(el2, el); - // some browsers do not shorten nodelist after replaceChild (IE8) - if (nodelist.length === oldLength) { - i++; - } - } - } - - // http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute - // matches, e.g.: +14.56e-12, etc. - var reViewBoxAttrValue = new RegExp( - '^' + - '\\s*(' + fabric.reNum + '+)\\s*,?' + - '\\s*(' + fabric.reNum + '+)\\s*,?' + - '\\s*(' + fabric.reNum + '+)\\s*,?' + - '\\s*(' + fabric.reNum + '+)\\s*' + - '$' - ); - - /** - * Add a element that envelop all child elements and makes the viewbox transformMatrix descend on all elements - */ - function applyViewboxTransform(element) { - - var viewBoxAttr = element.getAttribute('viewBox'), - scaleX = 1, - scaleY = 1, - minX = 0, - minY = 0, - viewBoxWidth, viewBoxHeight, matrix, el, - widthAttr = element.getAttribute('width'), - heightAttr = element.getAttribute('height'), - x = element.getAttribute('x') || 0, - y = element.getAttribute('y') || 0, - preserveAspectRatio = element.getAttribute('preserveAspectRatio') || '', - missingViewBox = (!viewBoxAttr || !fabric.svgViewBoxElementsRegEx.test(element.nodeName) - || !(viewBoxAttr = viewBoxAttr.match(reViewBoxAttrValue))), - missingDimAttr = (!widthAttr || !heightAttr || widthAttr === '100%' || heightAttr === '100%'), - toBeParsed = missingViewBox && missingDimAttr, - parsedDim = { }, translateMatrix = '', widthDiff = 0, heightDiff = 0; - - parsedDim.width = 0; - parsedDim.height = 0; - parsedDim.toBeParsed = toBeParsed; - - if (toBeParsed) { - return parsedDim; - } - - if (missingViewBox) { - parsedDim.width = parseUnit(widthAttr); - parsedDim.height = parseUnit(heightAttr); - return parsedDim; - } - minX = -parseFloat(viewBoxAttr[1]); - minY = -parseFloat(viewBoxAttr[2]); - viewBoxWidth = parseFloat(viewBoxAttr[3]); - viewBoxHeight = parseFloat(viewBoxAttr[4]); - parsedDim.minX = minX; - parsedDim.minY = minY; - parsedDim.viewBoxWidth = viewBoxWidth; - parsedDim.viewBoxHeight = viewBoxHeight; - if (!missingDimAttr) { - parsedDim.width = parseUnit(widthAttr); - parsedDim.height = parseUnit(heightAttr); - scaleX = parsedDim.width / viewBoxWidth; - scaleY = parsedDim.height / viewBoxHeight; - } - else { - parsedDim.width = viewBoxWidth; - parsedDim.height = viewBoxHeight; - } - - // default is to preserve aspect ratio - preserveAspectRatio = fabric.util.parsePreserveAspectRatioAttribute(preserveAspectRatio); - if (preserveAspectRatio.alignX !== 'none') { - //translate all container for the effect of Mid, Min, Max - if (preserveAspectRatio.meetOrSlice === 'meet') { - scaleY = scaleX = (scaleX > scaleY ? scaleY : scaleX); - // calculate additional translation to move the viewbox - } - if (preserveAspectRatio.meetOrSlice === 'slice') { - scaleY = scaleX = (scaleX > scaleY ? scaleX : scaleY); - // calculate additional translation to move the viewbox - } - widthDiff = parsedDim.width - viewBoxWidth * scaleX; - heightDiff = parsedDim.height - viewBoxHeight * scaleX; - if (preserveAspectRatio.alignX === 'Mid') { - widthDiff /= 2; - } - if (preserveAspectRatio.alignY === 'Mid') { - heightDiff /= 2; - } - if (preserveAspectRatio.alignX === 'Min') { - widthDiff = 0; - } - if (preserveAspectRatio.alignY === 'Min') { - heightDiff = 0; - } - } - - if (scaleX === 1 && scaleY === 1 && minX === 0 && minY === 0 && x === 0 && y === 0) { - return parsedDim; - } - - if (x || y) { - translateMatrix = ' translate(' + parseUnit(x) + ' ' + parseUnit(y) + ') '; - } - - matrix = translateMatrix + ' matrix(' + scaleX + - ' 0' + - ' 0 ' + - scaleY + ' ' + - (minX * scaleX + widthDiff) + ' ' + - (minY * scaleY + heightDiff) + ') '; - parsedDim.viewboxTransform = fabric.parseTransformAttribute(matrix); - if (element.nodeName === 'svg') { - el = element.ownerDocument.createElementNS(fabric.svgNS, 'g'); - // element.firstChild != null - while (element.firstChild) { - el.appendChild(element.firstChild); - } - element.appendChild(el); - } - else { - el = element; - matrix = el.getAttribute('transform') + matrix; - } - el.setAttribute('transform', matrix); - return parsedDim; - } - - function hasAncestorWithNodeName(element, nodeName) { - while (element && (element = element.parentNode)) { - if (element.nodeName && nodeName.test(element.nodeName.replace('svg:', '')) - && !element.getAttribute('instantiated_by_use')) { - return true; - } - } - return false; - } - - /** - * Parses an SVG document, converts it to an array of corresponding fabric.* instances and passes them to a callback - * @static - * @function - * @memberOf fabric - * @param {SVGDocument} doc SVG document to parse - * @param {Function} callback Callback to call when parsing is finished; - * It's being passed an array of elements (parsed from a document). - * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created. - * @param {Object} [parsingOptions] options for parsing document - * @param {String} [parsingOptions.crossOrigin] crossOrigin settings - */ - fabric.parseSVGDocument = function(doc, callback, reviver, parsingOptions) { - if (!doc) { - return; - } - - parseUseDirectives(doc); - - var svgUid = fabric.Object.__uid++, i, len, - options = applyViewboxTransform(doc), - descendants = fabric.util.toArray(doc.getElementsByTagName('*')); - options.crossOrigin = parsingOptions && parsingOptions.crossOrigin; - options.svgUid = svgUid; - - if (descendants.length === 0 && fabric.isLikelyNode) { - // we're likely in node, where "o3-xml" library fails to gEBTN("*") - // https://github.com/ajaxorg/node-o3-xml/issues/21 - descendants = doc.selectNodes('//*[name(.)!="svg"]'); - var arr = []; - for (i = 0, len = descendants.length; i < len; i++) { - arr[i] = descendants[i]; - } - descendants = arr; - } - - var elements = descendants.filter(function(el) { - applyViewboxTransform(el); - return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', '')) && - !hasAncestorWithNodeName(el, fabric.svgInvalidAncestorsRegEx); // http://www.w3.org/TR/SVG/struct.html#DefsElement - }); - - if (!elements || (elements && !elements.length)) { - callback && callback([], {}); - return; - } - var clipPaths = { }; - descendants.filter(function(el) { - return el.nodeName.replace('svg:', '') === 'clipPath'; - }).forEach(function(el) { - var id = el.getAttribute('id'); - clipPaths[id] = fabric.util.toArray(el.getElementsByTagName('*')).filter(function(el) { - return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', '')); - }); - }); - fabric.gradientDefs[svgUid] = fabric.getGradientDefs(doc); - fabric.cssRules[svgUid] = fabric.getCSSRules(doc); - fabric.clipPaths[svgUid] = clipPaths; - // Precedence of rules: style > class > attribute - fabric.parseElements(elements, function(instances, elements) { - if (callback) { - callback(instances, options, elements, descendants); - delete fabric.gradientDefs[svgUid]; - delete fabric.cssRules[svgUid]; - delete fabric.clipPaths[svgUid]; - } - }, clone(options), reviver, parsingOptions); - }; - - function recursivelyParseGradientsXlink(doc, gradient) { - var gradientsAttrs = ['gradientTransform', 'x1', 'x2', 'y1', 'y2', 'gradientUnits', 'cx', 'cy', 'r', 'fx', 'fy'], - xlinkAttr = 'xlink:href', - xLink = gradient.getAttribute(xlinkAttr).substr(1), - referencedGradient = elementById(doc, xLink); - if (referencedGradient && referencedGradient.getAttribute(xlinkAttr)) { - recursivelyParseGradientsXlink(doc, referencedGradient); - } - gradientsAttrs.forEach(function(attr) { - if (referencedGradient && !gradient.hasAttribute(attr) && referencedGradient.hasAttribute(attr)) { - gradient.setAttribute(attr, referencedGradient.getAttribute(attr)); - } - }); - if (!gradient.children.length) { - var referenceClone = referencedGradient.cloneNode(true); - while (referenceClone.firstChild) { - gradient.appendChild(referenceClone.firstChild); - } - } - gradient.removeAttribute(xlinkAttr); - } - - var reFontDeclaration = new RegExp( - '(normal|italic)?\\s*(normal|small-caps)?\\s*' + - '(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*(' + - fabric.reNum + - '(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|' + fabric.reNum + '))?\\s+(.*)'); - - extend(fabric, { - /** - * Parses a short font declaration, building adding its properties to a style object - * @static - * @function - * @memberOf fabric - * @param {String} value font declaration - * @param {Object} oStyle definition - */ - parseFontDeclaration: function(value, oStyle) { - var match = value.match(reFontDeclaration); - - if (!match) { - return; - } - var fontStyle = match[1], - // font variant is not used - // fontVariant = match[2], - fontWeight = match[3], - fontSize = match[4], - lineHeight = match[5], - fontFamily = match[6]; - - if (fontStyle) { - oStyle.fontStyle = fontStyle; - } - if (fontWeight) { - oStyle.fontWeight = isNaN(parseFloat(fontWeight)) ? fontWeight : parseFloat(fontWeight); - } - if (fontSize) { - oStyle.fontSize = parseUnit(fontSize); - } - if (fontFamily) { - oStyle.fontFamily = fontFamily; - } - if (lineHeight) { - oStyle.lineHeight = lineHeight === 'normal' ? 1 : lineHeight; - } - }, - - /** - * Parses an SVG document, returning all of the gradient declarations found in it - * @static - * @function - * @memberOf fabric - * @param {SVGDocument} doc SVG document to parse - * @return {Object} Gradient definitions; key corresponds to element id, value -- to gradient definition element - */ - getGradientDefs: function(doc) { - var tagArray = [ - 'linearGradient', - 'radialGradient', - 'svg:linearGradient', - 'svg:radialGradient'], - elList = _getMultipleNodes(doc, tagArray), - el, j = 0, gradientDefs = { }; - j = elList.length; - while (j--) { - el = elList[j]; - if (el.getAttribute('xlink:href')) { - recursivelyParseGradientsXlink(doc, el); - } - gradientDefs[el.getAttribute('id')] = el; - } - return gradientDefs; - }, - - /** - * Returns an object of attributes' name/value, given element and an array of attribute names; - * Parses parent "g" nodes recursively upwards. - * @static - * @memberOf fabric - * @param {DOMElement} element Element to parse - * @param {Array} attributes Array of attributes to parse - * @return {Object} object containing parsed attributes' names/values - */ - parseAttributes: function(element, attributes, svgUid) { - - if (!element) { - return; - } - - var value, - parentAttributes = { }, - fontSize, parentFontSize; - - if (typeof svgUid === 'undefined') { - svgUid = element.getAttribute('svgUid'); - } - // if there's a parent container (`g` or `a` or `symbol` node), parse its attributes recursively upwards - if (element.parentNode && fabric.svgValidParentsRegEx.test(element.parentNode.nodeName)) { - parentAttributes = fabric.parseAttributes(element.parentNode, attributes, svgUid); - } - - var ownAttributes = attributes.reduce(function(memo, attr) { - value = element.getAttribute(attr); - if (value) { // eslint-disable-line - memo[attr] = value; - } - return memo; - }, { }); - // add values parsed from style, which take precedence over attributes - // (see: http://www.w3.org/TR/SVG/styling.html#UsingPresentationAttributes) - var cssAttrs = extend( - getGlobalStylesForElement(element, svgUid), - fabric.parseStyleAttribute(element) - ); - ownAttributes = extend( - ownAttributes, - cssAttrs - ); - if (cssAttrs[cPath]) { - element.setAttribute(cPath, cssAttrs[cPath]); - } - fontSize = parentFontSize = parentAttributes.fontSize || fabric.Text.DEFAULT_SVG_FONT_SIZE; - if (ownAttributes[fSize]) { - // looks like the minimum should be 9px when dealing with ems. this is what looks like in browsers. - ownAttributes[fSize] = fontSize = parseUnit(ownAttributes[fSize], parentFontSize); - } - - var normalizedAttr, normalizedValue, normalizedStyle = {}; - for (var attr in ownAttributes) { - normalizedAttr = normalizeAttr(attr); - normalizedValue = normalizeValue(normalizedAttr, ownAttributes[attr], parentAttributes, fontSize); - normalizedStyle[normalizedAttr] = normalizedValue; - } - if (normalizedStyle && normalizedStyle.font) { - fabric.parseFontDeclaration(normalizedStyle.font, normalizedStyle); - } - var mergedAttrs = extend(parentAttributes, normalizedStyle); - return fabric.svgValidParentsRegEx.test(element.nodeName) ? mergedAttrs : _setStrokeFillOpacity(mergedAttrs); - }, - - /** - * Transforms an array of svg elements to corresponding fabric.* instances - * @static - * @memberOf fabric - * @param {Array} elements Array of elements to parse - * @param {Function} callback Being passed an array of fabric instances (transformed from SVG elements) - * @param {Object} [options] Options object - * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created. - */ - parseElements: function(elements, callback, options, reviver, parsingOptions) { - new fabric.ElementsParser(elements, callback, options, reviver, parsingOptions).parse(); - }, - - /** - * Parses "style" attribute, retuning an object with values - * @static - * @memberOf fabric - * @param {SVGElement} element Element to parse - * @return {Object} Objects with values parsed from style attribute of an element - */ - parseStyleAttribute: function(element) { - var oStyle = { }, - style = element.getAttribute('style'); - - if (!style) { - return oStyle; - } - - if (typeof style === 'string') { - parseStyleString(style, oStyle); - } - else { - parseStyleObject(style, oStyle); - } - - return oStyle; - }, - - /** - * Parses "points" attribute, returning an array of values - * @static - * @memberOf fabric - * @param {String} points points attribute string - * @return {Array} array of points - */ - parsePointsAttribute: function(points) { - - // points attribute is required and must not be empty - if (!points) { - return null; - } - - // replace commas with whitespace and remove bookending whitespace - points = points.replace(/,/g, ' ').trim(); - - points = points.split(/\s+/); - var parsedPoints = [], i, len; - - for (i = 0, len = points.length; i < len; i += 2) { - parsedPoints.push({ - x: parseFloat(points[i]), - y: parseFloat(points[i + 1]) - }); - } - - // odd number of points is an error - // if (parsedPoints.length % 2 !== 0) { - // return null; - // } - - return parsedPoints; - }, - - /** - * Returns CSS rules for a given SVG document - * @static - * @function - * @memberOf fabric - * @param {SVGDocument} doc SVG document to parse - * @return {Object} CSS rules of this document - */ - getCSSRules: function(doc) { - var styles = doc.getElementsByTagName('style'), i, len, - allRules = { }, rules; - - // very crude parsing of style contents - for (i = 0, len = styles.length; i < len; i++) { - // IE9 doesn't support textContent, but provides text instead. - var styleContents = styles[i].textContent || styles[i].text; - - // remove comments - styleContents = styleContents.replace(/\/\*[\s\S]*?\*\//g, ''); - if (styleContents.trim() === '') { - continue; - } - rules = styleContents.match(/[^{]*\{[\s\S]*?\}/g); - rules = rules.map(function(rule) { return rule.trim(); }); - // eslint-disable-next-line no-loop-func - rules.forEach(function(rule) { - - var match = rule.match(/([\s\S]*?)\s*\{([^}]*)\}/), - ruleObj = { }, declaration = match[2].trim(), - propertyValuePairs = declaration.replace(/;$/, '').split(/\s*;\s*/); - - for (i = 0, len = propertyValuePairs.length; i < len; i++) { - var pair = propertyValuePairs[i].split(/\s*:\s*/), - property = pair[0], - value = pair[1]; - ruleObj[property] = value; - } - rule = match[1]; - rule.split(',').forEach(function(_rule) { - _rule = _rule.replace(/^svg/i, '').trim(); - if (_rule === '') { - return; - } - if (allRules[_rule]) { - fabric.util.object.extend(allRules[_rule], ruleObj); - } - else { - allRules[_rule] = fabric.util.object.clone(ruleObj); - } - }); - }); - } - return allRules; - }, - - /** - * Takes url corresponding to an SVG document, and parses it into a set of fabric objects. - * Note that SVG is fetched via XMLHttpRequest, so it needs to conform to SOP (Same Origin Policy) - * @memberOf fabric - * @param {String} url - * @param {Function} callback - * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created. - * @param {Object} [options] Object containing options for parsing - * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources - */ - loadSVGFromURL: function(url, callback, reviver, options) { - - url = url.replace(/^\n\s*/, '').trim(); - new fabric.util.request(url, { - method: 'get', - onComplete: onComplete - }); - - function onComplete(r) { - - var xml = r.responseXML; - if (xml && !xml.documentElement && fabric.window.ActiveXObject && r.responseText) { - xml = new ActiveXObject('Microsoft.XMLDOM'); - xml.async = 'false'; - //IE chokes on DOCTYPE - xml.loadXML(r.responseText.replace(//i, '')); - } - if (!xml || !xml.documentElement) { - callback && callback(null); - return false; - } - - fabric.parseSVGDocument(xml.documentElement, function (results, _options, elements, allElements) { - callback && callback(results, _options, elements, allElements); - }, reviver, options); - } - }, - - /** - * Takes string corresponding to an SVG document, and parses it into a set of fabric objects - * @memberOf fabric - * @param {String} string - * @param {Function} callback - * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created. - * @param {Object} [options] Object containing options for parsing - * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources - */ - loadSVGFromString: function(string, callback, reviver, options) { - string = string.trim(); - var doc; - if (typeof fabric.window.DOMParser !== 'undefined') { - var parser = new fabric.window.DOMParser(); - if (parser && parser.parseFromString) { - doc = parser.parseFromString(string, 'text/xml'); - } - } - else if (fabric.window.ActiveXObject) { - doc = new ActiveXObject('Microsoft.XMLDOM'); - doc.async = 'false'; - // IE chokes on DOCTYPE - doc.loadXML(string.replace(//i, '')); - } - - fabric.parseSVGDocument(doc.documentElement, function (results, _options, elements, allElements) { - callback(results, _options, elements, allElements); - }, reviver, options); - } - }); - -})(typeof exports !== 'undefined' ? exports : this); - - -fabric.ElementsParser = function(elements, callback, options, reviver, parsingOptions, doc) { - this.elements = elements; - this.callback = callback; - this.options = options; - this.reviver = reviver; - this.svgUid = (options && options.svgUid) || 0; - this.parsingOptions = parsingOptions; - this.regexUrl = /^url\(['"]?#([^'"]+)['"]?\)/g; - this.doc = doc; -}; - -(function(proto) { - proto.parse = function() { - this.instances = new Array(this.elements.length); - this.numElements = this.elements.length; - this.createObjects(); - }; - - proto.createObjects = function() { - var _this = this; - this.elements.forEach(function(element, i) { - element.setAttribute('svgUid', _this.svgUid); - _this.createObject(element, i); - }); - }; - - proto.findTag = function(el) { - return fabric[fabric.util.string.capitalize(el.tagName.replace('svg:', ''))]; - }; - - proto.createObject = function(el, index) { - var klass = this.findTag(el); - if (klass && klass.fromElement) { - try { - klass.fromElement(el, this.createCallback(index, el), this.options); - } - catch (err) { - fabric.log(err); - } - } - else { - this.checkIfDone(); - } - }; - - proto.createCallback = function(index, el) { - var _this = this; - return function(obj) { - var _options; - _this.resolveGradient(obj, el, 'fill'); - _this.resolveGradient(obj, el, 'stroke'); - if (obj instanceof fabric.Image && obj._originalElement) { - _options = obj.parsePreserveAspectRatioAttribute(el); - } - obj._removeTransformMatrix(_options); - _this.resolveClipPath(obj, el); - _this.reviver && _this.reviver(el, obj); - _this.instances[index] = obj; - _this.checkIfDone(); - }; - }; - - proto.extractPropertyDefinition = function(obj, property, storage) { - var value = obj[property], regex = this.regexUrl; - if (!regex.test(value)) { - return; - } - regex.lastIndex = 0; - var id = regex.exec(value)[1]; - regex.lastIndex = 0; - return fabric[storage][this.svgUid][id]; - }; - - proto.resolveGradient = function(obj, el, property) { - var gradientDef = this.extractPropertyDefinition(obj, property, 'gradientDefs'); - if (gradientDef) { - var opacityAttr = el.getAttribute(property + '-opacity'); - var gradient = fabric.Gradient.fromElement(gradientDef, obj, opacityAttr, this.options); - obj.set(property, gradient); - } - }; - - proto.createClipPathCallback = function(obj, container) { - return function(_newObj) { - _newObj._removeTransformMatrix(); - _newObj.fillRule = _newObj.clipRule; - container.push(_newObj); - }; - }; - - proto.resolveClipPath = function(obj, usingElement) { - var clipPath = this.extractPropertyDefinition(obj, 'clipPath', 'clipPaths'), - element, klass, objTransformInv, container, gTransform, options; - if (clipPath) { - container = []; - objTransformInv = fabric.util.invertTransform(obj.calcTransformMatrix()); - // move the clipPath tag as sibling to the real element that is using it - var clipPathTag = clipPath[0].parentNode; - var clipPathOwner = usingElement; - while (clipPathOwner.parentNode && clipPathOwner.getAttribute('clip-path') !== obj.clipPath) { - clipPathOwner = clipPathOwner.parentNode; - } - clipPathOwner.parentNode.appendChild(clipPathTag); - for (var i = 0; i < clipPath.length; i++) { - element = clipPath[i]; - klass = this.findTag(element); - klass.fromElement( - element, - this.createClipPathCallback(obj, container), - this.options - ); - } - if (container.length === 1) { - clipPath = container[0]; - } - else { - clipPath = new fabric.Group(container); - } - gTransform = fabric.util.multiplyTransformMatrices( - objTransformInv, - clipPath.calcTransformMatrix() - ); - if (clipPath.clipPath) { - this.resolveClipPath(clipPath, clipPathOwner); - } - var options = fabric.util.qrDecompose(gTransform); - clipPath.flipX = false; - clipPath.flipY = false; - clipPath.set('scaleX', options.scaleX); - clipPath.set('scaleY', options.scaleY); - clipPath.angle = options.angle; - clipPath.skewX = options.skewX; - clipPath.skewY = 0; - clipPath.setPositionByOrigin({ x: options.translateX, y: options.translateY }, 'center', 'center'); - obj.clipPath = clipPath; - } - }; - - proto.checkIfDone = function() { - if (--this.numElements === 0) { - this.instances = this.instances.filter(function(el) { - // eslint-disable-next-line no-eq-null, eqeqeq - return el != null; - }); - this.callback(this.instances, this.elements); - } - }; -})(fabric.ElementsParser.prototype); - - -(function(global) { - - 'use strict'; - - /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */ - - var fabric = global.fabric || (global.fabric = { }); - - if (fabric.Point) { - fabric.warn('fabric.Point is already defined'); - return; - } - - fabric.Point = Point; - - /** - * Point class - * @class fabric.Point - * @memberOf fabric - * @constructor - * @param {Number} x - * @param {Number} y - * @return {fabric.Point} thisArg - */ - function Point(x, y) { - this.x = x; - this.y = y; - } - - Point.prototype = /** @lends fabric.Point.prototype */ { - - type: 'point', - - constructor: Point, - - /** - * Adds another point to this one and returns another one - * @param {fabric.Point} that - * @return {fabric.Point} new Point instance with added values - */ - add: function (that) { - return new Point(this.x + that.x, this.y + that.y); - }, - - /** - * Adds another point to this one - * @param {fabric.Point} that - * @return {fabric.Point} thisArg - * @chainable - */ - addEquals: function (that) { - this.x += that.x; - this.y += that.y; - return this; - }, - - /** - * Adds value to this point and returns a new one - * @param {Number} scalar - * @return {fabric.Point} new Point with added value - */ - scalarAdd: function (scalar) { - return new Point(this.x + scalar, this.y + scalar); - }, - - /** - * Adds value to this point - * @param {Number} scalar - * @return {fabric.Point} thisArg - * @chainable - */ - scalarAddEquals: function (scalar) { - this.x += scalar; - this.y += scalar; - return this; - }, - - /** - * Subtracts another point from this point and returns a new one - * @param {fabric.Point} that - * @return {fabric.Point} new Point object with subtracted values - */ - subtract: function (that) { - return new Point(this.x - that.x, this.y - that.y); - }, - - /** - * Subtracts another point from this point - * @param {fabric.Point} that - * @return {fabric.Point} thisArg - * @chainable - */ - subtractEquals: function (that) { - this.x -= that.x; - this.y -= that.y; - return this; - }, - - /** - * Subtracts value from this point and returns a new one - * @param {Number} scalar - * @return {fabric.Point} - */ - scalarSubtract: function (scalar) { - return new Point(this.x - scalar, this.y - scalar); - }, - - /** - * Subtracts value from this point - * @param {Number} scalar - * @return {fabric.Point} thisArg - * @chainable - */ - scalarSubtractEquals: function (scalar) { - this.x -= scalar; - this.y -= scalar; - return this; - }, - - /** - * Multiplies this point by a value and returns a new one - * TODO: rename in scalarMultiply in 2.0 - * @param {Number} scalar - * @return {fabric.Point} - */ - multiply: function (scalar) { - return new Point(this.x * scalar, this.y * scalar); - }, - - /** - * Multiplies this point by a value - * TODO: rename in scalarMultiplyEquals in 2.0 - * @param {Number} scalar - * @return {fabric.Point} thisArg - * @chainable - */ - multiplyEquals: function (scalar) { - this.x *= scalar; - this.y *= scalar; - return this; - }, - - /** - * Divides this point by a value and returns a new one - * TODO: rename in scalarDivide in 2.0 - * @param {Number} scalar - * @return {fabric.Point} - */ - divide: function (scalar) { - return new Point(this.x / scalar, this.y / scalar); - }, - - /** - * Divides this point by a value - * TODO: rename in scalarDivideEquals in 2.0 - * @param {Number} scalar - * @return {fabric.Point} thisArg - * @chainable - */ - divideEquals: function (scalar) { - this.x /= scalar; - this.y /= scalar; - return this; - }, - - /** - * Returns true if this point is equal to another one - * @param {fabric.Point} that - * @return {Boolean} - */ - eq: function (that) { - return (this.x === that.x && this.y === that.y); - }, - - /** - * Returns true if this point is less than another one - * @param {fabric.Point} that - * @return {Boolean} - */ - lt: function (that) { - return (this.x < that.x && this.y < that.y); - }, - - /** - * Returns true if this point is less than or equal to another one - * @param {fabric.Point} that - * @return {Boolean} - */ - lte: function (that) { - return (this.x <= that.x && this.y <= that.y); - }, - - /** - - * Returns true if this point is greater another one - * @param {fabric.Point} that - * @return {Boolean} - */ - gt: function (that) { - return (this.x > that.x && this.y > that.y); - }, - - /** - * Returns true if this point is greater than or equal to another one - * @param {fabric.Point} that - * @return {Boolean} - */ - gte: function (that) { - return (this.x >= that.x && this.y >= that.y); - }, - - /** - * Returns new point which is the result of linear interpolation with this one and another one - * @param {fabric.Point} that - * @param {Number} t , position of interpolation, between 0 and 1 default 0.5 - * @return {fabric.Point} - */ - lerp: function (that, t) { - if (typeof t === 'undefined') { - t = 0.5; - } - t = Math.max(Math.min(1, t), 0); - return new Point(this.x + (that.x - this.x) * t, this.y + (that.y - this.y) * t); - }, - - /** - * Returns distance from this point and another one - * @param {fabric.Point} that - * @return {Number} - */ - distanceFrom: function (that) { - var dx = this.x - that.x, - dy = this.y - that.y; - return Math.sqrt(dx * dx + dy * dy); - }, - - /** - * Returns the point between this point and another one - * @param {fabric.Point} that - * @return {fabric.Point} - */ - midPointFrom: function (that) { - return this.lerp(that); - }, - - /** - * Returns a new point which is the min of this and another one - * @param {fabric.Point} that - * @return {fabric.Point} - */ - min: function (that) { - return new Point(Math.min(this.x, that.x), Math.min(this.y, that.y)); - }, - - /** - * Returns a new point which is the max of this and another one - * @param {fabric.Point} that - * @return {fabric.Point} - */ - max: function (that) { - return new Point(Math.max(this.x, that.x), Math.max(this.y, that.y)); - }, - - /** - * Returns string representation of this point - * @return {String} - */ - toString: function () { - return this.x + ',' + this.y; - }, - - /** - * Sets x/y of this point - * @param {Number} x - * @param {Number} y - * @chainable - */ - setXY: function (x, y) { - this.x = x; - this.y = y; - return this; - }, - - /** - * Sets x of this point - * @param {Number} x - * @chainable - */ - setX: function (x) { - this.x = x; - return this; - }, - - /** - * Sets y of this point - * @param {Number} y - * @chainable - */ - setY: function (y) { - this.y = y; - return this; - }, - - /** - * Sets x/y of this point from another point - * @param {fabric.Point} that - * @chainable - */ - setFromPoint: function (that) { - this.x = that.x; - this.y = that.y; - return this; - }, - - /** - * Swaps x/y of this point and another point - * @param {fabric.Point} that - */ - swap: function (that) { - var x = this.x, - y = this.y; - this.x = that.x; - this.y = that.y; - that.x = x; - that.y = y; - }, - - /** - * return a cloned instance of the point - * @return {fabric.Point} - */ - clone: function () { - return new Point(this.x, this.y); - } - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */ - var fabric = global.fabric || (global.fabric = { }); - - if (fabric.Intersection) { - fabric.warn('fabric.Intersection is already defined'); - return; - } - - /** - * Intersection class - * @class fabric.Intersection - * @memberOf fabric - * @constructor - */ - function Intersection(status) { - this.status = status; - this.points = []; - } - - fabric.Intersection = Intersection; - - fabric.Intersection.prototype = /** @lends fabric.Intersection.prototype */ { - - constructor: Intersection, - - /** - * Appends a point to intersection - * @param {fabric.Point} point - * @return {fabric.Intersection} thisArg - * @chainable - */ - appendPoint: function (point) { - this.points.push(point); - return this; - }, - - /** - * Appends points to intersection - * @param {Array} points - * @return {fabric.Intersection} thisArg - * @chainable - */ - appendPoints: function (points) { - this.points = this.points.concat(points); - return this; - } - }; - - /** - * Checks if one line intersects another - * TODO: rename in intersectSegmentSegment - * @static - * @param {fabric.Point} a1 - * @param {fabric.Point} a2 - * @param {fabric.Point} b1 - * @param {fabric.Point} b2 - * @return {fabric.Intersection} - */ - fabric.Intersection.intersectLineLine = function (a1, a2, b1, b2) { - var result, - uaT = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x), - ubT = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x), - uB = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y); - if (uB !== 0) { - var ua = uaT / uB, - ub = ubT / uB; - if (0 <= ua && ua <= 1 && 0 <= ub && ub <= 1) { - result = new Intersection('Intersection'); - result.appendPoint(new fabric.Point(a1.x + ua * (a2.x - a1.x), a1.y + ua * (a2.y - a1.y))); - } - else { - result = new Intersection(); - } - } - else { - if (uaT === 0 || ubT === 0) { - result = new Intersection('Coincident'); - } - else { - result = new Intersection('Parallel'); - } - } - return result; - }; - - /** - * Checks if line intersects polygon - * TODO: rename in intersectSegmentPolygon - * fix detection of coincident - * @static - * @param {fabric.Point} a1 - * @param {fabric.Point} a2 - * @param {Array} points - * @return {fabric.Intersection} - */ - fabric.Intersection.intersectLinePolygon = function(a1, a2, points) { - var result = new Intersection(), - length = points.length, - b1, b2, inter, i; - - for (i = 0; i < length; i++) { - b1 = points[i]; - b2 = points[(i + 1) % length]; - inter = Intersection.intersectLineLine(a1, a2, b1, b2); - - result.appendPoints(inter.points); - } - if (result.points.length > 0) { - result.status = 'Intersection'; - } - return result; - }; - - /** - * Checks if polygon intersects another polygon - * @static - * @param {Array} points1 - * @param {Array} points2 - * @return {fabric.Intersection} - */ - fabric.Intersection.intersectPolygonPolygon = function (points1, points2) { - var result = new Intersection(), - length = points1.length, i; - - for (i = 0; i < length; i++) { - var a1 = points1[i], - a2 = points1[(i + 1) % length], - inter = Intersection.intersectLinePolygon(a1, a2, points2); - - result.appendPoints(inter.points); - } - if (result.points.length > 0) { - result.status = 'Intersection'; - } - return result; - }; - - /** - * Checks if polygon intersects rectangle - * @static - * @param {Array} points - * @param {fabric.Point} r1 - * @param {fabric.Point} r2 - * @return {fabric.Intersection} - */ - fabric.Intersection.intersectPolygonRectangle = function (points, r1, r2) { - var min = r1.min(r2), - max = r1.max(r2), - topRight = new fabric.Point(max.x, min.y), - bottomLeft = new fabric.Point(min.x, max.y), - inter1 = Intersection.intersectLinePolygon(min, topRight, points), - inter2 = Intersection.intersectLinePolygon(topRight, max, points), - inter3 = Intersection.intersectLinePolygon(max, bottomLeft, points), - inter4 = Intersection.intersectLinePolygon(bottomLeft, min, points), - result = new Intersection(); - - result.appendPoints(inter1.points); - result.appendPoints(inter2.points); - result.appendPoints(inter3.points); - result.appendPoints(inter4.points); - - if (result.points.length > 0) { - result.status = 'Intersection'; - } - return result; - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }); - - if (fabric.Color) { - fabric.warn('fabric.Color is already defined.'); - return; - } - - /** - * Color class - * The purpose of {@link fabric.Color} is to abstract and encapsulate common color operations; - * {@link fabric.Color} is a constructor and creates instances of {@link fabric.Color} objects. - * - * @class fabric.Color - * @param {String} color optional in hex or rgb(a) or hsl format or from known color list - * @return {fabric.Color} thisArg - * @tutorial {@link http://fabricjs.com/fabric-intro-part-2/#colors} - */ - function Color(color) { - if (!color) { - this.setSource([0, 0, 0, 1]); - } - else { - this._tryParsingColor(color); - } - } - - fabric.Color = Color; - - fabric.Color.prototype = /** @lends fabric.Color.prototype */ { - - /** - * @private - * @param {String|Array} color Color value to parse - */ - _tryParsingColor: function(color) { - var source; - - if (color in Color.colorNameMap) { - color = Color.colorNameMap[color]; - } - - if (color === 'transparent') { - source = [255, 255, 255, 0]; - } - - if (!source) { - source = Color.sourceFromHex(color); - } - if (!source) { - source = Color.sourceFromRgb(color); - } - if (!source) { - source = Color.sourceFromHsl(color); - } - if (!source) { - //if color is not recognize let's make black as canvas does - source = [0, 0, 0, 1]; - } - if (source) { - this.setSource(source); - } - }, - - /** - * Adapted from https://github.com/mjijackson - * @private - * @param {Number} r Red color value - * @param {Number} g Green color value - * @param {Number} b Blue color value - * @return {Array} Hsl color - */ - _rgbToHsl: function(r, g, b) { - r /= 255; g /= 255; b /= 255; - - var h, s, l, - max = fabric.util.array.max([r, g, b]), - min = fabric.util.array.min([r, g, b]); - - l = (max + min) / 2; - - if (max === min) { - h = s = 0; // achromatic - } - else { - var d = max - min; - s = l > 0.5 ? d / (2 - max - min) : d / (max + min); - switch (max) { - case r: - h = (g - b) / d + (g < b ? 6 : 0); - break; - case g: - h = (b - r) / d + 2; - break; - case b: - h = (r - g) / d + 4; - break; - } - h /= 6; - } - - return [ - Math.round(h * 360), - Math.round(s * 100), - Math.round(l * 100) - ]; - }, - - /** - * Returns source of this color (where source is an array representation; ex: [200, 200, 100, 1]) - * @return {Array} - */ - getSource: function() { - return this._source; - }, - - /** - * Sets source of this color (where source is an array representation; ex: [200, 200, 100, 1]) - * @param {Array} source - */ - setSource: function(source) { - this._source = source; - }, - - /** - * Returns color representation in RGB format - * @return {String} ex: rgb(0-255,0-255,0-255) - */ - toRgb: function() { - var source = this.getSource(); - return 'rgb(' + source[0] + ',' + source[1] + ',' + source[2] + ')'; - }, - - /** - * Returns color representation in RGBA format - * @return {String} ex: rgba(0-255,0-255,0-255,0-1) - */ - toRgba: function() { - var source = this.getSource(); - return 'rgba(' + source[0] + ',' + source[1] + ',' + source[2] + ',' + source[3] + ')'; - }, - - /** - * Returns color representation in HSL format - * @return {String} ex: hsl(0-360,0%-100%,0%-100%) - */ - toHsl: function() { - var source = this.getSource(), - hsl = this._rgbToHsl(source[0], source[1], source[2]); - - return 'hsl(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%)'; - }, - - /** - * Returns color representation in HSLA format - * @return {String} ex: hsla(0-360,0%-100%,0%-100%,0-1) - */ - toHsla: function() { - var source = this.getSource(), - hsl = this._rgbToHsl(source[0], source[1], source[2]); - - return 'hsla(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%,' + source[3] + ')'; - }, - - /** - * Returns color representation in HEX format - * @return {String} ex: FF5555 - */ - toHex: function() { - var source = this.getSource(), r, g, b; - - r = source[0].toString(16); - r = (r.length === 1) ? ('0' + r) : r; - - g = source[1].toString(16); - g = (g.length === 1) ? ('0' + g) : g; - - b = source[2].toString(16); - b = (b.length === 1) ? ('0' + b) : b; - - return r.toUpperCase() + g.toUpperCase() + b.toUpperCase(); - }, - - /** - * Returns color representation in HEXA format - * @return {String} ex: FF5555CC - */ - toHexa: function() { - var source = this.getSource(), a; - - a = Math.round(source[3] * 255); - a = a.toString(16); - a = (a.length === 1) ? ('0' + a) : a; - - return this.toHex() + a.toUpperCase(); - }, - - /** - * Gets value of alpha channel for this color - * @return {Number} 0-1 - */ - getAlpha: function() { - return this.getSource()[3]; - }, - - /** - * Sets value of alpha channel for this color - * @param {Number} alpha Alpha value 0-1 - * @return {fabric.Color} thisArg - */ - setAlpha: function(alpha) { - var source = this.getSource(); - source[3] = alpha; - this.setSource(source); - return this; - }, - - /** - * Transforms color to its grayscale representation - * @return {fabric.Color} thisArg - */ - toGrayscale: function() { - var source = this.getSource(), - average = parseInt((source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0), 10), - currentAlpha = source[3]; - this.setSource([average, average, average, currentAlpha]); - return this; - }, - - /** - * Transforms color to its black and white representation - * @param {Number} threshold - * @return {fabric.Color} thisArg - */ - toBlackWhite: function(threshold) { - var source = this.getSource(), - average = (source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0), - currentAlpha = source[3]; - - threshold = threshold || 127; - - average = (Number(average) < Number(threshold)) ? 0 : 255; - this.setSource([average, average, average, currentAlpha]); - return this; - }, - - /** - * Overlays color with another color - * @param {String|fabric.Color} otherColor - * @return {fabric.Color} thisArg - */ - overlayWith: function(otherColor) { - if (!(otherColor instanceof Color)) { - otherColor = new Color(otherColor); - } - - var result = [], - alpha = this.getAlpha(), - otherAlpha = 0.5, - source = this.getSource(), - otherSource = otherColor.getSource(), i; - - for (i = 0; i < 3; i++) { - result.push(Math.round((source[i] * (1 - otherAlpha)) + (otherSource[i] * otherAlpha))); - } - - result[3] = alpha; - this.setSource(result); - return this; - } - }; - - /** - * Regex matching color in RGB or RGBA formats (ex: rgb(0, 0, 0), rgba(255, 100, 10, 0.5), rgba( 255 , 100 , 10 , 0.5 ), rgb(1,1,1), rgba(100%, 60%, 10%, 0.5)) - * @static - * @field - * @memberOf fabric.Color - */ - // eslint-disable-next-line max-len - fabric.Color.reRGBa = /^rgba?\(\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*(?:\s*,\s*((?:\d*\.?\d+)?)\s*)?\)$/i; - - /** - * Regex matching color in HSL or HSLA formats (ex: hsl(200, 80%, 10%), hsla(300, 50%, 80%, 0.5), hsla( 300 , 50% , 80% , 0.5 )) - * @static - * @field - * @memberOf fabric.Color - */ - fabric.Color.reHSLa = /^hsla?\(\s*(\d{1,3})\s*,\s*(\d{1,3}\%)\s*,\s*(\d{1,3}\%)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/i; - - /** - * Regex matching color in HEX format (ex: #FF5544CC, #FF5555, 010155, aff) - * @static - * @field - * @memberOf fabric.Color - */ - fabric.Color.reHex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i; - - /** - * Map of the 148 color names with HEX code - * @static - * @field - * @memberOf fabric.Color - * @see: https://www.w3.org/TR/css3-color/#svg-color - */ - fabric.Color.colorNameMap = { - aliceblue: '#F0F8FF', - antiquewhite: '#FAEBD7', - aqua: '#00FFFF', - aquamarine: '#7FFFD4', - azure: '#F0FFFF', - beige: '#F5F5DC', - bisque: '#FFE4C4', - black: '#000000', - blanchedalmond: '#FFEBCD', - blue: '#0000FF', - blueviolet: '#8A2BE2', - brown: '#A52A2A', - burlywood: '#DEB887', - cadetblue: '#5F9EA0', - chartreuse: '#7FFF00', - chocolate: '#D2691E', - coral: '#FF7F50', - cornflowerblue: '#6495ED', - cornsilk: '#FFF8DC', - crimson: '#DC143C', - cyan: '#00FFFF', - darkblue: '#00008B', - darkcyan: '#008B8B', - darkgoldenrod: '#B8860B', - darkgray: '#A9A9A9', - darkgrey: '#A9A9A9', - darkgreen: '#006400', - darkkhaki: '#BDB76B', - darkmagenta: '#8B008B', - darkolivegreen: '#556B2F', - darkorange: '#FF8C00', - darkorchid: '#9932CC', - darkred: '#8B0000', - darksalmon: '#E9967A', - darkseagreen: '#8FBC8F', - darkslateblue: '#483D8B', - darkslategray: '#2F4F4F', - darkslategrey: '#2F4F4F', - darkturquoise: '#00CED1', - darkviolet: '#9400D3', - deeppink: '#FF1493', - deepskyblue: '#00BFFF', - dimgray: '#696969', - dimgrey: '#696969', - dodgerblue: '#1E90FF', - firebrick: '#B22222', - floralwhite: '#FFFAF0', - forestgreen: '#228B22', - fuchsia: '#FF00FF', - gainsboro: '#DCDCDC', - ghostwhite: '#F8F8FF', - gold: '#FFD700', - goldenrod: '#DAA520', - gray: '#808080', - grey: '#808080', - green: '#008000', - greenyellow: '#ADFF2F', - honeydew: '#F0FFF0', - hotpink: '#FF69B4', - indianred: '#CD5C5C', - indigo: '#4B0082', - ivory: '#FFFFF0', - khaki: '#F0E68C', - lavender: '#E6E6FA', - lavenderblush: '#FFF0F5', - lawngreen: '#7CFC00', - lemonchiffon: '#FFFACD', - lightblue: '#ADD8E6', - lightcoral: '#F08080', - lightcyan: '#E0FFFF', - lightgoldenrodyellow: '#FAFAD2', - lightgray: '#D3D3D3', - lightgrey: '#D3D3D3', - lightgreen: '#90EE90', - lightpink: '#FFB6C1', - lightsalmon: '#FFA07A', - lightseagreen: '#20B2AA', - lightskyblue: '#87CEFA', - lightslategray: '#778899', - lightslategrey: '#778899', - lightsteelblue: '#B0C4DE', - lightyellow: '#FFFFE0', - lime: '#00FF00', - limegreen: '#32CD32', - linen: '#FAF0E6', - magenta: '#FF00FF', - maroon: '#800000', - mediumaquamarine: '#66CDAA', - mediumblue: '#0000CD', - mediumorchid: '#BA55D3', - mediumpurple: '#9370DB', - mediumseagreen: '#3CB371', - mediumslateblue: '#7B68EE', - mediumspringgreen: '#00FA9A', - mediumturquoise: '#48D1CC', - mediumvioletred: '#C71585', - midnightblue: '#191970', - mintcream: '#F5FFFA', - mistyrose: '#FFE4E1', - moccasin: '#FFE4B5', - navajowhite: '#FFDEAD', - navy: '#000080', - oldlace: '#FDF5E6', - olive: '#808000', - olivedrab: '#6B8E23', - orange: '#FFA500', - orangered: '#FF4500', - orchid: '#DA70D6', - palegoldenrod: '#EEE8AA', - palegreen: '#98FB98', - paleturquoise: '#AFEEEE', - palevioletred: '#DB7093', - papayawhip: '#FFEFD5', - peachpuff: '#FFDAB9', - peru: '#CD853F', - pink: '#FFC0CB', - plum: '#DDA0DD', - powderblue: '#B0E0E6', - purple: '#800080', - rebeccapurple: '#663399', - red: '#FF0000', - rosybrown: '#BC8F8F', - royalblue: '#4169E1', - saddlebrown: '#8B4513', - salmon: '#FA8072', - sandybrown: '#F4A460', - seagreen: '#2E8B57', - seashell: '#FFF5EE', - sienna: '#A0522D', - silver: '#C0C0C0', - skyblue: '#87CEEB', - slateblue: '#6A5ACD', - slategray: '#708090', - slategrey: '#708090', - snow: '#FFFAFA', - springgreen: '#00FF7F', - steelblue: '#4682B4', - tan: '#D2B48C', - teal: '#008080', - thistle: '#D8BFD8', - tomato: '#FF6347', - turquoise: '#40E0D0', - violet: '#EE82EE', - wheat: '#F5DEB3', - white: '#FFFFFF', - whitesmoke: '#F5F5F5', - yellow: '#FFFF00', - yellowgreen: '#9ACD32' - }; - - /** - * @private - * @param {Number} p - * @param {Number} q - * @param {Number} t - * @return {Number} - */ - function hue2rgb(p, q, t) { - if (t < 0) { - t += 1; - } - if (t > 1) { - t -= 1; - } - if (t < 1 / 6) { - return p + (q - p) * 6 * t; - } - if (t < 1 / 2) { - return q; - } - if (t < 2 / 3) { - return p + (q - p) * (2 / 3 - t) * 6; - } - return p; - } - - /** - * Returns new color object, when given a color in RGB format - * @memberOf fabric.Color - * @param {String} color Color value ex: rgb(0-255,0-255,0-255) - * @return {fabric.Color} - */ - fabric.Color.fromRgb = function(color) { - return Color.fromSource(Color.sourceFromRgb(color)); - }; - - /** - * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in RGB or RGBA format - * @memberOf fabric.Color - * @param {String} color Color value ex: rgb(0-255,0-255,0-255), rgb(0%-100%,0%-100%,0%-100%) - * @return {Array} source - */ - fabric.Color.sourceFromRgb = function(color) { - var match = color.match(Color.reRGBa); - if (match) { - var r = parseInt(match[1], 10) / (/%$/.test(match[1]) ? 100 : 1) * (/%$/.test(match[1]) ? 255 : 1), - g = parseInt(match[2], 10) / (/%$/.test(match[2]) ? 100 : 1) * (/%$/.test(match[2]) ? 255 : 1), - b = parseInt(match[3], 10) / (/%$/.test(match[3]) ? 100 : 1) * (/%$/.test(match[3]) ? 255 : 1); - - return [ - parseInt(r, 10), - parseInt(g, 10), - parseInt(b, 10), - match[4] ? parseFloat(match[4]) : 1 - ]; - } - }; - - /** - * Returns new color object, when given a color in RGBA format - * @static - * @function - * @memberOf fabric.Color - * @param {String} color - * @return {fabric.Color} - */ - fabric.Color.fromRgba = Color.fromRgb; - - /** - * Returns new color object, when given a color in HSL format - * @param {String} color Color value ex: hsl(0-260,0%-100%,0%-100%) - * @memberOf fabric.Color - * @return {fabric.Color} - */ - fabric.Color.fromHsl = function(color) { - return Color.fromSource(Color.sourceFromHsl(color)); - }; - - /** - * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in HSL or HSLA format. - * Adapted from https://github.com/mjijackson - * @memberOf fabric.Color - * @param {String} color Color value ex: hsl(0-360,0%-100%,0%-100%) or hsla(0-360,0%-100%,0%-100%, 0-1) - * @return {Array} source - * @see http://http://www.w3.org/TR/css3-color/#hsl-color - */ - fabric.Color.sourceFromHsl = function(color) { - var match = color.match(Color.reHSLa); - if (!match) { - return; - } - - var h = (((parseFloat(match[1]) % 360) + 360) % 360) / 360, - s = parseFloat(match[2]) / (/%$/.test(match[2]) ? 100 : 1), - l = parseFloat(match[3]) / (/%$/.test(match[3]) ? 100 : 1), - r, g, b; - - if (s === 0) { - r = g = b = l; - } - else { - var q = l <= 0.5 ? l * (s + 1) : l + s - l * s, - p = l * 2 - q; - - r = hue2rgb(p, q, h + 1 / 3); - g = hue2rgb(p, q, h); - b = hue2rgb(p, q, h - 1 / 3); - } - - return [ - Math.round(r * 255), - Math.round(g * 255), - Math.round(b * 255), - match[4] ? parseFloat(match[4]) : 1 - ]; - }; - - /** - * Returns new color object, when given a color in HSLA format - * @static - * @function - * @memberOf fabric.Color - * @param {String} color - * @return {fabric.Color} - */ - fabric.Color.fromHsla = Color.fromHsl; - - /** - * Returns new color object, when given a color in HEX format - * @static - * @memberOf fabric.Color - * @param {String} color Color value ex: FF5555 - * @return {fabric.Color} - */ - fabric.Color.fromHex = function(color) { - return Color.fromSource(Color.sourceFromHex(color)); - }; - - /** - * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in HEX format - * @static - * @memberOf fabric.Color - * @param {String} color ex: FF5555 or FF5544CC (RGBa) - * @return {Array} source - */ - fabric.Color.sourceFromHex = function(color) { - if (color.match(Color.reHex)) { - var value = color.slice(color.indexOf('#') + 1), - isShortNotation = (value.length === 3 || value.length === 4), - isRGBa = (value.length === 8 || value.length === 4), - r = isShortNotation ? (value.charAt(0) + value.charAt(0)) : value.substring(0, 2), - g = isShortNotation ? (value.charAt(1) + value.charAt(1)) : value.substring(2, 4), - b = isShortNotation ? (value.charAt(2) + value.charAt(2)) : value.substring(4, 6), - a = isRGBa ? (isShortNotation ? (value.charAt(3) + value.charAt(3)) : value.substring(6, 8)) : 'FF'; - - return [ - parseInt(r, 16), - parseInt(g, 16), - parseInt(b, 16), - parseFloat((parseInt(a, 16) / 255).toFixed(2)) - ]; - } - }; - - /** - * Returns new color object, when given color in array representation (ex: [200, 100, 100, 0.5]) - * @static - * @memberOf fabric.Color - * @param {Array} source - * @return {fabric.Color} - */ - fabric.Color.fromSource = function(source) { - var oColor = new Color(); - oColor.setSource(source); - return oColor; - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function() { - - /* _FROM_SVG_START_ */ - function getColorStop(el, multiplier) { - var style = el.getAttribute('style'), - offset = el.getAttribute('offset') || 0, - color, colorAlpha, opacity, i; - - // convert percents to absolute values - offset = parseFloat(offset) / (/%$/.test(offset) ? 100 : 1); - offset = offset < 0 ? 0 : offset > 1 ? 1 : offset; - if (style) { - var keyValuePairs = style.split(/\s*;\s*/); - - if (keyValuePairs[keyValuePairs.length - 1] === '') { - keyValuePairs.pop(); - } - - for (i = keyValuePairs.length; i--; ) { - - var split = keyValuePairs[i].split(/\s*:\s*/), - key = split[0].trim(), - value = split[1].trim(); - - if (key === 'stop-color') { - color = value; - } - else if (key === 'stop-opacity') { - opacity = value; - } - } - } - - if (!color) { - color = el.getAttribute('stop-color') || 'rgb(0,0,0)'; - } - if (!opacity) { - opacity = el.getAttribute('stop-opacity'); - } - - color = new fabric.Color(color); - colorAlpha = color.getAlpha(); - opacity = isNaN(parseFloat(opacity)) ? 1 : parseFloat(opacity); - opacity *= colorAlpha * multiplier; - - return { - offset: offset, - color: color.toRgb(), - opacity: opacity - }; - } - - function getLinearCoords(el) { - return { - x1: el.getAttribute('x1') || 0, - y1: el.getAttribute('y1') || 0, - x2: el.getAttribute('x2') || '100%', - y2: el.getAttribute('y2') || 0 - }; - } - - function getRadialCoords(el) { - return { - x1: el.getAttribute('fx') || el.getAttribute('cx') || '50%', - y1: el.getAttribute('fy') || el.getAttribute('cy') || '50%', - r1: 0, - x2: el.getAttribute('cx') || '50%', - y2: el.getAttribute('cy') || '50%', - r2: el.getAttribute('r') || '50%' - }; - } - /* _FROM_SVG_END_ */ - - var clone = fabric.util.object.clone; - - /** - * Gradient class - * @class fabric.Gradient - * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#gradients} - * @see {@link fabric.Gradient#initialize} for constructor definition - */ - fabric.Gradient = fabric.util.createClass(/** @lends fabric.Gradient.prototype */ { - - /** - * Horizontal offset for aligning gradients coming from SVG when outside pathgroups - * @type Number - * @default 0 - */ - offsetX: 0, - - /** - * Vertical offset for aligning gradients coming from SVG when outside pathgroups - * @type Number - * @default 0 - */ - offsetY: 0, - - /** - * A transform matrix to apply to the gradient before painting. - * Imported from svg gradients, is not applied with the current transform in the center. - * Before this transform is applied, the origin point is at the top left corner of the object - * plus the addition of offsetY and offsetX. - * @type Number[] - * @default null - */ - gradientTransform: null, - - /** - * coordinates units for coords. - * If `pixels`, the number of coords are in the same unit of width / height. - * If set as `percentage` the coords are still a number, but 1 means 100% of width - * for the X and 100% of the height for the y. It can be bigger than 1 and negative. - * allowed values pixels or percentage. - * @type String - * @default 'pixels' - */ - gradientUnits: 'pixels', - - /** - * Gradient type linear or radial - * @type String - * @default 'pixels' - */ - type: 'linear', - - /** - * Constructor - * @param {Object} options Options object with type, coords, gradientUnits and colorStops - * @param {Object} [options.type] gradient type linear or radial - * @param {Object} [options.gradientUnits] gradient units - * @param {Object} [options.offsetX] SVG import compatibility - * @param {Object} [options.offsetY] SVG import compatibility - * @param {Object[]} options.colorStops contains the colorstops. - * @param {Object} options.coords contains the coords of the gradient - * @param {Number} [options.coords.x1] X coordiante of the first point for linear or of the focal point for radial - * @param {Number} [options.coords.y1] Y coordiante of the first point for linear or of the focal point for radial - * @param {Number} [options.coords.x2] X coordiante of the second point for linear or of the center point for radial - * @param {Number} [options.coords.y2] Y coordiante of the second point for linear or of the center point for radial - * @param {Number} [options.coords.r1] only for radial gradient, radius of the inner circle - * @param {Number} [options.coords.r2] only for radial gradient, radius of the external circle - * @return {fabric.Gradient} thisArg - */ - initialize: function(options) { - options || (options = { }); - options.coords || (options.coords = { }); - - var coords, _this = this; - - // sets everything, then coords and colorstops get sets again - Object.keys(options).forEach(function(option) { - _this[option] = options[option]; - }); - - if (this.id) { - this.id += '_' + fabric.Object.__uid++; - } - else { - this.id = fabric.Object.__uid++; - } - - coords = { - x1: options.coords.x1 || 0, - y1: options.coords.y1 || 0, - x2: options.coords.x2 || 0, - y2: options.coords.y2 || 0 - }; - - if (this.type === 'radial') { - coords.r1 = options.coords.r1 || 0; - coords.r2 = options.coords.r2 || 0; - } - - this.coords = coords; - this.colorStops = options.colorStops.slice(); - }, - - /** - * Adds another colorStop - * @param {Object} colorStop Object with offset and color - * @return {fabric.Gradient} thisArg - */ - addColorStop: function(colorStops) { - for (var position in colorStops) { - var color = new fabric.Color(colorStops[position]); - this.colorStops.push({ - offset: parseFloat(position), - color: color.toRgb(), - opacity: color.getAlpha() - }); - } - return this; - }, - - /** - * Returns object representation of a gradient - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} - */ - toObject: function(propertiesToInclude) { - var object = { - type: this.type, - coords: this.coords, - colorStops: this.colorStops, - offsetX: this.offsetX, - offsetY: this.offsetY, - gradientUnits: this.gradientUnits, - gradientTransform: this.gradientTransform ? this.gradientTransform.concat() : this.gradientTransform - }; - fabric.util.populateWithProperties(this, object, propertiesToInclude); - - return object; - }, - - /* _TO_SVG_START_ */ - /** - * Returns SVG representation of an gradient - * @param {Object} object Object to create a gradient for - * @return {String} SVG representation of an gradient (linear/radial) - */ - toSVG: function(object, options) { - var coords = clone(this.coords, true), i, len, options = options || {}, - markup, commonAttributes, colorStops = clone(this.colorStops, true), - needsSwap = coords.r1 > coords.r2, - transform = this.gradientTransform ? this.gradientTransform.concat() : fabric.iMatrix.concat(), - offsetX = -this.offsetX, offsetY = -this.offsetY, - withViewport = !!options.additionalTransform, - gradientUnits = this.gradientUnits === 'pixels' ? 'userSpaceOnUse' : 'objectBoundingBox'; - // colorStops must be sorted ascending - colorStops.sort(function(a, b) { - return a.offset - b.offset; - }); - - if (gradientUnits === 'objectBoundingBox') { - offsetX /= object.width; - offsetY /= object.height; - } - else { - offsetX += object.width / 2; - offsetY += object.height / 2; - } - if (object.type === 'path') { - offsetX -= object.pathOffset.x; - offsetY -= object.pathOffset.y; - } - - - transform[4] -= offsetX; - transform[5] -= offsetY; - - commonAttributes = 'id="SVGID_' + this.id + - '" gradientUnits="' + gradientUnits + '"'; - commonAttributes += ' gradientTransform="' + (withViewport ? - options.additionalTransform + ' ' : '') + fabric.util.matrixToSVG(transform) + '" '; - - if (this.type === 'linear') { - markup = [ - '\n' - ]; - } - else if (this.type === 'radial') { - // svg radial gradient has just 1 radius. the biggest. - markup = [ - '\n' - ]; - } - - if (this.type === 'radial') { - if (needsSwap) { - // svg goes from internal to external radius. if radius are inverted, swap color stops. - colorStops = colorStops.concat(); - colorStops.reverse(); - for (i = 0, len = colorStops.length; i < len; i++) { - colorStops[i].offset = 1 - colorStops[i].offset; - } - } - var minRadius = Math.min(coords.r1, coords.r2); - if (minRadius > 0) { - // i have to shift all colorStops and add new one in 0. - var maxRadius = Math.max(coords.r1, coords.r2), - percentageShift = minRadius / maxRadius; - for (i = 0, len = colorStops.length; i < len; i++) { - colorStops[i].offset += percentageShift * (1 - colorStops[i].offset); - } - } - } - - for (i = 0, len = colorStops.length; i < len; i++) { - var colorStop = colorStops[i]; - markup.push( - '\n' - ); - } - - markup.push((this.type === 'linear' ? '\n' : '\n')); - - return markup.join(''); - }, - /* _TO_SVG_END_ */ - - /** - * Returns an instance of CanvasGradient - * @param {CanvasRenderingContext2D} ctx Context to render on - * @return {CanvasGradient} - */ - toLive: function(ctx) { - var gradient, coords = fabric.util.object.clone(this.coords), i, len; - - if (!this.type) { - return; - } - - if (this.type === 'linear') { - gradient = ctx.createLinearGradient( - coords.x1, coords.y1, coords.x2, coords.y2); - } - else if (this.type === 'radial') { - gradient = ctx.createRadialGradient( - coords.x1, coords.y1, coords.r1, coords.x2, coords.y2, coords.r2); - } - - for (i = 0, len = this.colorStops.length; i < len; i++) { - var color = this.colorStops[i].color, - opacity = this.colorStops[i].opacity, - offset = this.colorStops[i].offset; - - if (typeof opacity !== 'undefined') { - color = new fabric.Color(color).setAlpha(opacity).toRgba(); - } - gradient.addColorStop(offset, color); - } - - return gradient; - } - }); - - fabric.util.object.extend(fabric.Gradient, { - - /* _FROM_SVG_START_ */ - /** - * Returns {@link fabric.Gradient} instance from an SVG element - * @static - * @memberOf fabric.Gradient - * @param {SVGGradientElement} el SVG gradient element - * @param {fabric.Object} instance - * @param {String} opacityAttr A fill-opacity or stroke-opacity attribute to multiply to each stop's opacity. - * @param {Object} svgOptions an object containing the size of the SVG in order to parse correctly graidents - * that uses gradientUnits as 'userSpaceOnUse' and percentages. - * @param {Object.number} viewBoxWidth width part of the viewBox attribute on svg - * @param {Object.number} viewBoxHeight height part of the viewBox attribute on svg - * @param {Object.number} width width part of the svg tag if viewBox is not specified - * @param {Object.number} height height part of the svg tag if viewBox is not specified - * @return {fabric.Gradient} Gradient instance - * @see http://www.w3.org/TR/SVG/pservers.html#LinearGradientElement - * @see http://www.w3.org/TR/SVG/pservers.html#RadialGradientElement - */ - fromElement: function(el, instance, opacityAttr, svgOptions) { - /** - * @example: - * - * - * - * - * - * - * OR - * - * - * - * - * - * - * OR - * - * - * - * - * - * - * - * OR - * - * - * - * - * - * - * - */ - - var multiplier = parseFloat(opacityAttr) / (/%$/.test(opacityAttr) ? 100 : 1); - multiplier = multiplier < 0 ? 0 : multiplier > 1 ? 1 : multiplier; - if (isNaN(multiplier)) { - multiplier = 1; - } - - var colorStopEls = el.getElementsByTagName('stop'), - type, - gradientUnits = el.getAttribute('gradientUnits') === 'userSpaceOnUse' ? - 'pixels' : 'percentage', - gradientTransform = el.getAttribute('gradientTransform') || '', - colorStops = [], - coords, i, offsetX = 0, offsetY = 0, - transformMatrix; - if (el.nodeName === 'linearGradient' || el.nodeName === 'LINEARGRADIENT') { - type = 'linear'; - coords = getLinearCoords(el); - } - else { - type = 'radial'; - coords = getRadialCoords(el); - } - - for (i = colorStopEls.length; i--; ) { - colorStops.push(getColorStop(colorStopEls[i], multiplier)); - } - - transformMatrix = fabric.parseTransformAttribute(gradientTransform); - - __convertPercentUnitsToValues(instance, coords, svgOptions, gradientUnits); - - if (gradientUnits === 'pixels') { - offsetX = -instance.left; - offsetY = -instance.top; - } - - var gradient = new fabric.Gradient({ - id: el.getAttribute('id'), - type: type, - coords: coords, - colorStops: colorStops, - gradientUnits: gradientUnits, - gradientTransform: transformMatrix, - offsetX: offsetX, - offsetY: offsetY, - }); - - return gradient; - }, - /* _FROM_SVG_END_ */ - - /** - * Returns {@link fabric.Gradient} instance from its object representation - * this function is uniquely used by Object.setGradient and is deprecated with it. - * @static - * @deprecated since 3.4.0 - * @memberOf fabric.Gradient - * @param {Object} obj - * @param {Object} [options] Options object - */ - forObject: function(obj, options) { - options || (options = { }); - __convertPercentUnitsToValues(obj, options.coords, options.gradientUnits, { - // those values are to avoid errors. this function is uniquely used by - viewBoxWidth: 100, - viewBoxHeight: 100, - }); - return new fabric.Gradient(options); - } - }); - - /** - * @private - */ - function __convertPercentUnitsToValues(instance, options, svgOptions, gradientUnits) { - var propValue, finalValue; - Object.keys(options).forEach(function(prop) { - propValue = options[prop]; - if (propValue === 'Infinity') { - finalValue = 1; - } - else if (propValue === '-Infinity') { - finalValue = 0; - } - else { - finalValue = parseFloat(options[prop], 10); - if (typeof propValue === 'string' && /^(\d+\.\d+)%|(\d+)%$/.test(propValue)) { - finalValue *= 0.01; - if (gradientUnits === 'pixels') { - // then we need to fix those percentages here in svg parsing - if (prop === 'x1' || prop === 'x2' || prop === 'r2') { - finalValue *= svgOptions.viewBoxWidth || svgOptions.width; - } - if (prop === 'y1' || prop === 'y2') { - finalValue *= svgOptions.viewBoxHeight || svgOptions.height; - } - } - } - } - options[prop] = finalValue; - }); - } -})(); - - -(function() { - - 'use strict'; - - var toFixed = fabric.util.toFixed; - - /** - * Pattern class - * @class fabric.Pattern - * @see {@link http://fabricjs.com/patterns|Pattern demo} - * @see {@link http://fabricjs.com/dynamic-patterns|DynamicPattern demo} - * @see {@link fabric.Pattern#initialize} for constructor definition - */ - - - fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ { - - /** - * Repeat property of a pattern (one of repeat, repeat-x, repeat-y or no-repeat) - * @type String - * @default - */ - repeat: 'repeat', - - /** - * Pattern horizontal offset from object's left/top corner - * @type Number - * @default - */ - offsetX: 0, - - /** - * Pattern vertical offset from object's left/top corner - * @type Number - * @default - */ - offsetY: 0, - - /** - * crossOrigin value (one of "", "anonymous", "use-credentials") - * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes - * @type String - * @default - */ - crossOrigin: '', - - /** - * transform matrix to change the pattern, imported from svgs. - * @type Array - * @default - */ - patternTransform: null, - - /** - * Constructor - * @param {Object} [options] Options object - * @param {Function} [callback] function to invoke after callback init. - * @return {fabric.Pattern} thisArg - */ - initialize: function(options, callback) { - options || (options = { }); - - this.id = fabric.Object.__uid++; - this.setOptions(options); - if (!options.source || (options.source && typeof options.source !== 'string')) { - callback && callback(this); - return; - } - // function string - if (typeof fabric.util.getFunctionBody(options.source) !== 'undefined') { - this.source = new Function(fabric.util.getFunctionBody(options.source)); - callback && callback(this); - } - else { - // img src string - var _this = this; - this.source = fabric.util.createImage(); - fabric.util.loadImage(options.source, function(img) { - _this.source = img; - callback && callback(_this); - }, null, this.crossOrigin); - } - }, - - /** - * Returns object representation of a pattern - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} Object representation of a pattern instance - */ - toObject: function(propertiesToInclude) { - var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS, - source, object; - - // callback - if (typeof this.source === 'function') { - source = String(this.source); - } - // element - else if (typeof this.source.src === 'string') { - source = this.source.src; - } - // element - else if (typeof this.source === 'object' && this.source.toDataURL) { - source = this.source.toDataURL(); - } - - object = { - type: 'pattern', - source: source, - repeat: this.repeat, - crossOrigin: this.crossOrigin, - offsetX: toFixed(this.offsetX, NUM_FRACTION_DIGITS), - offsetY: toFixed(this.offsetY, NUM_FRACTION_DIGITS), - patternTransform: this.patternTransform ? this.patternTransform.concat() : null - }; - fabric.util.populateWithProperties(this, object, propertiesToInclude); - - return object; - }, - - /* _TO_SVG_START_ */ - /** - * Returns SVG representation of a pattern - * @param {fabric.Object} object - * @return {String} SVG representation of a pattern - */ - toSVG: function(object) { - var patternSource = typeof this.source === 'function' ? this.source() : this.source, - patternWidth = patternSource.width / object.width, - patternHeight = patternSource.height / object.height, - patternOffsetX = this.offsetX / object.width, - patternOffsetY = this.offsetY / object.height, - patternImgSrc = ''; - if (this.repeat === 'repeat-x' || this.repeat === 'no-repeat') { - patternHeight = 1; - if (patternOffsetY) { - patternHeight += Math.abs(patternOffsetY); - } - } - if (this.repeat === 'repeat-y' || this.repeat === 'no-repeat') { - patternWidth = 1; - if (patternOffsetX) { - patternWidth += Math.abs(patternOffsetX); - } - - } - if (patternSource.src) { - patternImgSrc = patternSource.src; - } - else if (patternSource.toDataURL) { - patternImgSrc = patternSource.toDataURL(); - } - - return '\n' + - '\n' + - '\n'; - }, - /* _TO_SVG_END_ */ - - setOptions: function(options) { - for (var prop in options) { - this[prop] = options[prop]; - } - }, - - /** - * Returns an instance of CanvasPattern - * @param {CanvasRenderingContext2D} ctx Context to create pattern - * @return {CanvasPattern} - */ - toLive: function(ctx) { - var source = typeof this.source === 'function' ? this.source() : this.source; - - // if the image failed to load, return, and allow rest to continue loading - if (!source) { - return ''; - } - - // if an image - if (typeof source.src !== 'undefined') { - if (!source.complete) { - return ''; - } - if (source.naturalWidth === 0 || source.naturalHeight === 0) { - return ''; - } - } - return ctx.createPattern(source, this.repeat); - } - }); -})(); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - toFixed = fabric.util.toFixed; - - if (fabric.Shadow) { - fabric.warn('fabric.Shadow is already defined.'); - return; - } - - /** - * Shadow class - * @class fabric.Shadow - * @see {@link http://fabricjs.com/shadows|Shadow demo} - * @see {@link fabric.Shadow#initialize} for constructor definition - */ - fabric.Shadow = fabric.util.createClass(/** @lends fabric.Shadow.prototype */ { - - /** - * Shadow color - * @type String - * @default - */ - color: 'rgb(0,0,0)', - - /** - * Shadow blur - * @type Number - */ - blur: 0, - - /** - * Shadow horizontal offset - * @type Number - * @default - */ - offsetX: 0, - - /** - * Shadow vertical offset - * @type Number - * @default - */ - offsetY: 0, - - /** - * Whether the shadow should affect stroke operations - * @type Boolean - * @default - */ - affectStroke: false, - - /** - * Indicates whether toObject should include default values - * @type Boolean - * @default - */ - includeDefaultValues: true, - - /** - * When `false`, the shadow will scale with the object. - * When `true`, the shadow's offsetX, offsetY, and blur will not be affected by the object's scale. - * default to false - * @type Boolean - * @default - */ - nonScaling: false, - - /** - * Constructor - * @param {Object|String} [options] Options object with any of color, blur, offsetX, offsetY properties or string (e.g. "rgba(0,0,0,0.2) 2px 2px 10px") - * @return {fabric.Shadow} thisArg - */ - initialize: function(options) { - - if (typeof options === 'string') { - options = this._parseShadow(options); - } - - for (var prop in options) { - this[prop] = options[prop]; - } - - this.id = fabric.Object.__uid++; - }, - - /** - * @private - * @param {String} shadow Shadow value to parse - * @return {Object} Shadow object with color, offsetX, offsetY and blur - */ - _parseShadow: function(shadow) { - var shadowStr = shadow.trim(), - offsetsAndBlur = fabric.Shadow.reOffsetsAndBlur.exec(shadowStr) || [], - color = shadowStr.replace(fabric.Shadow.reOffsetsAndBlur, '') || 'rgb(0,0,0)'; - - return { - color: color.trim(), - offsetX: parseInt(offsetsAndBlur[1], 10) || 0, - offsetY: parseInt(offsetsAndBlur[2], 10) || 0, - blur: parseInt(offsetsAndBlur[3], 10) || 0 - }; - }, - - /** - * Returns a string representation of an instance - * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow - * @return {String} Returns CSS3 text-shadow declaration - */ - toString: function() { - return [this.offsetX, this.offsetY, this.blur, this.color].join('px '); - }, - - /* _TO_SVG_START_ */ - /** - * Returns SVG representation of a shadow - * @param {fabric.Object} object - * @return {String} SVG representation of a shadow - */ - toSVG: function(object) { - var fBoxX = 40, fBoxY = 40, NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS, - offset = fabric.util.rotateVector( - { x: this.offsetX, y: this.offsetY }, - fabric.util.degreesToRadians(-object.angle)), - BLUR_BOX = 20, color = new fabric.Color(this.color); - - if (object.width && object.height) { - //http://www.w3.org/TR/SVG/filters.html#FilterEffectsRegion - // we add some extra space to filter box to contain the blur ( 20 ) - fBoxX = toFixed((Math.abs(offset.x) + this.blur) / object.width, NUM_FRACTION_DIGITS) * 100 + BLUR_BOX; - fBoxY = toFixed((Math.abs(offset.y) + this.blur) / object.height, NUM_FRACTION_DIGITS) * 100 + BLUR_BOX; - } - if (object.flipX) { - offset.x *= -1; - } - if (object.flipY) { - offset.y *= -1; - } - - return ( - '\n' + - '\t\n' + - '\t\n' + - '\t\n' + - '\t\n' + - '\t\n' + - '\t\t\n' + - '\t\t\n' + - '\t\n' + - '\n'); - }, - /* _TO_SVG_END_ */ - - /** - * Returns object representation of a shadow - * @return {Object} Object representation of a shadow instance - */ - toObject: function() { - if (this.includeDefaultValues) { - return { - color: this.color, - blur: this.blur, - offsetX: this.offsetX, - offsetY: this.offsetY, - affectStroke: this.affectStroke, - nonScaling: this.nonScaling - }; - } - var obj = { }, proto = fabric.Shadow.prototype; - - ['color', 'blur', 'offsetX', 'offsetY', 'affectStroke', 'nonScaling'].forEach(function(prop) { - if (this[prop] !== proto[prop]) { - obj[prop] = this[prop]; - } - }, this); - - return obj; - } - }); - - /** - * Regex matching shadow offsetX, offsetY and blur (ex: "2px 2px 10px rgba(0,0,0,0.2)", "rgb(0,255,0) 2px 2px") - * @static - * @field - * @memberOf fabric.Shadow - */ - // eslint-disable-next-line max-len - fabric.Shadow.reOffsetsAndBlur = /(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function () { - - 'use strict'; - - if (fabric.StaticCanvas) { - fabric.warn('fabric.StaticCanvas is already defined.'); - return; - } - - // aliases for faster resolution - var extend = fabric.util.object.extend, - getElementOffset = fabric.util.getElementOffset, - removeFromArray = fabric.util.removeFromArray, - toFixed = fabric.util.toFixed, - transformPoint = fabric.util.transformPoint, - invertTransform = fabric.util.invertTransform, - getNodeCanvas = fabric.util.getNodeCanvas, - createCanvasElement = fabric.util.createCanvasElement, - - CANVAS_INIT_ERROR = new Error('Could not initialize `canvas` element'); - - /** - * Static canvas class - * @class fabric.StaticCanvas - * @mixes fabric.Collection - * @mixes fabric.Observable - * @see {@link http://fabricjs.com/static_canvas|StaticCanvas demo} - * @see {@link fabric.StaticCanvas#initialize} for constructor definition - * @fires before:render - * @fires after:render - * @fires canvas:cleared - * @fires object:added - * @fires object:removed - */ - fabric.StaticCanvas = fabric.util.createClass(fabric.CommonMethods, /** @lends fabric.StaticCanvas.prototype */ { - - /** - * Constructor - * @param {HTMLElement | String} el <canvas> element to initialize instance on - * @param {Object} [options] Options object - * @return {Object} thisArg - */ - initialize: function(el, options) { - options || (options = { }); - this.renderAndResetBound = this.renderAndReset.bind(this); - this.requestRenderAllBound = this.requestRenderAll.bind(this); - this._initStatic(el, options); - }, - - /** - * Background color of canvas instance. - * Should be set via {@link fabric.StaticCanvas#setBackgroundColor}. - * @type {(String|fabric.Pattern)} - * @default - */ - backgroundColor: '', - - /** - * Background image of canvas instance. - * Should be set via {@link fabric.StaticCanvas#setBackgroundImage}. - * Backwards incompatibility note: The "backgroundImageOpacity" - * and "backgroundImageStretch" properties are deprecated since 1.3.9. - * Use {@link fabric.Image#opacity}, {@link fabric.Image#width} and {@link fabric.Image#height}. - * since 2.4.0 image caching is active, please when putting an image as background, add to the - * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom - * vale. As an alternative you can disable image objectCaching - * @type fabric.Image - * @default - */ - backgroundImage: null, - - /** - * Overlay color of canvas instance. - * Should be set via {@link fabric.StaticCanvas#setOverlayColor} - * @since 1.3.9 - * @type {(String|fabric.Pattern)} - * @default - */ - overlayColor: '', - - /** - * Overlay image of canvas instance. - * Should be set via {@link fabric.StaticCanvas#setOverlayImage}. - * Backwards incompatibility note: The "overlayImageLeft" - * and "overlayImageTop" properties are deprecated since 1.3.9. - * Use {@link fabric.Image#left} and {@link fabric.Image#top}. - * since 2.4.0 image caching is active, please when putting an image as overlay, add to the - * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom - * vale. As an alternative you can disable image objectCaching - * @type fabric.Image - * @default - */ - overlayImage: null, - - /** - * Indicates whether toObject/toDatalessObject should include default values - * if set to false, takes precedence over the object value. - * @type Boolean - * @default - */ - includeDefaultValues: true, - - /** - * Indicates whether objects' state should be saved - * @type Boolean - * @default - */ - stateful: false, - - /** - * Indicates whether {@link fabric.Collection.add}, {@link fabric.Collection.insertAt} and {@link fabric.Collection.remove}, - * {@link fabric.StaticCanvas.moveTo}, {@link fabric.StaticCanvas.clear} and many more, should also re-render canvas. - * Disabling this option will not give a performance boost when adding/removing a lot of objects to/from canvas at once - * since the renders are quequed and executed one per frame. - * Disabling is suggested anyway and managing the renders of the app manually is not a big effort ( canvas.requestRenderAll() ) - * Left default to true to do not break documentation and old app, fiddles. - * @type Boolean - * @default - */ - renderOnAddRemove: true, - - /** - * Function that determines clipping of entire canvas area - * Being passed context as first argument. - * If you are using code minification, ctx argument can be minified/manglied you should use - * as a workaround `var ctx = arguments[0];` in the function; - * See clipping canvas area in {@link https://github.com/kangax/fabric.js/wiki/FAQ} - * @deprecated since 2.0.0 - * @type Function - * @default - */ - clipTo: null, - - /** - * Indicates whether object controls (borders/controls) are rendered above overlay image - * @type Boolean - * @default - */ - controlsAboveOverlay: false, - - /** - * Indicates whether the browser can be scrolled when using a touchscreen and dragging on the canvas - * @type Boolean - * @default - */ - allowTouchScrolling: false, - - /** - * Indicates whether this canvas will use image smoothing, this is on by default in browsers - * @type Boolean - * @default - */ - imageSmoothingEnabled: true, - - /** - * The transformation (in the format of Canvas transform) which focuses the viewport - * @type Array - * @default - */ - viewportTransform: fabric.iMatrix.concat(), - - /** - * if set to false background image is not affected by viewport transform - * @since 1.6.3 - * @type Boolean - * @default - */ - backgroundVpt: true, - - /** - * if set to false overlya image is not affected by viewport transform - * @since 1.6.3 - * @type Boolean - * @default - */ - overlayVpt: true, - - /** - * Callback; invoked right before object is about to be scaled/rotated - * @deprecated since 2.3.0 - * Use before:transform event - */ - onBeforeScaleRotate: function () { - /* NOOP */ - }, - - /** - * When true, canvas is scaled by devicePixelRatio for better rendering on retina screens - * @type Boolean - * @default - */ - enableRetinaScaling: true, - - /** - * Describe canvas element extension over design - * properties are tl,tr,bl,br. - * if canvas is not zoomed/panned those points are the four corner of canvas - * if canvas is viewportTransformed you those points indicate the extension - * of canvas element in plain untrasformed coordinates - * The coordinates get updated with @method calcViewportBoundaries. - * @memberOf fabric.StaticCanvas.prototype - */ - vptCoords: { }, - - /** - * Based on vptCoords and object.aCoords, skip rendering of objects that - * are not included in current viewport. - * May greatly help in applications with crowded canvas and use of zoom/pan - * If One of the corner of the bounding box of the object is on the canvas - * the objects get rendered. - * @memberOf fabric.StaticCanvas.prototype - * @type Boolean - * @default - */ - skipOffscreen: true, - - /** - * a fabricObject that, without stroke define a clipping area with their shape. filled in black - * the clipPath object gets used when the canvas has rendered, and the context is placed in the - * top left corner of the canvas. - * clipPath will clip away controls, if you do not want this to happen use controlsAboveOverlay = true - * @type fabric.Object - */ - clipPath: undefined, - - /** - * @private - * @param {HTMLElement | String} el <canvas> element to initialize instance on - * @param {Object} [options] Options object - */ - _initStatic: function(el, options) { - var cb = this.requestRenderAllBound; - this._objects = []; - this._createLowerCanvas(el); - this._initOptions(options); - this._setImageSmoothing(); - // only initialize retina scaling once - if (!this.interactive) { - this._initRetinaScaling(); - } - - if (options.overlayImage) { - this.setOverlayImage(options.overlayImage, cb); - } - if (options.backgroundImage) { - this.setBackgroundImage(options.backgroundImage, cb); - } - if (options.backgroundColor) { - this.setBackgroundColor(options.backgroundColor, cb); - } - if (options.overlayColor) { - this.setOverlayColor(options.overlayColor, cb); - } - this.calcOffset(); - }, - - /** - * @private - */ - _isRetinaScaling: function() { - return (fabric.devicePixelRatio !== 1 && this.enableRetinaScaling); - }, - - /** - * @private - * @return {Number} retinaScaling if applied, otherwise 1; - */ - getRetinaScaling: function() { - return this._isRetinaScaling() ? fabric.devicePixelRatio : 1; - }, - - /** - * @private - */ - _initRetinaScaling: function() { - if (!this._isRetinaScaling()) { - return; - } - var scaleRatio = fabric.devicePixelRatio; - this.__initRetinaScaling(scaleRatio, this.lowerCanvasEl, this.contextContainer); - if (this.upperCanvasEl) { - this.__initRetinaScaling(scaleRatio, this.upperCanvasEl, this.contextTop); - } - }, - - __initRetinaScaling: function(scaleRatio, canvas, context) { - canvas.setAttribute('width', this.width * scaleRatio); - canvas.setAttribute('height', this.height * scaleRatio); - context.scale(scaleRatio, scaleRatio); - }, - - - /** - * Calculates canvas element offset relative to the document - * This method is also attached as "resize" event handler of window - * @return {fabric.Canvas} instance - * @chainable - */ - calcOffset: function () { - this._offset = getElementOffset(this.lowerCanvasEl); - return this; - }, - - /** - * Sets {@link fabric.StaticCanvas#overlayImage|overlay image} for this canvas - * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set overlay to - * @param {Function} callback callback to invoke when image is loaded and set as an overlay - * @param {Object} [options] Optional options to set for the {@link fabric.Image|overlay image}. - * @return {fabric.Canvas} thisArg - * @chainable - * @see {@link http://jsfiddle.net/fabricjs/MnzHT/|jsFiddle demo} - * @example Normal overlayImage with left/top = 0 - * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), { - * // Needed to position overlayImage at 0/0 - * originX: 'left', - * originY: 'top' - * }); - * @example overlayImage with different properties - * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), { - * opacity: 0.5, - * angle: 45, - * left: 400, - * top: 400, - * originX: 'left', - * originY: 'top' - * }); - * @example Stretched overlayImage #1 - width/height correspond to canvas width/height - * fabric.Image.fromURL('http://fabricjs.com/assets/jail_cell_bars.png', function(img) { - * img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'}); - * canvas.setOverlayImage(img, canvas.renderAll.bind(canvas)); - * }); - * @example Stretched overlayImage #2 - width/height correspond to canvas width/height - * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), { - * width: canvas.width, - * height: canvas.height, - * // Needed to position overlayImage at 0/0 - * originX: 'left', - * originY: 'top' - * }); - * @example overlayImage loaded from cross-origin - * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), { - * opacity: 0.5, - * angle: 45, - * left: 400, - * top: 400, - * originX: 'left', - * originY: 'top', - * crossOrigin: 'anonymous' - * }); - */ - setOverlayImage: function (image, callback, options) { - return this.__setBgOverlayImage('overlayImage', image, callback, options); - }, - - /** - * Sets {@link fabric.StaticCanvas#backgroundImage|background image} for this canvas - * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set background to - * @param {Function} callback Callback to invoke when image is loaded and set as background - * @param {Object} [options] Optional options to set for the {@link fabric.Image|background image}. - * @return {fabric.Canvas} thisArg - * @chainable - * @see {@link http://jsfiddle.net/djnr8o7a/28/|jsFiddle demo} - * @example Normal backgroundImage with left/top = 0 - * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), { - * // Needed to position backgroundImage at 0/0 - * originX: 'left', - * originY: 'top' - * }); - * @example backgroundImage with different properties - * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), { - * opacity: 0.5, - * angle: 45, - * left: 400, - * top: 400, - * originX: 'left', - * originY: 'top' - * }); - * @example Stretched backgroundImage #1 - width/height correspond to canvas width/height - * fabric.Image.fromURL('http://fabricjs.com/assets/honey_im_subtle.png', function(img) { - * img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'}); - * canvas.setBackgroundImage(img, canvas.renderAll.bind(canvas)); - * }); - * @example Stretched backgroundImage #2 - width/height correspond to canvas width/height - * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), { - * width: canvas.width, - * height: canvas.height, - * // Needed to position backgroundImage at 0/0 - * originX: 'left', - * originY: 'top' - * }); - * @example backgroundImage loaded from cross-origin - * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), { - * opacity: 0.5, - * angle: 45, - * left: 400, - * top: 400, - * originX: 'left', - * originY: 'top', - * crossOrigin: 'anonymous' - * }); - */ - // TODO: fix stretched examples - setBackgroundImage: function (image, callback, options) { - return this.__setBgOverlayImage('backgroundImage', image, callback, options); - }, - - /** - * Sets {@link fabric.StaticCanvas#overlayColor|foreground color} for this canvas - * @param {(String|fabric.Pattern)} overlayColor Color or pattern to set foreground color to - * @param {Function} callback Callback to invoke when foreground color is set - * @return {fabric.Canvas} thisArg - * @chainable - * @see {@link http://jsfiddle.net/fabricjs/pB55h/|jsFiddle demo} - * @example Normal overlayColor - color value - * canvas.setOverlayColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas)); - * @example fabric.Pattern used as overlayColor - * canvas.setOverlayColor({ - * source: 'http://fabricjs.com/assets/escheresque_ste.png' - * }, canvas.renderAll.bind(canvas)); - * @example fabric.Pattern used as overlayColor with repeat and offset - * canvas.setOverlayColor({ - * source: 'http://fabricjs.com/assets/escheresque_ste.png', - * repeat: 'repeat', - * offsetX: 200, - * offsetY: 100 - * }, canvas.renderAll.bind(canvas)); - */ - setOverlayColor: function(overlayColor, callback) { - return this.__setBgOverlayColor('overlayColor', overlayColor, callback); - }, - - /** - * Sets {@link fabric.StaticCanvas#backgroundColor|background color} for this canvas - * @param {(String|fabric.Pattern)} backgroundColor Color or pattern to set background color to - * @param {Function} callback Callback to invoke when background color is set - * @return {fabric.Canvas} thisArg - * @chainable - * @see {@link http://jsfiddle.net/fabricjs/hXzvk/|jsFiddle demo} - * @example Normal backgroundColor - color value - * canvas.setBackgroundColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas)); - * @example fabric.Pattern used as backgroundColor - * canvas.setBackgroundColor({ - * source: 'http://fabricjs.com/assets/escheresque_ste.png' - * }, canvas.renderAll.bind(canvas)); - * @example fabric.Pattern used as backgroundColor with repeat and offset - * canvas.setBackgroundColor({ - * source: 'http://fabricjs.com/assets/escheresque_ste.png', - * repeat: 'repeat', - * offsetX: 200, - * offsetY: 100 - * }, canvas.renderAll.bind(canvas)); - */ - setBackgroundColor: function(backgroundColor, callback) { - return this.__setBgOverlayColor('backgroundColor', backgroundColor, callback); - }, - - /** - * @private - * @see {@link http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-imagesmoothingenabled|WhatWG Canvas Standard} - */ - _setImageSmoothing: function() { - var ctx = this.getContext(); - - ctx.imageSmoothingEnabled = ctx.imageSmoothingEnabled || ctx.webkitImageSmoothingEnabled - || ctx.mozImageSmoothingEnabled || ctx.msImageSmoothingEnabled || ctx.oImageSmoothingEnabled; - ctx.imageSmoothingEnabled = this.imageSmoothingEnabled; - }, - - /** - * @private - * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundImage|backgroundImage} - * or {@link fabric.StaticCanvas#overlayImage|overlayImage}) - * @param {(fabric.Image|String|null)} image fabric.Image instance, URL of an image or null to set background or overlay to - * @param {Function} callback Callback to invoke when image is loaded and set as background or overlay - * @param {Object} [options] Optional options to set for the {@link fabric.Image|image}. - */ - __setBgOverlayImage: function(property, image, callback, options) { - if (typeof image === 'string') { - fabric.util.loadImage(image, function(img) { - if (img) { - var instance = new fabric.Image(img, options); - this[property] = instance; - instance.canvas = this; - } - callback && callback(img); - }, this, options && options.crossOrigin); - } - else { - options && image.setOptions(options); - this[property] = image; - image && (image.canvas = this); - callback && callback(image); - } - - return this; - }, - - /** - * @private - * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundColor|backgroundColor} - * or {@link fabric.StaticCanvas#overlayColor|overlayColor}) - * @param {(Object|String|null)} color Object with pattern information, color value or null - * @param {Function} [callback] Callback is invoked when color is set - */ - __setBgOverlayColor: function(property, color, callback) { - this[property] = color; - this._initGradient(color, property); - this._initPattern(color, property, callback); - return this; - }, - - /** - * @private - */ - _createCanvasElement: function() { - var element = createCanvasElement(); - if (!element) { - throw CANVAS_INIT_ERROR; - } - if (!element.style) { - element.style = { }; - } - if (typeof element.getContext === 'undefined') { - throw CANVAS_INIT_ERROR; - } - return element; - }, - - /** - * @private - * @param {Object} [options] Options object - */ - _initOptions: function (options) { - var lowerCanvasEl = this.lowerCanvasEl; - this._setOptions(options); - - this.width = this.width || parseInt(lowerCanvasEl.width, 10) || 0; - this.height = this.height || parseInt(lowerCanvasEl.height, 10) || 0; - - if (!this.lowerCanvasEl.style) { - return; - } - - lowerCanvasEl.width = this.width; - lowerCanvasEl.height = this.height; - - lowerCanvasEl.style.width = this.width + 'px'; - lowerCanvasEl.style.height = this.height + 'px'; - - this.viewportTransform = this.viewportTransform.slice(); - }, - - /** - * Creates a bottom canvas - * @private - * @param {HTMLElement} [canvasEl] - */ - _createLowerCanvas: function (canvasEl) { - // canvasEl === 'HTMLCanvasElement' does not work on jsdom/node - if (canvasEl && canvasEl.getContext) { - this.lowerCanvasEl = canvasEl; - } - else { - this.lowerCanvasEl = fabric.util.getById(canvasEl) || this._createCanvasElement(); - } - - fabric.util.addClass(this.lowerCanvasEl, 'lower-canvas'); - - if (this.interactive) { - this._applyCanvasStyle(this.lowerCanvasEl); - } - - this.contextContainer = this.lowerCanvasEl.getContext('2d'); - }, - - /** - * Returns canvas width (in px) - * @return {Number} - */ - getWidth: function () { - return this.width; - }, - - /** - * Returns canvas height (in px) - * @return {Number} - */ - getHeight: function () { - return this.height; - }, - - /** - * Sets width of this canvas instance - * @param {Number|String} value Value to set width to - * @param {Object} [options] Options object - * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions - * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions - * @return {fabric.Canvas} instance - * @chainable true - */ - setWidth: function (value, options) { - return this.setDimensions({ width: value }, options); - }, - - /** - * Sets height of this canvas instance - * @param {Number|String} value Value to set height to - * @param {Object} [options] Options object - * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions - * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions - * @return {fabric.Canvas} instance - * @chainable true - */ - setHeight: function (value, options) { - return this.setDimensions({ height: value }, options); - }, - - /** - * Sets dimensions (width, height) of this canvas instance. when options.cssOnly flag active you should also supply the unit of measure (px/%/em) - * @param {Object} dimensions Object with width/height properties - * @param {Number|String} [dimensions.width] Width of canvas element - * @param {Number|String} [dimensions.height] Height of canvas element - * @param {Object} [options] Options object - * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions - * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions - * @return {fabric.Canvas} thisArg - * @chainable - */ - setDimensions: function (dimensions, options) { - var cssValue; - - options = options || {}; - - for (var prop in dimensions) { - cssValue = dimensions[prop]; - - if (!options.cssOnly) { - this._setBackstoreDimension(prop, dimensions[prop]); - cssValue += 'px'; - this.hasLostContext = true; - } - - if (!options.backstoreOnly) { - this._setCssDimension(prop, cssValue); - } - } - if (this._isCurrentlyDrawing) { - this.freeDrawingBrush && this.freeDrawingBrush._setBrushStyles(); - } - this._initRetinaScaling(); - this._setImageSmoothing(); - this.calcOffset(); - - if (!options.cssOnly) { - this.requestRenderAll(); - } - - return this; - }, - - /** - * Helper for setting width/height - * @private - * @param {String} prop property (width|height) - * @param {Number} value value to set property to - * @return {fabric.Canvas} instance - * @chainable true - */ - _setBackstoreDimension: function (prop, value) { - this.lowerCanvasEl[prop] = value; - - if (this.upperCanvasEl) { - this.upperCanvasEl[prop] = value; - } - - if (this.cacheCanvasEl) { - this.cacheCanvasEl[prop] = value; - } - - this[prop] = value; - - return this; - }, - - /** - * Helper for setting css width/height - * @private - * @param {String} prop property (width|height) - * @param {String} value value to set property to - * @return {fabric.Canvas} instance - * @chainable true - */ - _setCssDimension: function (prop, value) { - this.lowerCanvasEl.style[prop] = value; - - if (this.upperCanvasEl) { - this.upperCanvasEl.style[prop] = value; - } - - if (this.wrapperEl) { - this.wrapperEl.style[prop] = value; - } - - return this; - }, - - /** - * Returns canvas zoom level - * @return {Number} - */ - getZoom: function () { - return this.viewportTransform[0]; - }, - - /** - * Sets viewport transform of this canvas instance - * @param {Array} vpt the transform in the form of context.transform - * @return {fabric.Canvas} instance - * @chainable true - */ - setViewportTransform: function (vpt) { - var activeObject = this._activeObject, object, ignoreVpt = false, skipAbsolute = true, i, len; - this.viewportTransform = vpt; - for (i = 0, len = this._objects.length; i < len; i++) { - object = this._objects[i]; - object.group || object.setCoords(ignoreVpt, skipAbsolute); - } - if (activeObject && activeObject.type === 'activeSelection') { - activeObject.setCoords(ignoreVpt, skipAbsolute); - } - this.calcViewportBoundaries(); - this.renderOnAddRemove && this.requestRenderAll(); - return this; - }, - - /** - * Sets zoom level of this canvas instance, zoom centered around point - * @param {fabric.Point} point to zoom with respect to - * @param {Number} value to set zoom to, less than 1 zooms out - * @return {fabric.Canvas} instance - * @chainable true - */ - zoomToPoint: function (point, value) { - // TODO: just change the scale, preserve other transformations - var before = point, vpt = this.viewportTransform.slice(0); - point = transformPoint(point, invertTransform(this.viewportTransform)); - vpt[0] = value; - vpt[3] = value; - var after = transformPoint(point, vpt); - vpt[4] += before.x - after.x; - vpt[5] += before.y - after.y; - return this.setViewportTransform(vpt); - }, - - /** - * Sets zoom level of this canvas instance - * @param {Number} value to set zoom to, less than 1 zooms out - * @return {fabric.Canvas} instance - * @chainable true - */ - setZoom: function (value) { - this.zoomToPoint(new fabric.Point(0, 0), value); - return this; - }, - - /** - * Pan viewport so as to place point at top left corner of canvas - * @param {fabric.Point} point to move to - * @return {fabric.Canvas} instance - * @chainable true - */ - absolutePan: function (point) { - var vpt = this.viewportTransform.slice(0); - vpt[4] = -point.x; - vpt[5] = -point.y; - return this.setViewportTransform(vpt); - }, - - /** - * Pans viewpoint relatively - * @param {fabric.Point} point (position vector) to move by - * @return {fabric.Canvas} instance - * @chainable true - */ - relativePan: function (point) { - return this.absolutePan(new fabric.Point( - -point.x - this.viewportTransform[4], - -point.y - this.viewportTransform[5] - )); - }, - - /** - * Returns <canvas> element corresponding to this instance - * @return {HTMLCanvasElement} - */ - getElement: function () { - return this.lowerCanvasEl; - }, - - /** - * @private - * @param {fabric.Object} obj Object that was added - */ - _onObjectAdded: function(obj) { - this.stateful && obj.setupState(); - obj._set('canvas', this); - obj.setCoords(); - this.fire('object:added', { target: obj }); - obj.fire('added'); - }, - - /** - * @private - * @param {fabric.Object} obj Object that was removed - */ - _onObjectRemoved: function(obj) { - this.fire('object:removed', { target: obj }); - obj.fire('removed'); - delete obj.canvas; - }, - - /** - * Clears specified context of canvas element - * @param {CanvasRenderingContext2D} ctx Context to clear - * @return {fabric.Canvas} thisArg - * @chainable - */ - clearContext: function(ctx) { - ctx.clearRect(0, 0, this.width, this.height); - return this; - }, - - /** - * Returns context of canvas where objects are drawn - * @return {CanvasRenderingContext2D} - */ - getContext: function () { - return this.contextContainer; - }, - - /** - * Clears all contexts (background, main, top) of an instance - * @return {fabric.Canvas} thisArg - * @chainable - */ - clear: function () { - this._objects.length = 0; - this.backgroundImage = null; - this.overlayImage = null; - this.backgroundColor = ''; - this.overlayColor = ''; - if (this._hasITextHandlers) { - this.off('mouse:up', this._mouseUpITextHandler); - this._iTextInstances = null; - this._hasITextHandlers = false; - } - this.clearContext(this.contextContainer); - this.fire('canvas:cleared'); - this.renderOnAddRemove && this.requestRenderAll(); - return this; - }, - - /** - * Renders the canvas - * @return {fabric.Canvas} instance - * @chainable - */ - renderAll: function () { - var canvasToDrawOn = this.contextContainer; - this.renderCanvas(canvasToDrawOn, this._objects); - return this; - }, - - /** - * Function created to be instance bound at initialization - * used in requestAnimationFrame rendering - * Let the fabricJS call it. If you call it manually you could have more - * animationFrame stacking on to of each other - * for an imperative rendering, use canvas.renderAll - * @private - * @return {fabric.Canvas} instance - * @chainable - */ - renderAndReset: function() { - this.isRendering = 0; - this.renderAll(); - }, - - /** - * Append a renderAll request to next animation frame. - * unless one is already in progress, in that case nothing is done - * a boolean flag will avoid appending more. - * @return {fabric.Canvas} instance - * @chainable - */ - requestRenderAll: function () { - if (!this.isRendering) { - this.isRendering = fabric.util.requestAnimFrame(this.renderAndResetBound); - } - return this; - }, - - /** - * Calculate the position of the 4 corner of canvas with current viewportTransform. - * helps to determinate when an object is in the current rendering viewport using - * object absolute coordinates ( aCoords ) - * @return {Object} points.tl - * @chainable - */ - calcViewportBoundaries: function() { - var points = { }, width = this.width, height = this.height, - iVpt = invertTransform(this.viewportTransform); - points.tl = transformPoint({ x: 0, y: 0 }, iVpt); - points.br = transformPoint({ x: width, y: height }, iVpt); - points.tr = new fabric.Point(points.br.x, points.tl.y); - points.bl = new fabric.Point(points.tl.x, points.br.y); - this.vptCoords = points; - return points; - }, - - cancelRequestedRender: function() { - if (this.isRendering) { - fabric.util.cancelAnimFrame(this.isRendering); - this.isRendering = 0; - } - }, - - /** - * Renders background, objects, overlay and controls. - * @param {CanvasRenderingContext2D} ctx - * @param {Array} objects to render - * @return {fabric.Canvas} instance - * @chainable - */ - renderCanvas: function(ctx, objects) { - var v = this.viewportTransform, path = this.clipPath; - this.cancelRequestedRender(); - this.calcViewportBoundaries(); - this.clearContext(ctx); - this.fire('before:render', { ctx: ctx, }); - if (this.clipTo) { - fabric.util.clipContext(this, ctx); - } - this._renderBackground(ctx); - - ctx.save(); - //apply viewport transform once for all rendering process - ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); - this._renderObjects(ctx, objects); - ctx.restore(); - if (!this.controlsAboveOverlay && this.interactive) { - this.drawControls(ctx); - } - if (this.clipTo) { - ctx.restore(); - } - if (path) { - path.canvas = this; - // needed to setup a couple of variables - path.shouldCache(); - path._transformDone = true; - path.renderCache({ forClipping: true }); - this.drawClipPathOnCanvas(ctx); - } - this._renderOverlay(ctx); - if (this.controlsAboveOverlay && this.interactive) { - this.drawControls(ctx); - } - this.fire('after:render', { ctx: ctx, }); - }, - - /** - * Paint the cached clipPath on the lowerCanvasEl - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - drawClipPathOnCanvas: function(ctx) { - var v = this.viewportTransform, path = this.clipPath; - ctx.save(); - ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); - // DEBUG: uncomment this line, comment the following - // ctx.globalAlpha = 0.4; - ctx.globalCompositeOperation = 'destination-in'; - path.transform(ctx); - ctx.scale(1 / path.zoomX, 1 / path.zoomY); - ctx.drawImage(path._cacheCanvas, -path.cacheTranslationX, -path.cacheTranslationY); - ctx.restore(); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Array} objects to render - */ - _renderObjects: function(ctx, objects) { - var i, len; - for (i = 0, len = objects.length; i < len; ++i) { - objects[i] && objects[i].render(ctx); - } - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {string} property 'background' or 'overlay' - */ - _renderBackgroundOrOverlay: function(ctx, property) { - var fill = this[property + 'Color'], object = this[property + 'Image'], - v = this.viewportTransform, needsVpt = this[property + 'Vpt']; - if (!fill && !object) { - return; - } - if (fill) { - ctx.save(); - ctx.beginPath(); - ctx.moveTo(0, 0); - ctx.lineTo(this.width, 0); - ctx.lineTo(this.width, this.height); - ctx.lineTo(0, this.height); - ctx.closePath(); - ctx.fillStyle = fill.toLive - ? fill.toLive(ctx, this) - : fill; - if (needsVpt) { - ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); - } - ctx.transform(1, 0, 0, 1, fill.offsetX || 0, fill.offsetY || 0); - var m = fill.gradientTransform || fill.patternTransform; - m && ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]); - ctx.fill(); - ctx.restore(); - } - if (object) { - ctx.save(); - if (needsVpt) { - ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); - } - object.render(ctx); - ctx.restore(); - } - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderBackground: function(ctx) { - this._renderBackgroundOrOverlay(ctx, 'background'); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderOverlay: function(ctx) { - this._renderBackgroundOrOverlay(ctx, 'overlay'); - }, - - /** - * Returns coordinates of a center of canvas. - * Returned value is an object with top and left properties - * @return {Object} object with "top" and "left" number values - */ - getCenter: function () { - return { - top: this.height / 2, - left: this.width / 2 - }; - }, - - /** - * Centers object horizontally in the canvas - * @param {fabric.Object} object Object to center horizontally - * @return {fabric.Canvas} thisArg - */ - centerObjectH: function (object) { - return this._centerObject(object, new fabric.Point(this.getCenter().left, object.getCenterPoint().y)); - }, - - /** - * Centers object vertically in the canvas - * @param {fabric.Object} object Object to center vertically - * @return {fabric.Canvas} thisArg - * @chainable - */ - centerObjectV: function (object) { - return this._centerObject(object, new fabric.Point(object.getCenterPoint().x, this.getCenter().top)); - }, - - /** - * Centers object vertically and horizontally in the canvas - * @param {fabric.Object} object Object to center vertically and horizontally - * @return {fabric.Canvas} thisArg - * @chainable - */ - centerObject: function(object) { - var center = this.getCenter(); - - return this._centerObject(object, new fabric.Point(center.left, center.top)); - }, - - /** - * Centers object vertically and horizontally in the viewport - * @param {fabric.Object} object Object to center vertically and horizontally - * @return {fabric.Canvas} thisArg - * @chainable - */ - viewportCenterObject: function(object) { - var vpCenter = this.getVpCenter(); - - return this._centerObject(object, vpCenter); - }, - - /** - * Centers object horizontally in the viewport, object.top is unchanged - * @param {fabric.Object} object Object to center vertically and horizontally - * @return {fabric.Canvas} thisArg - * @chainable - */ - viewportCenterObjectH: function(object) { - var vpCenter = this.getVpCenter(); - this._centerObject(object, new fabric.Point(vpCenter.x, object.getCenterPoint().y)); - return this; - }, - - /** - * Centers object Vertically in the viewport, object.top is unchanged - * @param {fabric.Object} object Object to center vertically and horizontally - * @return {fabric.Canvas} thisArg - * @chainable - */ - viewportCenterObjectV: function(object) { - var vpCenter = this.getVpCenter(); - - return this._centerObject(object, new fabric.Point(object.getCenterPoint().x, vpCenter.y)); - }, - - /** - * Calculate the point in canvas that correspond to the center of actual viewport. - * @return {fabric.Point} vpCenter, viewport center - * @chainable - */ - getVpCenter: function() { - var center = this.getCenter(), - iVpt = invertTransform(this.viewportTransform); - return transformPoint({ x: center.left, y: center.top }, iVpt); - }, - - /** - * @private - * @param {fabric.Object} object Object to center - * @param {fabric.Point} center Center point - * @return {fabric.Canvas} thisArg - * @chainable - */ - _centerObject: function(object, center) { - object.setPositionByOrigin(center, 'center', 'center'); - object.setCoords(); - this.renderOnAddRemove && this.requestRenderAll(); - return this; - }, - - /** - * Returs dataless JSON representation of canvas - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {String} json string - */ - toDatalessJSON: function (propertiesToInclude) { - return this.toDatalessObject(propertiesToInclude); - }, - - /** - * Returns object representation of canvas - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function (propertiesToInclude) { - return this._toObjectMethod('toObject', propertiesToInclude); - }, - - /** - * Returns dataless object representation of canvas - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toDatalessObject: function (propertiesToInclude) { - return this._toObjectMethod('toDatalessObject', propertiesToInclude); - }, - - /** - * @private - */ - _toObjectMethod: function (methodName, propertiesToInclude) { - - var clipPath = this.clipPath, data = { - version: fabric.version, - objects: this._toObjects(methodName, propertiesToInclude), - }; - if (clipPath) { - data.clipPath = this._toObject(this.clipPath, methodName, propertiesToInclude); - } - extend(data, this.__serializeBgOverlay(methodName, propertiesToInclude)); - - fabric.util.populateWithProperties(this, data, propertiesToInclude); - - return data; - }, - - /** - * @private - */ - _toObjects: function(methodName, propertiesToInclude) { - return this._objects.filter(function(object) { - return !object.excludeFromExport; - }).map(function(instance) { - return this._toObject(instance, methodName, propertiesToInclude); - }, this); - }, - - /** - * @private - */ - _toObject: function(instance, methodName, propertiesToInclude) { - var originalValue; - - if (!this.includeDefaultValues) { - originalValue = instance.includeDefaultValues; - instance.includeDefaultValues = false; - } - - var object = instance[methodName](propertiesToInclude); - if (!this.includeDefaultValues) { - instance.includeDefaultValues = originalValue; - } - return object; - }, - - /** - * @private - */ - __serializeBgOverlay: function(methodName, propertiesToInclude) { - var data = { }, bgImage = this.backgroundImage, overlay = this.overlayImage; - - if (this.backgroundColor) { - data.background = this.backgroundColor.toObject - ? this.backgroundColor.toObject(propertiesToInclude) - : this.backgroundColor; - } - - if (this.overlayColor) { - data.overlay = this.overlayColor.toObject - ? this.overlayColor.toObject(propertiesToInclude) - : this.overlayColor; - } - if (bgImage && !bgImage.excludeFromExport) { - data.backgroundImage = this._toObject(bgImage, methodName, propertiesToInclude); - } - if (overlay && !overlay.excludeFromExport) { - data.overlayImage = this._toObject(overlay, methodName, propertiesToInclude); - } - - return data; - }, - - /* _TO_SVG_START_ */ - /** - * When true, getSvgTransform() will apply the StaticCanvas.viewportTransform to the SVG transformation. When true, - * a zoomed canvas will then produce zoomed SVG output. - * @type Boolean - * @default - */ - svgViewportTransformation: true, - - /** - * Returns SVG representation of canvas - * @function - * @param {Object} [options] Options object for SVG output - * @param {Boolean} [options.suppressPreamble=false] If true xml tag is not included - * @param {Object} [options.viewBox] SVG viewbox object - * @param {Number} [options.viewBox.x] x-cooridnate of viewbox - * @param {Number} [options.viewBox.y] y-coordinate of viewbox - * @param {Number} [options.viewBox.width] Width of viewbox - * @param {Number} [options.viewBox.height] Height of viewbox - * @param {String} [options.encoding=UTF-8] Encoding of SVG output - * @param {String} [options.width] desired width of svg with or without units - * @param {String} [options.height] desired height of svg with or without units - * @param {Function} [reviver] Method for further parsing of svg elements, called after each fabric object converted into svg representation. - * @return {String} SVG string - * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization} - * @see {@link http://jsfiddle.net/fabricjs/jQ3ZZ/|jsFiddle demo} - * @example Normal SVG output - * var svg = canvas.toSVG(); - * @example SVG output without preamble (without <?xml ../>) - * var svg = canvas.toSVG({suppressPreamble: true}); - * @example SVG output with viewBox attribute - * var svg = canvas.toSVG({ - * viewBox: { - * x: 100, - * y: 100, - * width: 200, - * height: 300 - * } - * }); - * @example SVG output with different encoding (default: UTF-8) - * var svg = canvas.toSVG({encoding: 'ISO-8859-1'}); - * @example Modify SVG output with reviver function - * var svg = canvas.toSVG(null, function(svg) { - * return svg.replace('stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; ', ''); - * }); - */ - toSVG: function(options, reviver) { - options || (options = { }); - options.reviver = reviver; - var markup = []; - - this._setSVGPreamble(markup, options); - this._setSVGHeader(markup, options); - if (this.clipPath) { - markup.push('\n'); - } - this._setSVGBgOverlayColor(markup, 'background'); - this._setSVGBgOverlayImage(markup, 'backgroundImage', reviver); - this._setSVGObjects(markup, reviver); - if (this.clipPath) { - markup.push('\n'); - } - this._setSVGBgOverlayColor(markup, 'overlay'); - this._setSVGBgOverlayImage(markup, 'overlayImage', reviver); - - markup.push(''); - - return markup.join(''); - }, - - /** - * @private - */ - _setSVGPreamble: function(markup, options) { - if (options.suppressPreamble) { - return; - } - markup.push( - '\n', - '\n' - ); - }, - - /** - * @private - */ - _setSVGHeader: function(markup, options) { - var width = options.width || this.width, - height = options.height || this.height, - vpt, viewBox = 'viewBox="0 0 ' + this.width + ' ' + this.height + '" ', - NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS; - - if (options.viewBox) { - viewBox = 'viewBox="' + - options.viewBox.x + ' ' + - options.viewBox.y + ' ' + - options.viewBox.width + ' ' + - options.viewBox.height + '" '; - } - else { - if (this.svgViewportTransformation) { - vpt = this.viewportTransform; - viewBox = 'viewBox="' + - toFixed(-vpt[4] / vpt[0], NUM_FRACTION_DIGITS) + ' ' + - toFixed(-vpt[5] / vpt[3], NUM_FRACTION_DIGITS) + ' ' + - toFixed(this.width / vpt[0], NUM_FRACTION_DIGITS) + ' ' + - toFixed(this.height / vpt[3], NUM_FRACTION_DIGITS) + '" '; - } - } - - markup.push( - '\n', - 'Created with Fabric.js ', fabric.version, '\n', - '\n', - this.createSVGFontFacesMarkup(), - this.createSVGRefElementsMarkup(), - this.createSVGClipPathMarkup(options), - '\n' - ); - }, - - createSVGClipPathMarkup: function(options) { - var clipPath = this.clipPath; - if (clipPath) { - clipPath.clipPathId = 'CLIPPATH_' + fabric.Object.__uid++; - return '\n' + - this.clipPath.toClipPathSVG(options.reviver) + - '\n'; - } - return ''; - }, - - /** - * Creates markup containing SVG referenced elements like patterns, gradients etc. - * @return {String} - */ - createSVGRefElementsMarkup: function() { - var _this = this, - markup = ['background', 'overlay'].map(function(prop) { - var fill = _this[prop + 'Color']; - if (fill && fill.toLive) { - var shouldTransform = _this[prop + 'Vpt'], vpt = _this.viewportTransform, - object = { - width: _this.width / (shouldTransform ? vpt[0] : 1), - height: _this.height / (shouldTransform ? vpt[3] : 1) - }; - return fill.toSVG( - object, - { additionalTransform: shouldTransform ? fabric.util.matrixToSVG(vpt) : '' } - ); - } - }); - return markup.join(''); - }, - - /** - * Creates markup containing SVG font faces, - * font URLs for font faces must be collected by developers - * and are not extracted from the DOM by fabricjs - * @param {Array} objects Array of fabric objects - * @return {String} - */ - createSVGFontFacesMarkup: function() { - var markup = '', fontList = { }, obj, fontFamily, - style, row, rowIndex, _char, charIndex, i, len, - fontPaths = fabric.fontPaths, objects = this._objects; - - for (i = 0, len = objects.length; i < len; i++) { - obj = objects[i]; - fontFamily = obj.fontFamily; - if (obj.type.indexOf('text') === -1 || fontList[fontFamily] || !fontPaths[fontFamily]) { - continue; - } - fontList[fontFamily] = true; - if (!obj.styles) { - continue; - } - style = obj.styles; - for (rowIndex in style) { - row = style[rowIndex]; - for (charIndex in row) { - _char = row[charIndex]; - fontFamily = _char.fontFamily; - if (!fontList[fontFamily] && fontPaths[fontFamily]) { - fontList[fontFamily] = true; - } - } - } - } - - for (var j in fontList) { - markup += [ - '\t\t@font-face {\n', - '\t\t\tfont-family: \'', j, '\';\n', - '\t\t\tsrc: url(\'', fontPaths[j], '\');\n', - '\t\t}\n' - ].join(''); - } - - if (markup) { - markup = [ - '\t\n' - ].join(''); - } - - return markup; - }, - - /** - * @private - */ - _setSVGObjects: function(markup, reviver) { - var instance, i, len, objects = this._objects; - for (i = 0, len = objects.length; i < len; i++) { - instance = objects[i]; - if (instance.excludeFromExport) { - continue; - } - this._setSVGObject(markup, instance, reviver); - } - }, - - /** - * @private - */ - _setSVGObject: function(markup, instance, reviver) { - markup.push(instance.toSVG(reviver)); - }, - - /** - * @private - */ - _setSVGBgOverlayImage: function(markup, property, reviver) { - if (this[property] && !this[property].excludeFromExport && this[property].toSVG) { - markup.push(this[property].toSVG(reviver)); - } - }, - - /** - * @private - */ - _setSVGBgOverlayColor: function(markup, property) { - var filler = this[property + 'Color'], vpt = this.viewportTransform, finalWidth = this.width, - finalHeight = this.height; - if (!filler) { - return; - } - if (filler.toLive) { - var repeat = filler.repeat, iVpt = fabric.util.invertTransform(vpt), shouldInvert = this[property + 'Vpt'], - additionalTransform = shouldInvert ? fabric.util.matrixToSVG(iVpt) : ''; - markup.push( - '\n' - ); - } - else { - markup.push( - '\n' - ); - } - }, - /* _TO_SVG_END_ */ - - /** - * Moves an object or the objects of a multiple selection - * to the bottom of the stack of drawn objects - * @param {fabric.Object} object Object to send to back - * @return {fabric.Canvas} thisArg - * @chainable - */ - sendToBack: function (object) { - if (!object) { - return this; - } - var activeSelection = this._activeObject, - i, obj, objs; - if (object === activeSelection && object.type === 'activeSelection') { - objs = activeSelection._objects; - for (i = objs.length; i--;) { - obj = objs[i]; - removeFromArray(this._objects, obj); - this._objects.unshift(obj); - } - } - else { - removeFromArray(this._objects, object); - this._objects.unshift(object); - } - this.renderOnAddRemove && this.requestRenderAll(); - return this; - }, - - /** - * Moves an object or the objects of a multiple selection - * to the top of the stack of drawn objects - * @param {fabric.Object} object Object to send - * @return {fabric.Canvas} thisArg - * @chainable - */ - bringToFront: function (object) { - if (!object) { - return this; - } - var activeSelection = this._activeObject, - i, obj, objs; - if (object === activeSelection && object.type === 'activeSelection') { - objs = activeSelection._objects; - for (i = 0; i < objs.length; i++) { - obj = objs[i]; - removeFromArray(this._objects, obj); - this._objects.push(obj); - } - } - else { - removeFromArray(this._objects, object); - this._objects.push(object); - } - this.renderOnAddRemove && this.requestRenderAll(); - return this; - }, - - /** - * Moves an object or a selection down in stack of drawn objects - * An optional paramter, intersecting allowes to move the object in behind - * the first intersecting object. Where intersection is calculated with - * bounding box. If no intersection is found, there will not be change in the - * stack. - * @param {fabric.Object} object Object to send - * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object - * @return {fabric.Canvas} thisArg - * @chainable - */ - sendBackwards: function (object, intersecting) { - if (!object) { - return this; - } - var activeSelection = this._activeObject, - i, obj, idx, newIdx, objs, objsMoved = 0; - - if (object === activeSelection && object.type === 'activeSelection') { - objs = activeSelection._objects; - for (i = 0; i < objs.length; i++) { - obj = objs[i]; - idx = this._objects.indexOf(obj); - if (idx > 0 + objsMoved) { - newIdx = idx - 1; - removeFromArray(this._objects, obj); - this._objects.splice(newIdx, 0, obj); - } - objsMoved++; - } - } - else { - idx = this._objects.indexOf(object); - if (idx !== 0) { - // if object is not on the bottom of stack - newIdx = this._findNewLowerIndex(object, idx, intersecting); - removeFromArray(this._objects, object); - this._objects.splice(newIdx, 0, object); - } - } - this.renderOnAddRemove && this.requestRenderAll(); - return this; - }, - - /** - * @private - */ - _findNewLowerIndex: function(object, idx, intersecting) { - var newIdx, i; - - if (intersecting) { - newIdx = idx; - - // traverse down the stack looking for the nearest intersecting object - for (i = idx - 1; i >= 0; --i) { - - var isIntersecting = object.intersectsWithObject(this._objects[i]) || - object.isContainedWithinObject(this._objects[i]) || - this._objects[i].isContainedWithinObject(object); - - if (isIntersecting) { - newIdx = i; - break; - } - } - } - else { - newIdx = idx - 1; - } - - return newIdx; - }, - - /** - * Moves an object or a selection up in stack of drawn objects - * An optional paramter, intersecting allowes to move the object in front - * of the first intersecting object. Where intersection is calculated with - * bounding box. If no intersection is found, there will not be change in the - * stack. - * @param {fabric.Object} object Object to send - * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object - * @return {fabric.Canvas} thisArg - * @chainable - */ - bringForward: function (object, intersecting) { - if (!object) { - return this; - } - var activeSelection = this._activeObject, - i, obj, idx, newIdx, objs, objsMoved = 0; - - if (object === activeSelection && object.type === 'activeSelection') { - objs = activeSelection._objects; - for (i = objs.length; i--;) { - obj = objs[i]; - idx = this._objects.indexOf(obj); - if (idx < this._objects.length - 1 - objsMoved) { - newIdx = idx + 1; - removeFromArray(this._objects, obj); - this._objects.splice(newIdx, 0, obj); - } - objsMoved++; - } - } - else { - idx = this._objects.indexOf(object); - if (idx !== this._objects.length - 1) { - // if object is not on top of stack (last item in an array) - newIdx = this._findNewUpperIndex(object, idx, intersecting); - removeFromArray(this._objects, object); - this._objects.splice(newIdx, 0, object); - } - } - this.renderOnAddRemove && this.requestRenderAll(); - return this; - }, - - /** - * @private - */ - _findNewUpperIndex: function(object, idx, intersecting) { - var newIdx, i, len; - - if (intersecting) { - newIdx = idx; - - // traverse up the stack looking for the nearest intersecting object - for (i = idx + 1, len = this._objects.length; i < len; ++i) { - - var isIntersecting = object.intersectsWithObject(this._objects[i]) || - object.isContainedWithinObject(this._objects[i]) || - this._objects[i].isContainedWithinObject(object); - - if (isIntersecting) { - newIdx = i; - break; - } - } - } - else { - newIdx = idx + 1; - } - - return newIdx; - }, - - /** - * Moves an object to specified level in stack of drawn objects - * @param {fabric.Object} object Object to send - * @param {Number} index Position to move to - * @return {fabric.Canvas} thisArg - * @chainable - */ - moveTo: function (object, index) { - removeFromArray(this._objects, object); - this._objects.splice(index, 0, object); - return this.renderOnAddRemove && this.requestRenderAll(); - }, - - /** - * Clears a canvas element and dispose objects - * @return {fabric.Canvas} thisArg - * @chainable - */ - dispose: function () { - // cancel eventually ongoing renders - if (this.isRendering) { - fabric.util.cancelAnimFrame(this.isRendering); - this.isRendering = 0; - } - this.forEachObject(function(object) { - object.dispose && object.dispose(); - }); - this._objects = []; - if (this.backgroundImage && this.backgroundImage.dispose) { - this.backgroundImage.dispose(); - } - this.backgroundImage = null; - if (this.overlayImage && this.overlayImage.dispose) { - this.overlayImage.dispose(); - } - this.overlayImage = null; - this._iTextInstances = null; - this.contextContainer = null; - fabric.util.cleanUpJsdomNode(this.lowerCanvasEl); - this.lowerCanvasEl = undefined; - return this; - }, - - /** - * Returns a string representation of an instance - * @return {String} string representation of an instance - */ - toString: function () { - return '#'; - } - }); - - extend(fabric.StaticCanvas.prototype, fabric.Observable); - extend(fabric.StaticCanvas.prototype, fabric.Collection); - extend(fabric.StaticCanvas.prototype, fabric.DataURLExporter); - - extend(fabric.StaticCanvas, /** @lends fabric.StaticCanvas */ { - - /** - * @static - * @type String - * @default - */ - EMPTY_JSON: '{"objects": [], "background": "white"}', - - /** - * Provides a way to check support of some of the canvas methods - * (either those of HTMLCanvasElement itself, or rendering context) - * - * @param {String} methodName Method to check support for; - * Could be one of "setLineDash" - * @return {Boolean | null} `true` if method is supported (or at least exists), - * `null` if canvas element or context can not be initialized - */ - supports: function (methodName) { - var el = createCanvasElement(); - - if (!el || !el.getContext) { - return null; - } - - var ctx = el.getContext('2d'); - if (!ctx) { - return null; - } - - switch (methodName) { - - case 'setLineDash': - return typeof ctx.setLineDash !== 'undefined'; - - default: - return null; - } - } - }); - - /** - * Returns JSON representation of canvas - * @function - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {String} JSON string - * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization} - * @see {@link http://jsfiddle.net/fabricjs/pec86/|jsFiddle demo} - * @example JSON without additional properties - * var json = canvas.toJSON(); - * @example JSON with additional properties included - * var json = canvas.toJSON(['lockMovementX', 'lockMovementY', 'lockRotation', 'lockScalingX', 'lockScalingY', 'lockUniScaling']); - * @example JSON without default values - * canvas.includeDefaultValues = false; - * var json = canvas.toJSON(); - */ - fabric.StaticCanvas.prototype.toJSON = fabric.StaticCanvas.prototype.toObject; - - if (fabric.isLikelyNode) { - fabric.StaticCanvas.prototype.createPNGStream = function() { - var impl = getNodeCanvas(this.lowerCanvasEl); - return impl && impl.createPNGStream(); - }; - fabric.StaticCanvas.prototype.createJPEGStream = function(opts) { - var impl = getNodeCanvas(this.lowerCanvasEl); - return impl && impl.createJPEGStream(opts); - }; - } -})(); - - -/** - * BaseBrush class - * @class fabric.BaseBrush - * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo} - */ -fabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype */ { - - /** - * Color of a brush - * @type String - * @default - */ - color: 'rgb(0, 0, 0)', - - /** - * Width of a brush, has to be a Number, no string literals - * @type Number - * @default - */ - width: 1, - - /** - * Shadow object representing shadow of this shape. - * Backwards incompatibility note: This property replaces "shadowColor" (String), "shadowOffsetX" (Number), - * "shadowOffsetY" (Number) and "shadowBlur" (Number) since v1.2.12 - * @type fabric.Shadow - * @default - */ - shadow: null, - - /** - * Line endings style of a brush (one of "butt", "round", "square") - * @type String - * @default - */ - strokeLineCap: 'round', - - /** - * Corner style of a brush (one of "bevel", "round", "miter") - * @type String - * @default - */ - strokeLineJoin: 'round', - - /** - * Maximum miter length (used for strokeLineJoin = "miter") of a brush's - * @type Number - * @default - */ - strokeMiterLimit: 10, - - /** - * Stroke Dash Array. - * @type Array - * @default - */ - strokeDashArray: null, - - /** - * Sets shadow of an object - * @param {Object|String} [options] Options object or string (e.g. "2px 2px 10px rgba(0,0,0,0.2)") - * @return {fabric.Object} thisArg - * @chainable - */ - setShadow: function(options) { - this.shadow = new fabric.Shadow(options); - return this; - }, - - /** - * Sets brush styles - * @private - */ - _setBrushStyles: function() { - var ctx = this.canvas.contextTop; - ctx.strokeStyle = this.color; - ctx.lineWidth = this.width; - ctx.lineCap = this.strokeLineCap; - ctx.miterLimit = this.strokeMiterLimit; - ctx.lineJoin = this.strokeLineJoin; - if (fabric.StaticCanvas.supports('setLineDash')) { - ctx.setLineDash(this.strokeDashArray || []); - } - }, - - /** - * Sets the transformation on given context - * @param {RenderingContext2d} ctx context to render on - * @private - */ - _saveAndTransform: function(ctx) { - var v = this.canvas.viewportTransform; - ctx.save(); - ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); - }, - - /** - * Sets brush shadow styles - * @private - */ - _setShadow: function() { - if (!this.shadow) { - return; - } - - var canvas = this.canvas, - shadow = this.shadow, - ctx = canvas.contextTop, - zoom = canvas.getZoom(); - if (canvas && canvas._isRetinaScaling()) { - zoom *= fabric.devicePixelRatio; - } - - ctx.shadowColor = shadow.color; - ctx.shadowBlur = shadow.blur * zoom; - ctx.shadowOffsetX = shadow.offsetX * zoom; - ctx.shadowOffsetY = shadow.offsetY * zoom; - }, - - needsFullRender: function() { - var color = new fabric.Color(this.color); - return color.getAlpha() < 1 || !!this.shadow; - }, - - /** - * Removes brush shadow styles - * @private - */ - _resetShadow: function() { - var ctx = this.canvas.contextTop; - - ctx.shadowColor = ''; - ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0; - } -}); - - -(function() { - /** - * PencilBrush class - * @class fabric.PencilBrush - * @extends fabric.BaseBrush - */ - fabric.PencilBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.PencilBrush.prototype */ { - - /** - * Discard points that are less than `decimate` pixel distant from each other - * @type Number - * @default 0.4 - */ - decimate: 0.4, - - /** - * Constructor - * @param {fabric.Canvas} canvas - * @return {fabric.PencilBrush} Instance of a pencil brush - */ - initialize: function(canvas) { - this.canvas = canvas; - this._points = []; - }, - - /** - * Invoked inside on mouse down and mouse move - * @param {Object} pointer - */ - _drawSegment: function (ctx, p1, p2) { - var midPoint = p1.midPointFrom(p2); - ctx.quadraticCurveTo(p1.x, p1.y, midPoint.x, midPoint.y); - return midPoint; - }, - - /** - * Inovoked on mouse down - * @param {Object} pointer - */ - onMouseDown: function(pointer, options) { - if (!this.canvas._isMainEvent(options.e)) { - return; - } - this._prepareForDrawing(pointer); - // capture coordinates immediately - // this allows to draw dots (when movement never occurs) - this._captureDrawingPath(pointer); - this._render(); - }, - - /** - * Inovoked on mouse move - * @param {Object} pointer - */ - onMouseMove: function(pointer, options) { - if (!this.canvas._isMainEvent(options.e)) { - return; - } - if (this._captureDrawingPath(pointer) && this._points.length > 1) { - if (this.needsFullRender()) { - // redraw curve - // clear top canvas - this.canvas.clearContext(this.canvas.contextTop); - this._render(); - } - else { - var points = this._points, length = points.length, ctx = this.canvas.contextTop; - // draw the curve update - this._saveAndTransform(ctx); - if (this.oldEnd) { - ctx.beginPath(); - ctx.moveTo(this.oldEnd.x, this.oldEnd.y); - } - this.oldEnd = this._drawSegment(ctx, points[length - 2], points[length - 1], true); - ctx.stroke(); - ctx.restore(); - } - } - }, - - /** - * Invoked on mouse up - */ - onMouseUp: function(options) { - if (!this.canvas._isMainEvent(options.e)) { - return true; - } - this.oldEnd = undefined; - this._finalizeAndAddPath(); - return false; - }, - - /** - * @private - * @param {Object} pointer Actual mouse position related to the canvas. - */ - _prepareForDrawing: function(pointer) { - - var p = new fabric.Point(pointer.x, pointer.y); - - this._reset(); - this._addPoint(p); - this.canvas.contextTop.moveTo(p.x, p.y); - }, - - /** - * @private - * @param {fabric.Point} point Point to be added to points array - */ - _addPoint: function(point) { - if (this._points.length > 1 && point.eq(this._points[this._points.length - 1])) { - return false; - } - this._points.push(point); - return true; - }, - - /** - * Clear points array and set contextTop canvas style. - * @private - */ - _reset: function() { - this._points = []; - this._setBrushStyles(); - this._setShadow(); - }, - - /** - * @private - * @param {Object} pointer Actual mouse position related to the canvas. - */ - _captureDrawingPath: function(pointer) { - var pointerPoint = new fabric.Point(pointer.x, pointer.y); - return this._addPoint(pointerPoint); - }, - - /** - * Draw a smooth path on the topCanvas using quadraticCurveTo - * @private - */ - _render: function() { - var ctx = this.canvas.contextTop, i, len, - p1 = this._points[0], - p2 = this._points[1]; - - this._saveAndTransform(ctx); - ctx.beginPath(); - //if we only have 2 points in the path and they are the same - //it means that the user only clicked the canvas without moving the mouse - //then we should be drawing a dot. A path isn't drawn between two identical dots - //that's why we set them apart a bit - if (this._points.length === 2 && p1.x === p2.x && p1.y === p2.y) { - var width = this.width / 1000; - p1 = new fabric.Point(p1.x, p1.y); - p2 = new fabric.Point(p2.x, p2.y); - p1.x -= width; - p2.x += width; - } - ctx.moveTo(p1.x, p1.y); - - for (i = 1, len = this._points.length; i < len; i++) { - // we pick the point between pi + 1 & pi + 2 as the - // end point and p1 as our control point. - this._drawSegment(ctx, p1, p2); - p1 = this._points[i]; - p2 = this._points[i + 1]; - } - // Draw last line as a straight line while - // we wait for the next point to be able to calculate - // the bezier control point - ctx.lineTo(p1.x, p1.y); - ctx.stroke(); - ctx.restore(); - }, - - /** - * Converts points to SVG path - * @param {Array} points Array of points - * @return {String} SVG path - */ - convertPointsToSVGPath: function(points) { - var path = [], i, width = this.width / 1000, - p1 = new fabric.Point(points[0].x, points[0].y), - p2 = new fabric.Point(points[1].x, points[1].y), - len = points.length, multSignX = 1, multSignY = 0, manyPoints = len > 2; - - if (manyPoints) { - multSignX = points[2].x < p2.x ? -1 : points[2].x === p2.x ? 0 : 1; - multSignY = points[2].y < p2.y ? -1 : points[2].y === p2.y ? 0 : 1; - } - path.push('M ', p1.x - multSignX * width, ' ', p1.y - multSignY * width, ' '); - for (i = 1; i < len; i++) { - if (!p1.eq(p2)) { - var midPoint = p1.midPointFrom(p2); - // p1 is our bezier control point - // midpoint is our endpoint - // start point is p(i-1) value. - path.push('Q ', p1.x, ' ', p1.y, ' ', midPoint.x, ' ', midPoint.y, ' '); - } - p1 = points[i]; - if ((i + 1) < points.length) { - p2 = points[i + 1]; - } - } - if (manyPoints) { - multSignX = p1.x > points[i - 2].x ? 1 : p1.x === points[i - 2].x ? 0 : -1; - multSignY = p1.y > points[i - 2].y ? 1 : p1.y === points[i - 2].y ? 0 : -1; - } - path.push('L ', p1.x + multSignX * width, ' ', p1.y + multSignY * width); - return path; - }, - - /** - * Creates fabric.Path object to add on canvas - * @param {String} pathData Path data - * @return {fabric.Path} Path to add on canvas - */ - createPath: function(pathData) { - var path = new fabric.Path(pathData, { - fill: null, - stroke: this.color, - strokeWidth: this.width, - strokeLineCap: this.strokeLineCap, - strokeMiterLimit: this.strokeMiterLimit, - strokeLineJoin: this.strokeLineJoin, - strokeDashArray: this.strokeDashArray, - }); - if (this.shadow) { - this.shadow.affectStroke = true; - path.setShadow(this.shadow); - } - - return path; - }, - - /** - * Decimate poins array with the decimate value - */ - decimatePoints: function(points, distance) { - if (points.length <= 2) { - return points; - } - var zoom = this.canvas.getZoom(), adjustedDistance = Math.pow(distance / zoom, 2), - i, l = points.length - 1, lastPoint = points[0], newPoints = [lastPoint], - cDistance; - for (i = 1; i < l; i++) { - cDistance = Math.pow(lastPoint.x - points[i].x, 2) + Math.pow(lastPoint.y - points[i].y, 2); - if (cDistance >= adjustedDistance) { - lastPoint = points[i]; - newPoints.push(lastPoint); - } - } - if (newPoints.length === 1) { - newPoints.push(new fabric.Point(newPoints[0].x, newPoints[0].y)); - } - return newPoints; - }, - - /** - * On mouseup after drawing the path on contextTop canvas - * we use the points captured to create an new fabric path object - * and add it to the fabric canvas. - */ - _finalizeAndAddPath: function() { - var ctx = this.canvas.contextTop; - ctx.closePath(); - if (this.decimate) { - this._points = this.decimatePoints(this._points, this.decimate); - } - var pathData = this.convertPointsToSVGPath(this._points).join(''); - if (pathData === 'M 0 0 Q 0 0 0 0 L 0 0') { - // do not create 0 width/height paths, as they are - // rendered inconsistently across browsers - // Firefox 4, for example, renders a dot, - // whereas Chrome 10 renders nothing - this.canvas.requestRenderAll(); - return; - } - - var path = this.createPath(pathData); - this.canvas.clearContext(this.canvas.contextTop); - this.canvas.add(path); - this.canvas.requestRenderAll(); - path.setCoords(); - this._resetShadow(); - - - // fire event 'path' created - this.canvas.fire('path:created', { path: path }); - } - }); -})(); - - -/** - * CircleBrush class - * @class fabric.CircleBrush - */ -fabric.CircleBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.CircleBrush.prototype */ { - - /** - * Width of a brush - * @type Number - * @default - */ - width: 10, - - /** - * Constructor - * @param {fabric.Canvas} canvas - * @return {fabric.CircleBrush} Instance of a circle brush - */ - initialize: function(canvas) { - this.canvas = canvas; - this.points = []; - }, - - /** - * Invoked inside on mouse down and mouse move - * @param {Object} pointer - */ - drawDot: function(pointer) { - var point = this.addPoint(pointer), - ctx = this.canvas.contextTop; - this._saveAndTransform(ctx); - this.dot(ctx, point); - ctx.restore(); - }, - - dot: function(ctx, point) { - ctx.fillStyle = point.fill; - ctx.beginPath(); - ctx.arc(point.x, point.y, point.radius, 0, Math.PI * 2, false); - ctx.closePath(); - ctx.fill(); - }, - - /** - * Invoked on mouse down - */ - onMouseDown: function(pointer) { - this.points.length = 0; - this.canvas.clearContext(this.canvas.contextTop); - this._setShadow(); - this.drawDot(pointer); - }, - - /** - * Render the full state of the brush - * @private - */ - _render: function() { - var ctx = this.canvas.contextTop, i, len, - points = this.points; - this._saveAndTransform(ctx); - for (i = 0, len = points.length; i < len; i++) { - this.dot(ctx, points[i]); - } - ctx.restore(); - }, - - /** - * Invoked on mouse move - * @param {Object} pointer - */ - onMouseMove: function(pointer) { - if (this.needsFullRender()) { - this.canvas.clearContext(this.canvas.contextTop); - this.addPoint(pointer); - this._render(); - } - else { - this.drawDot(pointer); - } - }, - - /** - * Invoked on mouse up - */ - onMouseUp: function() { - var originalRenderOnAddRemove = this.canvas.renderOnAddRemove, i, len; - this.canvas.renderOnAddRemove = false; - - var circles = []; - - for (i = 0, len = this.points.length; i < len; i++) { - var point = this.points[i], - circle = new fabric.Circle({ - radius: point.radius, - left: point.x, - top: point.y, - originX: 'center', - originY: 'center', - fill: point.fill - }); - - this.shadow && circle.setShadow(this.shadow); - - circles.push(circle); - } - var group = new fabric.Group(circles); - group.canvas = this.canvas; - - this.canvas.add(group); - this.canvas.fire('path:created', { path: group }); - - this.canvas.clearContext(this.canvas.contextTop); - this._resetShadow(); - this.canvas.renderOnAddRemove = originalRenderOnAddRemove; - this.canvas.requestRenderAll(); - }, - - /** - * @param {Object} pointer - * @return {fabric.Point} Just added pointer point - */ - addPoint: function(pointer) { - var pointerPoint = new fabric.Point(pointer.x, pointer.y), - - circleRadius = fabric.util.getRandomInt( - Math.max(0, this.width - 20), this.width + 20) / 2, - - circleColor = new fabric.Color(this.color) - .setAlpha(fabric.util.getRandomInt(0, 100) / 100) - .toRgba(); - - pointerPoint.radius = circleRadius; - pointerPoint.fill = circleColor; - - this.points.push(pointerPoint); - - return pointerPoint; - } -}); - - -/** - * SprayBrush class - * @class fabric.SprayBrush - */ -fabric.SprayBrush = fabric.util.createClass( fabric.BaseBrush, /** @lends fabric.SprayBrush.prototype */ { - - /** - * Width of a spray - * @type Number - * @default - */ - width: 10, - - /** - * Density of a spray (number of dots per chunk) - * @type Number - * @default - */ - density: 20, - - /** - * Width of spray dots - * @type Number - * @default - */ - dotWidth: 1, - - /** - * Width variance of spray dots - * @type Number - * @default - */ - dotWidthVariance: 1, - - /** - * Whether opacity of a dot should be random - * @type Boolean - * @default - */ - randomOpacity: false, - - /** - * Whether overlapping dots (rectangles) should be removed (for performance reasons) - * @type Boolean - * @default - */ - optimizeOverlapping: true, - - /** - * Constructor - * @param {fabric.Canvas} canvas - * @return {fabric.SprayBrush} Instance of a spray brush - */ - initialize: function(canvas) { - this.canvas = canvas; - this.sprayChunks = []; - }, - - /** - * Invoked on mouse down - * @param {Object} pointer - */ - onMouseDown: function(pointer) { - this.sprayChunks.length = 0; - this.canvas.clearContext(this.canvas.contextTop); - this._setShadow(); - - this.addSprayChunk(pointer); - this.render(this.sprayChunkPoints); - }, - - /** - * Invoked on mouse move - * @param {Object} pointer - */ - onMouseMove: function(pointer) { - this.addSprayChunk(pointer); - this.render(this.sprayChunkPoints); - }, - - /** - * Invoked on mouse up - */ - onMouseUp: function() { - var originalRenderOnAddRemove = this.canvas.renderOnAddRemove; - this.canvas.renderOnAddRemove = false; - - var rects = []; - - for (var i = 0, ilen = this.sprayChunks.length; i < ilen; i++) { - var sprayChunk = this.sprayChunks[i]; - - for (var j = 0, jlen = sprayChunk.length; j < jlen; j++) { - - var rect = new fabric.Rect({ - width: sprayChunk[j].width, - height: sprayChunk[j].width, - left: sprayChunk[j].x + 1, - top: sprayChunk[j].y + 1, - originX: 'center', - originY: 'center', - fill: this.color - }); - rects.push(rect); - } - } - - if (this.optimizeOverlapping) { - rects = this._getOptimizedRects(rects); - } - - var group = new fabric.Group(rects); - this.shadow && group.setShadow(this.shadow); - this.canvas.add(group); - this.canvas.fire('path:created', { path: group }); - - this.canvas.clearContext(this.canvas.contextTop); - this._resetShadow(); - this.canvas.renderOnAddRemove = originalRenderOnAddRemove; - this.canvas.requestRenderAll(); - }, - - /** - * @private - * @param {Array} rects - */ - _getOptimizedRects: function(rects) { - - // avoid creating duplicate rects at the same coordinates - var uniqueRects = { }, key, i, len; - - for (i = 0, len = rects.length; i < len; i++) { - key = rects[i].left + '' + rects[i].top; - if (!uniqueRects[key]) { - uniqueRects[key] = rects[i]; - } - } - var uniqueRectsArray = []; - for (key in uniqueRects) { - uniqueRectsArray.push(uniqueRects[key]); - } - - return uniqueRectsArray; - }, - - /** - * Render new chunk of spray brush - */ - render: function(sprayChunk) { - var ctx = this.canvas.contextTop, i, len; - ctx.fillStyle = this.color; - - this._saveAndTransform(ctx); - - for (i = 0, len = sprayChunk.length; i < len; i++) { - var point = sprayChunk[i]; - if (typeof point.opacity !== 'undefined') { - ctx.globalAlpha = point.opacity; - } - ctx.fillRect(point.x, point.y, point.width, point.width); - } - ctx.restore(); - }, - - /** - * Render all spray chunks - */ - _render: function() { - var ctx = this.canvas.contextTop, i, ilen; - ctx.fillStyle = this.color; - - this._saveAndTransform(ctx); - - for (i = 0, ilen = this.sprayChunks.length; i < ilen; i++) { - this.render(this.sprayChunks[i]); - } - ctx.restore(); - }, - - /** - * @param {Object} pointer - */ - addSprayChunk: function(pointer) { - this.sprayChunkPoints = []; - - var x, y, width, radius = this.width / 2, i; - - for (i = 0; i < this.density; i++) { - - x = fabric.util.getRandomInt(pointer.x - radius, pointer.x + radius); - y = fabric.util.getRandomInt(pointer.y - radius, pointer.y + radius); - - if (this.dotWidthVariance) { - width = fabric.util.getRandomInt( - // bottom clamp width to 1 - Math.max(1, this.dotWidth - this.dotWidthVariance), - this.dotWidth + this.dotWidthVariance); - } - else { - width = this.dotWidth; - } - - var point = new fabric.Point(x, y); - point.width = width; - - if (this.randomOpacity) { - point.opacity = fabric.util.getRandomInt(0, 100) / 100; - } - - this.sprayChunkPoints.push(point); - } - - this.sprayChunks.push(this.sprayChunkPoints); - } -}); - - -/** - * PatternBrush class - * @class fabric.PatternBrush - * @extends fabric.BaseBrush - */ -fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fabric.PatternBrush.prototype */ { - - getPatternSrc: function() { - - var dotWidth = 20, - dotDistance = 5, - patternCanvas = fabric.util.createCanvasElement(), - patternCtx = patternCanvas.getContext('2d'); - - patternCanvas.width = patternCanvas.height = dotWidth + dotDistance; - - patternCtx.fillStyle = this.color; - patternCtx.beginPath(); - patternCtx.arc(dotWidth / 2, dotWidth / 2, dotWidth / 2, 0, Math.PI * 2, false); - patternCtx.closePath(); - patternCtx.fill(); - - return patternCanvas; - }, - - getPatternSrcFunction: function() { - return String(this.getPatternSrc).replace('this.color', '"' + this.color + '"'); - }, - - /** - * Creates "pattern" instance property - */ - getPattern: function() { - return this.canvas.contextTop.createPattern(this.source || this.getPatternSrc(), 'repeat'); - }, - - /** - * Sets brush styles - */ - _setBrushStyles: function() { - this.callSuper('_setBrushStyles'); - this.canvas.contextTop.strokeStyle = this.getPattern(); - }, - - /** - * Creates path - */ - createPath: function(pathData) { - var path = this.callSuper('createPath', pathData), - topLeft = path._getLeftTopCoords().scalarAdd(path.strokeWidth / 2); - - path.stroke = new fabric.Pattern({ - source: this.source || this.getPatternSrcFunction(), - offsetX: -topLeft.x, - offsetY: -topLeft.y - }); - return path; - } -}); - - -(function() { - - var getPointer = fabric.util.getPointer, - degreesToRadians = fabric.util.degreesToRadians, - radiansToDegrees = fabric.util.radiansToDegrees, - atan2 = Math.atan2, - abs = Math.abs, - supportLineDash = fabric.StaticCanvas.supports('setLineDash'), - - STROKE_OFFSET = 0.5; - - /** - * Canvas class - * @class fabric.Canvas - * @extends fabric.StaticCanvas - * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#canvas} - * @see {@link fabric.Canvas#initialize} for constructor definition - * - * @fires object:modified - * @fires object:rotated - * @fires object:scaled - * @fires object:moved - * @fires object:skewed - * @fires object:rotating - * @fires object:scaling - * @fires object:moving - * @fires object:skewing - * @fires object:selected this event is deprecated. use selection:created - * - * @fires before:transform - * @fires before:selection:cleared - * @fires selection:cleared - * @fires selection:updated - * @fires selection:created - * - * @fires path:created - * @fires mouse:down - * @fires mouse:move - * @fires mouse:up - * @fires mouse:down:before - * @fires mouse:move:before - * @fires mouse:up:before - * @fires mouse:over - * @fires mouse:out - * @fires mouse:dblclick - * - * @fires dragover - * @fires dragenter - * @fires dragleave - * @fires drop - * - */ - fabric.Canvas = fabric.util.createClass(fabric.StaticCanvas, /** @lends fabric.Canvas.prototype */ { - - /** - * Constructor - * @param {HTMLElement | String} el <canvas> element to initialize instance on - * @param {Object} [options] Options object - * @return {Object} thisArg - */ - initialize: function(el, options) { - options || (options = { }); - this.renderAndResetBound = this.renderAndReset.bind(this); - this.requestRenderAllBound = this.requestRenderAll.bind(this); - this._initStatic(el, options); - this._initInteractive(); - this._createCacheCanvas(); - }, - - /** - * When true, objects can be transformed by one side (unproportionally) - * @type Boolean - * @default - */ - uniScaleTransform: false, - - /** - * Indicates which key enable unproportional scaling - * values: 'altKey', 'shiftKey', 'ctrlKey'. - * If `null` or 'none' or any other string that is not a modifier key - * feature is disabled feature disabled. - * @since 1.6.2 - * @type String - * @default - */ - uniScaleKey: 'shiftKey', - - /** - * When true, objects use center point as the origin of scale transformation. - * Backwards incompatibility note: This property replaces "centerTransform" (Boolean). - * @since 1.3.4 - * @type Boolean - * @default - */ - centeredScaling: false, - - /** - * When true, objects use center point as the origin of rotate transformation. - * Backwards incompatibility note: This property replaces "centerTransform" (Boolean). - * @since 1.3.4 - * @type Boolean - * @default - */ - centeredRotation: false, - - /** - * Indicates which key enable centered Transform - * values: 'altKey', 'shiftKey', 'ctrlKey'. - * If `null` or 'none' or any other string that is not a modifier key - * feature is disabled feature disabled. - * @since 1.6.2 - * @type String - * @default - */ - centeredKey: 'altKey', - - /** - * Indicates which key enable alternate action on corner - * values: 'altKey', 'shiftKey', 'ctrlKey'. - * If `null` or 'none' or any other string that is not a modifier key - * feature is disabled feature disabled. - * @since 1.6.2 - * @type String - * @default - */ - altActionKey: 'shiftKey', - - /** - * Indicates that canvas is interactive. This property should not be changed. - * @type Boolean - * @default - */ - interactive: true, - - /** - * Indicates whether group selection should be enabled - * @type Boolean - * @default - */ - selection: true, - - /** - * Indicates which key or keys enable multiple click selection - * Pass value as a string or array of strings - * values: 'altKey', 'shiftKey', 'ctrlKey'. - * If `null` or empty or containing any other string that is not a modifier key - * feature is disabled. - * @since 1.6.2 - * @type String|Array - * @default - */ - selectionKey: 'shiftKey', - - /** - * Indicates which key enable alternative selection - * in case of target overlapping with active object - * values: 'altKey', 'shiftKey', 'ctrlKey'. - * For a series of reason that come from the general expectations on how - * things should work, this feature works only for preserveObjectStacking true. - * If `null` or 'none' or any other string that is not a modifier key - * feature is disabled. - * @since 1.6.5 - * @type null|String - * @default - */ - altSelectionKey: null, - - /** - * Color of selection - * @type String - * @default - */ - selectionColor: 'rgba(100, 100, 255, 0.3)', // blue - - /** - * Default dash array pattern - * If not empty the selection border is dashed - * @type Array - */ - selectionDashArray: [], - - /** - * Color of the border of selection (usually slightly darker than color of selection itself) - * @type String - * @default - */ - selectionBorderColor: 'rgba(255, 255, 255, 0.3)', - - /** - * Width of a line used in object/group selection - * @type Number - * @default - */ - selectionLineWidth: 1, - - /** - * Select only shapes that are fully contained in the dragged selection rectangle. - * @type Boolean - * @default - */ - selectionFullyContained: false, - - /** - * Default cursor value used when hovering over an object on canvas - * @type String - * @default - */ - hoverCursor: 'move', - - /** - * Default cursor value used when moving an object on canvas - * @type String - * @default - */ - moveCursor: 'move', - - /** - * Default cursor value used for the entire canvas - * @type String - * @default - */ - defaultCursor: 'default', - - /** - * Cursor value used during free drawing - * @type String - * @default - */ - freeDrawingCursor: 'crosshair', - - /** - * Cursor value used for rotation point - * @type String - * @default - */ - rotationCursor: 'crosshair', - - /** - * Cursor value used for disabled elements ( corners with disabled action ) - * @type String - * @since 2.0.0 - * @default - */ - notAllowedCursor: 'not-allowed', - - /** - * Default element class that's given to wrapper (div) element of canvas - * @type String - * @default - */ - containerClass: 'canvas-container', - - /** - * When true, object detection happens on per-pixel basis rather than on per-bounding-box - * @type Boolean - * @default - */ - perPixelTargetFind: false, - - /** - * Number of pixels around target pixel to tolerate (consider active) during object detection - * @type Number - * @default - */ - targetFindTolerance: 0, - - /** - * When true, target detection is skipped when hovering over canvas. This can be used to improve performance. - * @type Boolean - * @default - */ - skipTargetFind: false, - - /** - * When true, mouse events on canvas (mousedown/mousemove/mouseup) result in free drawing. - * After mousedown, mousemove creates a shape, - * and then mouseup finalizes it and adds an instance of `fabric.Path` onto canvas. - * @tutorial {@link http://fabricjs.com/fabric-intro-part-4#free_drawing} - * @type Boolean - * @default - */ - isDrawingMode: false, - - /** - * Indicates whether objects should remain in current stack position when selected. - * When false objects are brought to top and rendered as part of the selection group - * @type Boolean - * @default - */ - preserveObjectStacking: false, - - /** - * Indicates the angle that an object will lock to while rotating. - * @type Number - * @since 1.6.7 - * @default - */ - snapAngle: 0, - - /** - * Indicates the distance from the snapAngle the rotation will lock to the snapAngle. - * When `null`, the snapThreshold will default to the snapAngle. - * @type null|Number - * @since 1.6.7 - * @default - */ - snapThreshold: null, - - /** - * Indicates if the right click on canvas can output the context menu or not - * @type Boolean - * @since 1.6.5 - * @default - */ - stopContextMenu: false, - - /** - * Indicates if the canvas can fire right click events - * @type Boolean - * @since 1.6.5 - * @default - */ - fireRightClick: false, - - /** - * Indicates if the canvas can fire middle click events - * @type Boolean - * @since 1.7.8 - * @default - */ - fireMiddleClick: false, - - /** - * Keep track of the subTargets for Mouse Events - * @type fabric.Object[] - */ - targets: [], - - /** - * Keep track of the hovered target - * @type fabric.Object - * @private - */ - _hoveredTarget: null, - - /** - * hold the list of nested targets hovered - * @type fabric.Object[] - * @private - */ - _hoveredTargets: [], - - /** - * @private - */ - _initInteractive: function() { - this._currentTransform = null; - this._groupSelector = null; - this._initWrapperElement(); - this._createUpperCanvas(); - this._initEventListeners(); - - this._initRetinaScaling(); - - this.freeDrawingBrush = fabric.PencilBrush && new fabric.PencilBrush(this); - - this.calcOffset(); - }, - - /** - * Divides objects in two groups, one to render immediately - * and one to render as activeGroup. - * @return {Array} objects to render immediately and pushes the other in the activeGroup. - */ - _chooseObjectsToRender: function() { - var activeObjects = this.getActiveObjects(), - object, objsToRender, activeGroupObjects; - - if (activeObjects.length > 0 && !this.preserveObjectStacking) { - objsToRender = []; - activeGroupObjects = []; - for (var i = 0, length = this._objects.length; i < length; i++) { - object = this._objects[i]; - if (activeObjects.indexOf(object) === -1 ) { - objsToRender.push(object); - } - else { - activeGroupObjects.push(object); - } - } - if (activeObjects.length > 1) { - this._activeObject._objects = activeGroupObjects; - } - objsToRender.push.apply(objsToRender, activeGroupObjects); - } - else { - objsToRender = this._objects; - } - return objsToRender; - }, - - /** - * Renders both the top canvas and the secondary container canvas. - * @return {fabric.Canvas} instance - * @chainable - */ - renderAll: function () { - if (this.contextTopDirty && !this._groupSelector && !this.isDrawingMode) { - this.clearContext(this.contextTop); - this.contextTopDirty = false; - } - if (this.hasLostContext) { - this.renderTopLayer(this.contextTop); - } - var canvasToDrawOn = this.contextContainer; - this.renderCanvas(canvasToDrawOn, this._chooseObjectsToRender()); - return this; - }, - - renderTopLayer: function(ctx) { - ctx.save(); - if (this.isDrawingMode && this._isCurrentlyDrawing) { - this.freeDrawingBrush && this.freeDrawingBrush._render(); - this.contextTopDirty = true; - } - // we render the top context - last object - if (this.selection && this._groupSelector) { - this._drawSelection(ctx); - this.contextTopDirty = true; - } - ctx.restore(); - }, - - /** - * Method to render only the top canvas. - * Also used to render the group selection box. - * @return {fabric.Canvas} thisArg - * @chainable - */ - renderTop: function () { - var ctx = this.contextTop; - this.clearContext(ctx); - this.renderTopLayer(ctx); - this.fire('after:render'); - return this; - }, - - /** - * Resets the current transform to its original values and chooses the type of resizing based on the event - * @private - */ - _resetCurrentTransform: function() { - var t = this._currentTransform; - - t.target.set({ - scaleX: t.original.scaleX, - scaleY: t.original.scaleY, - skewX: t.original.skewX, - skewY: t.original.skewY, - left: t.original.left, - top: t.original.top - }); - - if (this._shouldCenterTransform(t.target)) { - if (t.originX !== 'center') { - if (t.originX === 'right') { - t.mouseXSign = -1; - } - else { - t.mouseXSign = 1; - } - } - if (t.originY !== 'center') { - if (t.originY === 'bottom') { - t.mouseYSign = -1; - } - else { - t.mouseYSign = 1; - } - } - - t.originX = 'center'; - t.originY = 'center'; - } - else { - t.originX = t.original.originX; - t.originY = t.original.originY; - } - }, - - /** - * Checks if point is contained within an area of given object - * @param {Event} e Event object - * @param {fabric.Object} target Object to test against - * @param {Object} [point] x,y object of point coordinates we want to check. - * @return {Boolean} true if point is contained within an area of given object - */ - containsPoint: function (e, target, point) { - var ignoreZoom = true, - pointer = point || this.getPointer(e, ignoreZoom), - xy; - - if (target.group && target.group === this._activeObject && target.group.type === 'activeSelection') { - xy = this._normalizePointer(target.group, pointer); - } - else { - xy = { x: pointer.x, y: pointer.y }; - } - // http://www.geog.ubc.ca/courses/klink/gis.notes/ncgia/u32.html - // http://idav.ucdavis.edu/~okreylos/TAship/Spring2000/PointInPolygon.html - return (target.containsPoint(xy) || target._findTargetCorner(pointer)); - }, - - /** - * @private - */ - _normalizePointer: function (object, pointer) { - var m = object.calcTransformMatrix(), - invertedM = fabric.util.invertTransform(m), - vptPointer = this.restorePointerVpt(pointer); - return fabric.util.transformPoint(vptPointer, invertedM); - }, - - /** - * Returns true if object is transparent at a certain location - * @param {fabric.Object} target Object to check - * @param {Number} x Left coordinate - * @param {Number} y Top coordinate - * @return {Boolean} - */ - isTargetTransparent: function (target, x, y) { - // in case the target is the activeObject, we cannot execute this optimization - // because we need to draw controls too. - if (target.shouldCache() && target._cacheCanvas && target !== this._activeObject) { - var normalizedPointer = this._normalizePointer(target, {x: x, y: y}), - targetRelativeX = Math.max(target.cacheTranslationX + (normalizedPointer.x * target.zoomX), 0), - targetRelativeY = Math.max(target.cacheTranslationY + (normalizedPointer.y * target.zoomY), 0); - - var isTransparent = fabric.util.isTransparent( - target._cacheContext, Math.round(targetRelativeX), Math.round(targetRelativeY), this.targetFindTolerance); - - return isTransparent; - } - - var ctx = this.contextCache, - originalColor = target.selectionBackgroundColor, v = this.viewportTransform; - - target.selectionBackgroundColor = ''; - - this.clearContext(ctx); - - ctx.save(); - ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); - target.render(ctx); - ctx.restore(); - - target === this._activeObject && target._renderControls(ctx, { - hasBorders: false, - transparentCorners: false - }, { - hasBorders: false, - }); - - target.selectionBackgroundColor = originalColor; - - var isTransparent = fabric.util.isTransparent( - ctx, x, y, this.targetFindTolerance); - - return isTransparent; - }, - - /** - * takes an event and determins if selection key has been pressed - * @private - * @param {Event} e Event object - */ - _isSelectionKeyPressed: function(e) { - var selectionKeyPressed = false; - - if (Object.prototype.toString.call(this.selectionKey) === '[object Array]') { - selectionKeyPressed = !!this.selectionKey.find(function(key) { return e[key] === true; }); - } - else { - selectionKeyPressed = e[this.selectionKey]; - } - - return selectionKeyPressed; - }, - - /** - * @private - * @param {Event} e Event object - * @param {fabric.Object} target - */ - _shouldClearSelection: function (e, target) { - var activeObjects = this.getActiveObjects(), - activeObject = this._activeObject; - - return ( - !target - || - (target && - activeObject && - activeObjects.length > 1 && - activeObjects.indexOf(target) === -1 && - activeObject !== target && - !this._isSelectionKeyPressed(e)) - || - (target && !target.evented) - || - (target && - !target.selectable && - activeObject && - activeObject !== target) - ); - }, - - /** - * centeredScaling from object can't override centeredScaling from canvas. - * this should be fixed, since object setting should take precedence over canvas. - * @private - * @param {fabric.Object} target - */ - _shouldCenterTransform: function (target) { - if (!target) { - return; - } - - var t = this._currentTransform, - centerTransform; - - if (t.action === 'scale' || t.action === 'scaleX' || t.action === 'scaleY') { - centerTransform = this.centeredScaling || target.centeredScaling; - } - else if (t.action === 'rotate') { - centerTransform = this.centeredRotation || target.centeredRotation; - } - - return centerTransform ? !t.altKey : t.altKey; - }, - - /** - * @private - */ - _getOriginFromCorner: function(target, corner) { - var origin = { - x: target.originX, - y: target.originY - }; - - if (corner === 'ml' || corner === 'tl' || corner === 'bl') { - origin.x = 'right'; - } - else if (corner === 'mr' || corner === 'tr' || corner === 'br') { - origin.x = 'left'; - } - - if (corner === 'tl' || corner === 'mt' || corner === 'tr') { - origin.y = 'bottom'; - } - else if (corner === 'bl' || corner === 'mb' || corner === 'br') { - origin.y = 'top'; - } - - return origin; - }, - - /** - * @private - * @param {Boolean} alreadySelected true if target is already selected - * @param {String} corner a string representing the corner ml, mr, tl ... - * @param {Event} e Event object - * @param {fabric.Object} [target] inserted back to help overriding. Unused - */ - _getActionFromCorner: function(alreadySelected, corner, e /* target */) { - if (!corner || !alreadySelected) { - return 'drag'; - } - - switch (corner) { - case 'mtr': - return 'rotate'; - case 'ml': - case 'mr': - return e[this.altActionKey] ? 'skewY' : 'scaleX'; - case 'mt': - case 'mb': - return e[this.altActionKey] ? 'skewX' : 'scaleY'; - default: - return 'scale'; - } - }, - - /** - * @private - * @param {Event} e Event object - * @param {fabric.Object} target - */ - _setupCurrentTransform: function (e, target, alreadySelected) { - if (!target) { - return; - } - - var pointer = this.getPointer(e), - corner = target._findTargetCorner(this.getPointer(e, true)), - action = this._getActionFromCorner(alreadySelected, corner, e, target), - origin = this._getOriginFromCorner(target, corner); - - this._currentTransform = { - target: target, - action: action, - corner: corner, - scaleX: target.scaleX, - scaleY: target.scaleY, - skewX: target.skewX, - skewY: target.skewY, - // used by transation - offsetX: pointer.x - target.left, - offsetY: pointer.y - target.top, - originX: origin.x, - originY: origin.y, - ex: pointer.x, - ey: pointer.y, - lastX: pointer.x, - lastY: pointer.y, - // unsure they are usefull anymore. - // left: target.left, - // top: target.top, - theta: degreesToRadians(target.angle), - // end of unsure - width: target.width * target.scaleX, - mouseXSign: 1, - mouseYSign: 1, - shiftKey: e.shiftKey, - altKey: e[this.centeredKey], - original: fabric.util.saveObjectTransform(target), - }; - - this._currentTransform.original.originX = origin.x; - this._currentTransform.original.originY = origin.y; - - this._resetCurrentTransform(); - this._beforeTransform(e); - }, - - /** - * Translates object by "setting" its left/top - * @private - * @param {Number} x pointer's x coordinate - * @param {Number} y pointer's y coordinate - * @return {Boolean} true if the translation occurred - */ - _translateObject: function (x, y) { - var transform = this._currentTransform, - target = transform.target, - newLeft = x - transform.offsetX, - newTop = y - transform.offsetY, - moveX = !target.get('lockMovementX') && target.left !== newLeft, - moveY = !target.get('lockMovementY') && target.top !== newTop; - - moveX && target.set('left', newLeft); - moveY && target.set('top', newTop); - return moveX || moveY; - }, - - /** - * Check if we are increasing a positive skew or lower it, - * checking mouse direction and pressed corner. - * @private - */ - _changeSkewTransformOrigin: function(mouseMove, t, by) { - var property = 'originX', origins = { 0: 'center' }, - skew = t.target.skewX, originA = 'left', originB = 'right', - corner = t.corner === 'mt' || t.corner === 'ml' ? 1 : -1, - flipSign = 1; - - mouseMove = mouseMove > 0 ? 1 : -1; - if (by === 'y') { - skew = t.target.skewY; - originA = 'top'; - originB = 'bottom'; - property = 'originY'; - } - origins[-1] = originA; - origins[1] = originB; - - t.target.flipX && (flipSign *= -1); - t.target.flipY && (flipSign *= -1); - - if (skew === 0) { - t.skewSign = -corner * mouseMove * flipSign; - t[property] = origins[-mouseMove]; - } - else { - skew = skew > 0 ? 1 : -1; - t.skewSign = skew; - t[property] = origins[skew * corner * flipSign]; - } - }, - - /** - * Skew object by mouse events - * @private - * @param {Number} x pointer's x coordinate - * @param {Number} y pointer's y coordinate - * @param {String} by Either 'x' or 'y' - * @return {Boolean} true if the skewing occurred - */ - _skewObject: function (x, y, by) { - var t = this._currentTransform, - target = t.target, skewed = false, - lockSkewingX = target.get('lockSkewingX'), - lockSkewingY = target.get('lockSkewingY'); - - if ((lockSkewingX && by === 'x') || (lockSkewingY && by === 'y')) { - return false; - } - - // Get the constraint point - var center = target.getCenterPoint(), - actualMouseByCenter = target.toLocalPoint(new fabric.Point(x, y), 'center', 'center')[by], - lastMouseByCenter = target.toLocalPoint(new fabric.Point(t.lastX, t.lastY), 'center', 'center')[by], - actualMouseByOrigin, constraintPosition, dim = target._getTransformedDimensions(); - - this._changeSkewTransformOrigin(actualMouseByCenter - lastMouseByCenter, t, by); - actualMouseByOrigin = target.toLocalPoint(new fabric.Point(x, y), t.originX, t.originY)[by]; - constraintPosition = target.translateToOriginPoint(center, t.originX, t.originY); - // Actually skew the object - skewed = this._setObjectSkew(actualMouseByOrigin, t, by, dim); - t.lastX = x; - t.lastY = y; - // Make sure the constraints apply - target.setPositionByOrigin(constraintPosition, t.originX, t.originY); - return skewed; - }, - - /** - * Set object skew - * @private - * @return {Boolean} true if the skewing occurred - */ - _setObjectSkew: function(localMouse, transform, by, _dim) { - var target = transform.target, newValue, skewed = false, - skewSign = transform.skewSign, newDim, dimNoSkew, - otherBy, _otherBy, _by, newDimMouse, skewX, skewY; - - if (by === 'x') { - otherBy = 'y'; - _otherBy = 'Y'; - _by = 'X'; - skewX = 0; - skewY = target.skewY; - } - else { - otherBy = 'x'; - _otherBy = 'X'; - _by = 'Y'; - skewX = target.skewX; - skewY = 0; - } - - dimNoSkew = target._getTransformedDimensions(skewX, skewY); - newDimMouse = 2 * Math.abs(localMouse) - dimNoSkew[by]; - if (newDimMouse <= 2) { - newValue = 0; - } - else { - newValue = skewSign * Math.atan((newDimMouse / target['scale' + _by]) / - (dimNoSkew[otherBy] / target['scale' + _otherBy])); - newValue = fabric.util.radiansToDegrees(newValue); - } - skewed = target['skew' + _by] !== newValue; - target.set('skew' + _by, newValue); - if (target['skew' + _otherBy] !== 0) { - newDim = target._getTransformedDimensions(); - newValue = (_dim[otherBy] / newDim[otherBy]) * target['scale' + _otherBy]; - target.set('scale' + _otherBy, newValue); - } - return skewed; - }, - - /** - * Scales object by invoking its scaleX/scaleY methods - * @private - * @param {Number} x pointer's x coordinate - * @param {Number} y pointer's y coordinate - * @param {String} by Either 'x' or 'y' - specifies dimension constraint by which to scale an object. - * When not provided, an object is scaled by both dimensions equally - * @return {Boolean} true if the scaling occurred - */ - _scaleObject: function (x, y, by) { - var t = this._currentTransform, - target = t.target, - lockScalingX = target.lockScalingX, - lockScalingY = target.lockScalingY, - lockScalingFlip = target.lockScalingFlip; - - if (lockScalingX && lockScalingY) { - return false; - } - - // Get the constraint point - var constraintPosition = target.translateToOriginPoint(target.getCenterPoint(), t.originX, t.originY), - localMouse = target.toLocalPoint(new fabric.Point(x, y), t.originX, t.originY), - dim = target._getTransformedDimensions(), scaled = false; - - this._setLocalMouse(localMouse, t); - - // Actually scale the object - scaled = this._setObjectScale(localMouse, t, lockScalingX, lockScalingY, by, lockScalingFlip, dim); - - // Make sure the constraints apply - target.setPositionByOrigin(constraintPosition, t.originX, t.originY); - return scaled; - }, - - /** - * @private - * @return {Boolean} true if the scaling occurred - */ - _setObjectScale: function(localMouse, transform, lockScalingX, lockScalingY, by, lockScalingFlip, _dim) { - var target = transform.target, forbidScalingX = false, forbidScalingY = false, scaled = false, - scaleX = localMouse.x * target.scaleX / _dim.x, - scaleY = localMouse.y * target.scaleY / _dim.y, - changeX = target.scaleX !== scaleX, - changeY = target.scaleY !== scaleY; - - transform.newScaleX = scaleX; - transform.newScaleY = scaleY; - if (fabric.Textbox && by === 'x' && target instanceof fabric.Textbox) { - var w = target.width * (localMouse.x / _dim.x); - if (w >= target.getMinWidth()) { - scaled = w !== target.width; - target.set('width', w); - return scaled; - } - return false; - } - - if (lockScalingFlip && scaleX <= 0 && scaleX < target.scaleX) { - forbidScalingX = true; - localMouse.x = 0; - } - - if (lockScalingFlip && scaleY <= 0 && scaleY < target.scaleY) { - forbidScalingY = true; - localMouse.y = 0; - } - - if (by === 'equally' && !lockScalingX && !lockScalingY) { - scaled = this._scaleObjectEqually(localMouse, target, transform, _dim); - } - else if (!by) { - forbidScalingX || lockScalingX || (target.set('scaleX', scaleX) && (scaled = scaled || changeX)); - forbidScalingY || lockScalingY || (target.set('scaleY', scaleY) && (scaled = scaled || changeY)); - } - else if (by === 'x' && !target.get('lockUniScaling')) { - forbidScalingX || lockScalingX || (target.set('scaleX', scaleX) && (scaled = changeX)); - } - else if (by === 'y' && !target.get('lockUniScaling')) { - forbidScalingY || lockScalingY || (target.set('scaleY', scaleY) && (scaled = changeY)); - } - forbidScalingX || forbidScalingY || this._flipObject(transform, by); - return scaled; - }, - - /** - * @private - * @return {Boolean} true if the scaling occurred - */ - _scaleObjectEqually: function(localMouse, target, transform, _dim) { - - var dist = localMouse.y + localMouse.x, - lastDist = _dim.y * transform.original.scaleY / target.scaleY + - _dim.x * transform.original.scaleX / target.scaleX, - scaled, signX = localMouse.x < 0 ? -1 : 1, - signY = localMouse.y < 0 ? -1 : 1, newScaleX, newScaleY; - - // We use transform.scaleX/Y instead of target.scaleX/Y - // because the object may have a min scale and we'll loose the proportions - newScaleX = signX * Math.abs(transform.original.scaleX * dist / lastDist); - newScaleY = signY * Math.abs(transform.original.scaleY * dist / lastDist); - scaled = newScaleX !== target.scaleX || newScaleY !== target.scaleY; - target.set('scaleX', newScaleX); - target.set('scaleY', newScaleY); - return scaled; - }, - - /** - * @private - */ - _flipObject: function(transform, by) { - if (transform.newScaleX < 0 && by !== 'y') { - if (transform.originX === 'left') { - transform.originX = 'right'; - } - else if (transform.originX === 'right') { - transform.originX = 'left'; - } - } - - if (transform.newScaleY < 0 && by !== 'x') { - if (transform.originY === 'top') { - transform.originY = 'bottom'; - } - else if (transform.originY === 'bottom') { - transform.originY = 'top'; - } - } - }, - - /** - * @private - */ - _setLocalMouse: function(localMouse, t) { - var target = t.target, zoom = this.getZoom(), - padding = target.padding / zoom; - - if (t.originX === 'right') { - localMouse.x *= -1; - } - else if (t.originX === 'center') { - localMouse.x *= t.mouseXSign * 2; - if (localMouse.x < 0) { - t.mouseXSign = -t.mouseXSign; - } - } - - if (t.originY === 'bottom') { - localMouse.y *= -1; - } - else if (t.originY === 'center') { - localMouse.y *= t.mouseYSign * 2; - if (localMouse.y < 0) { - t.mouseYSign = -t.mouseYSign; - } - } - - // adjust the mouse coordinates when dealing with padding - if (abs(localMouse.x) > padding) { - if (localMouse.x < 0) { - localMouse.x += padding; - } - else { - localMouse.x -= padding; - } - } - else { // mouse is within the padding, set to 0 - localMouse.x = 0; - } - - if (abs(localMouse.y) > padding) { - if (localMouse.y < 0) { - localMouse.y += padding; - } - else { - localMouse.y -= padding; - } - } - else { - localMouse.y = 0; - } - }, - - /** - * Rotates object by invoking its rotate method - * @private - * @param {Number} x pointer's x coordinate - * @param {Number} y pointer's y coordinate - * @return {Boolean} true if the rotation occurred - */ - _rotateObject: function (x, y) { - - var t = this._currentTransform, - target = t.target, constraintPosition, - constraintPosition = target.translateToOriginPoint(target.getCenterPoint(), t.originX, t.originY); - - if (target.lockRotation) { - return false; - } - - var lastAngle = atan2(t.ey - constraintPosition.y, t.ex - constraintPosition.x), - curAngle = atan2(y - constraintPosition.y, x - constraintPosition.x), - angle = radiansToDegrees(curAngle - lastAngle + t.theta), - hasRotated = true; - - if (target.snapAngle > 0) { - var snapAngle = target.snapAngle, - snapThreshold = target.snapThreshold || snapAngle, - rightAngleLocked = Math.ceil(angle / snapAngle) * snapAngle, - leftAngleLocked = Math.floor(angle / snapAngle) * snapAngle; - - if (Math.abs(angle - leftAngleLocked) < snapThreshold) { - angle = leftAngleLocked; - } - else if (Math.abs(angle - rightAngleLocked) < snapThreshold) { - angle = rightAngleLocked; - } - } - - // normalize angle to positive value - if (angle < 0) { - angle = 360 + angle; - } - angle %= 360; - - if (target.angle === angle) { - hasRotated = false; - } - else { - // rotation only happen here - target.angle = angle; - // Make sure the constraints apply - target.setPositionByOrigin(constraintPosition, t.originX, t.originY); - } - - return hasRotated; - }, - - /** - * Set the cursor type of the canvas element - * @param {String} value Cursor type of the canvas element. - * @see http://www.w3.org/TR/css3-ui/#cursor - */ - setCursor: function (value) { - this.upperCanvasEl.style.cursor = value; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx to draw the selection on - */ - _drawSelection: function (ctx) { - var groupSelector = this._groupSelector, - left = groupSelector.left, - top = groupSelector.top, - aleft = abs(left), - atop = abs(top); - - if (this.selectionColor) { - ctx.fillStyle = this.selectionColor; - - ctx.fillRect( - groupSelector.ex - ((left > 0) ? 0 : -left), - groupSelector.ey - ((top > 0) ? 0 : -top), - aleft, - atop - ); - } - - if (!this.selectionLineWidth || !this.selectionBorderColor) { - return; - } - ctx.lineWidth = this.selectionLineWidth; - ctx.strokeStyle = this.selectionBorderColor; - - // selection border - if (this.selectionDashArray.length > 1 && !supportLineDash) { - - var px = groupSelector.ex + STROKE_OFFSET - ((left > 0) ? 0 : aleft), - py = groupSelector.ey + STROKE_OFFSET - ((top > 0) ? 0 : atop); - - ctx.beginPath(); - - fabric.util.drawDashedLine(ctx, px, py, px + aleft, py, this.selectionDashArray); - fabric.util.drawDashedLine(ctx, px, py + atop - 1, px + aleft, py + atop - 1, this.selectionDashArray); - fabric.util.drawDashedLine(ctx, px, py, px, py + atop, this.selectionDashArray); - fabric.util.drawDashedLine(ctx, px + aleft - 1, py, px + aleft - 1, py + atop, this.selectionDashArray); - - ctx.closePath(); - ctx.stroke(); - } - else { - fabric.Object.prototype._setLineDash.call(this, ctx, this.selectionDashArray); - ctx.strokeRect( - groupSelector.ex + STROKE_OFFSET - ((left > 0) ? 0 : aleft), - groupSelector.ey + STROKE_OFFSET - ((top > 0) ? 0 : atop), - aleft, - atop - ); - } - }, - - /** - * Method that determines what object we are clicking on - * the skipGroup parameter is for internal use, is needed for shift+click action - * 11/09/2018 TODO: would be cool if findTarget could discern between being a full target - * or the outside part of the corner. - * @param {Event} e mouse event - * @param {Boolean} skipGroup when true, activeGroup is skipped and only objects are traversed through - * @return {fabric.Object} the target found - */ - findTarget: function (e, skipGroup) { - if (this.skipTargetFind) { - return; - } - - var ignoreZoom = true, - pointer = this.getPointer(e, ignoreZoom), - activeObject = this._activeObject, - aObjects = this.getActiveObjects(), - activeTarget, activeTargetSubs; - - // first check current group (if one exists) - // active group does not check sub targets like normal groups. - // if active group just exits. - this.targets = []; - - if (aObjects.length > 1 && !skipGroup && activeObject === this._searchPossibleTargets([activeObject], pointer)) { - return activeObject; - } - // if we hit the corner of an activeObject, let's return that. - if (aObjects.length === 1 && activeObject._findTargetCorner(pointer)) { - return activeObject; - } - if (aObjects.length === 1 && - activeObject === this._searchPossibleTargets([activeObject], pointer)) { - if (!this.preserveObjectStacking) { - return activeObject; - } - else { - activeTarget = activeObject; - activeTargetSubs = this.targets; - this.targets = []; - } - } - var target = this._searchPossibleTargets(this._objects, pointer); - if (e[this.altSelectionKey] && target && activeTarget && target !== activeTarget) { - target = activeTarget; - this.targets = activeTargetSubs; - } - return target; - }, - - /** - * Checks point is inside the object. - * @param {Object} [pointer] x,y object of point coordinates we want to check. - * @param {fabric.Object} obj Object to test against - * @param {Object} [globalPointer] x,y object of point coordinates relative to canvas used to search per pixel target. - * @return {Boolean} true if point is contained within an area of given object - * @private - */ - _checkTarget: function(pointer, obj, globalPointer) { - if (obj && - obj.visible && - obj.evented && - this.containsPoint(null, obj, pointer)){ - if ((this.perPixelTargetFind || obj.perPixelTargetFind) && !obj.isEditing) { - var isTransparent = this.isTargetTransparent(obj, globalPointer.x, globalPointer.y); - if (!isTransparent) { - return true; - } - } - else { - return true; - } - } - }, - - /** - * Function used to search inside objects an object that contains pointer in bounding box or that contains pointerOnCanvas when painted - * @param {Array} [objects] objects array to look into - * @param {Object} [pointer] x,y object of point coordinates we want to check. - * @return {fabric.Object} object that contains pointer - * @private - */ - _searchPossibleTargets: function(objects, pointer) { - // Cache all targets where their bounding box contains point. - var target, i = objects.length, subTarget; - // Do not check for currently grouped objects, since we check the parent group itself. - // until we call this function specifically to search inside the activeGroup - while (i--) { - var objToCheck = objects[i]; - var pointerToUse = objToCheck.group && objToCheck.group.type !== 'activeSelection' ? - this._normalizePointer(objToCheck.group, pointer) : pointer; - if (this._checkTarget(pointerToUse, objToCheck, pointer)) { - target = objects[i]; - if (target.subTargetCheck && target instanceof fabric.Group) { - subTarget = this._searchPossibleTargets(target._objects, pointer); - subTarget && this.targets.push(subTarget); - } - break; - } - } - return target; - }, - - /** - * Returns pointer coordinates without the effect of the viewport - * @param {Object} pointer with "x" and "y" number values - * @return {Object} object with "x" and "y" number values - */ - restorePointerVpt: function(pointer) { - return fabric.util.transformPoint( - pointer, - fabric.util.invertTransform(this.viewportTransform) - ); - }, - - /** - * Returns pointer coordinates relative to canvas. - * Can return coordinates with or without viewportTransform. - * ignoreZoom false gives back coordinates that represent - * the point clicked on canvas element. - * ignoreZoom true gives back coordinates after being processed - * by the viewportTransform ( sort of coordinates of what is displayed - * on the canvas where you are clicking. - * ignoreZoom true = HTMLElement coordinates relative to top,left - * ignoreZoom false, default = fabric space coordinates, the same used for shape position - * To interact with your shapes top and left you want to use ignoreZoom true - * most of the time, while ignoreZoom false will give you coordinates - * compatible with the object.oCoords system. - * of the time. - * @param {Event} e - * @param {Boolean} ignoreZoom - * @return {Object} object with "x" and "y" number values - */ - getPointer: function (e, ignoreZoom) { - // return cached values if we are in the event processing chain - if (this._absolutePointer && !ignoreZoom) { - return this._absolutePointer; - } - if (this._pointer && ignoreZoom) { - return this._pointer; - } - - var pointer = getPointer(e), - upperCanvasEl = this.upperCanvasEl, - bounds = upperCanvasEl.getBoundingClientRect(), - boundsWidth = bounds.width || 0, - boundsHeight = bounds.height || 0, - cssScale; - - if (!boundsWidth || !boundsHeight ) { - if ('top' in bounds && 'bottom' in bounds) { - boundsHeight = Math.abs( bounds.top - bounds.bottom ); - } - if ('right' in bounds && 'left' in bounds) { - boundsWidth = Math.abs( bounds.right - bounds.left ); - } - } - - this.calcOffset(); - pointer.x = pointer.x - this._offset.left; - pointer.y = pointer.y - this._offset.top; - if (!ignoreZoom) { - pointer = this.restorePointerVpt(pointer); - } - - var retinaScaling = this.getRetinaScaling(); - if (retinaScaling !== 1) { - pointer.x /= retinaScaling; - pointer.y /= retinaScaling; - } - - if (boundsWidth === 0 || boundsHeight === 0) { - // If bounds are not available (i.e. not visible), do not apply scale. - cssScale = { width: 1, height: 1 }; - } - else { - cssScale = { - width: upperCanvasEl.width / boundsWidth, - height: upperCanvasEl.height / boundsHeight - }; - } - - return { - x: pointer.x * cssScale.width, - y: pointer.y * cssScale.height - }; - }, - - /** - * @private - * @throws {CANVAS_INIT_ERROR} If canvas can not be initialized - */ - _createUpperCanvas: function () { - var lowerCanvasClass = this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/, ''), - lowerCanvasEl = this.lowerCanvasEl, upperCanvasEl = this.upperCanvasEl; - - // there is no need to create a new upperCanvas element if we have already one. - if (upperCanvasEl) { - upperCanvasEl.className = ''; - } - else { - upperCanvasEl = this._createCanvasElement(); - this.upperCanvasEl = upperCanvasEl; - } - fabric.util.addClass(upperCanvasEl, 'upper-canvas ' + lowerCanvasClass); - - this.wrapperEl.appendChild(upperCanvasEl); - - this._copyCanvasStyle(lowerCanvasEl, upperCanvasEl); - this._applyCanvasStyle(upperCanvasEl); - this.contextTop = upperCanvasEl.getContext('2d'); - }, - - /** - * @private - */ - _createCacheCanvas: function () { - this.cacheCanvasEl = this._createCanvasElement(); - this.cacheCanvasEl.setAttribute('width', this.width); - this.cacheCanvasEl.setAttribute('height', this.height); - this.contextCache = this.cacheCanvasEl.getContext('2d'); - }, - - /** - * @private - */ - _initWrapperElement: function () { - this.wrapperEl = fabric.util.wrapElement(this.lowerCanvasEl, 'div', { - 'class': this.containerClass - }); - fabric.util.setStyle(this.wrapperEl, { - width: this.width + 'px', - height: this.height + 'px', - position: 'relative' - }); - fabric.util.makeElementUnselectable(this.wrapperEl); - }, - - /** - * @private - * @param {HTMLElement} element canvas element to apply styles on - */ - _applyCanvasStyle: function (element) { - var width = this.width || element.width, - height = this.height || element.height; - - fabric.util.setStyle(element, { - position: 'absolute', - width: width + 'px', - height: height + 'px', - left: 0, - top: 0, - 'touch-action': this.allowTouchScrolling ? 'manipulation' : 'none', - '-ms-touch-action': this.allowTouchScrolling ? 'manipulation' : 'none' - }); - element.width = width; - element.height = height; - fabric.util.makeElementUnselectable(element); - }, - - /** - * Copy the entire inline style from one element (fromEl) to another (toEl) - * @private - * @param {Element} fromEl Element style is copied from - * @param {Element} toEl Element copied style is applied to - */ - _copyCanvasStyle: function (fromEl, toEl) { - toEl.style.cssText = fromEl.style.cssText; - }, - - /** - * Returns context of canvas where object selection is drawn - * @return {CanvasRenderingContext2D} - */ - getSelectionContext: function() { - return this.contextTop; - }, - - /** - * Returns <canvas> element on which object selection is drawn - * @return {HTMLCanvasElement} - */ - getSelectionElement: function () { - return this.upperCanvasEl; - }, - - /** - * Returns currently active object - * @return {fabric.Object} active object - */ - getActiveObject: function () { - return this._activeObject; - }, - - /** - * Returns an array with the current selected objects - * @return {fabric.Object} active object - */ - getActiveObjects: function () { - var active = this._activeObject; - if (active) { - if (active.type === 'activeSelection' && active._objects) { - return active._objects.slice(0); - } - else { - return [active]; - } - } - return []; - }, - - /** - * @private - * @param {fabric.Object} obj Object that was removed - */ - _onObjectRemoved: function(obj) { - // removing active object should fire "selection:cleared" events - if (obj === this._activeObject) { - this.fire('before:selection:cleared', { target: obj }); - this._discardActiveObject(); - this.fire('selection:cleared', { target: obj }); - obj.fire('deselected'); - } - if (obj === this._hoveredTarget){ - this._hoveredTarget = null; - this._hoveredTargets = []; - } - this.callSuper('_onObjectRemoved', obj); - }, - - /** - * @private - * Compares the old activeObject with the current one and fires correct events - * @param {fabric.Object} obj old activeObject - */ - _fireSelectionEvents: function(oldObjects, e) { - var somethingChanged = false, objects = this.getActiveObjects(), - added = [], removed = [], opt = { e: e }; - oldObjects.forEach(function(oldObject) { - if (objects.indexOf(oldObject) === -1) { - somethingChanged = true; - oldObject.fire('deselected', opt); - removed.push(oldObject); - } - }); - objects.forEach(function(object) { - if (oldObjects.indexOf(object) === -1) { - somethingChanged = true; - object.fire('selected', opt); - added.push(object); - } - }); - if (oldObjects.length > 0 && objects.length > 0) { - opt.selected = added; - opt.deselected = removed; - // added for backward compatibility - opt.updated = added[0] || removed[0]; - opt.target = this._activeObject; - somethingChanged && this.fire('selection:updated', opt); - } - else if (objects.length > 0) { - // deprecated event - if (objects.length === 1) { - opt.target = added[0]; - this.fire('object:selected', opt); - } - opt.selected = added; - // added for backward compatibility - opt.target = this._activeObject; - this.fire('selection:created', opt); - } - else if (oldObjects.length > 0) { - opt.deselected = removed; - this.fire('selection:cleared', opt); - } - }, - - /** - * Sets given object as the only active object on canvas - * @param {fabric.Object} object Object to set as an active one - * @param {Event} [e] Event (passed along when firing "object:selected") - * @return {fabric.Canvas} thisArg - * @chainable - */ - setActiveObject: function (object, e) { - var currentActives = this.getActiveObjects(); - this._setActiveObject(object, e); - this._fireSelectionEvents(currentActives, e); - return this; - }, - - /** - * @private - * @param {Object} object to set as active - * @param {Event} [e] Event (passed along when firing "object:selected") - * @return {Boolean} true if the selection happened - */ - _setActiveObject: function(object, e) { - if (this._activeObject === object) { - return false; - } - if (!this._discardActiveObject(e, object)) { - return false; - } - if (object.onSelect({ e: e })) { - return false; - } - this._activeObject = object; - return true; - }, - - /** - * @private - */ - _discardActiveObject: function(e, object) { - var obj = this._activeObject; - if (obj) { - // onDeselect return TRUE to cancel selection; - if (obj.onDeselect({ e: e, object: object })) { - return false; - } - this._activeObject = null; - } - return true; - }, - - /** - * Discards currently active object and fire events. If the function is called by fabric - * as a consequence of a mouse event, the event is passed as a parameter and - * sent to the fire function for the custom events. When used as a method the - * e param does not have any application. - * @param {event} e - * @return {fabric.Canvas} thisArg - * @chainable - */ - discardActiveObject: function (e) { - var currentActives = this.getActiveObjects(), activeObject = this.getActiveObject(); - if (currentActives.length) { - this.fire('before:selection:cleared', { target: activeObject, e: e }); - } - this._discardActiveObject(e); - this._fireSelectionEvents(currentActives, e); - return this; - }, - - /** - * Clears a canvas element and removes all event listeners - * @return {fabric.Canvas} thisArg - * @chainable - */ - dispose: function () { - var wrapper = this.wrapperEl; - this.removeListeners(); - wrapper.removeChild(this.upperCanvasEl); - wrapper.removeChild(this.lowerCanvasEl); - this.contextCache = null; - this.contextTop = null; - ['upperCanvasEl', 'cacheCanvasEl'].forEach((function(element) { - fabric.util.cleanUpJsdomNode(this[element]); - this[element] = undefined; - }).bind(this)); - if (wrapper.parentNode) { - wrapper.parentNode.replaceChild(this.lowerCanvasEl, this.wrapperEl); - } - delete this.wrapperEl; - fabric.StaticCanvas.prototype.dispose.call(this); - return this; - }, - - /** - * Clears all contexts (background, main, top) of an instance - * @return {fabric.Canvas} thisArg - * @chainable - */ - clear: function () { - // this.discardActiveGroup(); - this.discardActiveObject(); - this.clearContext(this.contextTop); - return this.callSuper('clear'); - }, - - /** - * Draws objects' controls (borders/controls) - * @param {CanvasRenderingContext2D} ctx Context to render controls on - */ - drawControls: function(ctx) { - var activeObject = this._activeObject; - - if (activeObject) { - activeObject._renderControls(ctx); - } - }, - - /** - * @private - */ - _toObject: function(instance, methodName, propertiesToInclude) { - //If the object is part of the current selection group, it should - //be transformed appropriately - //i.e. it should be serialised as it would appear if the selection group - //were to be destroyed. - var originalProperties = this._realizeGroupTransformOnObject(instance), - object = this.callSuper('_toObject', instance, methodName, propertiesToInclude); - //Undo the damage we did by changing all of its properties - this._unwindGroupTransformOnObject(instance, originalProperties); - return object; - }, - - /** - * Realises an object's group transformation on it - * @private - * @param {fabric.Object} [instance] the object to transform (gets mutated) - * @returns the original values of instance which were changed - */ - _realizeGroupTransformOnObject: function(instance) { - if (instance.group && instance.group.type === 'activeSelection' && this._activeObject === instance.group) { - var layoutProps = ['angle', 'flipX', 'flipY', 'left', 'scaleX', 'scaleY', 'skewX', 'skewY', 'top']; - //Copy all the positionally relevant properties across now - var originalValues = {}; - layoutProps.forEach(function(prop) { - originalValues[prop] = instance[prop]; - }); - this._activeObject.realizeTransform(instance); - return originalValues; - } - else { - return null; - } - }, - - /** - * Restores the changed properties of instance - * @private - * @param {fabric.Object} [instance] the object to un-transform (gets mutated) - * @param {Object} [originalValues] the original values of instance, as returned by _realizeGroupTransformOnObject - */ - _unwindGroupTransformOnObject: function(instance, originalValues) { - if (originalValues) { - instance.set(originalValues); - } - }, - - /** - * @private - */ - _setSVGObject: function(markup, instance, reviver) { - //If the object is in a selection group, simulate what would happen to that - //object when the group is deselected - var originalProperties = this._realizeGroupTransformOnObject(instance); - this.callSuper('_setSVGObject', markup, instance, reviver); - this._unwindGroupTransformOnObject(instance, originalProperties); - }, - - setViewportTransform: function (vpt) { - if (this.renderOnAddRemove && this._activeObject && this._activeObject.isEditing) { - this._activeObject.clearContextTop(); - } - fabric.StaticCanvas.prototype.setViewportTransform.call(this, vpt); - } - }); - - // copying static properties manually to work around Opera's bug, - // where "prototype" property is enumerable and overrides existing prototype - for (var prop in fabric.StaticCanvas) { - if (prop !== 'prototype') { - fabric.Canvas[prop] = fabric.StaticCanvas[prop]; - } - } -})(); - - -(function() { - - var cursorOffset = { - mt: 0, // n - tr: 1, // ne - mr: 2, // e - br: 3, // se - mb: 4, // s - bl: 5, // sw - ml: 6, // w - tl: 7 // nw - }, - addListener = fabric.util.addListener, - removeListener = fabric.util.removeListener, - RIGHT_CLICK = 3, MIDDLE_CLICK = 2, LEFT_CLICK = 1, - addEventOptions = { passive: false }; - - function checkClick(e, value) { - return e.button && (e.button === value - 1); - } - - fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ { - - /** - * Map of cursor style values for each of the object controls - * @private - */ - cursorMap: [ - 'n-resize', - 'ne-resize', - 'e-resize', - 'se-resize', - 's-resize', - 'sw-resize', - 'w-resize', - 'nw-resize' - ], - - /** - * Contains the id of the touch event that owns the fabric transform - * @type Number - * @private - */ - mainTouchId: null, - - /** - * Adds mouse listeners to canvas - * @private - */ - _initEventListeners: function () { - // in case we initialized the class twice. This should not happen normally - // but in some kind of applications where the canvas element may be changed - // this is a workaround to having double listeners. - this.removeListeners(); - this._bindEvents(); - this.addOrRemove(addListener, 'add'); - }, - - /** - * return an event prefix pointer or mouse. - * @private - */ - _getEventPrefix: function () { - return this.enablePointerEvents ? 'pointer' : 'mouse'; - }, - - addOrRemove: function(functor, eventjsFunctor) { - var canvasElement = this.upperCanvasEl, - eventTypePrefix = this._getEventPrefix(); - functor(fabric.window, 'resize', this._onResize); - functor(canvasElement, eventTypePrefix + 'down', this._onMouseDown); - functor(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions); - functor(canvasElement, eventTypePrefix + 'out', this._onMouseOut); - functor(canvasElement, eventTypePrefix + 'enter', this._onMouseEnter); - functor(canvasElement, 'wheel', this._onMouseWheel); - functor(canvasElement, 'contextmenu', this._onContextMenu); - functor(canvasElement, 'dblclick', this._onDoubleClick); - functor(canvasElement, 'dragover', this._onDragOver); - functor(canvasElement, 'dragenter', this._onDragEnter); - functor(canvasElement, 'dragleave', this._onDragLeave); - functor(canvasElement, 'drop', this._onDrop); - if (!this.enablePointerEvents) { - functor(canvasElement, 'touchstart', this._onTouchStart, addEventOptions); - } - if (typeof eventjs !== 'undefined' && eventjsFunctor in eventjs) { - eventjs[eventjsFunctor](canvasElement, 'gesture', this._onGesture); - eventjs[eventjsFunctor](canvasElement, 'drag', this._onDrag); - eventjs[eventjsFunctor](canvasElement, 'orientation', this._onOrientationChange); - eventjs[eventjsFunctor](canvasElement, 'shake', this._onShake); - eventjs[eventjsFunctor](canvasElement, 'longpress', this._onLongPress); - } - }, - - /** - * Removes all event listeners - */ - removeListeners: function() { - this.addOrRemove(removeListener, 'remove'); - // if you dispose on a mouseDown, before mouse up, you need to clean document to... - var eventTypePrefix = this._getEventPrefix(); - removeListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp); - removeListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions); - removeListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions); - removeListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions); - }, - - /** - * @private - */ - _bindEvents: function() { - if (this.eventsBound) { - // for any reason we pass here twice we do not want to bind events twice. - return; - } - this._onMouseDown = this._onMouseDown.bind(this); - this._onTouchStart = this._onTouchStart.bind(this); - this._onMouseMove = this._onMouseMove.bind(this); - this._onMouseUp = this._onMouseUp.bind(this); - this._onTouchEnd = this._onTouchEnd.bind(this); - this._onResize = this._onResize.bind(this); - this._onGesture = this._onGesture.bind(this); - this._onDrag = this._onDrag.bind(this); - this._onShake = this._onShake.bind(this); - this._onLongPress = this._onLongPress.bind(this); - this._onOrientationChange = this._onOrientationChange.bind(this); - this._onMouseWheel = this._onMouseWheel.bind(this); - this._onMouseOut = this._onMouseOut.bind(this); - this._onMouseEnter = this._onMouseEnter.bind(this); - this._onContextMenu = this._onContextMenu.bind(this); - this._onDoubleClick = this._onDoubleClick.bind(this); - this._onDragOver = this._onDragOver.bind(this); - this._onDragEnter = this._simpleEventHandler.bind(this, 'dragenter'); - this._onDragLeave = this._simpleEventHandler.bind(this, 'dragleave'); - this._onDrop = this._simpleEventHandler.bind(this, 'drop'); - this.eventsBound = true; - }, - - /** - * @private - * @param {Event} [e] Event object fired on Event.js gesture - * @param {Event} [self] Inner Event object - */ - _onGesture: function(e, self) { - this.__onTransformGesture && this.__onTransformGesture(e, self); - }, - - /** - * @private - * @param {Event} [e] Event object fired on Event.js drag - * @param {Event} [self] Inner Event object - */ - _onDrag: function(e, self) { - this.__onDrag && this.__onDrag(e, self); - }, - - /** - * @private - * @param {Event} [e] Event object fired on wheel event - */ - _onMouseWheel: function(e) { - this.__onMouseWheel(e); - }, - - /** - * @private - * @param {Event} e Event object fired on mousedown - */ - _onMouseOut: function(e) { - var target = this._hoveredTarget; - this.fire('mouse:out', { target: target, e: e }); - this._hoveredTarget = null; - target && target.fire('mouseout', { e: e }); - - var _this = this; - this._hoveredTargets.forEach(function(_target){ - _this.fire('mouse:out', { target: target, e: e }); - _target && target.fire('mouseout', { e: e }); - }); - this._hoveredTargets = []; - - if (this._iTextInstances) { - this._iTextInstances.forEach(function(obj) { - if (obj.isEditing) { - obj.hiddenTextarea.focus(); - } - }); - } - }, - - /** - * @private - * @param {Event} e Event object fired on mouseenter - */ - _onMouseEnter: function(e) { - // This find target and consequent 'mouse:over' is used to - // clear old instances on hovered target. - // calling findTarget has the side effect of killing target.__corner. - // as a short term fix we are not firing this if we are currently transforming. - // as a long term fix we need to separate the action of finding a target with the - // side effects we added to it. - if (!this.currentTransform && !this.findTarget(e)) { - this.fire('mouse:over', { target: null, e: e }); - this._hoveredTarget = null; - this._hoveredTargets = []; - } - }, - - /** - * @private - * @param {Event} [e] Event object fired on Event.js orientation change - * @param {Event} [self] Inner Event object - */ - _onOrientationChange: function(e, self) { - this.__onOrientationChange && this.__onOrientationChange(e, self); - }, - - /** - * @private - * @param {Event} [e] Event object fired on Event.js shake - * @param {Event} [self] Inner Event object - */ - _onShake: function(e, self) { - this.__onShake && this.__onShake(e, self); - }, - - /** - * @private - * @param {Event} [e] Event object fired on Event.js shake - * @param {Event} [self] Inner Event object - */ - _onLongPress: function(e, self) { - this.__onLongPress && this.__onLongPress(e, self); - }, - - /** - * prevent default to allow drop event to be fired - * @private - * @param {Event} [e] Event object fired on Event.js shake - */ - _onDragOver: function(e) { - e.preventDefault(); - var target = this._simpleEventHandler('dragover', e); - this._fireEnterLeaveEvents(target, e); - }, - - /** - * @private - * @param {Event} e Event object fired on mousedown - */ - _onContextMenu: function (e) { - if (this.stopContextMenu) { - e.stopPropagation(); - e.preventDefault(); - } - return false; - }, - - /** - * @private - * @param {Event} e Event object fired on mousedown - */ - _onDoubleClick: function (e) { - this._cacheTransformEventData(e); - this._handleEvent(e, 'dblclick'); - this._resetTransformEventData(e); - }, - - /** - * Return a the id of an event. - * returns either the pointerId or the identifier or 0 for the mouse event - * @private - * @param {Event} evt Event object - */ - getPointerId: function(evt) { - var changedTouches = evt.changedTouches; - - if (changedTouches) { - return changedTouches[0] && changedTouches[0].identifier; - } - - if (this.enablePointerEvents) { - return evt.pointerId; - } - - return -1; - }, - - /** - * Determines if an event has the id of the event that is considered main - * @private - * @param {evt} event Event object - */ - _isMainEvent: function(evt) { - if (evt.isPrimary === true) { - return true; - } - if (evt.isPrimary === false) { - return false; - } - if (evt.type === 'touchend' && evt.touches.length === 0) { - return true; - } - if (evt.changedTouches) { - return evt.changedTouches[0].identifier === this.mainTouchId; - } - return true; - }, - - /** - * @private - * @param {Event} e Event object fired on mousedown - */ - _onTouchStart: function(e) { - e.preventDefault(); - if (this.mainTouchId === null) { - this.mainTouchId = this.getPointerId(e); - } - this.__onMouseDown(e); - this._resetTransformEventData(); - var canvasElement = this.upperCanvasEl, - eventTypePrefix = this._getEventPrefix(); - addListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions); - addListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions); - // Unbind mousedown to prevent double triggers from touch devices - removeListener(canvasElement, eventTypePrefix + 'down', this._onMouseDown); - }, - - /** - * @private - * @param {Event} e Event object fired on mousedown - */ - _onMouseDown: function (e) { - this.__onMouseDown(e); - this._resetTransformEventData(); - var canvasElement = this.upperCanvasEl, - eventTypePrefix = this._getEventPrefix(); - removeListener(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions); - addListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp); - addListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions); - }, - - /** - * @private - * @param {Event} e Event object fired on mousedown - */ - _onTouchEnd: function(e) { - if (e.touches.length > 0) { - // if there are still touches stop here - return; - } - this.__onMouseUp(e); - this._resetTransformEventData(); - this.mainTouchId = null; - var eventTypePrefix = this._getEventPrefix(); - removeListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions); - removeListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions); - var _this = this; - if (this._willAddMouseDown) { - clearTimeout(this._willAddMouseDown); - } - this._willAddMouseDown = setTimeout(function() { - // Wait 400ms before rebinding mousedown to prevent double triggers - // from touch devices - addListener(_this.upperCanvasEl, eventTypePrefix + 'down', _this._onMouseDown); - _this._willAddMouseDown = 0; - }, 400); - }, - - /** - * @private - * @param {Event} e Event object fired on mouseup - */ - _onMouseUp: function (e) { - this.__onMouseUp(e); - this._resetTransformEventData(); - var canvasElement = this.upperCanvasEl, - eventTypePrefix = this._getEventPrefix(); - if (this._isMainEvent(e)) { - removeListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp); - removeListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions); - addListener(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions); - } - }, - - /** - * @private - * @param {Event} e Event object fired on mousemove - */ - _onMouseMove: function (e) { - !this.allowTouchScrolling && e.preventDefault && e.preventDefault(); - this.__onMouseMove(e); - }, - - /** - * @private - */ - _onResize: function () { - this.calcOffset(); - }, - - /** - * Decides whether the canvas should be redrawn in mouseup and mousedown events. - * @private - * @param {Object} target - */ - _shouldRender: function(target) { - var activeObject = this._activeObject; - - if ( - !!activeObject !== !!target || - (activeObject && target && (activeObject !== target)) - ) { - // this covers: switch of target, from target to no target, selection of target - // multiSelection with key and mouse - return true; - } - else if (activeObject && activeObject.isEditing) { - // if we mouse up/down over a editing textbox a cursor change, - // there is no need to re render - return false; - } - return false; - }, - - /** - * Method that defines the actions when mouse is released on canvas. - * The method resets the currentTransform parameters, store the image corner - * position in the image object and render the canvas on top. - * @private - * @param {Event} e Event object fired on mouseup - */ - __onMouseUp: function (e) { - var target, transform = this._currentTransform, - groupSelector = this._groupSelector, shouldRender = false, - isClick = (!groupSelector || (groupSelector.left === 0 && groupSelector.top === 0)); - this._cacheTransformEventData(e); - target = this._target; - this._handleEvent(e, 'up:before'); - // if right/middle click just fire events and return - // target undefined will make the _handleEvent search the target - if (checkClick(e, RIGHT_CLICK)) { - if (this.fireRightClick) { - this._handleEvent(e, 'up', RIGHT_CLICK, isClick); - } - return; - } - - if (checkClick(e, MIDDLE_CLICK)) { - if (this.fireMiddleClick) { - this._handleEvent(e, 'up', MIDDLE_CLICK, isClick); - } - this._resetTransformEventData(); - return; - } - - if (this.isDrawingMode && this._isCurrentlyDrawing) { - this._onMouseUpInDrawingMode(e); - return; - } - - if (!this._isMainEvent(e)) { - return; - } - if (transform) { - this._finalizeCurrentTransform(e); - shouldRender = transform.actionPerformed; - } - - if (!isClick) { - this._maybeGroupObjects(e); - shouldRender || (shouldRender = this._shouldRender(target)); - } - if (target) { - target.isMoving = false; - } - this._setCursorFromEvent(e, target); - this._handleEvent(e, 'up', LEFT_CLICK, isClick); - this._groupSelector = null; - this._currentTransform = null; - // reset the target information about which corner is selected - target && (target.__corner = 0); - if (shouldRender) { - this.requestRenderAll(); - } - else if (!isClick) { - this.renderTop(); - } - }, - - /** - * @private - * Handle event firing for target and subtargets - * @param {Event} e event from mouse - * @param {String} eventType event to fire (up, down or move) - * @return {Fabric.Object} target return the the target found, for internal reasons. - */ - _simpleEventHandler: function(eventType, e) { - var target = this.findTarget(e), - targets = this.targets, - options = { - e: e, - target: target, - subTargets: targets, - }; - this.fire(eventType, options); - target && target.fire(eventType, options); - if (!targets) { - return target; - } - for (var i = 0; i < targets.length; i++) { - targets[i].fire(eventType, options); - } - return target; - }, - - /** - * @private - * Handle event firing for target and subtargets - * @param {Event} e event from mouse - * @param {String} eventType event to fire (up, down or move) - * @param {fabric.Object} targetObj receiving event - * @param {Number} [button] button used in the event 1 = left, 2 = middle, 3 = right - * @param {Boolean} isClick for left button only, indicates that the mouse up happened without move. - */ - _handleEvent: function(e, eventType, button, isClick) { - var target = this._target, - targets = this.targets || [], - options = { - e: e, - target: target, - subTargets: targets, - button: button || LEFT_CLICK, - isClick: isClick || false, - pointer: this._pointer, - absolutePointer: this._absolutePointer, - transform: this._currentTransform - }; - this.fire('mouse:' + eventType, options); - target && target.fire('mouse' + eventType, options); - for (var i = 0; i < targets.length; i++) { - targets[i].fire('mouse' + eventType, options); - } - }, - - /** - * @private - * @param {Event} e send the mouse event that generate the finalize down, so it can be used in the event - */ - _finalizeCurrentTransform: function(e) { - - var transform = this._currentTransform, - target = transform.target, - eventName, - options = { - e: e, - target: target, - transform: transform, - }; - - if (target._scaling) { - target._scaling = false; - } - - target.setCoords(); - - if (transform.actionPerformed || (this.stateful && target.hasStateChanged())) { - if (transform.actionPerformed) { - eventName = this._addEventOptions(options, transform); - this._fire(eventName, options); - } - this._fire('modified', options); - } - }, - - /** - * Mutate option object in order to add by property and give back the event name. - * @private - * @param {Object} options to mutate - * @param {Object} transform to inspect action from - */ - _addEventOptions: function(options, transform) { - // we can probably add more details at low cost - // scale change, rotation changes, translation changes - var eventName, by; - switch (transform.action) { - case 'scaleX': - eventName = 'scaled'; - by = 'x'; - break; - case 'scaleY': - eventName = 'scaled'; - by = 'y'; - break; - case 'skewX': - eventName = 'skewed'; - by = 'x'; - break; - case 'skewY': - eventName = 'skewed'; - by = 'y'; - break; - case 'scale': - eventName = 'scaled'; - by = 'equally'; - break; - case 'rotate': - eventName = 'rotated'; - break; - case 'drag': - eventName = 'moved'; - break; - } - options.by = by; - return eventName; - }, - - /** - * @private - * @param {Event} e Event object fired on mousedown - */ - _onMouseDownInDrawingMode: function(e) { - this._isCurrentlyDrawing = true; - if (this.getActiveObject()) { - this.discardActiveObject(e).requestRenderAll(); - } - if (this.clipTo) { - fabric.util.clipContext(this, this.contextTop); - } - var pointer = this.getPointer(e); - this.freeDrawingBrush.onMouseDown(pointer, { e: e, pointer: pointer }); - this._handleEvent(e, 'down'); - }, - - /** - * @private - * @param {Event} e Event object fired on mousemove - */ - _onMouseMoveInDrawingMode: function(e) { - if (this._isCurrentlyDrawing) { - var pointer = this.getPointer(e); - this.freeDrawingBrush.onMouseMove(pointer, { e: e, pointer: pointer }); - } - this.setCursor(this.freeDrawingCursor); - this._handleEvent(e, 'move'); - }, - - /** - * @private - * @param {Event} e Event object fired on mouseup - */ - _onMouseUpInDrawingMode: function(e) { - if (this.clipTo) { - this.contextTop.restore(); - } - var pointer = this.getPointer(e); - this._isCurrentlyDrawing = this.freeDrawingBrush.onMouseUp({ e: e, pointer: pointer }); - this._handleEvent(e, 'up'); - }, - - /** - * Method that defines the actions when mouse is clicked on canvas. - * The method inits the currentTransform parameters and renders all the - * canvas so the current image can be placed on the top canvas and the rest - * in on the container one. - * @private - * @param {Event} e Event object fired on mousedown - */ - __onMouseDown: function (e) { - this._cacheTransformEventData(e); - this._handleEvent(e, 'down:before'); - var target = this._target; - // if right click just fire events - if (checkClick(e, RIGHT_CLICK)) { - if (this.fireRightClick) { - this._handleEvent(e, 'down', RIGHT_CLICK); - } - return; - } - - if (checkClick(e, MIDDLE_CLICK)) { - if (this.fireMiddleClick) { - this._handleEvent(e, 'down', MIDDLE_CLICK); - } - return; - } - - if (this.isDrawingMode) { - this._onMouseDownInDrawingMode(e); - return; - } - - if (!this._isMainEvent(e)) { - return; - } - - // ignore if some object is being transformed at this moment - if (this._currentTransform) { - return; - } - - var pointer = this._pointer; - // save pointer for check in __onMouseUp event - this._previousPointer = pointer; - var shouldRender = this._shouldRender(target), - shouldGroup = this._shouldGroup(e, target); - if (this._shouldClearSelection(e, target)) { - this.discardActiveObject(e); - } - else if (shouldGroup) { - this._handleGrouping(e, target); - target = this._activeObject; - } - - if (this.selection && (!target || - (!target.selectable && !target.isEditing && target !== this._activeObject))) { - this._groupSelector = { - ex: pointer.x, - ey: pointer.y, - top: 0, - left: 0 - }; - } - - if (target) { - var alreadySelected = target === this._activeObject; - if (target.selectable) { - this.setActiveObject(target, e); - } - if (target === this._activeObject && (target.__corner || !shouldGroup)) { - this._setupCurrentTransform(e, target, alreadySelected); - } - } - this._handleEvent(e, 'down'); - // we must renderAll so that we update the visuals - (shouldRender || shouldGroup) && this.requestRenderAll(); - }, - - /** - * reset cache form common information needed during event processing - * @private - */ - _resetTransformEventData: function() { - this._target = null; - this._pointer = null; - this._absolutePointer = null; - }, - - /** - * Cache common information needed during event processing - * @private - * @param {Event} e Event object fired on event - */ - _cacheTransformEventData: function(e) { - // reset in order to avoid stale caching - this._resetTransformEventData(); - this._pointer = this.getPointer(e, true); - this._absolutePointer = this.restorePointerVpt(this._pointer); - this._target = this._currentTransform ? this._currentTransform.target : this.findTarget(e) || null; - }, - - /** - * @private - */ - _beforeTransform: function(e) { - var t = this._currentTransform; - this.stateful && t.target.saveState(); - this.fire('before:transform', { - e: e, - transform: t, - }); - // determine if it's a drag or rotate case - if (t.corner) { - this.onBeforeScaleRotate(t.target); - } - }, - - /** - * Method that defines the actions when mouse is hovering the canvas. - * The currentTransform parameter will define whether the user is rotating/scaling/translating - * an image or neither of them (only hovering). A group selection is also possible and would cancel - * all any other type of action. - * In case of an image transformation only the top canvas will be rendered. - * @private - * @param {Event} e Event object fired on mousemove - */ - __onMouseMove: function (e) { - this._handleEvent(e, 'move:before'); - this._cacheTransformEventData(e); - var target, pointer; - - if (this.isDrawingMode) { - this._onMouseMoveInDrawingMode(e); - return; - } - - if (!this._isMainEvent(e)) { - return; - } - - var groupSelector = this._groupSelector; - - // We initially clicked in an empty area, so we draw a box for multiple selection - if (groupSelector) { - pointer = this._pointer; - - groupSelector.left = pointer.x - groupSelector.ex; - groupSelector.top = pointer.y - groupSelector.ey; - - this.renderTop(); - } - else if (!this._currentTransform) { - target = this.findTarget(e) || null; - this._setCursorFromEvent(e, target); - this._fireOverOutEvents(target, e); - } - else { - this._transformObject(e); - } - this._handleEvent(e, 'move'); - this._resetTransformEventData(); - }, - - /** - * Manage the mouseout, mouseover events for the fabric object on the canvas - * @param {Fabric.Object} target the target where the target from the mousemove event - * @param {Event} e Event object fired on mousemove - * @private - */ - _fireOverOutEvents: function(target, e) { - var _hoveredTarget = this._hoveredTarget, - _hoveredTargets = this._hoveredTargets, targets = this.targets, - length = Math.max(_hoveredTargets.length, targets.length); - - this.fireSyntheticInOutEvents(target, e, { - oldTarget: _hoveredTarget, - evtOut: 'mouseout', - canvasEvtOut: 'mouse:out', - evtIn: 'mouseover', - canvasEvtIn: 'mouse:over', - }); - for (var i = 0; i < length; i++){ - this.fireSyntheticInOutEvents(targets[i], e, { - oldTarget: _hoveredTargets[i], - evtOut: 'mouseout', - evtIn: 'mouseover', - }); - } - this._hoveredTarget = target; - this._hoveredTargets = this.targets.concat(); - }, - - /** - * Manage the dragEnter, dragLeave events for the fabric objects on the canvas - * @param {Fabric.Object} target the target where the target from the onDrag event - * @param {Event} e Event object fired on ondrag - * @private - */ - _fireEnterLeaveEvents: function(target, e) { - var _draggedoverTarget = this._draggedoverTarget, - _hoveredTargets = this._hoveredTargets, targets = this.targets, - length = Math.max(_hoveredTargets.length, targets.length); - - this.fireSyntheticInOutEvents(target, e, { - oldTarget: _draggedoverTarget, - evtOut: 'dragleave', - evtIn: 'dragenter', - }); - for (var i = 0; i < length; i++) { - this.fireSyntheticInOutEvents(targets[i], e, { - oldTarget: _hoveredTargets[i], - evtOut: 'dragleave', - evtIn: 'dragenter', - }); - } - this._draggedoverTarget = target; - }, - - /** - * Manage the synthetic in/out events for the fabric objects on the canvas - * @param {Fabric.Object} target the target where the target from the supported events - * @param {Event} e Event object fired - * @param {Object} config configuration for the function to work - * @param {String} config.targetName property on the canvas where the old target is stored - * @param {String} [config.canvasEvtOut] name of the event to fire at canvas level for out - * @param {String} config.evtOut name of the event to fire for out - * @param {String} [config.canvasEvtIn] name of the event to fire at canvas level for in - * @param {String} config.evtIn name of the event to fire for in - * @private - */ - fireSyntheticInOutEvents: function(target, e, config) { - var inOpt, outOpt, oldTarget = config.oldTarget, outFires, inFires, - targetChanged = oldTarget !== target, canvasEvtIn = config.canvasEvtIn, canvasEvtOut = config.canvasEvtOut; - if (targetChanged) { - inOpt = { e: e, target: target, previousTarget: oldTarget }; - outOpt = { e: e, target: oldTarget, nextTarget: target }; - } - inFires = target && targetChanged; - outFires = oldTarget && targetChanged; - if (outFires) { - canvasEvtOut && this.fire(canvasEvtOut, outOpt); - oldTarget.fire(config.evtOut, outOpt); - } - if (inFires) { - canvasEvtIn && this.fire(canvasEvtIn, inOpt); - target.fire(config.evtIn, inOpt); - } - }, - - /** - * Method that defines actions when an Event Mouse Wheel - * @param {Event} e Event object fired on mouseup - */ - __onMouseWheel: function(e) { - this._cacheTransformEventData(e); - this._handleEvent(e, 'wheel'); - this._resetTransformEventData(); - }, - - /** - * @private - * @param {Event} e Event fired on mousemove - */ - _transformObject: function(e) { - var pointer = this.getPointer(e), - transform = this._currentTransform; - - transform.reset = false; - transform.target.isMoving = true; - transform.shiftKey = e.shiftKey; - transform.altKey = e[this.centeredKey]; - - this._beforeScaleTransform(e, transform); - this._performTransformAction(e, transform, pointer); - - transform.actionPerformed && this.requestRenderAll(); - }, - - /** - * @private - */ - _performTransformAction: function(e, transform, pointer) { - var x = pointer.x, - y = pointer.y, - action = transform.action, - actionPerformed = false, - options = { - target: transform.target, - e: e, - transform: transform, - pointer: pointer - }; - - if (action === 'rotate') { - (actionPerformed = this._rotateObject(x, y)) && this._fire('rotating', options); - } - else if (action === 'scale') { - (actionPerformed = this._onScale(e, transform, x, y)) && this._fire('scaling', options); - } - else if (action === 'scaleX') { - (actionPerformed = this._scaleObject(x, y, 'x')) && this._fire('scaling', options); - } - else if (action === 'scaleY') { - (actionPerformed = this._scaleObject(x, y, 'y')) && this._fire('scaling', options); - } - else if (action === 'skewX') { - (actionPerformed = this._skewObject(x, y, 'x')) && this._fire('skewing', options); - } - else if (action === 'skewY') { - (actionPerformed = this._skewObject(x, y, 'y')) && this._fire('skewing', options); - } - else { - actionPerformed = this._translateObject(x, y); - if (actionPerformed) { - this._fire('moving', options); - this.setCursor(options.target.moveCursor || this.moveCursor); - } - } - transform.actionPerformed = transform.actionPerformed || actionPerformed; - }, - - /** - * @private - */ - _fire: function(eventName, options) { - this.fire('object:' + eventName, options); - options.target.fire(eventName, options); - }, - - /** - * @private - */ - _beforeScaleTransform: function(e, transform) { - if (transform.action === 'scale' || transform.action === 'scaleX' || transform.action === 'scaleY') { - var centerTransform = this._shouldCenterTransform(transform.target); - - // Switch from a normal resize to center-based - if ((centerTransform && (transform.originX !== 'center' || transform.originY !== 'center')) || - // Switch from center-based resize to normal one - (!centerTransform && transform.originX === 'center' && transform.originY === 'center') - ) { - this._resetCurrentTransform(); - transform.reset = true; - } - } - }, - - /** - * @private - * @param {Event} e Event object - * @param {Object} transform current transform - * @param {Number} x mouse position x from origin - * @param {Number} y mouse position y from origin - * @return {Boolean} true if the scaling occurred - */ - _onScale: function(e, transform, x, y) { - if (this._isUniscalePossible(e, transform.target)) { - transform.currentAction = 'scale'; - return this._scaleObject(x, y); - } - else { - // Switch from a normal resize to proportional - if (!transform.reset && transform.currentAction === 'scale') { - this._resetCurrentTransform(); - } - - transform.currentAction = 'scaleEqually'; - return this._scaleObject(x, y, 'equally'); - } - }, - - /** - * @private - * @param {Event} e Event object - * @param {fabric.Object} target current target - * @return {Boolean} true if unproportional scaling is possible - */ - _isUniscalePossible: function(e, target) { - return (e[this.uniScaleKey] || this.uniScaleTransform) && !target.get('lockUniScaling'); - }, - - /** - * Sets the cursor depending on where the canvas is being hovered. - * Note: very buggy in Opera - * @param {Event} e Event object - * @param {Object} target Object that the mouse is hovering, if so. - */ - _setCursorFromEvent: function (e, target) { - if (!target) { - this.setCursor(this.defaultCursor); - return false; - } - var hoverCursor = target.hoverCursor || this.hoverCursor, - activeSelection = this._activeObject && this._activeObject.type === 'activeSelection' ? - this._activeObject : null, - // only show proper corner when group selection is not active - corner = (!activeSelection || !activeSelection.contains(target)) - && target._findTargetCorner(this.getPointer(e, true)); - - if (!corner) { - if (target.subTargetCheck){ - // hoverCursor should come from top-most subTarget, - // so we walk the array backwards - this.targets.concat().reverse().map(function(_target){ - hoverCursor = _target.hoverCursor || hoverCursor; - }); - } - this.setCursor(hoverCursor); - } - else { - this.setCursor(this.getCornerCursor(corner, target, e)); - } - }, - - /** - * @private - */ - getCornerCursor: function(corner, target, e) { - if (this.actionIsDisabled(corner, target, e)) { - return this.notAllowedCursor; - } - else if (corner in cursorOffset) { - return this._getRotatedCornerCursor(corner, target, e); - } - else if (corner === 'mtr' && target.hasRotatingPoint) { - return this.rotationCursor; - } - else { - return this.defaultCursor; - } - }, - - actionIsDisabled: function(corner, target, e) { - if (corner === 'mt' || corner === 'mb') { - return e[this.altActionKey] ? target.lockSkewingX : target.lockScalingY; - } - else if (corner === 'ml' || corner === 'mr') { - return e[this.altActionKey] ? target.lockSkewingY : target.lockScalingX; - } - else if (corner === 'mtr') { - return target.lockRotation; - } - else { - return this._isUniscalePossible(e, target) ? - target.lockScalingX && target.lockScalingY : target.lockScalingX || target.lockScalingY; - } - }, - - /** - * @private - */ - _getRotatedCornerCursor: function(corner, target, e) { - var n = Math.round((target.angle % 360) / 45); - - if (n < 0) { - n += 8; // full circle ahead - } - n += cursorOffset[corner]; - if (e[this.altActionKey] && cursorOffset[corner] % 2 === 0) { - //if we are holding shift and we are on a mx corner... - n += 2; - } - // normalize n to be from 0 to 7 - n %= 8; - - return this.cursorMap[n]; - } - }); -})(); - - -(function() { - - var min = Math.min, - max = Math.max; - - fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ { - - /** - * @private - * @param {Event} e Event object - * @param {fabric.Object} target - * @return {Boolean} - */ - _shouldGroup: function(e, target) { - var activeObject = this._activeObject; - return activeObject && this._isSelectionKeyPressed(e) && target && target.selectable && this.selection && - (activeObject !== target || activeObject.type === 'activeSelection') && !target.onSelect({ e: e }); - }, - - /** - * @private - * @param {Event} e Event object - * @param {fabric.Object} target - */ - _handleGrouping: function (e, target) { - var activeObject = this._activeObject; - // avoid multi select when shift click on a corner - if (activeObject.__corner) { - return; - } - if (target === activeObject) { - // if it's a group, find target again, using activeGroup objects - target = this.findTarget(e, true); - // if even object is not found or we are on activeObjectCorner, bail out - if (!target || !target.selectable) { - return; - } - } - if (activeObject && activeObject.type === 'activeSelection') { - this._updateActiveSelection(target, e); - } - else { - this._createActiveSelection(target, e); - } - }, - - /** - * @private - */ - _updateActiveSelection: function(target, e) { - var activeSelection = this._activeObject, - currentActiveObjects = activeSelection._objects.slice(0); - if (activeSelection.contains(target)) { - activeSelection.removeWithUpdate(target); - this._hoveredTarget = target; - this._hoveredTargets = this.targets.concat(); - if (activeSelection.size() === 1) { - // activate last remaining object - this._setActiveObject(activeSelection.item(0), e); - } - } - else { - activeSelection.addWithUpdate(target); - this._hoveredTarget = activeSelection; - this._hoveredTargets = this.targets.concat(); - } - this._fireSelectionEvents(currentActiveObjects, e); - }, - - /** - * @private - */ - _createActiveSelection: function(target, e) { - var currentActives = this.getActiveObjects(), group = this._createGroup(target); - this._hoveredTarget = group; - // ISSUE 4115: should we consider subTargets here? - // this._hoveredTargets = []; - // this._hoveredTargets = this.targets.concat(); - this._setActiveObject(group, e); - this._fireSelectionEvents(currentActives, e); - }, - - /** - * @private - * @param {Object} target - */ - _createGroup: function(target) { - var objects = this._objects, - isActiveLower = objects.indexOf(this._activeObject) < objects.indexOf(target), - groupObjects = isActiveLower - ? [this._activeObject, target] - : [target, this._activeObject]; - this._activeObject.isEditing && this._activeObject.exitEditing(); - return new fabric.ActiveSelection(groupObjects, { - canvas: this - }); - }, - - /** - * @private - * @param {Event} e mouse event - */ - _groupSelectedObjects: function (e) { - - var group = this._collectObjects(e), - aGroup; - - // do not create group for 1 element only - if (group.length === 1) { - this.setActiveObject(group[0], e); - } - else if (group.length > 1) { - aGroup = new fabric.ActiveSelection(group.reverse(), { - canvas: this - }); - this.setActiveObject(aGroup, e); - } - }, - - /** - * @private - */ - _collectObjects: function(e) { - var group = [], - currentObject, - x1 = this._groupSelector.ex, - y1 = this._groupSelector.ey, - x2 = x1 + this._groupSelector.left, - y2 = y1 + this._groupSelector.top, - selectionX1Y1 = new fabric.Point(min(x1, x2), min(y1, y2)), - selectionX2Y2 = new fabric.Point(max(x1, x2), max(y1, y2)), - allowIntersect = !this.selectionFullyContained, - isClick = x1 === x2 && y1 === y2; - // we iterate reverse order to collect top first in case of click. - for (var i = this._objects.length; i--; ) { - currentObject = this._objects[i]; - - if (!currentObject || !currentObject.selectable || !currentObject.visible) { - continue; - } - - if ((allowIntersect && currentObject.intersectsWithRect(selectionX1Y1, selectionX2Y2)) || - currentObject.isContainedWithinRect(selectionX1Y1, selectionX2Y2) || - (allowIntersect && currentObject.containsPoint(selectionX1Y1)) || - (allowIntersect && currentObject.containsPoint(selectionX2Y2)) - ) { - group.push(currentObject); - // only add one object if it's a click - if (isClick) { - break; - } - } - } - - if (group.length > 1) { - group = group.filter(function(object) { - return !object.onSelect({ e: e }); - }); - } - - return group; - }, - - /** - * @private - */ - _maybeGroupObjects: function(e) { - if (this.selection && this._groupSelector) { - this._groupSelectedObjects(e); - } - this.setCursor(this.defaultCursor); - // clear selection and current transformation - this._groupSelector = null; - } - }); - -})(); - - -(function () { - fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ { - - /** - * Exports canvas element to a dataurl image. Note that when multiplier is used, cropping is scaled appropriately - * @param {Object} [options] Options object - * @param {String} [options.format=png] The format of the output image. Either "jpeg" or "png" - * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg. - * @param {Number} [options.multiplier=1] Multiplier to scale by, to have consistent - * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14 - * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14 - * @param {Number} [options.width] Cropping width. Introduced in v1.2.14 - * @param {Number} [options.height] Cropping height. Introduced in v1.2.14 - * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 2.0.0 - * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format - * @see {@link http://jsfiddle.net/fabricjs/NfZVb/|jsFiddle demo} - * @example Generate jpeg dataURL with lower quality - * var dataURL = canvas.toDataURL({ - * format: 'jpeg', - * quality: 0.8 - * }); - * @example Generate cropped png dataURL (clipping of canvas) - * var dataURL = canvas.toDataURL({ - * format: 'png', - * left: 100, - * top: 100, - * width: 200, - * height: 200 - * }); - * @example Generate double scaled png dataURL - * var dataURL = canvas.toDataURL({ - * format: 'png', - * multiplier: 2 - * }); - */ - toDataURL: function (options) { - options || (options = { }); - - var format = options.format || 'png', - quality = options.quality || 1, - multiplier = (options.multiplier || 1) * (options.enableRetinaScaling ? this.getRetinaScaling() : 1), - canvasEl = this.toCanvasElement(multiplier, options); - return fabric.util.toDataURL(canvasEl, format, quality); - }, - - /** - * Create a new HTMLCanvas element painted with the current canvas content. - * No need to resize the actual one or repaint it. - * Will transfer object ownership to a new canvas, paint it, and set everything back. - * This is an intermediary step used to get to a dataUrl but also it is useful to - * create quick image copies of a canvas without passing for the dataUrl string - * @param {Number} [multiplier] a zoom factor. - * @param {Object} [cropping] Cropping informations - * @param {Number} [cropping.left] Cropping left offset. - * @param {Number} [cropping.top] Cropping top offset. - * @param {Number} [cropping.width] Cropping width. - * @param {Number} [cropping.height] Cropping height. - */ - toCanvasElement: function(multiplier, cropping) { - multiplier = multiplier || 1; - cropping = cropping || { }; - var scaledWidth = (cropping.width || this.width) * multiplier, - scaledHeight = (cropping.height || this.height) * multiplier, - zoom = this.getZoom(), - originalWidth = this.width, - originalHeight = this.height, - newZoom = zoom * multiplier, - vp = this.viewportTransform, - translateX = (vp[4] - (cropping.left || 0)) * multiplier, - translateY = (vp[5] - (cropping.top || 0)) * multiplier, - originalInteractive = this.interactive, - newVp = [newZoom, 0, 0, newZoom, translateX, translateY], - originalRetina = this.enableRetinaScaling, - canvasEl = fabric.util.createCanvasElement(), - originalContextTop = this.contextTop; - canvasEl.width = scaledWidth; - canvasEl.height = scaledHeight; - this.contextTop = null; - this.enableRetinaScaling = false; - this.interactive = false; - this.viewportTransform = newVp; - this.width = scaledWidth; - this.height = scaledHeight; - this.calcViewportBoundaries(); - this.renderCanvas(canvasEl.getContext('2d'), this._objects); - this.viewportTransform = vp; - this.width = originalWidth; - this.height = originalHeight; - this.calcViewportBoundaries(); - this.interactive = originalInteractive; - this.enableRetinaScaling = originalRetina; - this.contextTop = originalContextTop; - return canvasEl; - }, - }); - -})(); - - -fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ { - - /** - * Populates canvas with data from the specified dataless JSON. - * JSON format must conform to the one of {@link fabric.Canvas#toDatalessJSON} - * @deprecated since 1.2.2 - * @param {String|Object} json JSON string or object - * @param {Function} callback Callback, invoked when json is parsed - * and corresponding objects (e.g: {@link fabric.Image}) - * are initialized - * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created. - * @return {fabric.Canvas} instance - * @chainable - * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#deserialization} - */ - loadFromDatalessJSON: function (json, callback, reviver) { - return this.loadFromJSON(json, callback, reviver); - }, - - /** - * Populates canvas with data from the specified JSON. - * JSON format must conform to the one of {@link fabric.Canvas#toJSON} - * @param {String|Object} json JSON string or object - * @param {Function} callback Callback, invoked when json is parsed - * and corresponding objects (e.g: {@link fabric.Image}) - * are initialized - * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created. - * @return {fabric.Canvas} instance - * @chainable - * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#deserialization} - * @see {@link http://jsfiddle.net/fabricjs/fmgXt/|jsFiddle demo} - * @example loadFromJSON - * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas)); - * @example loadFromJSON with reviver - * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas), function(o, object) { - * // `o` = json object - * // `object` = fabric.Object instance - * // ... do some stuff ... - * }); - */ - loadFromJSON: function (json, callback, reviver) { - if (!json) { - return; - } - - // serialize if it wasn't already - var serialized = (typeof json === 'string') - ? JSON.parse(json) - : fabric.util.object.clone(json); - - var _this = this, - clipPath = serialized.clipPath, - renderOnAddRemove = this.renderOnAddRemove; - - this.renderOnAddRemove = false; - - delete serialized.clipPath; - - this._enlivenObjects(serialized.objects, function (enlivenedObjects) { - _this.clear(); - _this._setBgOverlay(serialized, function () { - if (clipPath) { - _this._enlivenObjects([clipPath], function (enlivenedCanvasClip) { - _this.clipPath = enlivenedCanvasClip[0]; - _this.__setupCanvas.call(_this, serialized, enlivenedObjects, renderOnAddRemove, callback); - }); - } - else { - _this.__setupCanvas.call(_this, serialized, enlivenedObjects, renderOnAddRemove, callback); - } - }); - }, reviver); - return this; - }, - - /** - * @private - * @param {Object} serialized Object with background and overlay information - * @param {Array} restored canvas objects - * @param {Function} cached renderOnAddRemove callback - * @param {Function} callback Invoked after all background and overlay images/patterns loaded - */ - __setupCanvas: function(serialized, enlivenedObjects, renderOnAddRemove, callback) { - var _this = this; - enlivenedObjects.forEach(function(obj, index) { - // we splice the array just in case some custom classes restored from JSON - // will add more object to canvas at canvas init. - _this.insertAt(obj, index); - }); - this.renderOnAddRemove = renderOnAddRemove; - // remove parts i cannot set as options - delete serialized.objects; - delete serialized.backgroundImage; - delete serialized.overlayImage; - delete serialized.background; - delete serialized.overlay; - // this._initOptions does too many things to just - // call it. Normally loading an Object from JSON - // create the Object instance. Here the Canvas is - // already an instance and we are just loading things over it - this._setOptions(serialized); - this.renderAll(); - callback && callback(); - }, - - /** - * @private - * @param {Object} serialized Object with background and overlay information - * @param {Function} callback Invoked after all background and overlay images/patterns loaded - */ - _setBgOverlay: function(serialized, callback) { - var loaded = { - backgroundColor: false, - overlayColor: false, - backgroundImage: false, - overlayImage: false - }; - - if (!serialized.backgroundImage && !serialized.overlayImage && !serialized.background && !serialized.overlay) { - callback && callback(); - return; - } - - var cbIfLoaded = function () { - if (loaded.backgroundImage && loaded.overlayImage && loaded.backgroundColor && loaded.overlayColor) { - callback && callback(); - } - }; - - this.__setBgOverlay('backgroundImage', serialized.backgroundImage, loaded, cbIfLoaded); - this.__setBgOverlay('overlayImage', serialized.overlayImage, loaded, cbIfLoaded); - this.__setBgOverlay('backgroundColor', serialized.background, loaded, cbIfLoaded); - this.__setBgOverlay('overlayColor', serialized.overlay, loaded, cbIfLoaded); - }, - - /** - * @private - * @param {String} property Property to set (backgroundImage, overlayImage, backgroundColor, overlayColor) - * @param {(Object|String)} value Value to set - * @param {Object} loaded Set loaded property to true if property is set - * @param {Object} callback Callback function to invoke after property is set - */ - __setBgOverlay: function(property, value, loaded, callback) { - var _this = this; - - if (!value) { - loaded[property] = true; - callback && callback(); - return; - } - - if (property === 'backgroundImage' || property === 'overlayImage') { - fabric.util.enlivenObjects([value], function(enlivedObject){ - _this[property] = enlivedObject[0]; - loaded[property] = true; - callback && callback(); - }); - } - else { - this['set' + fabric.util.string.capitalize(property, true)](value, function() { - loaded[property] = true; - callback && callback(); - }); - } - }, - - /** - * @private - * @param {Array} objects - * @param {Function} callback - * @param {Function} [reviver] - */ - _enlivenObjects: function (objects, callback, reviver) { - if (!objects || objects.length === 0) { - callback && callback([]); - return; - } - - fabric.util.enlivenObjects(objects, function(enlivenedObjects) { - callback && callback(enlivenedObjects); - }, null, reviver); - }, - - /** - * @private - * @param {String} format - * @param {Function} callback - */ - _toDataURL: function (format, callback) { - this.clone(function (clone) { - callback(clone.toDataURL(format)); - }); - }, - - /** - * @private - * @param {String} format - * @param {Number} multiplier - * @param {Function} callback - */ - _toDataURLWithMultiplier: function (format, multiplier, callback) { - this.clone(function (clone) { - callback(clone.toDataURLWithMultiplier(format, multiplier)); - }); - }, - - /** - * Clones canvas instance - * @param {Object} [callback] Receives cloned instance as a first argument - * @param {Array} [properties] Array of properties to include in the cloned canvas and children - */ - clone: function (callback, properties) { - var data = JSON.stringify(this.toJSON(properties)); - this.cloneWithoutData(function(clone) { - clone.loadFromJSON(data, function() { - callback && callback(clone); - }); - }); - }, - - /** - * Clones canvas instance without cloning existing data. - * This essentially copies canvas dimensions, clipping properties, etc. - * but leaves data empty (so that you can populate it with your own) - * @param {Object} [callback] Receives cloned instance as a first argument - */ - cloneWithoutData: function(callback) { - var el = fabric.util.createCanvasElement(); - - el.width = this.width; - el.height = this.height; - - var clone = new fabric.Canvas(el); - clone.clipTo = this.clipTo; - if (this.backgroundImage) { - clone.setBackgroundImage(this.backgroundImage.src, function() { - clone.renderAll(); - callback && callback(clone); - }); - clone.backgroundImageOpacity = this.backgroundImageOpacity; - clone.backgroundImageStretch = this.backgroundImageStretch; - } - else { - callback && callback(clone); - } - } -}); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend, - clone = fabric.util.object.clone, - toFixed = fabric.util.toFixed, - capitalize = fabric.util.string.capitalize, - degreesToRadians = fabric.util.degreesToRadians, - supportsLineDash = fabric.StaticCanvas.supports('setLineDash'), - objectCaching = !fabric.isLikelyNode, - ALIASING_LIMIT = 2; - - if (fabric.Object) { - return; - } - - /** - * Root object class from which all 2d shape classes inherit from - * @class fabric.Object - * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#objects} - * @see {@link fabric.Object#initialize} for constructor definition - * - * @fires added - * @fires removed - * - * @fires selected - * @fires deselected - * @fires modified - * @fires modified - * @fires moved - * @fires scaled - * @fires rotated - * @fires skewed - * - * @fires rotating - * @fires scaling - * @fires moving - * @fires skewing - * - * @fires mousedown - * @fires mouseup - * @fires mouseover - * @fires mouseout - * @fires mousewheel - * @fires mousedblclick - * - * @fires dragover - * @fires dragenter - * @fires dragleave - * @fires drop - */ - fabric.Object = fabric.util.createClass(fabric.CommonMethods, /** @lends fabric.Object.prototype */ { - - /** - * Type of an object (rect, circle, path, etc.). - * Note that this property is meant to be read-only and not meant to be modified. - * If you modify, certain parts of Fabric (such as JSON loading) won't work correctly. - * @type String - * @default - */ - type: 'object', - - /** - * Horizontal origin of transformation of an object (one of "left", "right", "center") - * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups - * @type String - * @default - */ - originX: 'left', - - /** - * Vertical origin of transformation of an object (one of "top", "bottom", "center") - * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups - * @type String - * @default - */ - originY: 'top', - - /** - * Top position of an object. Note that by default it's relative to object top. You can change this by setting originY={top/center/bottom} - * @type Number - * @default - */ - top: 0, - - /** - * Left position of an object. Note that by default it's relative to object left. You can change this by setting originX={left/center/right} - * @type Number - * @default - */ - left: 0, - - /** - * Object width - * @type Number - * @default - */ - width: 0, - - /** - * Object height - * @type Number - * @default - */ - height: 0, - - /** - * Object scale factor (horizontal) - * @type Number - * @default - */ - scaleX: 1, - - /** - * Object scale factor (vertical) - * @type Number - * @default - */ - scaleY: 1, - - /** - * When true, an object is rendered as flipped horizontally - * @type Boolean - * @default - */ - flipX: false, - - /** - * When true, an object is rendered as flipped vertically - * @type Boolean - * @default - */ - flipY: false, - - /** - * Opacity of an object - * @type Number - * @default - */ - opacity: 1, - - /** - * Angle of rotation of an object (in degrees) - * @type Number - * @default - */ - angle: 0, - - /** - * Angle of skew on x axes of an object (in degrees) - * @type Number - * @default - */ - skewX: 0, - - /** - * Angle of skew on y axes of an object (in degrees) - * @type Number - * @default - */ - skewY: 0, - - /** - * Size of object's controlling corners (in pixels) - * @type Number - * @default - */ - cornerSize: 13, - - /** - * When true, object's controlling corners are rendered as transparent inside (i.e. stroke instead of fill) - * @type Boolean - * @default - */ - transparentCorners: true, - - /** - * Default cursor value used when hovering over this object on canvas - * @type String - * @default - */ - hoverCursor: null, - - /** - * Default cursor value used when moving this object on canvas - * @type String - * @default - */ - moveCursor: null, - - /** - * Padding between object and its controlling borders (in pixels) - * @type Number - * @default - */ - padding: 0, - - /** - * Color of controlling borders of an object (when it's active) - * @type String - * @default - */ - borderColor: 'rgba(102,153,255,0.75)', - - /** - * Array specifying dash pattern of an object's borders (hasBorder must be true) - * @since 1.6.2 - * @type Array - */ - borderDashArray: null, - - /** - * Color of controlling corners of an object (when it's active) - * @type String - * @default - */ - cornerColor: 'rgba(102,153,255,0.5)', - - /** - * Color of controlling corners of an object (when it's active and transparentCorners false) - * @since 1.6.2 - * @type String - * @default - */ - cornerStrokeColor: null, - - /** - * Specify style of control, 'rect' or 'circle' - * @since 1.6.2 - * @type String - */ - cornerStyle: 'rect', - - /** - * Array specifying dash pattern of an object's control (hasBorder must be true) - * @since 1.6.2 - * @type Array - */ - cornerDashArray: null, - - /** - * When true, this object will use center point as the origin of transformation - * when being scaled via the controls. - * Backwards incompatibility note: This property replaces "centerTransform" (Boolean). - * @since 1.3.4 - * @type Boolean - * @default - */ - centeredScaling: false, - - /** - * When true, this object will use center point as the origin of transformation - * when being rotated via the controls. - * Backwards incompatibility note: This property replaces "centerTransform" (Boolean). - * @since 1.3.4 - * @type Boolean - * @default - */ - centeredRotation: true, - - /** - * Color of object's fill - * takes css colors https://www.w3.org/TR/css-color-3/ - * @type String - * @default - */ - fill: 'rgb(0,0,0)', - - /** - * Fill rule used to fill an object - * accepted values are nonzero, evenodd - * Backwards incompatibility note: This property was used for setting globalCompositeOperation until v1.4.12 (use `fabric.Object#globalCompositeOperation` instead) - * @type String - * @default - */ - fillRule: 'nonzero', - - /** - * Composite rule used for canvas globalCompositeOperation - * @type String - * @default - */ - globalCompositeOperation: 'source-over', - - /** - * Background color of an object. - * takes css colors https://www.w3.org/TR/css-color-3/ - * @type String - * @default - */ - backgroundColor: '', - - /** - * Selection Background color of an object. colored layer behind the object when it is active. - * does not mix good with globalCompositeOperation methods. - * @type String - * @default - */ - selectionBackgroundColor: '', - - /** - * When defined, an object is rendered via stroke and this property specifies its color - * takes css colors https://www.w3.org/TR/css-color-3/ - * @type String - * @default - */ - stroke: null, - - /** - * Width of a stroke used to render this object - * @type Number - * @default - */ - strokeWidth: 1, - - /** - * Array specifying dash pattern of an object's stroke (stroke must be defined) - * @type Array - */ - strokeDashArray: null, - - /** - * Line offset of an object's stroke - * @type Number - * @default - */ - strokeDashOffset: 0, - - /** - * Line endings style of an object's stroke (one of "butt", "round", "square") - * @type String - * @default - */ - strokeLineCap: 'butt', - - /** - * Corner style of an object's stroke (one of "bevil", "round", "miter") - * @type String - * @default - */ - strokeLineJoin: 'miter', - - /** - * Maximum miter length (used for strokeLineJoin = "miter") of an object's stroke - * @type Number - * @default - */ - strokeMiterLimit: 4, - - /** - * Shadow object representing shadow of this shape - * @type fabric.Shadow - * @default - */ - shadow: null, - - /** - * Opacity of object's controlling borders when object is active and moving - * @type Number - * @default - */ - borderOpacityWhenMoving: 0.4, - - /** - * Scale factor of object's controlling borders - * @type Number - * @default - */ - borderScaleFactor: 1, - - /** - * Transform matrix (similar to SVG's transform matrix) - * This property has been depreacted. Since caching and and qrDecompose this - * property can be handled with the standard top,left,scaleX,scaleY,angle and skewX. - * A documentation example on how to parse and merge a transformMatrix will be provided before - * completely removing it in fabric 4.0 - * If you are starting a project now, DO NOT use it. - * @deprecated since 3.2.0 - * @type Array - */ - transformMatrix: null, - - /** - * Minimum allowed scale value of an object - * @type Number - * @default - */ - minScaleLimit: 0, - - /** - * When set to `false`, an object can not be selected for modification (using either point-click-based or group-based selection). - * But events still fire on it. - * @type Boolean - * @default - */ - selectable: true, - - /** - * When set to `false`, an object can not be a target of events. All events propagate through it. Introduced in v1.3.4 - * @type Boolean - * @default - */ - evented: true, - - /** - * When set to `false`, an object is not rendered on canvas - * @type Boolean - * @default - */ - visible: true, - - /** - * When set to `false`, object's controls are not displayed and can not be used to manipulate object - * @type Boolean - * @default - */ - hasControls: true, - - /** - * When set to `false`, object's controlling borders are not rendered - * @type Boolean - * @default - */ - hasBorders: true, - - /** - * When set to `false`, object's controlling rotating point will not be visible or selectable - * @type Boolean - * @default - */ - hasRotatingPoint: true, - - /** - * Offset for object's controlling rotating point (when enabled via `hasRotatingPoint`) - * @type Number - * @default - */ - rotatingPointOffset: 40, - - /** - * When set to `true`, objects are "found" on canvas on per-pixel basis rather than according to bounding box - * @type Boolean - * @default - */ - perPixelTargetFind: false, - - /** - * When `false`, default object's values are not included in its serialization - * @type Boolean - * @default - */ - includeDefaultValues: true, - - /** - * Function that determines clipping of an object (context is passed as a first argument). - * If you are using code minification, ctx argument can be minified/manglied you should use - * as a workaround `var ctx = arguments[0];` in the function; - * Note that context origin is at the object's center point (not left/top corner) - * @deprecated since 2.0.0 - * @type Function - */ - clipTo: null, - - /** - * When `true`, object horizontal movement is locked - * @type Boolean - * @default - */ - lockMovementX: false, - - /** - * When `true`, object vertical movement is locked - * @type Boolean - * @default - */ - lockMovementY: false, - - /** - * When `true`, object rotation is locked - * @type Boolean - * @default - */ - lockRotation: false, - - /** - * When `true`, object horizontal scaling is locked - * @type Boolean - * @default - */ - lockScalingX: false, - - /** - * When `true`, object vertical scaling is locked - * @type Boolean - * @default - */ - lockScalingY: false, - - /** - * When `true`, object non-uniform scaling is locked - * @type Boolean - * @default - */ - lockUniScaling: false, - - /** - * When `true`, object horizontal skewing is locked - * @type Boolean - * @default - */ - lockSkewingX: false, - - /** - * When `true`, object vertical skewing is locked - * @type Boolean - * @default - */ - lockSkewingY: false, - - /** - * When `true`, object cannot be flipped by scaling into negative values - * @type Boolean - * @default - */ - lockScalingFlip: false, - - /** - * When `true`, object is not exported in OBJECT/JSON - * @since 1.6.3 - * @type Boolean - * @default - */ - excludeFromExport: false, - - /** - * When `true`, object is cached on an additional canvas. - * When `false`, object is not cached unless necessary ( clipPath ) - * default to true - * @since 1.7.0 - * @type Boolean - * @default true - */ - objectCaching: objectCaching, - - /** - * When `true`, object properties are checked for cache invalidation. In some particular - * situation you may want this to be disabled ( spray brush, very big, groups) - * or if your application does not allow you to modify properties for groups child you want - * to disable it for groups. - * default to false - * since 1.7.0 - * @type Boolean - * @default false - */ - statefullCache: false, - - /** - * When `true`, cache does not get updated during scaling. The picture will get blocky if scaled - * too much and will be redrawn with correct details at the end of scaling. - * this setting is performance and application dependant. - * default to true - * since 1.7.0 - * @type Boolean - * @default true - */ - noScaleCache: true, - - /** - * When `false`, the stoke width will scale with the object. - * When `true`, the stroke will always match the exact pixel size entered for stroke width. - * default to false - * @since 2.6.0 - * @type Boolean - * @default false - * @type Boolean - * @default false - */ - strokeUniform: false, - - /** - * When set to `true`, object's cache will be rerendered next render call. - * since 1.7.0 - * @type Boolean - * @default true - */ - dirty: true, - - /** - * keeps the value of the last hovered corner during mouse move. - * 0 is no corner, or 'mt', 'ml', 'mtr' etc.. - * It should be private, but there is no harm in using it as - * a read-only property. - * @type number|string|any - * @default 0 - */ - __corner: 0, - - /** - * Determines if the fill or the stroke is drawn first (one of "fill" or "stroke") - * @type String - * @default - */ - paintFirst: 'fill', - - /** - * List of properties to consider when checking if state - * of an object is changed (fabric.Object#hasStateChanged) - * as well as for history (undo/redo) purposes - * @type Array - */ - stateProperties: ( - 'top left width height scaleX scaleY flipX flipY originX originY transformMatrix ' + - 'stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit ' + - 'angle opacity fill globalCompositeOperation shadow clipTo visible backgroundColor ' + - 'skewX skewY fillRule paintFirst clipPath strokeUniform' - ).split(' '), - - /** - * List of properties to consider when checking if cache needs refresh - * Those properties are checked by statefullCache ON ( or lazy mode if we want ) or from single - * calls to Object.set(key, value). If the key is in this list, the object is marked as dirty - * and refreshed at the next render - * @type Array - */ - cacheProperties: ( - 'fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform' + - ' strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath' - ).split(' '), - - /** - * a fabricObject that, without stroke define a clipping area with their shape. filled in black - * the clipPath object gets used when the object has rendered, and the context is placed in the center - * of the object cacheCanvas. - * If you want 0,0 of a clipPath to align with an object center, use clipPath.originX/Y to 'center' - * @type fabric.Object - */ - clipPath: undefined, - - /** - * Meaningful ONLY when the object is used as clipPath. - * if true, the clipPath will make the object clip to the outside of the clipPath - * since 2.4.0 - * @type boolean - * @default false - */ - inverted: false, - - /** - * Meaningful ONLY when the object is used as clipPath. - * if true, the clipPath will have its top and left relative to canvas, and will - * not be influenced by the object transform. This will make the clipPath relative - * to the canvas, but clipping just a particular object. - * WARNING this is beta, this feature may change or be renamed. - * since 2.4.0 - * @type boolean - * @default false - */ - absolutePositioned: false, - - /** - * Constructor - * @param {Object} [options] Options object - */ - initialize: function(options) { - if (options) { - this.setOptions(options); - } - }, - - /** - * Create a the canvas used to keep the cached copy of the object - * @private - */ - _createCacheCanvas: function() { - this._cacheProperties = {}; - this._cacheCanvas = fabric.util.createCanvasElement(); - this._cacheContext = this._cacheCanvas.getContext('2d'); - this._updateCacheCanvas(); - // if canvas gets created, is empty, so dirty. - this.dirty = true; - }, - - /** - * Limit the cache dimensions so that X * Y do not cross fabric.perfLimitSizeTotal - * and each side do not cross fabric.cacheSideLimit - * those numbers are configurable so that you can get as much detail as you want - * making bargain with performances. - * @param {Object} dims - * @param {Object} dims.width width of canvas - * @param {Object} dims.height height of canvas - * @param {Object} dims.zoomX zoomX zoom value to unscale the canvas before drawing cache - * @param {Object} dims.zoomY zoomY zoom value to unscale the canvas before drawing cache - * @return {Object}.width width of canvas - * @return {Object}.height height of canvas - * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache - * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache - */ - _limitCacheSize: function(dims) { - var perfLimitSizeTotal = fabric.perfLimitSizeTotal, - width = dims.width, height = dims.height, - max = fabric.maxCacheSideLimit, min = fabric.minCacheSideLimit; - if (width <= max && height <= max && width * height <= perfLimitSizeTotal) { - if (width < min) { - dims.width = min; - } - if (height < min) { - dims.height = min; - } - return dims; - } - var ar = width / height, limitedDims = fabric.util.limitDimsByArea(ar, perfLimitSizeTotal), - capValue = fabric.util.capValue, - x = capValue(min, limitedDims.x, max), - y = capValue(min, limitedDims.y, max); - if (width > x) { - dims.zoomX /= width / x; - dims.width = x; - dims.capped = true; - } - if (height > y) { - dims.zoomY /= height / y; - dims.height = y; - dims.capped = true; - } - return dims; - }, - - /** - * Return the dimension and the zoom level needed to create a cache canvas - * big enough to host the object to be cached. - * @private - * @return {Object}.x width of object to be cached - * @return {Object}.y height of object to be cached - * @return {Object}.width width of canvas - * @return {Object}.height height of canvas - * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache - * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache - */ - _getCacheCanvasDimensions: function() { - var objectScale = this.getTotalObjectScaling(), - // caculate dimensions without skewing - dim = this._getTransformedDimensions(0, 0), - neededX = dim.x * objectScale.scaleX / this.scaleX, - neededY = dim.y * objectScale.scaleY / this.scaleY; - return { - // for sure this ALIASING_LIMIT is slightly creating problem - // in situation in which the cache canvas gets an upper limit - // also objectScale contains already scaleX and scaleY - width: neededX + ALIASING_LIMIT, - height: neededY + ALIASING_LIMIT, - zoomX: objectScale.scaleX, - zoomY: objectScale.scaleY, - x: neededX, - y: neededY - }; - }, - - /** - * Update width and height of the canvas for cache - * returns true or false if canvas needed resize. - * @private - * @return {Boolean} true if the canvas has been resized - */ - _updateCacheCanvas: function() { - var targetCanvas = this.canvas; - if (this.noScaleCache && targetCanvas && targetCanvas._currentTransform) { - var target = targetCanvas._currentTransform.target, - action = targetCanvas._currentTransform.action; - if (this === target && action.slice && action.slice(0, 5) === 'scale') { - return false; - } - } - var canvas = this._cacheCanvas, - dims = this._limitCacheSize(this._getCacheCanvasDimensions()), - minCacheSize = fabric.minCacheSideLimit, - width = dims.width, height = dims.height, drawingWidth, drawingHeight, - zoomX = dims.zoomX, zoomY = dims.zoomY, - dimensionsChanged = width !== this.cacheWidth || height !== this.cacheHeight, - zoomChanged = this.zoomX !== zoomX || this.zoomY !== zoomY, - shouldRedraw = dimensionsChanged || zoomChanged, - additionalWidth = 0, additionalHeight = 0, shouldResizeCanvas = false; - if (dimensionsChanged) { - var canvasWidth = this._cacheCanvas.width, - canvasHeight = this._cacheCanvas.height, - sizeGrowing = width > canvasWidth || height > canvasHeight, - sizeShrinking = (width < canvasWidth * 0.9 || height < canvasHeight * 0.9) && - canvasWidth > minCacheSize && canvasHeight > minCacheSize; - shouldResizeCanvas = sizeGrowing || sizeShrinking; - if (sizeGrowing && !dims.capped && (width > minCacheSize || height > minCacheSize)) { - additionalWidth = width * 0.1; - additionalHeight = height * 0.1; - } - } - if (shouldRedraw) { - if (shouldResizeCanvas) { - canvas.width = Math.ceil(width + additionalWidth); - canvas.height = Math.ceil(height + additionalHeight); - } - else { - this._cacheContext.setTransform(1, 0, 0, 1, 0, 0); - this._cacheContext.clearRect(0, 0, canvas.width, canvas.height); - } - drawingWidth = dims.x / 2; - drawingHeight = dims.y / 2; - this.cacheTranslationX = Math.round(canvas.width / 2 - drawingWidth) + drawingWidth; - this.cacheTranslationY = Math.round(canvas.height / 2 - drawingHeight) + drawingHeight; - this.cacheWidth = width; - this.cacheHeight = height; - this._cacheContext.translate(this.cacheTranslationX, this.cacheTranslationY); - this._cacheContext.scale(zoomX, zoomY); - this.zoomX = zoomX; - this.zoomY = zoomY; - return true; - } - return false; - }, - - /** - * Sets object's properties from options - * @param {Object} [options] Options object - */ - setOptions: function(options) { - this._setOptions(options); - this._initGradient(options.fill, 'fill'); - this._initGradient(options.stroke, 'stroke'); - this._initClipping(options); - this._initPattern(options.fill, 'fill'); - this._initPattern(options.stroke, 'stroke'); - }, - - /** - * Transforms context when rendering an object - * @param {CanvasRenderingContext2D} ctx Context - */ - transform: function(ctx) { - var m; - if (this.group && !this.group._transformDone) { - m = this.calcTransformMatrix(); - } - else { - m = this.calcOwnMatrix(); - } - ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]); - }, - - /** - * Returns an object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} Object representation of an instance - */ - toObject: function(propertiesToInclude) { - var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS, - - object = { - type: this.type, - version: fabric.version, - originX: this.originX, - originY: this.originY, - left: toFixed(this.left, NUM_FRACTION_DIGITS), - top: toFixed(this.top, NUM_FRACTION_DIGITS), - width: toFixed(this.width, NUM_FRACTION_DIGITS), - height: toFixed(this.height, NUM_FRACTION_DIGITS), - fill: (this.fill && this.fill.toObject) ? this.fill.toObject() : this.fill, - stroke: (this.stroke && this.stroke.toObject) ? this.stroke.toObject() : this.stroke, - strokeWidth: toFixed(this.strokeWidth, NUM_FRACTION_DIGITS), - strokeDashArray: this.strokeDashArray ? this.strokeDashArray.concat() : this.strokeDashArray, - strokeLineCap: this.strokeLineCap, - strokeDashOffset: this.strokeDashOffset, - strokeLineJoin: this.strokeLineJoin, - strokeMiterLimit: toFixed(this.strokeMiterLimit, NUM_FRACTION_DIGITS), - scaleX: toFixed(this.scaleX, NUM_FRACTION_DIGITS), - scaleY: toFixed(this.scaleY, NUM_FRACTION_DIGITS), - angle: toFixed(this.angle, NUM_FRACTION_DIGITS), - flipX: this.flipX, - flipY: this.flipY, - opacity: toFixed(this.opacity, NUM_FRACTION_DIGITS), - shadow: (this.shadow && this.shadow.toObject) ? this.shadow.toObject() : this.shadow, - visible: this.visible, - clipTo: this.clipTo && String(this.clipTo), - backgroundColor: this.backgroundColor, - fillRule: this.fillRule, - paintFirst: this.paintFirst, - globalCompositeOperation: this.globalCompositeOperation, - transformMatrix: this.transformMatrix ? this.transformMatrix.concat() : null, - skewX: toFixed(this.skewX, NUM_FRACTION_DIGITS), - skewY: toFixed(this.skewY, NUM_FRACTION_DIGITS), - }; - - if (this.clipPath) { - object.clipPath = this.clipPath.toObject(propertiesToInclude); - object.clipPath.inverted = this.clipPath.inverted; - object.clipPath.absolutePositioned = this.clipPath.absolutePositioned; - } - - fabric.util.populateWithProperties(this, object, propertiesToInclude); - if (!this.includeDefaultValues) { - object = this._removeDefaultValues(object); - } - - return object; - }, - - /** - * Returns (dataless) object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} Object representation of an instance - */ - toDatalessObject: function(propertiesToInclude) { - // will be overwritten by subclasses - return this.toObject(propertiesToInclude); - }, - - /** - * @private - * @param {Object} object - */ - _removeDefaultValues: function(object) { - var prototype = fabric.util.getKlass(object.type).prototype, - stateProperties = prototype.stateProperties; - stateProperties.forEach(function(prop) { - if (prop === 'left' || prop === 'top') { - return; - } - if (object[prop] === prototype[prop]) { - delete object[prop]; - } - var isArray = Object.prototype.toString.call(object[prop]) === '[object Array]' && - Object.prototype.toString.call(prototype[prop]) === '[object Array]'; - - // basically a check for [] === [] - if (isArray && object[prop].length === 0 && prototype[prop].length === 0) { - delete object[prop]; - } - }); - - return object; - }, - - /** - * Returns a string representation of an instance - * @return {String} - */ - toString: function() { - return '#'; - }, - - /** - * Return the object scale factor counting also the group scaling - * @return {Object} object with scaleX and scaleY properties - */ - getObjectScaling: function() { - var scaleX = this.scaleX, scaleY = this.scaleY; - if (this.group) { - var scaling = this.group.getObjectScaling(); - scaleX *= scaling.scaleX; - scaleY *= scaling.scaleY; - } - return { scaleX: scaleX, scaleY: scaleY }; - }, - - /** - * Return the object scale factor counting also the group scaling, zoom and retina - * @return {Object} object with scaleX and scaleY properties - */ - getTotalObjectScaling: function() { - var scale = this.getObjectScaling(), scaleX = scale.scaleX, scaleY = scale.scaleY; - if (this.canvas) { - var zoom = this.canvas.getZoom(); - var retina = this.canvas.getRetinaScaling(); - scaleX *= zoom * retina; - scaleY *= zoom * retina; - } - return { scaleX: scaleX, scaleY: scaleY }; - }, - - /** - * Return the object opacity counting also the group property - * @return {Number} - */ - getObjectOpacity: function() { - var opacity = this.opacity; - if (this.group) { - opacity *= this.group.getObjectOpacity(); - } - return opacity; - }, - - /** - * @private - * @param {String} key - * @param {*} value - * @return {fabric.Object} thisArg - */ - _set: function(key, value) { - var shouldConstrainValue = (key === 'scaleX' || key === 'scaleY'), - isChanged = this[key] !== value, groupNeedsUpdate = false; - - if (shouldConstrainValue) { - value = this._constrainScale(value); - } - if (key === 'scaleX' && value < 0) { - this.flipX = !this.flipX; - value *= -1; - } - else if (key === 'scaleY' && value < 0) { - this.flipY = !this.flipY; - value *= -1; - } - else if (key === 'shadow' && value && !(value instanceof fabric.Shadow)) { - value = new fabric.Shadow(value); - } - else if (key === 'dirty' && this.group) { - this.group.set('dirty', value); - } - - this[key] = value; - - if (isChanged) { - groupNeedsUpdate = this.group && this.group.isOnACache(); - if (this.cacheProperties.indexOf(key) > -1) { - this.dirty = true; - groupNeedsUpdate && this.group.set('dirty', true); - } - else if (groupNeedsUpdate && this.stateProperties.indexOf(key) > -1) { - this.group.set('dirty', true); - } - } - - return this; - }, - - /** - * This callback function is called by the parent group of an object every - * time a non-delegated property changes on the group. It is passed the key - * and value as parameters. Not adding in this function's signature to avoid - * Travis build error about unused variables. - */ - setOnGroup: function() { - // implemented by sub-classes, as needed. - }, - - /** - * Retrieves viewportTransform from Object's canvas if possible - * @method getViewportTransform - * @memberOf fabric.Object.prototype - * @return {Array} - */ - getViewportTransform: function() { - if (this.canvas && this.canvas.viewportTransform) { - return this.canvas.viewportTransform; - } - return fabric.iMatrix.concat(); - }, - - /* - * @private - * return if the object would be visible in rendering - * @memberOf fabric.Object.prototype - * @return {Boolean} - */ - isNotVisible: function() { - return this.opacity === 0 || - (this.width === 0 && this.height === 0 && this.strokeWidth === 0) || - !this.visible; - }, - - /** - * Renders an object on a specified context - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - render: function(ctx) { - // do not render if width/height are zeros or object is not visible - if (this.isNotVisible()) { - return; - } - if (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen()) { - return; - } - ctx.save(); - this._setupCompositeOperation(ctx); - this.drawSelectionBackground(ctx); - this.transform(ctx); - this._setOpacity(ctx); - this._setShadow(ctx, this); - if (this.transformMatrix) { - ctx.transform.apply(ctx, this.transformMatrix); - } - this.clipTo && fabric.util.clipContext(this, ctx); - if (this.shouldCache()) { - this.renderCache(); - this.drawCacheOnCanvas(ctx); - } - else { - this._removeCacheCanvas(); - this.dirty = false; - this.drawObject(ctx); - if (this.objectCaching && this.statefullCache) { - this.saveState({ propertySet: 'cacheProperties' }); - } - } - this.clipTo && ctx.restore(); - ctx.restore(); - }, - - renderCache: function(options) { - options = options || {}; - if (!this._cacheCanvas) { - this._createCacheCanvas(); - } - if (this.isCacheDirty()) { - this.statefullCache && this.saveState({ propertySet: 'cacheProperties' }); - this.drawObject(this._cacheContext, options.forClipping); - this.dirty = false; - } - }, - - /** - * Remove cacheCanvas and its dimensions from the objects - */ - _removeCacheCanvas: function() { - this._cacheCanvas = null; - this.cacheWidth = 0; - this.cacheHeight = 0; - }, - - /** - * return true if the object will draw a stroke - * Does not consider text styles. This is just a shortcut used at rendering time - * We want it to be an aproximation and be fast. - * wrote to avoid extra caching, it has to return true when stroke happens, - * can guess when it will not happen at 100% chance, does not matter if it misses - * some use case where the stroke is invisible. - * @since 3.0.0 - * @returns Boolean - */ - hasStroke: function() { - return this.stroke && this.stroke !== 'transparent' && this.strokeWidth !== 0; - }, - - /** - * return true if the object will draw a fill - * Does not consider text styles. This is just a shortcut used at rendering time - * We want it to be an aproximation and be fast. - * wrote to avoid extra caching, it has to return true when fill happens, - * can guess when it will not happen at 100% chance, does not matter if it misses - * some use case where the fill is invisible. - * @since 3.0.0 - * @returns Boolean - */ - hasFill: function() { - return this.fill && this.fill !== 'transparent'; - }, - - /** - * When set to `true`, force the object to have its own cache, even if it is inside a group - * it may be needed when your object behave in a particular way on the cache and always needs - * its own isolated canvas to render correctly. - * Created to be overridden - * since 1.7.12 - * @returns Boolean - */ - needsItsOwnCache: function() { - if (this.paintFirst === 'stroke' && - this.hasFill() && this.hasStroke() && typeof this.shadow === 'object') { - return true; - } - if (this.clipPath) { - return true; - } - return false; - }, - - /** - * Decide if the object should cache or not. Create its own cache level - * objectCaching is a global flag, wins over everything - * needsItsOwnCache should be used when the object drawing method requires - * a cache step. None of the fabric classes requires it. - * Generally you do not cache objects in groups because the group outside is cached. - * Read as: cache if is needed, or if the feature is enabled but we are not already caching. - * @return {Boolean} - */ - shouldCache: function() { - this.ownCaching = this.needsItsOwnCache() || ( - this.objectCaching && - (!this.group || !this.group.isOnACache()) - ); - return this.ownCaching; - }, - - /** - * Check if this object or a child object will cast a shadow - * used by Group.shouldCache to know if child has a shadow recursively - * @return {Boolean} - */ - willDrawShadow: function() { - return !!this.shadow && (this.shadow.offsetX !== 0 || this.shadow.offsetY !== 0); - }, - - /** - * Execute the drawing operation for an object clipPath - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - drawClipPathOnCache: function(ctx) { - var path = this.clipPath; - ctx.save(); - // DEBUG: uncomment this line, comment the following - // ctx.globalAlpha = 0.4 - if (path.inverted) { - ctx.globalCompositeOperation = 'destination-out'; - } - else { - ctx.globalCompositeOperation = 'destination-in'; - } - //ctx.scale(1 / 2, 1 / 2); - if (path.absolutePositioned) { - var m = fabric.util.invertTransform(this.calcTransformMatrix()); - ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]); - } - path.transform(ctx); - ctx.scale(1 / path.zoomX, 1 / path.zoomY); - ctx.drawImage(path._cacheCanvas, -path.cacheTranslationX, -path.cacheTranslationY); - ctx.restore(); - }, - - /** - * Execute the drawing operation for an object on a specified context - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - drawObject: function(ctx, forClipping) { - var originalFill = this.fill, originalStroke = this.stroke; - if (forClipping) { - this.fill = 'black'; - this.stroke = ''; - this._setClippingProperties(ctx); - } - else { - this._renderBackground(ctx); - this._setStrokeStyles(ctx, this); - this._setFillStyles(ctx, this); - } - this._render(ctx); - this._drawClipPath(ctx); - this.fill = originalFill; - this.stroke = originalStroke; - }, - - _drawClipPath: function(ctx) { - var path = this.clipPath; - if (!path) { return; } - // needed to setup a couple of variables - // path canvas gets overridden with this one. - // TODO find a better solution? - path.canvas = this.canvas; - path.shouldCache(); - path._transformDone = true; - path.renderCache({ forClipping: true }); - this.drawClipPathOnCache(ctx); - }, - - /** - * Paint the cached copy of the object on the target context. - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - drawCacheOnCanvas: function(ctx) { - ctx.scale(1 / this.zoomX, 1 / this.zoomY); - ctx.drawImage(this._cacheCanvas, -this.cacheTranslationX, -this.cacheTranslationY); - }, - - /** - * Check if cache is dirty - * @param {Boolean} skipCanvas skip canvas checks because this object is painted - * on parent canvas. - */ - isCacheDirty: function(skipCanvas) { - if (this.isNotVisible()) { - return false; - } - if (this._cacheCanvas && !skipCanvas && this._updateCacheCanvas()) { - // in this case the context is already cleared. - return true; - } - else { - if (this.dirty || - (this.clipPath && this.clipPath.absolutePositioned) || - (this.statefullCache && this.hasStateChanged('cacheProperties')) - ) { - if (this._cacheCanvas && !skipCanvas) { - var width = this.cacheWidth / this.zoomX; - var height = this.cacheHeight / this.zoomY; - this._cacheContext.clearRect(-width / 2, -height / 2, width, height); - } - return true; - } - } - return false; - }, - - /** - * Draws a background for the object big as its untransformed dimensions - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderBackground: function(ctx) { - if (!this.backgroundColor) { - return; - } - var dim = this._getNonTransformedDimensions(); - ctx.fillStyle = this.backgroundColor; - - ctx.fillRect( - -dim.x / 2, - -dim.y / 2, - dim.x, - dim.y - ); - // if there is background color no other shadows - // should be casted - this._removeShadow(ctx); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _setOpacity: function(ctx) { - if (this.group && !this.group._transformDone) { - ctx.globalAlpha = this.getObjectOpacity(); - } - else { - ctx.globalAlpha *= this.opacity; - } - }, - - _setStrokeStyles: function(ctx, decl) { - if (decl.stroke) { - ctx.lineWidth = decl.strokeWidth; - ctx.lineCap = decl.strokeLineCap; - ctx.lineDashOffset = decl.strokeDashOffset; - ctx.lineJoin = decl.strokeLineJoin; - ctx.miterLimit = decl.strokeMiterLimit; - ctx.strokeStyle = decl.stroke.toLive - ? decl.stroke.toLive(ctx, this) - : decl.stroke; - } - }, - - _setFillStyles: function(ctx, decl) { - if (decl.fill) { - ctx.fillStyle = decl.fill.toLive - ? decl.fill.toLive(ctx, this) - : decl.fill; - } - }, - - _setClippingProperties: function(ctx) { - ctx.globalAlpha = 1; - ctx.strokeStyle = 'transparent'; - ctx.fillStyle = '#000000'; - }, - - /** - * @private - * Sets line dash - * @param {CanvasRenderingContext2D} ctx Context to set the dash line on - * @param {Array} dashArray array representing dashes - * @param {Function} alternative function to call if browser does not support lineDash - */ - _setLineDash: function(ctx, dashArray, alternative) { - if (!dashArray || dashArray.length === 0) { - return; - } - // Spec requires the concatenation of two copies the dash list when the number of elements is odd - if (1 & dashArray.length) { - dashArray.push.apply(dashArray, dashArray); - } - if (supportsLineDash) { - ctx.setLineDash(dashArray); - } - else { - alternative && alternative(ctx); - } - }, - - /** - * Renders controls and borders for the object - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Object} [styleOverride] properties to override the object style - */ - _renderControls: function(ctx, styleOverride) { - var vpt = this.getViewportTransform(), - matrix = this.calcTransformMatrix(), - options, drawBorders, drawControls; - styleOverride = styleOverride || { }; - drawBorders = typeof styleOverride.hasBorders !== 'undefined' ? styleOverride.hasBorders : this.hasBorders; - drawControls = typeof styleOverride.hasControls !== 'undefined' ? styleOverride.hasControls : this.hasControls; - matrix = fabric.util.multiplyTransformMatrices(vpt, matrix); - options = fabric.util.qrDecompose(matrix); - ctx.save(); - ctx.translate(options.translateX, options.translateY); - ctx.lineWidth = 1 * this.borderScaleFactor; - if (!this.group) { - ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1; - } - if (styleOverride.forActiveSelection) { - ctx.rotate(degreesToRadians(options.angle)); - drawBorders && this.drawBordersInGroup(ctx, options, styleOverride); - } - else { - ctx.rotate(degreesToRadians(this.angle)); - drawBorders && this.drawBorders(ctx, styleOverride); - } - drawControls && this.drawControls(ctx, styleOverride); - ctx.restore(); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _setShadow: function(ctx) { - if (!this.shadow) { - return; - } - - var shadow = this.shadow, canvas = this.canvas, scaling, - multX = (canvas && canvas.viewportTransform[0]) || 1, - multY = (canvas && canvas.viewportTransform[3]) || 1; - if (shadow.nonScaling) { - scaling = { scaleX: 1, scaleY: 1 }; - } - else { - scaling = this.getObjectScaling(); - } - if (canvas && canvas._isRetinaScaling()) { - multX *= fabric.devicePixelRatio; - multY *= fabric.devicePixelRatio; - } - ctx.shadowColor = shadow.color; - ctx.shadowBlur = shadow.blur * fabric.browserShadowBlurConstant * - (multX + multY) * (scaling.scaleX + scaling.scaleY) / 4; - ctx.shadowOffsetX = shadow.offsetX * multX * scaling.scaleX; - ctx.shadowOffsetY = shadow.offsetY * multY * scaling.scaleY; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _removeShadow: function(ctx) { - if (!this.shadow) { - return; - } - - ctx.shadowColor = ''; - ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Object} filler fabric.Pattern or fabric.Gradient - * @return {Object} offset.offsetX offset for text rendering - * @return {Object} offset.offsetY offset for text rendering - */ - _applyPatternGradientTransform: function(ctx, filler) { - if (!filler || !filler.toLive) { - return { offsetX: 0, offsetY: 0 }; - } - var t = filler.gradientTransform || filler.patternTransform; - var offsetX = -this.width / 2 + filler.offsetX || 0, - offsetY = -this.height / 2 + filler.offsetY || 0; - - if (filler.gradientUnits === 'percentage') { - ctx.transform(this.width, 0, 0, this.height, offsetX, offsetY); - } - else { - ctx.transform(1, 0, 0, 1, offsetX, offsetY); - } - if (t) { - ctx.transform(t[0], t[1], t[2], t[3], t[4], t[5]); - } - return { offsetX: offsetX, offsetY: offsetY }; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderPaintInOrder: function(ctx) { - if (this.paintFirst === 'stroke') { - this._renderStroke(ctx); - this._renderFill(ctx); - } - else { - this._renderFill(ctx); - this._renderStroke(ctx); - } - }, - - /** - * @private - * function that actually render something on the context. - * empty here to allow Obects to work on tests to benchmark fabric functionalites - * not related to rendering - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function(/* ctx */) { - - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderFill: function(ctx) { - if (!this.fill) { - return; - } - - ctx.save(); - this._applyPatternGradientTransform(ctx, this.fill); - if (this.fillRule === 'evenodd') { - ctx.fill('evenodd'); - } - else { - ctx.fill(); - } - ctx.restore(); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderStroke: function(ctx) { - if (!this.stroke || this.strokeWidth === 0) { - return; - } - - if (this.shadow && !this.shadow.affectStroke) { - this._removeShadow(ctx); - } - - ctx.save(); - if (this.strokeUniform) { - ctx.scale(1 / this.scaleX, 1 / this.scaleY); - } - this._setLineDash(ctx, this.strokeDashArray, this._renderDashedStroke); - if (this.stroke.toLive && this.stroke.gradientUnits === 'percentage') { - // need to transform gradient in a pattern. - // this is a slow process. If you are hitting this codepath, and the object - // is not using caching, you should consider switching it on. - // we need a canvas as big as the current object caching canvas. - this._applyPatternForTransformedGradient(ctx, this.stroke); - } - else { - this._applyPatternGradientTransform(ctx, this.stroke); - } - ctx.stroke(); - ctx.restore(); - }, - - /** - * This function try to patch the missing gradientTransform on canvas gradients. - * transforming a context to transform the gradient, is going to transform the stroke too. - * we want to transform the gradient but not the stroke operation, so we create - * a transformed gradient on a pattern and then we use the pattern instead of the gradient. - * this method has drwabacks: is slow, is in low resolution, needs a patch for when the size - * is limited. - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {fabric.Gradient} filler a fabric gradient instance - */ - _applyPatternForTransformedGradient: function(ctx, filler) { - var dims = this._limitCacheSize(this._getCacheCanvasDimensions()), - pCanvas = fabric.util.createCanvasElement(), pCtx, retinaScaling = this.canvas.getRetinaScaling(), - width = dims.x / this.scaleX / retinaScaling, height = dims.y / this.scaleY / retinaScaling; - pCanvas.width = width; - pCanvas.height = height; - pCtx = pCanvas.getContext('2d'); - pCtx.beginPath(); pCtx.moveTo(0, 0); pCtx.lineTo(width, 0); pCtx.lineTo(width, height); - pCtx.lineTo(0, height); pCtx.closePath(); - pCtx.translate(width / 2, height / 2); - pCtx.scale( - dims.zoomX / this.scaleX / retinaScaling, - dims.zoomY / this.scaleY / retinaScaling - ); - this._applyPatternGradientTransform(pCtx, filler); - pCtx.fillStyle = filler.toLive(ctx); - pCtx.fill(); - ctx.translate(-this.width / 2 - this.strokeWidth / 2, -this.height / 2 - this.strokeWidth / 2); - ctx.scale( - retinaScaling * this.scaleX / dims.zoomX, - retinaScaling * this.scaleY / dims.zoomY - ); - ctx.strokeStyle = pCtx.createPattern(pCanvas, 'no-repeat'); - }, - - /** - * This function is an helper for svg import. it returns the center of the object in the svg - * untransformed coordinates - * @private - * @return {Object} center point from element coordinates - */ - _findCenterFromElement: function() { - return { x: this.left + this.width / 2, y: this.top + this.height / 2 }; - }, - - /** - * This function is an helper for svg import. it decompose the transformMatrix - * and assign properties to object. - * untransformed coordinates - * @private - * @chainable - */ - _assignTransformMatrixProps: function() { - if (this.transformMatrix) { - var options = fabric.util.qrDecompose(this.transformMatrix); - this.flipX = false; - this.flipY = false; - this.set('scaleX', options.scaleX); - this.set('scaleY', options.scaleY); - this.angle = options.angle; - this.skewX = options.skewX; - this.skewY = 0; - } - }, - - /** - * This function is an helper for svg import. it removes the transform matrix - * and set to object properties that fabricjs can handle - * @private - * @param {Object} preserveAspectRatioOptions - * @return {thisArg} - */ - _removeTransformMatrix: function(preserveAspectRatioOptions) { - var center = this._findCenterFromElement(); - if (this.transformMatrix) { - this._assignTransformMatrixProps(); - center = fabric.util.transformPoint(center, this.transformMatrix); - } - this.transformMatrix = null; - if (preserveAspectRatioOptions) { - this.scaleX *= preserveAspectRatioOptions.scaleX; - this.scaleY *= preserveAspectRatioOptions.scaleY; - this.cropX = preserveAspectRatioOptions.cropX; - this.cropY = preserveAspectRatioOptions.cropY; - center.x += preserveAspectRatioOptions.offsetLeft; - center.y += preserveAspectRatioOptions.offsetTop; - this.width = preserveAspectRatioOptions.width; - this.height = preserveAspectRatioOptions.height; - } - this.setPositionByOrigin(center, 'center', 'center'); - }, - - /** - * Clones an instance, using a callback method will work for every object. - * @param {Function} callback Callback is invoked with a clone as a first argument - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - */ - clone: function(callback, propertiesToInclude) { - var objectForm = this.toObject(propertiesToInclude); - if (this.constructor.fromObject) { - this.constructor.fromObject(objectForm, callback); - } - else { - fabric.Object._fromObject('Object', objectForm, callback); - } - }, - - /** - * Creates an instance of fabric.Image out of an object - * could make use of both toDataUrl or toCanvasElement. - * @param {Function} callback callback, invoked with an instance as a first argument - * @param {Object} [options] for clone as image, passed to toDataURL - * @param {String} [options.format=png] The format of the output image. Either "jpeg" or "png" - * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg. - * @param {Number} [options.multiplier=1] Multiplier to scale by - * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14 - * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14 - * @param {Number} [options.width] Cropping width. Introduced in v1.2.14 - * @param {Number} [options.height] Cropping height. Introduced in v1.2.14 - * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4 - * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4 - * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2 - * @return {fabric.Object} thisArg - */ - cloneAsImage: function(callback, options) { - var canvasEl = this.toCanvasElement(options); - if (callback) { - callback(new fabric.Image(canvasEl)); - } - return this; - }, - - /** - * Converts an object into a HTMLCanvas element - * @param {Object} options Options object - * @param {Number} [options.multiplier=1] Multiplier to scale by - * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14 - * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14 - * @param {Number} [options.width] Cropping width. Introduced in v1.2.14 - * @param {Number} [options.height] Cropping height. Introduced in v1.2.14 - * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4 - * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4 - * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2 - * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format - */ - toCanvasElement: function(options) { - options || (options = { }); - - var utils = fabric.util, origParams = utils.saveObjectTransform(this), - originalGroup = this.group, - originalShadow = this.shadow, abs = Math.abs, - multiplier = (options.multiplier || 1) * (options.enableRetinaScaling ? fabric.devicePixelRatio : 1); - delete this.group; - if (options.withoutTransform) { - utils.resetObjectTransform(this); - } - if (options.withoutShadow) { - this.shadow = null; - } - - var el = fabric.util.createCanvasElement(), - // skip canvas zoom and calculate with setCoords now. - boundingRect = this.getBoundingRect(true, true), - shadow = this.shadow, scaling, - shadowOffset = { x: 0, y: 0 }, shadowBlur; - - if (shadow) { - shadowBlur = shadow.blur; - if (shadow.nonScaling) { - scaling = { scaleX: 1, scaleY: 1 }; - } - else { - scaling = this.getObjectScaling(); - } - // consider non scaling shadow. - shadowOffset.x = 2 * Math.round(abs(shadow.offsetX) + shadowBlur) * (abs(scaling.scaleX)); - shadowOffset.y = 2 * Math.round(abs(shadow.offsetY) + shadowBlur) * (abs(scaling.scaleY)); - } - el.width = boundingRect.width + shadowOffset.x; - el.height = boundingRect.height + shadowOffset.y; - el.width += el.width % 2 ? 2 - el.width % 2 : 0; - el.height += el.height % 2 ? 2 - el.height % 2 : 0; - var canvas = new fabric.StaticCanvas(el, { - enableRetinaScaling: false, - renderOnAddRemove: false, - skipOffscreen: false, - }); - if (options.format === 'jpeg') { - canvas.backgroundColor = '#fff'; - } - this.setPositionByOrigin(new fabric.Point(canvas.width / 2, canvas.height / 2), 'center', 'center'); - - var originalCanvas = this.canvas; - canvas.add(this); - var canvasEl = canvas.toCanvasElement(multiplier || 1, options); - this.shadow = originalShadow; - this.canvas = originalCanvas; - if (originalGroup) { - this.group = originalGroup; - } - this.set(origParams).setCoords(); - // canvas.dispose will call image.dispose that will nullify the elements - // since this canvas is a simple element for the process, we remove references - // to objects in this way in order to avoid object trashing. - canvas._objects = []; - canvas.dispose(); - canvas = null; - - return canvasEl; - }, - - /** - * Converts an object into a data-url-like string - * @param {Object} options Options object - * @param {String} [options.format=png] The format of the output image. Either "jpeg" or "png" - * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg. - * @param {Number} [options.multiplier=1] Multiplier to scale by - * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14 - * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14 - * @param {Number} [options.width] Cropping width. Introduced in v1.2.14 - * @param {Number} [options.height] Cropping height. Introduced in v1.2.14 - * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4 - * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4 - * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2 - * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format - */ - toDataURL: function(options) { - options || (options = { }); - return fabric.util.toDataURL(this.toCanvasElement(options), options.format || 'png', options.quality || 1); - }, - - /** - * Returns true if specified type is identical to the type of an instance - * @param {String} type Type to check against - * @return {Boolean} - */ - isType: function(type) { - return this.type === type; - }, - - /** - * Returns complexity of an instance - * @return {Number} complexity of this instance (is 1 unless subclassed) - */ - complexity: function() { - return 1; - }, - - /** - * Returns a JSON representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} JSON - */ - toJSON: function(propertiesToInclude) { - // delegate, not alias - return this.toObject(propertiesToInclude); - }, - - /** - * Sets gradient (fill or stroke) of an object - * percentages for x1,x2,y1,y2,r1,r2 together with gradientUnits 'pixels', are not supported. - * Backwards incompatibility note: This method was named "setGradientFill" until v1.1.0 - * @param {String} property Property name 'stroke' or 'fill' - * @param {Object} [options] Options object - * @param {String} [options.type] Type of gradient 'radial' or 'linear' - * @param {Number} [options.x1=0] x-coordinate of start point - * @param {Number} [options.y1=0] y-coordinate of start point - * @param {Number} [options.x2=0] x-coordinate of end point - * @param {Number} [options.y2=0] y-coordinate of end point - * @param {Number} [options.r1=0] Radius of start point (only for radial gradients) - * @param {Number} [options.r2=0] Radius of end point (only for radial gradients) - * @param {Object} [options.colorStops] Color stops object eg. {0: 'ff0000', 1: '000000'} - * @param {Object} [options.gradientTransform] transformMatrix for gradient - * @return {fabric.Object} thisArg - * @chainable - * @deprecated since 3.4.0 - * @see {@link http://jsfiddle.net/fabricjs/58y8b/|jsFiddle demo} - * @example Set linear gradient - * object.setGradient('fill', { - * type: 'linear', - * x1: -object.width / 2, - * y1: 0, - * x2: object.width / 2, - * y2: 0, - * colorStops: { - * 0: 'red', - * 0.5: '#005555', - * 1: 'rgba(0,0,255,0.5)' - * } - * }); - * canvas.renderAll(); - * @example Set radial gradient - * object.setGradient('fill', { - * type: 'radial', - * x1: 0, - * y1: 0, - * x2: 0, - * y2: 0, - * r1: object.width / 2, - * r2: 10, - * colorStops: { - * 0: 'red', - * 0.5: '#005555', - * 1: 'rgba(0,0,255,0.5)' - * } - * }); - * canvas.renderAll(); - */ - setGradient: function(property, options) { - options || (options = { }); - - var gradient = { colorStops: [] }; - - gradient.type = options.type || (options.r1 || options.r2 ? 'radial' : 'linear'); - gradient.coords = { - x1: options.x1, - y1: options.y1, - x2: options.x2, - y2: options.y2 - }; - gradient.gradientUnits = options.gradientUnits || 'pixels'; - if (options.r1 || options.r2) { - gradient.coords.r1 = options.r1; - gradient.coords.r2 = options.r2; - } - - gradient.gradientTransform = options.gradientTransform; - fabric.Gradient.prototype.addColorStop.call(gradient, options.colorStops); - - return this.set(property, fabric.Gradient.forObject(this, gradient)); - }, - - /** - * Sets pattern fill of an object - * @param {Object} options Options object - * @param {(String|HTMLImageElement)} options.source Pattern source - * @param {String} [options.repeat=repeat] Repeat property of a pattern (one of repeat, repeat-x, repeat-y or no-repeat) - * @param {Number} [options.offsetX=0] Pattern horizontal offset from object's left/top corner - * @param {Number} [options.offsetY=0] Pattern vertical offset from object's left/top corner - * @param {Function} [callback] Callback to invoke when image set as a pattern - * @return {fabric.Object} thisArg - * @chainable - * @deprecated since 3.5.0 - * @see {@link http://jsfiddle.net/fabricjs/QT3pa/|jsFiddle demo} - * @example Set pattern - * object.setPatternFill({ - * source: 'http://fabricjs.com/assets/escheresque_ste.png', - * repeat: 'repeat' - * },canvas.renderAll.bind(canvas)); - */ - setPatternFill: function(options, callback) { - return this.set('fill', new fabric.Pattern(options, callback)); - }, - - /** - * Sets {@link fabric.Object#shadow|shadow} of an object - * @param {Object|String} [options] Options object or string (e.g. "2px 2px 10px rgba(0,0,0,0.2)") - * @param {String} [options.color=rgb(0,0,0)] Shadow color - * @param {Number} [options.blur=0] Shadow blur - * @param {Number} [options.offsetX=0] Shadow horizontal offset - * @param {Number} [options.offsetY=0] Shadow vertical offset - * @return {fabric.Object} thisArg - * @chainable - * @deprecated since 3.5.0 - * @see {@link http://jsfiddle.net/fabricjs/7gvJG/|jsFiddle demo} - * @example Set shadow with string notation - * object.setShadow('2px 2px 10px rgba(0,0,0,0.2)'); - * canvas.renderAll(); - * @example Set shadow with object notation - * object.setShadow({ - * color: 'red', - * blur: 10, - * offsetX: 20, - * offsetY: 20 - * }); - * canvas.renderAll(); - */ - setShadow: function(options) { - return this.set('shadow', options ? new fabric.Shadow(options) : null); - }, - - /** - * Sets "color" of an instance (alias of `set('fill', …)`) - * @param {String} color Color value - * @return {fabric.Object} thisArg - * @deprecated since 3.5.0 - * @chainable - */ - setColor: function(color) { - this.set('fill', color); - return this; - }, - - /** - * Sets "angle" of an instance with centered rotation - * @param {Number} angle Angle value (in degrees) - * @return {fabric.Object} thisArg - * @chainable - */ - rotate: function(angle) { - var shouldCenterOrigin = (this.originX !== 'center' || this.originY !== 'center') && this.centeredRotation; - - if (shouldCenterOrigin) { - this._setOriginToCenter(); - } - - this.set('angle', angle); - - if (shouldCenterOrigin) { - this._resetOrigin(); - } - - return this; - }, - - /** - * Centers object horizontally on canvas to which it was added last. - * You might need to call `setCoords` on an object after centering, to update controls area. - * @return {fabric.Object} thisArg - * @chainable - */ - centerH: function () { - this.canvas && this.canvas.centerObjectH(this); - return this; - }, - - /** - * Centers object horizontally on current viewport of canvas to which it was added last. - * You might need to call `setCoords` on an object after centering, to update controls area. - * @return {fabric.Object} thisArg - * @chainable - */ - viewportCenterH: function () { - this.canvas && this.canvas.viewportCenterObjectH(this); - return this; - }, - - /** - * Centers object vertically on canvas to which it was added last. - * You might need to call `setCoords` on an object after centering, to update controls area. - * @return {fabric.Object} thisArg - * @chainable - */ - centerV: function () { - this.canvas && this.canvas.centerObjectV(this); - return this; - }, - - /** - * Centers object vertically on current viewport of canvas to which it was added last. - * You might need to call `setCoords` on an object after centering, to update controls area. - * @return {fabric.Object} thisArg - * @chainable - */ - viewportCenterV: function () { - this.canvas && this.canvas.viewportCenterObjectV(this); - return this; - }, - - /** - * Centers object vertically and horizontally on canvas to which is was added last - * You might need to call `setCoords` on an object after centering, to update controls area. - * @return {fabric.Object} thisArg - * @chainable - */ - center: function () { - this.canvas && this.canvas.centerObject(this); - return this; - }, - - /** - * Centers object on current viewport of canvas to which it was added last. - * You might need to call `setCoords` on an object after centering, to update controls area. - * @return {fabric.Object} thisArg - * @chainable - */ - viewportCenter: function () { - this.canvas && this.canvas.viewportCenterObject(this); - return this; - }, - - /** - * Returns coordinates of a pointer relative to an object - * @param {Event} e Event to operate upon - * @param {Object} [pointer] Pointer to operate upon (instead of event) - * @return {Object} Coordinates of a pointer (x, y) - */ - getLocalPointer: function(e, pointer) { - pointer = pointer || this.canvas.getPointer(e); - var pClicked = new fabric.Point(pointer.x, pointer.y), - objectLeftTop = this._getLeftTopCoords(); - if (this.angle) { - pClicked = fabric.util.rotatePoint( - pClicked, objectLeftTop, degreesToRadians(-this.angle)); - } - return { - x: pClicked.x - objectLeftTop.x, - y: pClicked.y - objectLeftTop.y - }; - }, - - /** - * Sets canvas globalCompositeOperation for specific object - * custom composition operation for the particular object can be specified using globalCompositeOperation property - * @param {CanvasRenderingContext2D} ctx Rendering canvas context - */ - _setupCompositeOperation: function (ctx) { - if (this.globalCompositeOperation) { - ctx.globalCompositeOperation = this.globalCompositeOperation; - } - } - }); - - fabric.util.createAccessors && fabric.util.createAccessors(fabric.Object); - - extend(fabric.Object.prototype, fabric.Observable); - - /** - * Defines the number of fraction digits to use when serializing object values. - * You can use it to increase/decrease precision of such values like left, top, scaleX, scaleY, etc. - * @static - * @memberOf fabric.Object - * @constant - * @type Number - */ - fabric.Object.NUM_FRACTION_DIGITS = 2; - - fabric.Object._fromObject = function(className, object, callback, extraParam) { - var klass = fabric[className]; - object = clone(object, true); - fabric.util.enlivenPatterns([object.fill, object.stroke], function(patterns) { - if (typeof patterns[0] !== 'undefined') { - object.fill = patterns[0]; - } - if (typeof patterns[1] !== 'undefined') { - object.stroke = patterns[1]; - } - fabric.util.enlivenObjects([object.clipPath], function(enlivedProps) { - object.clipPath = enlivedProps[0]; - var instance = extraParam ? new klass(object[extraParam], object) : new klass(object); - callback && callback(instance); - }); - }); - }; - - /** - * Unique id used internally when creating SVG elements - * @static - * @memberOf fabric.Object - * @type Number - */ - fabric.Object.__uid = 0; -})(typeof exports !== 'undefined' ? exports : this); - - -(function() { - - var degreesToRadians = fabric.util.degreesToRadians, - originXOffset = { - left: -0.5, - center: 0, - right: 0.5 - }, - originYOffset = { - top: -0.5, - center: 0, - bottom: 0.5 - }; - - fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { - - /** - * Translates the coordinates from a set of origin to another (based on the object's dimensions) - * @param {fabric.Point} point The point which corresponds to the originX and originY params - * @param {String} fromOriginX Horizontal origin: 'left', 'center' or 'right' - * @param {String} fromOriginY Vertical origin: 'top', 'center' or 'bottom' - * @param {String} toOriginX Horizontal origin: 'left', 'center' or 'right' - * @param {String} toOriginY Vertical origin: 'top', 'center' or 'bottom' - * @return {fabric.Point} - */ - translateToGivenOrigin: function(point, fromOriginX, fromOriginY, toOriginX, toOriginY) { - var x = point.x, - y = point.y, - offsetX, offsetY, dim; - - if (typeof fromOriginX === 'string') { - fromOriginX = originXOffset[fromOriginX]; - } - else { - fromOriginX -= 0.5; - } - - if (typeof toOriginX === 'string') { - toOriginX = originXOffset[toOriginX]; - } - else { - toOriginX -= 0.5; - } - - offsetX = toOriginX - fromOriginX; - - if (typeof fromOriginY === 'string') { - fromOriginY = originYOffset[fromOriginY]; - } - else { - fromOriginY -= 0.5; - } - - if (typeof toOriginY === 'string') { - toOriginY = originYOffset[toOriginY]; - } - else { - toOriginY -= 0.5; - } - - offsetY = toOriginY - fromOriginY; - - if (offsetX || offsetY) { - dim = this._getTransformedDimensions(); - x = point.x + offsetX * dim.x; - y = point.y + offsetY * dim.y; - } - - return new fabric.Point(x, y); - }, - - /** - * Translates the coordinates from origin to center coordinates (based on the object's dimensions) - * @param {fabric.Point} point The point which corresponds to the originX and originY params - * @param {String} originX Horizontal origin: 'left', 'center' or 'right' - * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' - * @return {fabric.Point} - */ - translateToCenterPoint: function(point, originX, originY) { - var p = this.translateToGivenOrigin(point, originX, originY, 'center', 'center'); - if (this.angle) { - return fabric.util.rotatePoint(p, point, degreesToRadians(this.angle)); - } - return p; - }, - - /** - * Translates the coordinates from center to origin coordinates (based on the object's dimensions) - * @param {fabric.Point} center The point which corresponds to center of the object - * @param {String} originX Horizontal origin: 'left', 'center' or 'right' - * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' - * @return {fabric.Point} - */ - translateToOriginPoint: function(center, originX, originY) { - var p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY); - if (this.angle) { - return fabric.util.rotatePoint(p, center, degreesToRadians(this.angle)); - } - return p; - }, - - /** - * Returns the real center coordinates of the object - * @return {fabric.Point} - */ - getCenterPoint: function() { - var leftTop = new fabric.Point(this.left, this.top); - return this.translateToCenterPoint(leftTop, this.originX, this.originY); - }, - - /** - * Returns the coordinates of the object based on center coordinates - * @param {fabric.Point} point The point which corresponds to the originX and originY params - * @return {fabric.Point} - */ - // getOriginPoint: function(center) { - // return this.translateToOriginPoint(center, this.originX, this.originY); - // }, - - /** - * Returns the coordinates of the object as if it has a different origin - * @param {String} originX Horizontal origin: 'left', 'center' or 'right' - * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' - * @return {fabric.Point} - */ - getPointByOrigin: function(originX, originY) { - var center = this.getCenterPoint(); - return this.translateToOriginPoint(center, originX, originY); - }, - - /** - * Returns the point in local coordinates - * @param {fabric.Point} point The point relative to the global coordinate system - * @param {String} originX Horizontal origin: 'left', 'center' or 'right' - * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' - * @return {fabric.Point} - */ - toLocalPoint: function(point, originX, originY) { - var center = this.getCenterPoint(), - p, p2; - - if (typeof originX !== 'undefined' && typeof originY !== 'undefined' ) { - p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY); - } - else { - p = new fabric.Point(this.left, this.top); - } - - p2 = new fabric.Point(point.x, point.y); - if (this.angle) { - p2 = fabric.util.rotatePoint(p2, center, -degreesToRadians(this.angle)); - } - return p2.subtractEquals(p); - }, - - /** - * Returns the point in global coordinates - * @param {fabric.Point} The point relative to the local coordinate system - * @return {fabric.Point} - */ - // toGlobalPoint: function(point) { - // return fabric.util.rotatePoint(point, this.getCenterPoint(), degreesToRadians(this.angle)).addEquals(new fabric.Point(this.left, this.top)); - // }, - - /** - * Sets the position of the object taking into consideration the object's origin - * @param {fabric.Point} pos The new position of the object - * @param {String} originX Horizontal origin: 'left', 'center' or 'right' - * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' - * @return {void} - */ - setPositionByOrigin: function(pos, originX, originY) { - var center = this.translateToCenterPoint(pos, originX, originY), - position = this.translateToOriginPoint(center, this.originX, this.originY); - this.set('left', position.x); - this.set('top', position.y); - }, - - /** - * @param {String} to One of 'left', 'center', 'right' - */ - adjustPosition: function(to) { - var angle = degreesToRadians(this.angle), - hypotFull = this.getScaledWidth(), - xFull = fabric.util.cos(angle) * hypotFull, - yFull = fabric.util.sin(angle) * hypotFull, - offsetFrom, offsetTo; - - //TODO: this function does not consider mixed situation like top, center. - if (typeof this.originX === 'string') { - offsetFrom = originXOffset[this.originX]; - } - else { - offsetFrom = this.originX - 0.5; - } - if (typeof to === 'string') { - offsetTo = originXOffset[to]; - } - else { - offsetTo = to - 0.5; - } - this.left += xFull * (offsetTo - offsetFrom); - this.top += yFull * (offsetTo - offsetFrom); - this.setCoords(); - this.originX = to; - }, - - /** - * Sets the origin/position of the object to it's center point - * @private - * @return {void} - */ - _setOriginToCenter: function() { - this._originalOriginX = this.originX; - this._originalOriginY = this.originY; - - var center = this.getCenterPoint(); - - this.originX = 'center'; - this.originY = 'center'; - - this.left = center.x; - this.top = center.y; - }, - - /** - * Resets the origin/position of the object to it's original origin - * @private - * @return {void} - */ - _resetOrigin: function() { - var originPoint = this.translateToOriginPoint( - this.getCenterPoint(), - this._originalOriginX, - this._originalOriginY); - - this.originX = this._originalOriginX; - this.originY = this._originalOriginY; - - this.left = originPoint.x; - this.top = originPoint.y; - - this._originalOriginX = null; - this._originalOriginY = null; - }, - - /** - * @private - */ - _getLeftTopCoords: function() { - return this.translateToOriginPoint(this.getCenterPoint(), 'left', 'top'); - }, - }); - -})(); - - -(function() { - - function getCoords(coords) { - return [ - new fabric.Point(coords.tl.x, coords.tl.y), - new fabric.Point(coords.tr.x, coords.tr.y), - new fabric.Point(coords.br.x, coords.br.y), - new fabric.Point(coords.bl.x, coords.bl.y) - ]; - } - - var degreesToRadians = fabric.util.degreesToRadians, - multiplyMatrices = fabric.util.multiplyTransformMatrices, - transformPoint = fabric.util.transformPoint; - - fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { - - /** - * Describe object's corner position in canvas element coordinates. - * properties are tl,mt,tr,ml,mr,bl,mb,br,mtr for the main controls. - * each property is an object with x, y and corner. - * The `corner` property contains in a similar manner the 4 points of the - * interactive area of the corner. - * The coordinates depends from this properties: width, height, scaleX, scaleY - * skewX, skewY, angle, strokeWidth, viewportTransform, top, left, padding. - * The coordinates get updated with @method setCoords. - * You can calculate them without updating with @method calcCoords; - * @memberOf fabric.Object.prototype - */ - oCoords: null, - - /** - * Describe object's corner position in canvas object absolute coordinates - * properties are tl,tr,bl,br and describe the four main corner. - * each property is an object with x, y, instance of Fabric.Point. - * The coordinates depends from this properties: width, height, scaleX, scaleY - * skewX, skewY, angle, strokeWidth, top, left. - * Those coordinates are useful to understand where an object is. They get updated - * with oCoords but they do not need to be updated when zoom or panning change. - * The coordinates get updated with @method setCoords. - * You can calculate them without updating with @method calcCoords(true); - * @memberOf fabric.Object.prototype - */ - aCoords: null, - - /** - * storage for object transform matrix - */ - ownMatrixCache: null, - - /** - * storage for object full transform matrix - */ - matrixCache: null, - - /** - * return correct set of coordinates for intersection - */ - getCoords: function(absolute, calculate) { - if (!this.oCoords) { - this.setCoords(); - } - var coords = absolute ? this.aCoords : this.oCoords; - return getCoords(calculate ? this.calcCoords(absolute) : coords); - }, - - /** - * Checks if object intersects with an area formed by 2 points - * @param {Object} pointTL top-left point of area - * @param {Object} pointBR bottom-right point of area - * @param {Boolean} [absolute] use coordinates without viewportTransform - * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords - * @return {Boolean} true if object intersects with an area formed by 2 points - */ - intersectsWithRect: function(pointTL, pointBR, absolute, calculate) { - var coords = this.getCoords(absolute, calculate), - intersection = fabric.Intersection.intersectPolygonRectangle( - coords, - pointTL, - pointBR - ); - return intersection.status === 'Intersection'; - }, - - /** - * Checks if object intersects with another object - * @param {Object} other Object to test - * @param {Boolean} [absolute] use coordinates without viewportTransform - * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords - * @return {Boolean} true if object intersects with another object - */ - intersectsWithObject: function(other, absolute, calculate) { - var intersection = fabric.Intersection.intersectPolygonPolygon( - this.getCoords(absolute, calculate), - other.getCoords(absolute, calculate) - ); - - return intersection.status === 'Intersection' - || other.isContainedWithinObject(this, absolute, calculate) - || this.isContainedWithinObject(other, absolute, calculate); - }, - - /** - * Checks if object is fully contained within area of another object - * @param {Object} other Object to test - * @param {Boolean} [absolute] use coordinates without viewportTransform - * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords - * @return {Boolean} true if object is fully contained within area of another object - */ - isContainedWithinObject: function(other, absolute, calculate) { - var points = this.getCoords(absolute, calculate), - i = 0, lines = other._getImageLines( - calculate ? other.calcCoords(absolute) : absolute ? other.aCoords : other.oCoords - ); - for (; i < 4; i++) { - if (!other.containsPoint(points[i], lines)) { - return false; - } - } - return true; - }, - - /** - * Checks if object is fully contained within area formed by 2 points - * @param {Object} pointTL top-left point of area - * @param {Object} pointBR bottom-right point of area - * @param {Boolean} [absolute] use coordinates without viewportTransform - * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords - * @return {Boolean} true if object is fully contained within area formed by 2 points - */ - isContainedWithinRect: function(pointTL, pointBR, absolute, calculate) { - var boundingRect = this.getBoundingRect(absolute, calculate); - - return ( - boundingRect.left >= pointTL.x && - boundingRect.left + boundingRect.width <= pointBR.x && - boundingRect.top >= pointTL.y && - boundingRect.top + boundingRect.height <= pointBR.y - ); - }, - - /** - * Checks if point is inside the object - * @param {fabric.Point} point Point to check against - * @param {Object} [lines] object returned from @method _getImageLines - * @param {Boolean} [absolute] use coordinates without viewportTransform - * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords - * @return {Boolean} true if point is inside the object - */ - containsPoint: function(point, lines, absolute, calculate) { - var lines = lines || this._getImageLines( - calculate ? this.calcCoords(absolute) : absolute ? this.aCoords : this.oCoords - ), - xPoints = this._findCrossPoints(point, lines); - - // if xPoints is odd then point is inside the object - return (xPoints !== 0 && xPoints % 2 === 1); - }, - - /** - * Checks if object is contained within the canvas with current viewportTransform - * the check is done stopping at first point that appears on screen - * @param {Boolean} [calculate] use coordinates of current position instead of .aCoords - * @return {Boolean} true if object is fully or partially contained within canvas - */ - isOnScreen: function(calculate) { - if (!this.canvas) { - return false; - } - var pointTL = this.canvas.vptCoords.tl, pointBR = this.canvas.vptCoords.br; - var points = this.getCoords(true, calculate), point; - for (var i = 0; i < 4; i++) { - point = points[i]; - if (point.x <= pointBR.x && point.x >= pointTL.x && point.y <= pointBR.y && point.y >= pointTL.y) { - return true; - } - } - // no points on screen, check intersection with absolute coordinates - if (this.intersectsWithRect(pointTL, pointBR, true, calculate)) { - return true; - } - return this._containsCenterOfCanvas(pointTL, pointBR, calculate); - }, - - /** - * Checks if the object contains the midpoint between canvas extremities - * Does not make sense outside the context of isOnScreen and isPartiallyOnScreen - * @private - * @param {Fabric.Point} pointTL Top Left point - * @param {Fabric.Point} pointBR Top Right point - * @param {Boolean} calculate use coordinates of current position instead of .oCoords - * @return {Boolean} true if the object contains the point - */ - _containsCenterOfCanvas: function(pointTL, pointBR, calculate) { - // worst case scenario the object is so big that contains the screen - var centerPoint = { x: (pointTL.x + pointBR.x) / 2, y: (pointTL.y + pointBR.y) / 2 }; - if (this.containsPoint(centerPoint, null, true, calculate)) { - return true; - } - return false; - }, - - /** - * Checks if object is partially contained within the canvas with current viewportTransform - * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords - * @return {Boolean} true if object is partially contained within canvas - */ - isPartiallyOnScreen: function(calculate) { - if (!this.canvas) { - return false; - } - var pointTL = this.canvas.vptCoords.tl, pointBR = this.canvas.vptCoords.br; - if (this.intersectsWithRect(pointTL, pointBR, true, calculate)) { - return true; - } - return this._containsCenterOfCanvas(pointTL, pointBR, calculate); - }, - - /** - * Method that returns an object with the object edges in it, given the coordinates of the corners - * @private - * @param {Object} oCoords Coordinates of the object corners - */ - _getImageLines: function(oCoords) { - return { - topline: { - o: oCoords.tl, - d: oCoords.tr - }, - rightline: { - o: oCoords.tr, - d: oCoords.br - }, - bottomline: { - o: oCoords.br, - d: oCoords.bl - }, - leftline: { - o: oCoords.bl, - d: oCoords.tl - } - }; - }, - - /** - * Helper method to determine how many cross points are between the 4 object edges - * and the horizontal line determined by a point on canvas - * @private - * @param {fabric.Point} point Point to check - * @param {Object} lines Coordinates of the object being evaluated - */ - // remove yi, not used but left code here just in case. - _findCrossPoints: function(point, lines) { - var b1, b2, a1, a2, xi, // yi, - xcount = 0, - iLine; - - for (var lineKey in lines) { - iLine = lines[lineKey]; - // optimisation 1: line below point. no cross - if ((iLine.o.y < point.y) && (iLine.d.y < point.y)) { - continue; - } - // optimisation 2: line above point. no cross - if ((iLine.o.y >= point.y) && (iLine.d.y >= point.y)) { - continue; - } - // optimisation 3: vertical line case - if ((iLine.o.x === iLine.d.x) && (iLine.o.x >= point.x)) { - xi = iLine.o.x; - // yi = point.y; - } - // calculate the intersection point - else { - b1 = 0; - b2 = (iLine.d.y - iLine.o.y) / (iLine.d.x - iLine.o.x); - a1 = point.y - b1 * point.x; - a2 = iLine.o.y - b2 * iLine.o.x; - - xi = -(a1 - a2) / (b1 - b2); - // yi = a1 + b1 * xi; - } - // dont count xi < point.x cases - if (xi >= point.x) { - xcount += 1; - } - // optimisation 4: specific for square images - if (xcount === 2) { - break; - } - } - return xcount; - }, - - /** - * Returns coordinates of object's bounding rectangle (left, top, width, height) - * the box is intended as aligned to axis of canvas. - * @param {Boolean} [absolute] use coordinates without viewportTransform - * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords / .aCoords - * @return {Object} Object with left, top, width, height properties - */ - getBoundingRect: function(absolute, calculate) { - var coords = this.getCoords(absolute, calculate); - return fabric.util.makeBoundingBoxFromPoints(coords); - }, - - /** - * Returns width of an object's bounding box counting transformations - * before 2.0 it was named getWidth(); - * @return {Number} width value - */ - getScaledWidth: function() { - return this._getTransformedDimensions().x; - }, - - /** - * Returns height of an object bounding box counting transformations - * before 2.0 it was named getHeight(); - * @return {Number} height value - */ - getScaledHeight: function() { - return this._getTransformedDimensions().y; - }, - - /** - * Makes sure the scale is valid and modifies it if necessary - * @private - * @param {Number} value - * @return {Number} - */ - _constrainScale: function(value) { - if (Math.abs(value) < this.minScaleLimit) { - if (value < 0) { - return -this.minScaleLimit; - } - else { - return this.minScaleLimit; - } - } - else if (value === 0) { - return 0.0001; - } - return value; - }, - - /** - * Scales an object (equally by x and y) - * @param {Number} value Scale factor - * @return {fabric.Object} thisArg - * @chainable - */ - scale: function(value) { - this._set('scaleX', value); - this._set('scaleY', value); - return this.setCoords(); - }, - - /** - * Scales an object to a given width, with respect to bounding box (scaling by x/y equally) - * @param {Number} value New width value - * @param {Boolean} absolute ignore viewport - * @return {fabric.Object} thisArg - * @chainable - */ - scaleToWidth: function(value, absolute) { - // adjust to bounding rect factor so that rotated shapes would fit as well - var boundingRectFactor = this.getBoundingRect(absolute).width / this.getScaledWidth(); - return this.scale(value / this.width / boundingRectFactor); - }, - - /** - * Scales an object to a given height, with respect to bounding box (scaling by x/y equally) - * @param {Number} value New height value - * @param {Boolean} absolute ignore viewport - * @return {fabric.Object} thisArg - * @chainable - */ - scaleToHeight: function(value, absolute) { - // adjust to bounding rect factor so that rotated shapes would fit as well - var boundingRectFactor = this.getBoundingRect(absolute).height / this.getScaledHeight(); - return this.scale(value / this.height / boundingRectFactor); - }, - - /** - * Calculates and returns the .coords of an object. - * @return {Object} Object with tl, tr, br, bl .... - * @chainable - */ - calcCoords: function(absolute) { - var rotateMatrix = this._calcRotateMatrix(), - translateMatrix = this._calcTranslateMatrix(), - startMatrix = multiplyMatrices(translateMatrix, rotateMatrix), - vpt = this.getViewportTransform(), - finalMatrix = absolute ? startMatrix : multiplyMatrices(vpt, startMatrix), - dim = this._getTransformedDimensions(), - w = dim.x / 2, h = dim.y / 2, - tl = transformPoint({ x: -w, y: -h }, finalMatrix), - tr = transformPoint({ x: w, y: -h }, finalMatrix), - bl = transformPoint({ x: -w, y: h }, finalMatrix), - br = transformPoint({ x: w, y: h }, finalMatrix); - if (!absolute) { - var padding = this.padding, angle = degreesToRadians(this.angle), - cos = fabric.util.cos(angle), sin = fabric.util.sin(angle), - cosP = cos * padding, sinP = sin * padding, cosPSinP = cosP + sinP, - cosPMinusSinP = cosP - sinP; - if (padding) { - tl.x -= cosPMinusSinP; - tl.y -= cosPSinP; - tr.x += cosPSinP; - tr.y -= cosPMinusSinP; - bl.x -= cosPSinP; - bl.y += cosPMinusSinP; - br.x += cosPMinusSinP; - br.y += cosPSinP; - } - var ml = new fabric.Point((tl.x + bl.x) / 2, (tl.y + bl.y) / 2), - mt = new fabric.Point((tr.x + tl.x) / 2, (tr.y + tl.y) / 2), - mr = new fabric.Point((br.x + tr.x) / 2, (br.y + tr.y) / 2), - mb = new fabric.Point((br.x + bl.x) / 2, (br.y + bl.y) / 2), - mtr = new fabric.Point(mt.x + sin * this.rotatingPointOffset, mt.y - cos * this.rotatingPointOffset); - } - - // if (!absolute) { - // var canvas = this.canvas; - // setTimeout(function() { - // canvas.contextTop.clearRect(0, 0, 700, 700); - // canvas.contextTop.fillStyle = 'green'; - // canvas.contextTop.fillRect(mb.x, mb.y, 3, 3); - // canvas.contextTop.fillRect(bl.x, bl.y, 3, 3); - // canvas.contextTop.fillRect(br.x, br.y, 3, 3); - // canvas.contextTop.fillRect(tl.x, tl.y, 3, 3); - // canvas.contextTop.fillRect(tr.x, tr.y, 3, 3); - // canvas.contextTop.fillRect(ml.x, ml.y, 3, 3); - // canvas.contextTop.fillRect(mr.x, mr.y, 3, 3); - // canvas.contextTop.fillRect(mt.x, mt.y, 3, 3); - // canvas.contextTop.fillRect(mtr.x, mtr.y, 3, 3); - // }, 50); - // } - - var coords = { - // corners - tl: tl, tr: tr, br: br, bl: bl, - }; - if (!absolute) { - // middle - coords.ml = ml; - coords.mt = mt; - coords.mr = mr; - coords.mb = mb; - // rotating point - coords.mtr = mtr; - } - return coords; - }, - - /** - * Sets corner position coordinates based on current angle, width and height. - * See {@link https://github.com/kangax/fabric.js/wiki/When-to-call-setCoords|When-to-call-setCoords} - * @param {Boolean} [ignoreZoom] set oCoords with or without the viewport transform. - * @param {Boolean} [skipAbsolute] skip calculation of aCoords, useful in setViewportTransform - * @return {fabric.Object} thisArg - * @chainable - */ - setCoords: function(ignoreZoom, skipAbsolute) { - this.oCoords = this.calcCoords(ignoreZoom); - if (!skipAbsolute) { - this.aCoords = this.calcCoords(true); - } - - // set coordinates of the draggable boxes in the corners used to scale/rotate the image - ignoreZoom || (this._setCornerCoords && this._setCornerCoords()); - - return this; - }, - - /** - * calculate rotation matrix of an object - * @return {Array} rotation matrix for the object - */ - _calcRotateMatrix: function() { - return fabric.util.calcRotateMatrix(this); - }, - - /** - * calculate the translation matrix for an object transform - * @return {Array} rotation matrix for the object - */ - _calcTranslateMatrix: function() { - var center = this.getCenterPoint(); - return [1, 0, 0, 1, center.x, center.y]; - }, - - transformMatrixKey: function(skipGroup) { - var sep = '_', prefix = ''; - if (!skipGroup && this.group) { - prefix = this.group.transformMatrixKey(skipGroup) + sep; - }; - return prefix + this.top + sep + this.left + sep + this.scaleX + sep + this.scaleY + - sep + this.skewX + sep + this.skewY + sep + this.angle + sep + this.originX + sep + this.originY + - sep + this.width + sep + this.height + sep + this.strokeWidth + this.flipX + this.flipY; - }, - - /** - * calculate transform matrix that represents the current transformations from the - * object's properties. - * @param {Boolean} [skipGroup] return transform matrix for object not counting parent transformations - * @return {Array} transform matrix for the object - */ - calcTransformMatrix: function(skipGroup) { - if (skipGroup) { - return this.calcOwnMatrix(); - } - var key = this.transformMatrixKey(), cache = this.matrixCache || (this.matrixCache = {}); - if (cache.key === key) { - return cache.value; - } - var matrix = this.calcOwnMatrix(); - if (this.group) { - matrix = multiplyMatrices(this.group.calcTransformMatrix(), matrix); - } - cache.key = key; - cache.value = matrix; - return matrix; - }, - - /** - * calculate transform matrix that represents the current transformations from the - * object's properties, this matrix does not include the group transformation - * @return {Array} transform matrix for the object - */ - calcOwnMatrix: function() { - var key = this.transformMatrixKey(true), cache = this.ownMatrixCache || (this.ownMatrixCache = {}); - if (cache.key === key) { - return cache.value; - } - var tMatrix = this._calcTranslateMatrix(); - this.translateX = tMatrix[4]; - this.translateY = tMatrix[5]; - cache.key = key; - cache.value = fabric.util.composeMatrix(this); - return cache.value; - }, - - /* - * Calculate object dimensions from its properties - * @private - * @deprecated since 3.4.0, please use fabric.util._calcDimensionsTransformMatrix - * not including or including flipX, flipY to emulate the flipping boolean - * @return {Object} .x width dimension - * @return {Object} .y height dimension - */ - _calcDimensionsTransformMatrix: function(skewX, skewY, flipping) { - return fabric.util.calcDimensionsMatrix({ - skewX: skewX, - skewY: skewY, - scaleX: this.scaleX * (flipping && this.flipX ? -1 : 1), - scaleY: this.scaleY * (flipping && this.flipY ? -1 : 1) - }); - }, - - /* - * Calculate object dimensions from its properties - * @private - * @return {Object} .x width dimension - * @return {Object} .y height dimension - */ - _getNonTransformedDimensions: function() { - var strokeWidth = this.strokeWidth, - w = this.width + strokeWidth, - h = this.height + strokeWidth; - return { x: w, y: h }; - }, - - /* - * Calculate object bounding box dimensions from its properties scale, skew. - * @param {Number} skewX, a value to override current skewX - * @param {Number} skewY, a value to override current skewY - * @private - * @return {Object} .x width dimension - * @return {Object} .y height dimension - */ - _getTransformedDimensions: function(skewX, skewY) { - if (typeof skewX === 'undefined') { - skewX = this.skewX; - } - if (typeof skewY === 'undefined') { - skewY = this.skewY; - } - var dimensions = this._getNonTransformedDimensions(), dimX, dimY, - noSkew = skewX === 0 && skewY === 0; - - if (this.strokeUniform) { - dimX = this.width; - dimY = this.height; - } - else { - dimX = dimensions.x; - dimY = dimensions.y; - } - if (noSkew) { - return this._finalizeDimensions(dimX * this.scaleX, dimY * this.scaleY); - } - else { - dimX /= 2; - dimY /= 2; - } - var points = [ - { - x: -dimX, - y: -dimY - }, - { - x: dimX, - y: -dimY - }, - { - x: -dimX, - y: dimY - }, - { - x: dimX, - y: dimY - }], - transformMatrix = fabric.util.calcDimensionsMatrix({ - scaleX: this.scaleX, - scaleY: this.scaleY, - skewX: this.skewX, - skewY: this.skewY, - }), - bbox = fabric.util.makeBoundingBoxFromPoints(points, transformMatrix); - return this._finalizeDimensions(bbox.width, bbox.height); - }, - - /* - * Calculate object bounding box dimensions from its properties scale, skew. - * @param Number width width of the bbox - * @param Number height height of the bbox - * @private - * @return {Object} .x finalized width dimension - * @return {Object} .y finalized height dimension - */ - _finalizeDimensions: function(width, height) { - return this.strokeUniform ? - { x: width + this.strokeWidth, y: height + this.strokeWidth } - : - { x: width, y: height }; - }, - /* - * Calculate object dimensions for controls, including padding and canvas zoom. - * private - */ - _calculateCurrentDimensions: function() { - var vpt = this.getViewportTransform(), - dim = this._getTransformedDimensions(), - p = fabric.util.transformPoint(dim, vpt, true); - - return p.scalarAdd(2 * this.padding); - }, - }); -})(); - - -fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { - - /** - * Moves an object to the bottom of the stack of drawn objects - * @return {fabric.Object} thisArg - * @chainable - */ - sendToBack: function() { - if (this.group) { - fabric.StaticCanvas.prototype.sendToBack.call(this.group, this); - } - else { - this.canvas.sendToBack(this); - } - return this; - }, - - /** - * Moves an object to the top of the stack of drawn objects - * @return {fabric.Object} thisArg - * @chainable - */ - bringToFront: function() { - if (this.group) { - fabric.StaticCanvas.prototype.bringToFront.call(this.group, this); - } - else { - this.canvas.bringToFront(this); - } - return this; - }, - - /** - * Moves an object down in stack of drawn objects - * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object - * @return {fabric.Object} thisArg - * @chainable - */ - sendBackwards: function(intersecting) { - if (this.group) { - fabric.StaticCanvas.prototype.sendBackwards.call(this.group, this, intersecting); - } - else { - this.canvas.sendBackwards(this, intersecting); - } - return this; - }, - - /** - * Moves an object up in stack of drawn objects - * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object - * @return {fabric.Object} thisArg - * @chainable - */ - bringForward: function(intersecting) { - if (this.group) { - fabric.StaticCanvas.prototype.bringForward.call(this.group, this, intersecting); - } - else { - this.canvas.bringForward(this, intersecting); - } - return this; - }, - - /** - * Moves an object to specified level in stack of drawn objects - * @param {Number} index New position of object - * @return {fabric.Object} thisArg - * @chainable - */ - moveTo: function(index) { - if (this.group && this.group.type !== 'activeSelection') { - fabric.StaticCanvas.prototype.moveTo.call(this.group, this, index); - } - else { - this.canvas.moveTo(this, index); - } - return this; - } -}); - - -/* _TO_SVG_START_ */ -(function() { - function getSvgColorString(prop, value) { - if (!value) { - return prop + ': none; '; - } - else if (value.toLive) { - return prop + ': url(#SVGID_' + value.id + '); '; - } - else { - var color = new fabric.Color(value), - str = prop + ': ' + color.toRgb() + '; ', - opacity = color.getAlpha(); - if (opacity !== 1) { - //change the color in rgb + opacity - str += prop + '-opacity: ' + opacity.toString() + '; '; - } - return str; - } - } - - var toFixed = fabric.util.toFixed; - - fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { - /** - * Returns styles-string for svg-export - * @param {Boolean} skipShadow a boolean to skip shadow filter output - * @return {String} - */ - getSvgStyles: function(skipShadow) { - - var fillRule = this.fillRule ? this.fillRule : 'nonzero', - strokeWidth = this.strokeWidth ? this.strokeWidth : '0', - strokeDashArray = this.strokeDashArray ? this.strokeDashArray.join(' ') : 'none', - strokeDashOffset = this.strokeDashOffset ? this.strokeDashOffset : '0', - strokeLineCap = this.strokeLineCap ? this.strokeLineCap : 'butt', - strokeLineJoin = this.strokeLineJoin ? this.strokeLineJoin : 'miter', - strokeMiterLimit = this.strokeMiterLimit ? this.strokeMiterLimit : '4', - opacity = typeof this.opacity !== 'undefined' ? this.opacity : '1', - visibility = this.visible ? '' : ' visibility: hidden;', - filter = skipShadow ? '' : this.getSvgFilter(), - fill = getSvgColorString('fill', this.fill), - stroke = getSvgColorString('stroke', this.stroke); - - return [ - stroke, - 'stroke-width: ', strokeWidth, '; ', - 'stroke-dasharray: ', strokeDashArray, '; ', - 'stroke-linecap: ', strokeLineCap, '; ', - 'stroke-dashoffset: ', strokeDashOffset, '; ', - 'stroke-linejoin: ', strokeLineJoin, '; ', - 'stroke-miterlimit: ', strokeMiterLimit, '; ', - fill, - 'fill-rule: ', fillRule, '; ', - 'opacity: ', opacity, ';', - filter, - visibility - ].join(''); - }, - - /** - * Returns styles-string for svg-export - * @param {Object} style the object from which to retrieve style properties - * @param {Boolean} useWhiteSpace a boolean to include an additional attribute in the style. - * @return {String} - */ - getSvgSpanStyles: function(style, useWhiteSpace) { - var term = '; '; - var fontFamily = style.fontFamily ? - 'font-family: ' + (((style.fontFamily.indexOf('\'') === -1 && style.fontFamily.indexOf('"') === -1) ? - '\'' + style.fontFamily + '\'' : style.fontFamily)) + term : ''; - var strokeWidth = style.strokeWidth ? 'stroke-width: ' + style.strokeWidth + term : '', - fontFamily = fontFamily, - fontSize = style.fontSize ? 'font-size: ' + style.fontSize + 'px' + term : '', - fontStyle = style.fontStyle ? 'font-style: ' + style.fontStyle + term : '', - fontWeight = style.fontWeight ? 'font-weight: ' + style.fontWeight + term : '', - fill = style.fill ? getSvgColorString('fill', style.fill) : '', - stroke = style.stroke ? getSvgColorString('stroke', style.stroke) : '', - textDecoration = this.getSvgTextDecoration(style), - deltaY = style.deltaY ? 'baseline-shift: ' + (-style.deltaY) + '; ' : ''; - if (textDecoration) { - textDecoration = 'text-decoration: ' + textDecoration + term; - } - - return [ - stroke, - strokeWidth, - fontFamily, - fontSize, - fontStyle, - fontWeight, - textDecoration, - fill, - deltaY, - useWhiteSpace ? 'white-space: pre; ' : '' - ].join(''); - }, - - /** - * Returns text-decoration property for svg-export - * @param {Object} style the object from which to retrieve style properties - * @return {String} - */ - getSvgTextDecoration: function(style) { - if ('overline' in style || 'underline' in style || 'linethrough' in style) { - return (style.overline ? 'overline ' : '') + - (style.underline ? 'underline ' : '') + (style.linethrough ? 'line-through ' : ''); - } - return ''; - }, - - /** - * Returns filter for svg shadow - * @return {String} - */ - getSvgFilter: function() { - return this.shadow ? 'filter: url(#SVGID_' + this.shadow.id + ');' : ''; - }, - - /** - * Returns id attribute for svg output - * @return {String} - */ - getSvgCommons: function() { - return [ - this.id ? 'id="' + this.id + '" ' : '', - this.clipPath ? 'clip-path="url(#' + this.clipPath.clipPathId + ')" ' : '', - ].join(''); - }, - - /** - * Returns transform-string for svg-export - * @param {Boolean} use the full transform or the single object one. - * @return {String} - */ - getSvgTransform: function(full, additionalTransform) { - var transform = full ? this.calcTransformMatrix() : this.calcOwnMatrix(), - svgTransform = 'transform="' + fabric.util.matrixToSVG(transform); - return svgTransform + - (additionalTransform || '') + this.getSvgTransformMatrix() + '" '; - }, - - /** - * Returns transform-string for svg-export from the transform matrix of single elements - * @return {String} - */ - getSvgTransformMatrix: function() { - return this.transformMatrix ? ' ' + fabric.util.matrixToSVG(this.transformMatrix) : ''; - }, - - _setSVGBg: function(textBgRects) { - if (this.backgroundColor) { - var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS; - textBgRects.push( - '\t\t\n'); - } - }, - - /** - * Returns svg representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toSVG: function(reviver) { - return this._createBaseSVGMarkup(this._toSVG(reviver), { reviver: reviver }); - }, - - /** - * Returns svg clipPath representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toClipPathSVG: function(reviver) { - return '\t' + this._createBaseClipPathSVGMarkup(this._toSVG(reviver), { reviver: reviver }); - }, - - /** - * @private - */ - _createBaseClipPathSVGMarkup: function(objectMarkup, options) { - options = options || {}; - var reviver = options.reviver, - additionalTransform = options.additionalTransform || '', - commonPieces = [ - this.getSvgTransform(true, additionalTransform), - this.getSvgCommons(), - ].join(''), - // insert commons in the markup, style and svgCommons - index = objectMarkup.indexOf('COMMON_PARTS'); - objectMarkup[index] = commonPieces; - return reviver ? reviver(objectMarkup.join('')) : objectMarkup.join(''); - }, - - /** - * @private - */ - _createBaseSVGMarkup: function(objectMarkup, options) { - options = options || {}; - var noStyle = options.noStyle, - reviver = options.reviver, - styleInfo = noStyle ? '' : 'style="' + this.getSvgStyles() + '" ', - shadowInfo = options.withShadow ? 'style="' + this.getSvgFilter() + '" ' : '', - clipPath = this.clipPath, - vectorEffect = this.strokeUniform ? 'vector-effect="non-scaling-stroke" ' : '', - absoluteClipPath = clipPath && clipPath.absolutePositioned, - stroke = this.stroke, fill = this.fill, shadow = this.shadow, - commonPieces, markup = [], clipPathMarkup, - // insert commons in the markup, style and svgCommons - index = objectMarkup.indexOf('COMMON_PARTS'), - additionalTransform = options.additionalTransform; - if (clipPath) { - clipPath.clipPathId = 'CLIPPATH_' + fabric.Object.__uid++; - clipPathMarkup = '\n' + - clipPath.toClipPathSVG(reviver) + - '\n'; - } - if (absoluteClipPath) { - markup.push( - '\n' - ); - } - markup.push( - '\n' - ); - commonPieces = [ - styleInfo, - vectorEffect, - noStyle ? '' : this.addPaintOrder(), ' ', - additionalTransform ? 'transform="' + additionalTransform + '" ' : '', - ].join(''); - objectMarkup[index] = commonPieces; - if (fill && fill.toLive) { - markup.push(fill.toSVG(this)); - } - if (stroke && stroke.toLive) { - markup.push(stroke.toSVG(this)); - } - if (shadow) { - markup.push(shadow.toSVG(this)); - } - if (clipPath) { - markup.push(clipPathMarkup); - } - markup.push(objectMarkup.join('')); - markup.push('\n'); - absoluteClipPath && markup.push('\n'); - return reviver ? reviver(markup.join('')) : markup.join(''); - }, - - addPaintOrder: function() { - return this.paintFirst !== 'fill' ? ' paint-order="' + this.paintFirst + '" ' : ''; - } - }); -})(); -/* _TO_SVG_END_ */ - - -(function() { - - var extend = fabric.util.object.extend, - originalSet = 'stateProperties'; - - /* - Depends on `stateProperties` - */ - function saveProps(origin, destination, props) { - var tmpObj = { }, deep = true; - props.forEach(function(prop) { - tmpObj[prop] = origin[prop]; - }); - extend(origin[destination], tmpObj, deep); - } - - function _isEqual(origValue, currentValue, firstPass) { - if (origValue === currentValue) { - // if the objects are identical, return - return true; - } - else if (Array.isArray(origValue)) { - if (!Array.isArray(currentValue) || origValue.length !== currentValue.length) { - return false; - } - for (var i = 0, len = origValue.length; i < len; i++) { - if (!_isEqual(origValue[i], currentValue[i])) { - return false; - } - } - return true; - } - else if (origValue && typeof origValue === 'object') { - var keys = Object.keys(origValue), key; - if (!currentValue || - typeof currentValue !== 'object' || - (!firstPass && keys.length !== Object.keys(currentValue).length) - ) { - return false; - } - for (var i = 0, len = keys.length; i < len; i++) { - key = keys[i]; - // since clipPath is in the statefull cache list and the clipPath objects - // would be iterated as an object, this would lead to possible infinite recursion - if (key === 'canvas') { - continue; - } - if (!_isEqual(origValue[key], currentValue[key])) { - return false; - } - } - return true; - } - } - - - fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { - - /** - * Returns true if object state (one of its state properties) was changed - * @param {String} [propertySet] optional name for the set of property we want to save - * @return {Boolean} true if instance' state has changed since `{@link fabric.Object#saveState}` was called - */ - hasStateChanged: function(propertySet) { - propertySet = propertySet || originalSet; - var dashedPropertySet = '_' + propertySet; - if (Object.keys(this[dashedPropertySet]).length < this[propertySet].length) { - return true; - } - return !_isEqual(this[dashedPropertySet], this, true); - }, - - /** - * Saves state of an object - * @param {Object} [options] Object with additional `stateProperties` array to include when saving state - * @return {fabric.Object} thisArg - */ - saveState: function(options) { - var propertySet = options && options.propertySet || originalSet, - destination = '_' + propertySet; - if (!this[destination]) { - return this.setupState(options); - } - saveProps(this, destination, this[propertySet]); - if (options && options.stateProperties) { - saveProps(this, destination, options.stateProperties); - } - return this; - }, - - /** - * Setups state of an object - * @param {Object} [options] Object with additional `stateProperties` array to include when saving state - * @return {fabric.Object} thisArg - */ - setupState: function(options) { - options = options || { }; - var propertySet = options.propertySet || originalSet; - options.propertySet = propertySet; - this['_' + propertySet] = { }; - this.saveState(options); - return this; - } - }); -})(); - - -(function() { - - var degreesToRadians = fabric.util.degreesToRadians; - - fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { - - /** - * The object interactivity controls. - * @private - */ - _controlsVisibility: null, - - /** - * Determines which corner has been clicked - * @private - * @param {Object} pointer The pointer indicating the mouse position - * @return {String|Boolean} corner code (tl, tr, bl, br, etc.), or false if nothing is found - */ - _findTargetCorner: function(pointer) { - // objects in group, anykind, are not self modificable, - // must not return an hovered corner. - if (!this.hasControls || this.group || (!this.canvas || this.canvas._activeObject !== this)) { - return false; - } - - var ex = pointer.x, - ey = pointer.y, - xPoints, - lines; - this.__corner = 0; - for (var i in this.oCoords) { - - if (!this.isControlVisible(i)) { - continue; - } - - if (i === 'mtr' && !this.hasRotatingPoint) { - continue; - } - - if (this.get('lockUniScaling') && - (i === 'mt' || i === 'mr' || i === 'mb' || i === 'ml')) { - continue; - } - - lines = this._getImageLines(this.oCoords[i].corner); - - // debugging - - // canvas.contextTop.fillRect(lines.bottomline.d.x, lines.bottomline.d.y, 2, 2); - // canvas.contextTop.fillRect(lines.bottomline.o.x, lines.bottomline.o.y, 2, 2); - - // canvas.contextTop.fillRect(lines.leftline.d.x, lines.leftline.d.y, 2, 2); - // canvas.contextTop.fillRect(lines.leftline.o.x, lines.leftline.o.y, 2, 2); - - // canvas.contextTop.fillRect(lines.topline.d.x, lines.topline.d.y, 2, 2); - // canvas.contextTop.fillRect(lines.topline.o.x, lines.topline.o.y, 2, 2); - - // canvas.contextTop.fillRect(lines.rightline.d.x, lines.rightline.d.y, 2, 2); - // canvas.contextTop.fillRect(lines.rightline.o.x, lines.rightline.o.y, 2, 2); - - xPoints = this._findCrossPoints({ x: ex, y: ey }, lines); - if (xPoints !== 0 && xPoints % 2 === 1) { - this.__corner = i; - return i; - } - } - return false; - }, - - /** - * Sets the coordinates of the draggable boxes in the corners of - * the image used to scale/rotate it. - * @private - */ - _setCornerCoords: function() { - var coords = this.oCoords, - newTheta = degreesToRadians(45 - this.angle), - /* Math.sqrt(2 * Math.pow(this.cornerSize, 2)) / 2, */ - /* 0.707106 stands for sqrt(2)/2 */ - cornerHypotenuse = this.cornerSize * 0.707106, - cosHalfOffset = cornerHypotenuse * fabric.util.cos(newTheta), - sinHalfOffset = cornerHypotenuse * fabric.util.sin(newTheta), - x, y; - - for (var point in coords) { - x = coords[point].x; - y = coords[point].y; - coords[point].corner = { - tl: { - x: x - sinHalfOffset, - y: y - cosHalfOffset - }, - tr: { - x: x + cosHalfOffset, - y: y - sinHalfOffset - }, - bl: { - x: x - cosHalfOffset, - y: y + sinHalfOffset - }, - br: { - x: x + sinHalfOffset, - y: y + cosHalfOffset - } - }; - } - }, - - /** - * Draws a colored layer behind the object, inside its selection borders. - * Requires public options: padding, selectionBackgroundColor - * this function is called when the context is transformed - * has checks to be skipped when the object is on a staticCanvas - * @param {CanvasRenderingContext2D} ctx Context to draw on - * @return {fabric.Object} thisArg - * @chainable - */ - drawSelectionBackground: function(ctx) { - if (!this.selectionBackgroundColor || - (this.canvas && !this.canvas.interactive) || - (this.canvas && this.canvas._activeObject !== this) - ) { - return this; - } - ctx.save(); - var center = this.getCenterPoint(), wh = this._calculateCurrentDimensions(), - vpt = this.canvas.viewportTransform; - ctx.translate(center.x, center.y); - ctx.scale(1 / vpt[0], 1 / vpt[3]); - ctx.rotate(degreesToRadians(this.angle)); - ctx.fillStyle = this.selectionBackgroundColor; - ctx.fillRect(-wh.x / 2, -wh.y / 2, wh.x, wh.y); - ctx.restore(); - return this; - }, - - /** - * Draws borders of an object's bounding box. - * Requires public properties: width, height - * Requires public options: padding, borderColor - * @param {CanvasRenderingContext2D} ctx Context to draw on - * @param {Object} styleOverride object to override the object style - * @return {fabric.Object} thisArg - * @chainable - */ - drawBorders: function(ctx, styleOverride) { - styleOverride = styleOverride || {}; - var wh = this._calculateCurrentDimensions(), - strokeWidth = 1 / this.borderScaleFactor, - width = wh.x + strokeWidth, - height = wh.y + strokeWidth, - drawRotatingPoint = typeof styleOverride.hasRotatingPoint !== 'undefined' ? - styleOverride.hasRotatingPoint : this.hasRotatingPoint, - hasControls = typeof styleOverride.hasControls !== 'undefined' ? - styleOverride.hasControls : this.hasControls, - rotatingPointOffset = typeof styleOverride.rotatingPointOffset !== 'undefined' ? - styleOverride.rotatingPointOffset : this.rotatingPointOffset; - - ctx.save(); - ctx.strokeStyle = styleOverride.borderColor || this.borderColor; - this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray, null); - - ctx.strokeRect( - -width / 2, - -height / 2, - width, - height - ); - - if (drawRotatingPoint && this.isControlVisible('mtr') && hasControls) { - - var rotateHeight = -height / 2; - - ctx.beginPath(); - ctx.moveTo(0, rotateHeight); - ctx.lineTo(0, rotateHeight - rotatingPointOffset); - ctx.stroke(); - } - - ctx.restore(); - return this; - }, - - /** - * Draws borders of an object's bounding box when it is inside a group. - * Requires public properties: width, height - * Requires public options: padding, borderColor - * @param {CanvasRenderingContext2D} ctx Context to draw on - * @param {object} options object representing current object parameters - * @param {Object} styleOverride object to override the object style - * @return {fabric.Object} thisArg - * @chainable - */ - drawBordersInGroup: function(ctx, options, styleOverride) { - styleOverride = styleOverride || {}; - var p = this._getNonTransformedDimensions(), - matrix = fabric.util.composeMatrix({ - scaleX: options.scaleX, - scaleY: options.scaleY, - skewX: options.skewX - }), - wh = fabric.util.transformPoint(p, matrix), - strokeWidth = 1 / this.borderScaleFactor, - width = wh.x + strokeWidth, - height = wh.y + strokeWidth; - - ctx.save(); - this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray, null); - ctx.strokeStyle = styleOverride.borderColor || this.borderColor; - - ctx.strokeRect( - -width / 2, - -height / 2, - width, - height - ); - - ctx.restore(); - return this; - }, - - /** - * Draws corners of an object's bounding box. - * Requires public properties: width, height - * Requires public options: cornerSize, padding - * @param {CanvasRenderingContext2D} ctx Context to draw on - * @param {Object} styleOverride object to override the object style - * @return {fabric.Object} thisArg - * @chainable - */ - drawControls: function(ctx, styleOverride) { - styleOverride = styleOverride || {}; - var wh = this._calculateCurrentDimensions(), - width = wh.x, - height = wh.y, - scaleOffset = styleOverride.cornerSize || this.cornerSize, - left = -(width + scaleOffset) / 2, - top = -(height + scaleOffset) / 2, - transparentCorners = typeof styleOverride.transparentCorners !== 'undefined' ? - styleOverride.transparentCorners : this.transparentCorners, - hasRotatingPoint = typeof styleOverride.hasRotatingPoint !== 'undefined' ? - styleOverride.hasRotatingPoint : this.hasRotatingPoint, - methodName = transparentCorners ? 'stroke' : 'fill'; - - ctx.save(); - ctx.strokeStyle = ctx.fillStyle = styleOverride.cornerColor || this.cornerColor; - if (!this.transparentCorners) { - ctx.strokeStyle = styleOverride.cornerStrokeColor || this.cornerStrokeColor; - } - this._setLineDash(ctx, styleOverride.cornerDashArray || this.cornerDashArray, null); - - // top-left - this._drawControl('tl', ctx, methodName, - left, - top, styleOverride); - - // top-right - this._drawControl('tr', ctx, methodName, - left + width, - top, styleOverride); - - // bottom-left - this._drawControl('bl', ctx, methodName, - left, - top + height, styleOverride); - - // bottom-right - this._drawControl('br', ctx, methodName, - left + width, - top + height, styleOverride); - - if (!this.get('lockUniScaling')) { - - // middle-top - this._drawControl('mt', ctx, methodName, - left + width / 2, - top, styleOverride); - - // middle-bottom - this._drawControl('mb', ctx, methodName, - left + width / 2, - top + height, styleOverride); - - // middle-right - this._drawControl('mr', ctx, methodName, - left + width, - top + height / 2, styleOverride); - - // middle-left - this._drawControl('ml', ctx, methodName, - left, - top + height / 2, styleOverride); - } - - // middle-top-rotate - if (hasRotatingPoint) { - this._drawControl('mtr', ctx, methodName, - left + width / 2, - top - this.rotatingPointOffset, styleOverride); - } - - ctx.restore(); - - return this; - }, - - /** - * @private - */ - _drawControl: function(control, ctx, methodName, left, top, styleOverride) { - styleOverride = styleOverride || {}; - if (!this.isControlVisible(control)) { - return; - } - var size = this.cornerSize, stroke = !this.transparentCorners && this.cornerStrokeColor; - switch (styleOverride.cornerStyle || this.cornerStyle) { - case 'circle': - ctx.beginPath(); - ctx.arc(left + size / 2, top + size / 2, size / 2, 0, 2 * Math.PI, false); - ctx[methodName](); - if (stroke) { - ctx.stroke(); - } - break; - default: - this.transparentCorners || ctx.clearRect(left, top, size, size); - ctx[methodName + 'Rect'](left, top, size, size); - if (stroke) { - ctx.strokeRect(left, top, size, size); - } - } - }, - - /** - * Returns true if the specified control is visible, false otherwise. - * @param {String} controlName The name of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'. - * @returns {Boolean} true if the specified control is visible, false otherwise - */ - isControlVisible: function(controlName) { - return this._getControlsVisibility()[controlName]; - }, - - /** - * Sets the visibility of the specified control. - * @param {String} controlName The name of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'. - * @param {Boolean} visible true to set the specified control visible, false otherwise - * @return {fabric.Object} thisArg - * @chainable - */ - setControlVisible: function(controlName, visible) { - this._getControlsVisibility()[controlName] = visible; - return this; - }, - - /** - * Sets the visibility state of object controls. - * @param {Object} [options] Options object - * @param {Boolean} [options.bl] true to enable the bottom-left control, false to disable it - * @param {Boolean} [options.br] true to enable the bottom-right control, false to disable it - * @param {Boolean} [options.mb] true to enable the middle-bottom control, false to disable it - * @param {Boolean} [options.ml] true to enable the middle-left control, false to disable it - * @param {Boolean} [options.mr] true to enable the middle-right control, false to disable it - * @param {Boolean} [options.mt] true to enable the middle-top control, false to disable it - * @param {Boolean} [options.tl] true to enable the top-left control, false to disable it - * @param {Boolean} [options.tr] true to enable the top-right control, false to disable it - * @param {Boolean} [options.mtr] true to enable the middle-top-rotate control, false to disable it - * @return {fabric.Object} thisArg - * @chainable - */ - setControlsVisibility: function(options) { - options || (options = { }); - - for (var p in options) { - this.setControlVisible(p, options[p]); - } - return this; - }, - - /** - * Returns the instance of the control visibility set for this object. - * @private - * @returns {Object} - */ - _getControlsVisibility: function() { - if (!this._controlsVisibility) { - this._controlsVisibility = { - tl: true, - tr: true, - br: true, - bl: true, - ml: true, - mt: true, - mr: true, - mb: true, - mtr: true - }; - } - return this._controlsVisibility; - }, - - /** - * This callback function is called every time _discardActiveObject or _setActiveObject - * try to to deselect this object. If the function returns true, the process is cancelled - * @param {Object} [options] options sent from the upper functions - * @param {Event} [options.e] event if the process is generated by an event - */ - onDeselect: function() { - // implemented by sub-classes, as needed. - }, - - - /** - * This callback function is called every time _discardActiveObject or _setActiveObject - * try to to select this object. If the function returns true, the process is cancelled - * @param {Object} [options] options sent from the upper functions - * @param {Event} [options.e] event if the process is generated by an event - */ - onSelect: function() { - // implemented by sub-classes, as needed. - } - }); -})(); - - -fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ { - - /** - * Animation duration (in ms) for fx* methods - * @type Number - * @default - */ - FX_DURATION: 500, - - /** - * Centers object horizontally with animation. - * @param {fabric.Object} object Object to center - * @param {Object} [callbacks] Callbacks object with optional "onComplete" and/or "onChange" properties - * @param {Function} [callbacks.onComplete] Invoked on completion - * @param {Function} [callbacks.onChange] Invoked on every step of animation - * @return {fabric.Canvas} thisArg - * @chainable - */ - fxCenterObjectH: function (object, callbacks) { - callbacks = callbacks || { }; - - var empty = function() { }, - onComplete = callbacks.onComplete || empty, - onChange = callbacks.onChange || empty, - _this = this; - - fabric.util.animate({ - startValue: object.left, - endValue: this.getCenter().left, - duration: this.FX_DURATION, - onChange: function(value) { - object.set('left', value); - _this.requestRenderAll(); - onChange(); - }, - onComplete: function() { - object.setCoords(); - onComplete(); - } - }); - - return this; - }, - - /** - * Centers object vertically with animation. - * @param {fabric.Object} object Object to center - * @param {Object} [callbacks] Callbacks object with optional "onComplete" and/or "onChange" properties - * @param {Function} [callbacks.onComplete] Invoked on completion - * @param {Function} [callbacks.onChange] Invoked on every step of animation - * @return {fabric.Canvas} thisArg - * @chainable - */ - fxCenterObjectV: function (object, callbacks) { - callbacks = callbacks || { }; - - var empty = function() { }, - onComplete = callbacks.onComplete || empty, - onChange = callbacks.onChange || empty, - _this = this; - - fabric.util.animate({ - startValue: object.top, - endValue: this.getCenter().top, - duration: this.FX_DURATION, - onChange: function(value) { - object.set('top', value); - _this.requestRenderAll(); - onChange(); - }, - onComplete: function() { - object.setCoords(); - onComplete(); - } - }); - - return this; - }, - - /** - * Same as `fabric.Canvas#remove` but animated - * @param {fabric.Object} object Object to remove - * @param {Object} [callbacks] Callbacks object with optional "onComplete" and/or "onChange" properties - * @param {Function} [callbacks.onComplete] Invoked on completion - * @param {Function} [callbacks.onChange] Invoked on every step of animation - * @return {fabric.Canvas} thisArg - * @chainable - */ - fxRemove: function (object, callbacks) { - callbacks = callbacks || { }; - - var empty = function() { }, - onComplete = callbacks.onComplete || empty, - onChange = callbacks.onChange || empty, - _this = this; - - fabric.util.animate({ - startValue: object.opacity, - endValue: 0, - duration: this.FX_DURATION, - onChange: function(value) { - object.set('opacity', value); - _this.requestRenderAll(); - onChange(); - }, - onComplete: function () { - _this.remove(object); - onComplete(); - } - }); - - return this; - } -}); - -fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { - /** - * Animates object's properties - * @param {String|Object} property Property to animate (if string) or properties to animate (if object) - * @param {Number|Object} value Value to animate property to (if string was given first) or options object - * @return {fabric.Object} thisArg - * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#animation} - * @chainable - * - * As object — multiple properties - * - * object.animate({ left: ..., top: ... }); - * object.animate({ left: ..., top: ... }, { duration: ... }); - * - * As string — one property - * - * object.animate('left', ...); - * object.animate('left', { duration: ... }); - * - */ - animate: function() { - if (arguments[0] && typeof arguments[0] === 'object') { - var propsToAnimate = [], prop, skipCallbacks; - for (prop in arguments[0]) { - propsToAnimate.push(prop); - } - for (var i = 0, len = propsToAnimate.length; i < len; i++) { - prop = propsToAnimate[i]; - skipCallbacks = i !== len - 1; - this._animate(prop, arguments[0][prop], arguments[1], skipCallbacks); - } - } - else { - this._animate.apply(this, arguments); - } - return this; - }, - - /** - * @private - * @param {String} property Property to animate - * @param {String} to Value to animate to - * @param {Object} [options] Options object - * @param {Boolean} [skipCallbacks] When true, callbacks like onchange and oncomplete are not invoked - */ - _animate: function(property, to, options, skipCallbacks) { - var _this = this, propPair; - - to = to.toString(); - - if (!options) { - options = { }; - } - else { - options = fabric.util.object.clone(options); - } - - if (~property.indexOf('.')) { - propPair = property.split('.'); - } - - var currentValue = propPair - ? this.get(propPair[0])[propPair[1]] - : this.get(property); - - if (!('from' in options)) { - options.from = currentValue; - } - - if (~to.indexOf('=')) { - to = currentValue + parseFloat(to.replace('=', '')); - } - else { - to = parseFloat(to); - } - - fabric.util.animate({ - startValue: options.from, - endValue: to, - byValue: options.by, - easing: options.easing, - duration: options.duration, - abort: options.abort && function() { - return options.abort.call(_this); - }, - onChange: function(value, valueProgress, timeProgress) { - if (propPair) { - _this[propPair[0]][propPair[1]] = value; - } - else { - _this.set(property, value); - } - if (skipCallbacks) { - return; - } - options.onChange && options.onChange(value, valueProgress, timeProgress); - }, - onComplete: function(value, valueProgress, timeProgress) { - if (skipCallbacks) { - return; - } - - _this.setCoords(); - options.onComplete && options.onComplete(value, valueProgress, timeProgress); - } - }); - } -}); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend, - clone = fabric.util.object.clone, - coordProps = { x1: 1, x2: 1, y1: 1, y2: 1 }, - supportsLineDash = fabric.StaticCanvas.supports('setLineDash'); - - if (fabric.Line) { - fabric.warn('fabric.Line is already defined'); - return; - } - - /** - * Line class - * @class fabric.Line - * @extends fabric.Object - * @see {@link fabric.Line#initialize} for constructor definition - */ - fabric.Line = fabric.util.createClass(fabric.Object, /** @lends fabric.Line.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'line', - - /** - * x value or first line edge - * @type Number - * @default - */ - x1: 0, - - /** - * y value or first line edge - * @type Number - * @default - */ - y1: 0, - - /** - * x value or second line edge - * @type Number - * @default - */ - x2: 0, - - /** - * y value or second line edge - * @type Number - * @default - */ - y2: 0, - - cacheProperties: fabric.Object.prototype.cacheProperties.concat('x1', 'x2', 'y1', 'y2'), - - /** - * Constructor - * @param {Array} [points] Array of points - * @param {Object} [options] Options object - * @return {fabric.Line} thisArg - */ - initialize: function(points, options) { - if (!points) { - points = [0, 0, 0, 0]; - } - - this.callSuper('initialize', options); - - this.set('x1', points[0]); - this.set('y1', points[1]); - this.set('x2', points[2]); - this.set('y2', points[3]); - - this._setWidthHeight(options); - }, - - /** - * @private - * @param {Object} [options] Options - */ - _setWidthHeight: function(options) { - options || (options = { }); - - this.width = Math.abs(this.x2 - this.x1); - this.height = Math.abs(this.y2 - this.y1); - - this.left = 'left' in options - ? options.left - : this._getLeftToOriginX(); - - this.top = 'top' in options - ? options.top - : this._getTopToOriginY(); - }, - - /** - * @private - * @param {String} key - * @param {*} value - */ - _set: function(key, value) { - this.callSuper('_set', key, value); - if (typeof coordProps[key] !== 'undefined') { - this._setWidthHeight(); - } - return this; - }, - - /** - * @private - * @return {Number} leftToOriginX Distance from left edge of canvas to originX of Line. - */ - _getLeftToOriginX: makeEdgeToOriginGetter( - { // property names - origin: 'originX', - axis1: 'x1', - axis2: 'x2', - dimension: 'width' - }, - { // possible values of origin - nearest: 'left', - center: 'center', - farthest: 'right' - } - ), - - /** - * @private - * @return {Number} topToOriginY Distance from top edge of canvas to originY of Line. - */ - _getTopToOriginY: makeEdgeToOriginGetter( - { // property names - origin: 'originY', - axis1: 'y1', - axis2: 'y2', - dimension: 'height' - }, - { // possible values of origin - nearest: 'top', - center: 'center', - farthest: 'bottom' - } - ), - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function(ctx) { - ctx.beginPath(); - - if (!this.strokeDashArray || this.strokeDashArray && supportsLineDash) { - // move from center (of virtual box) to its left/top corner - // we can't assume x1, y1 is top left and x2, y2 is bottom right - var p = this.calcLinePoints(); - ctx.moveTo(p.x1, p.y1); - ctx.lineTo(p.x2, p.y2); - } - - ctx.lineWidth = this.strokeWidth; - - // TODO: test this - // make sure setting "fill" changes color of a line - // (by copying fillStyle to strokeStyle, since line is stroked, not filled) - var origStrokeStyle = ctx.strokeStyle; - ctx.strokeStyle = this.stroke || ctx.fillStyle; - this.stroke && this._renderStroke(ctx); - ctx.strokeStyle = origStrokeStyle; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderDashedStroke: function(ctx) { - var p = this.calcLinePoints(); - - ctx.beginPath(); - fabric.util.drawDashedLine(ctx, p.x1, p.y1, p.x2, p.y2, this.strokeDashArray); - ctx.closePath(); - }, - - /** - * This function is an helper for svg import. it returns the center of the object in the svg - * untransformed coordinates - * @private - * @return {Object} center point from element coordinates - */ - _findCenterFromElement: function() { - return { - x: (this.x1 + this.x2) / 2, - y: (this.y1 + this.y2) / 2, - }; - }, - - /** - * Returns object representation of an instance - * @methd toObject - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function(propertiesToInclude) { - return extend(this.callSuper('toObject', propertiesToInclude), this.calcLinePoints()); - }, - - /* - * Calculate object dimensions from its properties - * @private - */ - _getNonTransformedDimensions: function() { - var dim = this.callSuper('_getNonTransformedDimensions'); - if (this.strokeLineCap === 'butt') { - if (this.width === 0) { - dim.y -= this.strokeWidth; - } - if (this.height === 0) { - dim.x -= this.strokeWidth; - } - } - return dim; - }, - - /** - * Recalculates line points given width and height - * @private - */ - calcLinePoints: function() { - var xMult = this.x1 <= this.x2 ? -1 : 1, - yMult = this.y1 <= this.y2 ? -1 : 1, - x1 = (xMult * this.width * 0.5), - y1 = (yMult * this.height * 0.5), - x2 = (xMult * this.width * -0.5), - y2 = (yMult * this.height * -0.5); - - return { - x1: x1, - x2: x2, - y1: y1, - y2: y2 - }; - }, - - /* _TO_SVG_START_ */ - /** - * Returns svg representation of an instance - * @return {Array} an array of strings with the specific svg representation - * of the instance - */ - _toSVG: function() { - var p = this.calcLinePoints(); - return [ - '\n' - ]; - }, - /* _TO_SVG_END_ */ - }); - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by {@link fabric.Line.fromElement}) - * @static - * @memberOf fabric.Line - * @see http://www.w3.org/TR/SVG/shapes.html#LineElement - */ - fabric.Line.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x1 y1 x2 y2'.split(' ')); - - /** - * Returns fabric.Line instance from an SVG element - * @static - * @memberOf fabric.Line - * @param {SVGElement} element Element to parse - * @param {Object} [options] Options object - * @param {Function} [callback] callback function invoked after parsing - */ - fabric.Line.fromElement = function(element, callback, options) { - options = options || { }; - var parsedAttributes = fabric.parseAttributes(element, fabric.Line.ATTRIBUTE_NAMES), - points = [ - parsedAttributes.x1 || 0, - parsedAttributes.y1 || 0, - parsedAttributes.x2 || 0, - parsedAttributes.y2 || 0 - ]; - callback(new fabric.Line(points, extend(parsedAttributes, options))); - }; - /* _FROM_SVG_END_ */ - - /** - * Returns fabric.Line instance from an object representation - * @static - * @memberOf fabric.Line - * @param {Object} object Object to create an instance from - * @param {function} [callback] invoked with new instance as first argument - */ - fabric.Line.fromObject = function(object, callback) { - function _callback(instance) { - delete instance.points; - callback && callback(instance); - }; - var options = clone(object, true); - options.points = [object.x1, object.y1, object.x2, object.y2]; - fabric.Object._fromObject('Line', options, _callback, 'points'); - }; - - /** - * Produces a function that calculates distance from canvas edge to Line origin. - */ - function makeEdgeToOriginGetter(propertyNames, originValues) { - var origin = propertyNames.origin, - axis1 = propertyNames.axis1, - axis2 = propertyNames.axis2, - dimension = propertyNames.dimension, - nearest = originValues.nearest, - center = originValues.center, - farthest = originValues.farthest; - - return function() { - switch (this.get(origin)) { - case nearest: - return Math.min(this.get(axis1), this.get(axis2)); - case center: - return Math.min(this.get(axis1), this.get(axis2)) + (0.5 * this.get(dimension)); - case farthest: - return Math.max(this.get(axis1), this.get(axis2)); - } - }; - - } - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - pi = Math.PI; - - if (fabric.Circle) { - fabric.warn('fabric.Circle is already defined.'); - return; - } - - /** - * Circle class - * @class fabric.Circle - * @extends fabric.Object - * @see {@link fabric.Circle#initialize} for constructor definition - */ - fabric.Circle = fabric.util.createClass(fabric.Object, /** @lends fabric.Circle.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'circle', - - /** - * Radius of this circle - * @type Number - * @default - */ - radius: 0, - - /** - * Start angle of the circle, moving clockwise - * deprectated type, this should be in degree, this was an oversight. - * probably will change to degrees in next major version - * @type Number - * @default 0 - */ - startAngle: 0, - - /** - * End angle of the circle - * deprectated type, this should be in degree, this was an oversight. - * probably will change to degrees in next major version - * @type Number - * @default 2Pi - */ - endAngle: pi * 2, - - cacheProperties: fabric.Object.prototype.cacheProperties.concat('radius', 'startAngle', 'endAngle'), - - /** - * @private - * @param {String} key - * @param {*} value - * @return {fabric.Circle} thisArg - */ - _set: function(key, value) { - this.callSuper('_set', key, value); - - if (key === 'radius') { - this.setRadius(value); - } - - return this; - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function(propertiesToInclude) { - return this.callSuper('toObject', ['radius', 'startAngle', 'endAngle'].concat(propertiesToInclude)); - }, - - /* _TO_SVG_START_ */ - - /** - * Returns svg representation of an instance - * @return {Array} an array of strings with the specific svg representation - * of the instance - */ - _toSVG: function() { - var svgString, x = 0, y = 0, - angle = (this.endAngle - this.startAngle) % ( 2 * pi); - - if (angle === 0) { - svgString = [ - '\n' - ]; - } - else { - var startX = fabric.util.cos(this.startAngle) * this.radius, - startY = fabric.util.sin(this.startAngle) * this.radius, - endX = fabric.util.cos(this.endAngle) * this.radius, - endY = fabric.util.sin(this.endAngle) * this.radius, - largeFlag = angle > pi ? '1' : '0'; - svgString = [ - '\n' - ]; - } - return svgString; - }, - /* _TO_SVG_END_ */ - - /** - * @private - * @param {CanvasRenderingContext2D} ctx context to render on - */ - _render: function(ctx) { - ctx.beginPath(); - ctx.arc( - 0, - 0, - this.radius, - this.startAngle, - this.endAngle, false); - this._renderPaintInOrder(ctx); - }, - - /** - * Returns horizontal radius of an object (according to how an object is scaled) - * @return {Number} - */ - getRadiusX: function() { - return this.get('radius') * this.get('scaleX'); - }, - - /** - * Returns vertical radius of an object (according to how an object is scaled) - * @return {Number} - */ - getRadiusY: function() { - return this.get('radius') * this.get('scaleY'); - }, - - /** - * Sets radius of an object (and updates width accordingly) - * @return {fabric.Circle} thisArg - */ - setRadius: function(value) { - this.radius = value; - return this.set('width', value * 2).set('height', value * 2); - }, - }); - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by {@link fabric.Circle.fromElement}) - * @static - * @memberOf fabric.Circle - * @see: http://www.w3.org/TR/SVG/shapes.html#CircleElement - */ - fabric.Circle.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy r'.split(' ')); - - /** - * Returns {@link fabric.Circle} instance from an SVG element - * @static - * @memberOf fabric.Circle - * @param {SVGElement} element Element to parse - * @param {Function} [callback] Options callback invoked after parsing is finished - * @param {Object} [options] Options object - * @throws {Error} If value of `r` attribute is missing or invalid - */ - fabric.Circle.fromElement = function(element, callback) { - var parsedAttributes = fabric.parseAttributes(element, fabric.Circle.ATTRIBUTE_NAMES); - - if (!isValidRadius(parsedAttributes)) { - throw new Error('value of `r` attribute is required and can not be negative'); - } - - parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.radius; - parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.radius; - callback(new fabric.Circle(parsedAttributes)); - }; - - /** - * @private - */ - function isValidRadius(attributes) { - return (('radius' in attributes) && (attributes.radius >= 0)); - } - /* _FROM_SVG_END_ */ - - /** - * Returns {@link fabric.Circle} instance from an object representation - * @static - * @memberOf fabric.Circle - * @param {Object} object Object to create an instance from - * @param {function} [callback] invoked with new instance as first argument - * @return {Object} Instance of fabric.Circle - */ - fabric.Circle.fromObject = function(object, callback) { - return fabric.Object._fromObject('Circle', object, callback); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }); - - if (fabric.Triangle) { - fabric.warn('fabric.Triangle is already defined'); - return; - } - - /** - * Triangle class - * @class fabric.Triangle - * @extends fabric.Object - * @return {fabric.Triangle} thisArg - * @see {@link fabric.Triangle#initialize} for constructor definition - */ - fabric.Triangle = fabric.util.createClass(fabric.Object, /** @lends fabric.Triangle.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'triangle', - - /** - * Width is set to 100 to compensate the old initialize code that was setting it to 100 - * @type Number - * @default - */ - width: 100, - - /** - * Height is set to 100 to compensate the old initialize code that was setting it to 100 - * @type Number - * @default - */ - height: 100, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function(ctx) { - var widthBy2 = this.width / 2, - heightBy2 = this.height / 2; - - ctx.beginPath(); - ctx.moveTo(-widthBy2, heightBy2); - ctx.lineTo(0, -heightBy2); - ctx.lineTo(widthBy2, heightBy2); - ctx.closePath(); - - this._renderPaintInOrder(ctx); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderDashedStroke: function(ctx) { - var widthBy2 = this.width / 2, - heightBy2 = this.height / 2; - - ctx.beginPath(); - fabric.util.drawDashedLine(ctx, -widthBy2, heightBy2, 0, -heightBy2, this.strokeDashArray); - fabric.util.drawDashedLine(ctx, 0, -heightBy2, widthBy2, heightBy2, this.strokeDashArray); - fabric.util.drawDashedLine(ctx, widthBy2, heightBy2, -widthBy2, heightBy2, this.strokeDashArray); - ctx.closePath(); - }, - - /* _TO_SVG_START_ */ - /** - * Returns svg representation of an instance - * @return {Array} an array of strings with the specific svg representation - * of the instance - */ - _toSVG: function() { - var widthBy2 = this.width / 2, - heightBy2 = this.height / 2, - points = [ - -widthBy2 + ' ' + heightBy2, - '0 ' + -heightBy2, - widthBy2 + ' ' + heightBy2 - ].join(','); - return [ - '' - ]; - }, - /* _TO_SVG_END_ */ - }); - - /** - * Returns {@link fabric.Triangle} instance from an object representation - * @static - * @memberOf fabric.Triangle - * @param {Object} object Object to create an instance from - * @param {function} [callback] invoked with new instance as first argument - */ - fabric.Triangle.fromObject = function(object, callback) { - return fabric.Object._fromObject('Triangle', object, callback); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - piBy2 = Math.PI * 2; - - if (fabric.Ellipse) { - fabric.warn('fabric.Ellipse is already defined.'); - return; - } - - /** - * Ellipse class - * @class fabric.Ellipse - * @extends fabric.Object - * @return {fabric.Ellipse} thisArg - * @see {@link fabric.Ellipse#initialize} for constructor definition - */ - fabric.Ellipse = fabric.util.createClass(fabric.Object, /** @lends fabric.Ellipse.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'ellipse', - - /** - * Horizontal radius - * @type Number - * @default - */ - rx: 0, - - /** - * Vertical radius - * @type Number - * @default - */ - ry: 0, - - cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'), - - /** - * Constructor - * @param {Object} [options] Options object - * @return {fabric.Ellipse} thisArg - */ - initialize: function(options) { - this.callSuper('initialize', options); - this.set('rx', options && options.rx || 0); - this.set('ry', options && options.ry || 0); - }, - - /** - * @private - * @param {String} key - * @param {*} value - * @return {fabric.Ellipse} thisArg - */ - _set: function(key, value) { - this.callSuper('_set', key, value); - switch (key) { - - case 'rx': - this.rx = value; - this.set('width', value * 2); - break; - - case 'ry': - this.ry = value; - this.set('height', value * 2); - break; - - } - return this; - }, - - /** - * Returns horizontal radius of an object (according to how an object is scaled) - * @return {Number} - */ - getRx: function() { - return this.get('rx') * this.get('scaleX'); - }, - - /** - * Returns Vertical radius of an object (according to how an object is scaled) - * @return {Number} - */ - getRy: function() { - return this.get('ry') * this.get('scaleY'); - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function(propertiesToInclude) { - return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude)); - }, - - /* _TO_SVG_START_ */ - /** - * Returns svg representation of an instance - * @return {Array} an array of strings with the specific svg representation - * of the instance - */ - _toSVG: function() { - return [ - '\n' - ]; - }, - /* _TO_SVG_END_ */ - - /** - * @private - * @param {CanvasRenderingContext2D} ctx context to render on - */ - _render: function(ctx) { - ctx.beginPath(); - ctx.save(); - ctx.transform(1, 0, 0, this.ry / this.rx, 0, 0); - ctx.arc( - 0, - 0, - this.rx, - 0, - piBy2, - false); - ctx.restore(); - this._renderPaintInOrder(ctx); - }, - }); - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by {@link fabric.Ellipse.fromElement}) - * @static - * @memberOf fabric.Ellipse - * @see http://www.w3.org/TR/SVG/shapes.html#EllipseElement - */ - fabric.Ellipse.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy rx ry'.split(' ')); - - /** - * Returns {@link fabric.Ellipse} instance from an SVG element - * @static - * @memberOf fabric.Ellipse - * @param {SVGElement} element Element to parse - * @param {Function} [callback] Options callback invoked after parsing is finished - * @return {fabric.Ellipse} - */ - fabric.Ellipse.fromElement = function(element, callback) { - - var parsedAttributes = fabric.parseAttributes(element, fabric.Ellipse.ATTRIBUTE_NAMES); - - parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.rx; - parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.ry; - callback(new fabric.Ellipse(parsedAttributes)); - }; - /* _FROM_SVG_END_ */ - - /** - * Returns {@link fabric.Ellipse} instance from an object representation - * @static - * @memberOf fabric.Ellipse - * @param {Object} object Object to create an instance from - * @param {function} [callback] invoked with new instance as first argument - * @return {fabric.Ellipse} - */ - fabric.Ellipse.fromObject = function(object, callback) { - return fabric.Object._fromObject('Ellipse', object, callback); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend; - - if (fabric.Rect) { - fabric.warn('fabric.Rect is already defined'); - return; - } - - /** - * Rectangle class - * @class fabric.Rect - * @extends fabric.Object - * @return {fabric.Rect} thisArg - * @see {@link fabric.Rect#initialize} for constructor definition - */ - fabric.Rect = fabric.util.createClass(fabric.Object, /** @lends fabric.Rect.prototype */ { - - /** - * List of properties to consider when checking if state of an object is changed ({@link fabric.Object#hasStateChanged}) - * as well as for history (undo/redo) purposes - * @type Array - */ - stateProperties: fabric.Object.prototype.stateProperties.concat('rx', 'ry'), - - /** - * Type of an object - * @type String - * @default - */ - type: 'rect', - - /** - * Horizontal border radius - * @type Number - * @default - */ - rx: 0, - - /** - * Vertical border radius - * @type Number - * @default - */ - ry: 0, - - cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'), - - /** - * Constructor - * @param {Object} [options] Options object - * @return {Object} thisArg - */ - initialize: function(options) { - this.callSuper('initialize', options); - this._initRxRy(); - }, - - /** - * Initializes rx/ry attributes - * @private - */ - _initRxRy: function() { - if (this.rx && !this.ry) { - this.ry = this.rx; - } - else if (this.ry && !this.rx) { - this.rx = this.ry; - } - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function(ctx) { - - // 1x1 case (used in spray brush) optimization was removed because - // with caching and higher zoom level this makes more damage than help - - var rx = this.rx ? Math.min(this.rx, this.width / 2) : 0, - ry = this.ry ? Math.min(this.ry, this.height / 2) : 0, - w = this.width, - h = this.height, - x = -this.width / 2, - y = -this.height / 2, - isRounded = rx !== 0 || ry !== 0, - /* "magic number" for bezier approximations of arcs (http://itc.ktu.lt/itc354/Riskus354.pdf) */ - k = 1 - 0.5522847498; - ctx.beginPath(); - - ctx.moveTo(x + rx, y); - - ctx.lineTo(x + w - rx, y); - isRounded && ctx.bezierCurveTo(x + w - k * rx, y, x + w, y + k * ry, x + w, y + ry); - - ctx.lineTo(x + w, y + h - ry); - isRounded && ctx.bezierCurveTo(x + w, y + h - k * ry, x + w - k * rx, y + h, x + w - rx, y + h); - - ctx.lineTo(x + rx, y + h); - isRounded && ctx.bezierCurveTo(x + k * rx, y + h, x, y + h - k * ry, x, y + h - ry); - - ctx.lineTo(x, y + ry); - isRounded && ctx.bezierCurveTo(x, y + k * ry, x + k * rx, y, x + rx, y); - - ctx.closePath(); - - this._renderPaintInOrder(ctx); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderDashedStroke: function(ctx) { - var x = -this.width / 2, - y = -this.height / 2, - w = this.width, - h = this.height; - - ctx.beginPath(); - fabric.util.drawDashedLine(ctx, x, y, x + w, y, this.strokeDashArray); - fabric.util.drawDashedLine(ctx, x + w, y, x + w, y + h, this.strokeDashArray); - fabric.util.drawDashedLine(ctx, x + w, y + h, x, y + h, this.strokeDashArray); - fabric.util.drawDashedLine(ctx, x, y + h, x, y, this.strokeDashArray); - ctx.closePath(); - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function(propertiesToInclude) { - return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude)); - }, - - /* _TO_SVG_START_ */ - /** - * Returns svg representation of an instance - * @return {Array} an array of strings with the specific svg representation - * of the instance - */ - _toSVG: function() { - var x = -this.width / 2, y = -this.height / 2; - return [ - '\n' - ]; - }, - /* _TO_SVG_END_ */ - }); - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by `fabric.Rect.fromElement`) - * @static - * @memberOf fabric.Rect - * @see: http://www.w3.org/TR/SVG/shapes.html#RectElement - */ - fabric.Rect.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x y rx ry width height'.split(' ')); - - /** - * Returns {@link fabric.Rect} instance from an SVG element - * @static - * @memberOf fabric.Rect - * @param {SVGElement} element Element to parse - * @param {Function} callback callback function invoked after parsing - * @param {Object} [options] Options object - */ - fabric.Rect.fromElement = function(element, callback, options) { - if (!element) { - return callback(null); - } - options = options || { }; - - var parsedAttributes = fabric.parseAttributes(element, fabric.Rect.ATTRIBUTE_NAMES); - - parsedAttributes.left = parsedAttributes.left || 0; - parsedAttributes.top = parsedAttributes.top || 0; - parsedAttributes.height = parsedAttributes.height || 0; - parsedAttributes.width = parsedAttributes.width || 0; - var rect = new fabric.Rect(extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes)); - rect.visible = rect.visible && rect.width > 0 && rect.height > 0; - callback(rect); - }; - /* _FROM_SVG_END_ */ - - /** - * Returns {@link fabric.Rect} instance from an object representation - * @static - * @memberOf fabric.Rect - * @param {Object} object Object to create an instance from - * @param {Function} [callback] Callback to invoke when an fabric.Rect instance is created - */ - fabric.Rect.fromObject = function(object, callback) { - return fabric.Object._fromObject('Rect', object, callback); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend, - min = fabric.util.array.min, - max = fabric.util.array.max, - toFixed = fabric.util.toFixed; - - if (fabric.Polyline) { - fabric.warn('fabric.Polyline is already defined'); - return; - } - - /** - * Polyline class - * @class fabric.Polyline - * @extends fabric.Object - * @see {@link fabric.Polyline#initialize} for constructor definition - */ - fabric.Polyline = fabric.util.createClass(fabric.Object, /** @lends fabric.Polyline.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'polyline', - - /** - * Points array - * @type Array - * @default - */ - points: null, - - cacheProperties: fabric.Object.prototype.cacheProperties.concat('points'), - - /** - * Constructor - * @param {Array} points Array of points (where each point is an object with x and y) - * @param {Object} [options] Options object - * @return {fabric.Polyline} thisArg - * @example - * var poly = new fabric.Polyline([ - * { x: 10, y: 10 }, - * { x: 50, y: 30 }, - * { x: 40, y: 70 }, - * { x: 60, y: 50 }, - * { x: 100, y: 150 }, - * { x: 40, y: 100 } - * ], { - * stroke: 'red', - * left: 100, - * top: 100 - * }); - */ - initialize: function(points, options) { - options = options || {}; - this.points = points || []; - this.callSuper('initialize', options); - this._setPositionDimensions(options); - }, - - _setPositionDimensions: function(options) { - var calcDim = this._calcDimensions(options), correctLeftTop; - this.width = calcDim.width; - this.height = calcDim.height; - if (!options.fromSVG) { - correctLeftTop = this.translateToGivenOrigin( - { x: calcDim.left - this.strokeWidth / 2, y: calcDim.top - this.strokeWidth / 2 }, - 'left', - 'top', - this.originX, - this.originY - ); - } - if (typeof options.left === 'undefined') { - this.left = options.fromSVG ? calcDim.left : correctLeftTop.x; - } - if (typeof options.top === 'undefined') { - this.top = options.fromSVG ? calcDim.top : correctLeftTop.y; - } - this.pathOffset = { - x: calcDim.left + this.width / 2, - y: calcDim.top + this.height / 2 - }; - }, - - /** - * Calculate the polygon min and max point from points array, - * returning an object with left, top, widht, height to measure the - * polygon size - * @return {Object} object.left X coordinate of the polygon leftmost point - * @return {Object} object.top Y coordinate of the polygon topmost point - * @return {Object} object.width distance between X coordinates of the polygon leftmost and rightmost point - * @return {Object} object.height distance between Y coordinates of the polygon topmost and bottommost point - * @private - */ - _calcDimensions: function() { - - var points = this.points, - minX = min(points, 'x') || 0, - minY = min(points, 'y') || 0, - maxX = max(points, 'x') || 0, - maxY = max(points, 'y') || 0, - width = (maxX - minX), - height = (maxY - minY); - - return { - left: minX, - top: minY, - width: width, - height: height - }; - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} Object representation of an instance - */ - toObject: function(propertiesToInclude) { - return extend(this.callSuper('toObject', propertiesToInclude), { - points: this.points.concat() - }); - }, - - /* _TO_SVG_START_ */ - /** - * Returns svg representation of an instance - * @return {Array} an array of strings with the specific svg representation - * of the instance - */ - _toSVG: function() { - var points = [], diffX = this.pathOffset.x, diffY = this.pathOffset.y, - NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS; - - for (var i = 0, len = this.points.length; i < len; i++) { - points.push( - toFixed(this.points[i].x - diffX, NUM_FRACTION_DIGITS), ',', - toFixed(this.points[i].y - diffY, NUM_FRACTION_DIGITS), ' ' - ); - } - return [ - '<' + this.type + ' ', 'COMMON_PARTS', - 'points="', points.join(''), - '" />\n' - ]; - }, - /* _TO_SVG_END_ */ - - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - commonRender: function(ctx) { - var point, len = this.points.length, - x = this.pathOffset.x, - y = this.pathOffset.y; - - if (!len || isNaN(this.points[len - 1].y)) { - // do not draw if no points or odd points - // NaN comes from parseFloat of a empty string in parser - return false; - } - ctx.beginPath(); - ctx.moveTo(this.points[0].x - x, this.points[0].y - y); - for (var i = 0; i < len; i++) { - point = this.points[i]; - ctx.lineTo(point.x - x, point.y - y); - } - return true; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function(ctx) { - if (!this.commonRender(ctx)) { - return; - } - this._renderPaintInOrder(ctx); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderDashedStroke: function(ctx) { - var p1, p2; - - ctx.beginPath(); - for (var i = 0, len = this.points.length; i < len; i++) { - p1 = this.points[i]; - p2 = this.points[i + 1] || p1; - fabric.util.drawDashedLine(ctx, p1.x, p1.y, p2.x, p2.y, this.strokeDashArray); - } - }, - - /** - * Returns complexity of an instance - * @return {Number} complexity of this instance - */ - complexity: function() { - return this.get('points').length; - } - }); - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by {@link fabric.Polyline.fromElement}) - * @static - * @memberOf fabric.Polyline - * @see: http://www.w3.org/TR/SVG/shapes.html#PolylineElement - */ - fabric.Polyline.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(); - - /** - * Returns fabric.Polyline instance from an SVG element - * @static - * @memberOf fabric.Polyline - * @param {SVGElement} element Element to parser - * @param {Function} callback callback function invoked after parsing - * @param {Object} [options] Options object - */ - fabric.Polyline.fromElementGenerator = function(_class) { - return function(element, callback, options) { - if (!element) { - return callback(null); - } - options || (options = { }); - - var points = fabric.parsePointsAttribute(element.getAttribute('points')), - parsedAttributes = fabric.parseAttributes(element, fabric[_class].ATTRIBUTE_NAMES); - parsedAttributes.fromSVG = true; - callback(new fabric[_class](points, extend(parsedAttributes, options))); - }; - }; - - fabric.Polyline.fromElement = fabric.Polyline.fromElementGenerator('Polyline'); - - /* _FROM_SVG_END_ */ - - /** - * Returns fabric.Polyline instance from an object representation - * @static - * @memberOf fabric.Polyline - * @param {Object} object Object to create an instance from - * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created - */ - fabric.Polyline.fromObject = function(object, callback) { - return fabric.Object._fromObject('Polyline', object, callback, 'points'); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }); - - if (fabric.Polygon) { - fabric.warn('fabric.Polygon is already defined'); - return; - } - - /** - * Polygon class - * @class fabric.Polygon - * @extends fabric.Polyline - * @see {@link fabric.Polygon#initialize} for constructor definition - */ - fabric.Polygon = fabric.util.createClass(fabric.Polyline, /** @lends fabric.Polygon.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'polygon', - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function(ctx) { - if (!this.commonRender(ctx)) { - return; - } - ctx.closePath(); - this._renderPaintInOrder(ctx); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderDashedStroke: function(ctx) { - this.callSuper('_renderDashedStroke', ctx); - ctx.closePath(); - }, - }); - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by `fabric.Polygon.fromElement`) - * @static - * @memberOf fabric.Polygon - * @see: http://www.w3.org/TR/SVG/shapes.html#PolygonElement - */ - fabric.Polygon.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(); - - /** - * Returns {@link fabric.Polygon} instance from an SVG element - * @static - * @memberOf fabric.Polygon - * @param {SVGElement} element Element to parse - * @param {Function} callback callback function invoked after parsing - * @param {Object} [options] Options object - */ - fabric.Polygon.fromElement = fabric.Polyline.fromElementGenerator('Polygon'); - /* _FROM_SVG_END_ */ - - /** - * Returns fabric.Polygon instance from an object representation - * @static - * @memberOf fabric.Polygon - * @param {Object} object Object to create an instance from - * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created - */ - fabric.Polygon.fromObject = function(object, callback) { - return fabric.Object._fromObject('Polygon', object, callback, 'points'); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - min = fabric.util.array.min, - max = fabric.util.array.max, - extend = fabric.util.object.extend, - _toString = Object.prototype.toString, - drawArc = fabric.util.drawArc, - toFixed = fabric.util.toFixed, - commandLengths = { - m: 2, - l: 2, - h: 1, - v: 1, - c: 6, - s: 4, - q: 4, - t: 2, - a: 7 - }, - repeatedCommands = { - m: 'l', - M: 'L' - }; - - if (fabric.Path) { - fabric.warn('fabric.Path is already defined'); - return; - } - - /** - * Path class - * @class fabric.Path - * @extends fabric.Object - * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#path_and_pathgroup} - * @see {@link fabric.Path#initialize} for constructor definition - */ - fabric.Path = fabric.util.createClass(fabric.Object, /** @lends fabric.Path.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'path', - - /** - * Array of path points - * @type Array - * @default - */ - path: null, - - cacheProperties: fabric.Object.prototype.cacheProperties.concat('path', 'fillRule'), - - stateProperties: fabric.Object.prototype.stateProperties.concat('path'), - - /** - * Constructor - * @param {Array|String} path Path data (sequence of coordinates and corresponding "command" tokens) - * @param {Object} [options] Options object - * @return {fabric.Path} thisArg - */ - initialize: function(path, options) { - options = options || { }; - this.callSuper('initialize', options); - - if (!path) { - path = []; - } - - var fromArray = _toString.call(path) === '[object Array]'; - - this.path = fromArray - ? path - // one of commands (m,M,l,L,q,Q,c,C,etc.) followed by non-command characters (i.e. command values) - : path.match && path.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi); - - if (!this.path) { - return; - } - - if (!fromArray) { - this.path = this._parsePath(); - } - - fabric.Polyline.prototype._setPositionDimensions.call(this, options); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx context to render path on - */ - _renderPathCommands: function(ctx) { - var current, // current instruction - previous = null, - subpathStartX = 0, - subpathStartY = 0, - x = 0, // current x - y = 0, // current y - controlX = 0, // current control point x - controlY = 0, // current control point y - tempX, - tempY, - l = -this.pathOffset.x, - t = -this.pathOffset.y; - - ctx.beginPath(); - - for (var i = 0, len = this.path.length; i < len; ++i) { - - current = this.path[i]; - - switch (current[0]) { // first letter - - case 'l': // lineto, relative - x += current[1]; - y += current[2]; - ctx.lineTo(x + l, y + t); - break; - - case 'L': // lineto, absolute - x = current[1]; - y = current[2]; - ctx.lineTo(x + l, y + t); - break; - - case 'h': // horizontal lineto, relative - x += current[1]; - ctx.lineTo(x + l, y + t); - break; - - case 'H': // horizontal lineto, absolute - x = current[1]; - ctx.lineTo(x + l, y + t); - break; - - case 'v': // vertical lineto, relative - y += current[1]; - ctx.lineTo(x + l, y + t); - break; - - case 'V': // verical lineto, absolute - y = current[1]; - ctx.lineTo(x + l, y + t); - break; - - case 'm': // moveTo, relative - x += current[1]; - y += current[2]; - subpathStartX = x; - subpathStartY = y; - ctx.moveTo(x + l, y + t); - break; - - case 'M': // moveTo, absolute - x = current[1]; - y = current[2]; - subpathStartX = x; - subpathStartY = y; - ctx.moveTo(x + l, y + t); - break; - - case 'c': // bezierCurveTo, relative - tempX = x + current[5]; - tempY = y + current[6]; - controlX = x + current[3]; - controlY = y + current[4]; - ctx.bezierCurveTo( - x + current[1] + l, // x1 - y + current[2] + t, // y1 - controlX + l, // x2 - controlY + t, // y2 - tempX + l, - tempY + t - ); - x = tempX; - y = tempY; - break; - - case 'C': // bezierCurveTo, absolute - x = current[5]; - y = current[6]; - controlX = current[3]; - controlY = current[4]; - ctx.bezierCurveTo( - current[1] + l, - current[2] + t, - controlX + l, - controlY + t, - x + l, - y + t - ); - break; - - case 's': // shorthand cubic bezierCurveTo, relative - - // transform to absolute x,y - tempX = x + current[3]; - tempY = y + current[4]; - - if (previous[0].match(/[CcSs]/) === null) { - // If there is no previous command or if the previous command was not a C, c, S, or s, - // the control point is coincident with the current point - controlX = x; - controlY = y; - } - else { - // calculate reflection of previous control points - controlX = 2 * x - controlX; - controlY = 2 * y - controlY; - } - - ctx.bezierCurveTo( - controlX + l, - controlY + t, - x + current[1] + l, - y + current[2] + t, - tempX + l, - tempY + t - ); - // set control point to 2nd one of this command - // "... the first control point is assumed to be - // the reflection of the second control point on - // the previous command relative to the current point." - controlX = x + current[1]; - controlY = y + current[2]; - - x = tempX; - y = tempY; - break; - - case 'S': // shorthand cubic bezierCurveTo, absolute - tempX = current[3]; - tempY = current[4]; - if (previous[0].match(/[CcSs]/) === null) { - // If there is no previous command or if the previous command was not a C, c, S, or s, - // the control point is coincident with the current point - controlX = x; - controlY = y; - } - else { - // calculate reflection of previous control points - controlX = 2 * x - controlX; - controlY = 2 * y - controlY; - } - ctx.bezierCurveTo( - controlX + l, - controlY + t, - current[1] + l, - current[2] + t, - tempX + l, - tempY + t - ); - x = tempX; - y = tempY; - - // set control point to 2nd one of this command - // "... the first control point is assumed to be - // the reflection of the second control point on - // the previous command relative to the current point." - controlX = current[1]; - controlY = current[2]; - - break; - - case 'q': // quadraticCurveTo, relative - // transform to absolute x,y - tempX = x + current[3]; - tempY = y + current[4]; - - controlX = x + current[1]; - controlY = y + current[2]; - - ctx.quadraticCurveTo( - controlX + l, - controlY + t, - tempX + l, - tempY + t - ); - x = tempX; - y = tempY; - break; - - case 'Q': // quadraticCurveTo, absolute - tempX = current[3]; - tempY = current[4]; - - ctx.quadraticCurveTo( - current[1] + l, - current[2] + t, - tempX + l, - tempY + t - ); - x = tempX; - y = tempY; - controlX = current[1]; - controlY = current[2]; - break; - - case 't': // shorthand quadraticCurveTo, relative - - // transform to absolute x,y - tempX = x + current[1]; - tempY = y + current[2]; - - if (previous[0].match(/[QqTt]/) === null) { - // If there is no previous command or if the previous command was not a Q, q, T or t, - // assume the control point is coincident with the current point - controlX = x; - controlY = y; - } - else { - // calculate reflection of previous control point - controlX = 2 * x - controlX; - controlY = 2 * y - controlY; - } - - ctx.quadraticCurveTo( - controlX + l, - controlY + t, - tempX + l, - tempY + t - ); - x = tempX; - y = tempY; - - break; - - case 'T': - tempX = current[1]; - tempY = current[2]; - - if (previous[0].match(/[QqTt]/) === null) { - // If there is no previous command or if the previous command was not a Q, q, T or t, - // assume the control point is coincident with the current point - controlX = x; - controlY = y; - } - else { - // calculate reflection of previous control point - controlX = 2 * x - controlX; - controlY = 2 * y - controlY; - } - ctx.quadraticCurveTo( - controlX + l, - controlY + t, - tempX + l, - tempY + t - ); - x = tempX; - y = tempY; - break; - - case 'a': - // TODO: optimize this - drawArc(ctx, x + l, y + t, [ - current[1], - current[2], - current[3], - current[4], - current[5], - current[6] + x + l, - current[7] + y + t - ]); - x += current[6]; - y += current[7]; - break; - - case 'A': - // TODO: optimize this - drawArc(ctx, x + l, y + t, [ - current[1], - current[2], - current[3], - current[4], - current[5], - current[6] + l, - current[7] + t - ]); - x = current[6]; - y = current[7]; - break; - - case 'z': - case 'Z': - x = subpathStartX; - y = subpathStartY; - ctx.closePath(); - break; - } - previous = current; - } - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx context to render path on - */ - _render: function(ctx) { - this._renderPathCommands(ctx); - this._renderPaintInOrder(ctx); - }, - - /** - * Returns string representation of an instance - * @return {String} string representation of an instance - */ - toString: function() { - return '#'; - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function(propertiesToInclude) { - return extend(this.callSuper('toObject', propertiesToInclude), { - path: this.path.map(function(item) { return item.slice(); }), - }); - }, - - /** - * Returns dataless object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toDatalessObject: function(propertiesToInclude) { - var o = this.toObject(['sourcePath'].concat(propertiesToInclude)); - if (o.sourcePath) { - delete o.path; - } - return o; - }, - - /* _TO_SVG_START_ */ - /** - * Returns svg representation of an instance - * @return {Array} an array of strings with the specific svg representation - * of the instance - */ - _toSVG: function() { - var path = this.path.map(function(path) { - return path.join(' '); - }).join(' '); - return [ - '\n' - ]; - }, - - _getOffsetTransform: function() { - var digits = fabric.Object.NUM_FRACTION_DIGITS; - return ' translate(' + toFixed(-this.pathOffset.x, digits) + ', ' + - toFixed(-this.pathOffset.y, digits) + ')'; - }, - - /** - * Returns svg clipPath representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toClipPathSVG: function(reviver) { - var additionalTransform = this._getOffsetTransform(); - return '\t' + this._createBaseClipPathSVGMarkup( - this._toSVG(), { reviver: reviver, additionalTransform: additionalTransform } - ); - }, - - /** - * Returns svg representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toSVG: function(reviver) { - var additionalTransform = this._getOffsetTransform(); - return this._createBaseSVGMarkup(this._toSVG(), { reviver: reviver, additionalTransform: additionalTransform }); - }, - /* _TO_SVG_END_ */ - - /** - * Returns number representation of an instance complexity - * @return {Number} complexity of this instance - */ - complexity: function() { - return this.path.length; - }, - - /** - * @private - */ - _parsePath: function() { - var result = [], - coords = [], - currentPath, - parsed, - re = fabric.rePathCommand, - match, - coordsStr; - - for (var i = 0, coordsParsed, len = this.path.length; i < len; i++) { - currentPath = this.path[i]; - - coordsStr = currentPath.slice(1).trim(); - coords.length = 0; - - while ((match = re.exec(coordsStr))) { - coords.push(match[0]); - } - - coordsParsed = [currentPath.charAt(0)]; - - for (var j = 0, jlen = coords.length; j < jlen; j++) { - parsed = parseFloat(coords[j]); - if (!isNaN(parsed)) { - coordsParsed.push(parsed); - } - } - - var command = coordsParsed[0], - commandLength = commandLengths[command.toLowerCase()], - repeatedCommand = repeatedCommands[command] || command; - - if (coordsParsed.length - 1 > commandLength) { - for (var k = 1, klen = coordsParsed.length; k < klen; k += commandLength) { - result.push([command].concat(coordsParsed.slice(k, k + commandLength))); - command = repeatedCommand; - } - } - else { - result.push(coordsParsed); - } - } - - return result; - }, - - /** - * @private - */ - _calcDimensions: function() { - - var aX = [], - aY = [], - current, // current instruction - previous = null, - subpathStartX = 0, - subpathStartY = 0, - x = 0, // current x - y = 0, // current y - controlX = 0, // current control point x - controlY = 0, // current control point y - tempX, - tempY, - bounds; - - for (var i = 0, len = this.path.length; i < len; ++i) { - - current = this.path[i]; - - switch (current[0]) { // first letter - - case 'l': // lineto, relative - x += current[1]; - y += current[2]; - bounds = []; - break; - - case 'L': // lineto, absolute - x = current[1]; - y = current[2]; - bounds = []; - break; - - case 'h': // horizontal lineto, relative - x += current[1]; - bounds = []; - break; - - case 'H': // horizontal lineto, absolute - x = current[1]; - bounds = []; - break; - - case 'v': // vertical lineto, relative - y += current[1]; - bounds = []; - break; - - case 'V': // verical lineto, absolute - y = current[1]; - bounds = []; - break; - - case 'm': // moveTo, relative - x += current[1]; - y += current[2]; - subpathStartX = x; - subpathStartY = y; - bounds = []; - break; - - case 'M': // moveTo, absolute - x = current[1]; - y = current[2]; - subpathStartX = x; - subpathStartY = y; - bounds = []; - break; - - case 'c': // bezierCurveTo, relative - tempX = x + current[5]; - tempY = y + current[6]; - controlX = x + current[3]; - controlY = y + current[4]; - bounds = fabric.util.getBoundsOfCurve(x, y, - x + current[1], // x1 - y + current[2], // y1 - controlX, // x2 - controlY, // y2 - tempX, - tempY - ); - x = tempX; - y = tempY; - break; - - case 'C': // bezierCurveTo, absolute - controlX = current[3]; - controlY = current[4]; - bounds = fabric.util.getBoundsOfCurve(x, y, - current[1], - current[2], - controlX, - controlY, - current[5], - current[6] - ); - x = current[5]; - y = current[6]; - break; - - case 's': // shorthand cubic bezierCurveTo, relative - - // transform to absolute x,y - tempX = x + current[3]; - tempY = y + current[4]; - - if (previous[0].match(/[CcSs]/) === null) { - // If there is no previous command or if the previous command was not a C, c, S, or s, - // the control point is coincident with the current point - controlX = x; - controlY = y; - } - else { - // calculate reflection of previous control points - controlX = 2 * x - controlX; - controlY = 2 * y - controlY; - } - - bounds = fabric.util.getBoundsOfCurve(x, y, - controlX, - controlY, - x + current[1], - y + current[2], - tempX, - tempY - ); - // set control point to 2nd one of this command - // "... the first control point is assumed to be - // the reflection of the second control point on - // the previous command relative to the current point." - controlX = x + current[1]; - controlY = y + current[2]; - x = tempX; - y = tempY; - break; - - case 'S': // shorthand cubic bezierCurveTo, absolute - tempX = current[3]; - tempY = current[4]; - if (previous[0].match(/[CcSs]/) === null) { - // If there is no previous command or if the previous command was not a C, c, S, or s, - // the control point is coincident with the current point - controlX = x; - controlY = y; - } - else { - // calculate reflection of previous control points - controlX = 2 * x - controlX; - controlY = 2 * y - controlY; - } - bounds = fabric.util.getBoundsOfCurve(x, y, - controlX, - controlY, - current[1], - current[2], - tempX, - tempY - ); - x = tempX; - y = tempY; - // set control point to 2nd one of this command - // "... the first control point is assumed to be - // the reflection of the second control point on - // the previous command relative to the current point." - controlX = current[1]; - controlY = current[2]; - break; - - case 'q': // quadraticCurveTo, relative - // transform to absolute x,y - tempX = x + current[3]; - tempY = y + current[4]; - controlX = x + current[1]; - controlY = y + current[2]; - bounds = fabric.util.getBoundsOfCurve(x, y, - controlX, - controlY, - controlX, - controlY, - tempX, - tempY - ); - x = tempX; - y = tempY; - break; - - case 'Q': // quadraticCurveTo, absolute - controlX = current[1]; - controlY = current[2]; - bounds = fabric.util.getBoundsOfCurve(x, y, - controlX, - controlY, - controlX, - controlY, - current[3], - current[4] - ); - x = current[3]; - y = current[4]; - break; - - case 't': // shorthand quadraticCurveTo, relative - // transform to absolute x,y - tempX = x + current[1]; - tempY = y + current[2]; - if (previous[0].match(/[QqTt]/) === null) { - // If there is no previous command or if the previous command was not a Q, q, T or t, - // assume the control point is coincident with the current point - controlX = x; - controlY = y; - } - else { - // calculate reflection of previous control point - controlX = 2 * x - controlX; - controlY = 2 * y - controlY; - } - - bounds = fabric.util.getBoundsOfCurve(x, y, - controlX, - controlY, - controlX, - controlY, - tempX, - tempY - ); - x = tempX; - y = tempY; - - break; - - case 'T': - tempX = current[1]; - tempY = current[2]; - - if (previous[0].match(/[QqTt]/) === null) { - // If there is no previous command or if the previous command was not a Q, q, T or t, - // assume the control point is coincident with the current point - controlX = x; - controlY = y; - } - else { - // calculate reflection of previous control point - controlX = 2 * x - controlX; - controlY = 2 * y - controlY; - } - bounds = fabric.util.getBoundsOfCurve(x, y, - controlX, - controlY, - controlX, - controlY, - tempX, - tempY - ); - x = tempX; - y = tempY; - break; - - case 'a': - // TODO: optimize this - bounds = fabric.util.getBoundsOfArc(x, y, - current[1], - current[2], - current[3], - current[4], - current[5], - current[6] + x, - current[7] + y - ); - x += current[6]; - y += current[7]; - break; - - case 'A': - // TODO: optimize this - bounds = fabric.util.getBoundsOfArc(x, y, - current[1], - current[2], - current[3], - current[4], - current[5], - current[6], - current[7] - ); - x = current[6]; - y = current[7]; - break; - - case 'z': - case 'Z': - x = subpathStartX; - y = subpathStartY; - break; - } - previous = current; - bounds.forEach(function (point) { - aX.push(point.x); - aY.push(point.y); - }); - aX.push(x); - aY.push(y); - } - - var minX = min(aX) || 0, - minY = min(aY) || 0, - maxX = max(aX) || 0, - maxY = max(aY) || 0, - deltaX = maxX - minX, - deltaY = maxY - minY; - - return { - left: minX, - top: minY, - width: deltaX, - height: deltaY - }; - } - }); - - /** - * Creates an instance of fabric.Path from an object - * @static - * @memberOf fabric.Path - * @param {Object} object - * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created - */ - fabric.Path.fromObject = function(object, callback) { - if (typeof object.sourcePath === 'string') { - var pathUrl = object.sourcePath; - fabric.loadSVGFromURL(pathUrl, function (elements) { - var path = elements[0]; - path.setOptions(object); - callback && callback(path); - }); - } - else { - fabric.Object._fromObject('Path', object, callback, 'path'); - } - }; - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by `fabric.Path.fromElement`) - * @static - * @memberOf fabric.Path - * @see http://www.w3.org/TR/SVG/paths.html#PathElement - */ - fabric.Path.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(['d']); - - /** - * Creates an instance of fabric.Path from an SVG element - * @static - * @memberOf fabric.Path - * @param {SVGElement} element to parse - * @param {Function} callback Callback to invoke when an fabric.Path instance is created - * @param {Object} [options] Options object - * @param {Function} [callback] Options callback invoked after parsing is finished - */ - fabric.Path.fromElement = function(element, callback, options) { - var parsedAttributes = fabric.parseAttributes(element, fabric.Path.ATTRIBUTE_NAMES); - parsedAttributes.fromSVG = true; - callback(new fabric.Path(parsedAttributes.d, extend(parsedAttributes, options))); - }; - /* _FROM_SVG_END_ */ - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - min = fabric.util.array.min, - max = fabric.util.array.max; - - if (fabric.Group) { - return; - } - - /** - * Group class - * @class fabric.Group - * @extends fabric.Object - * @mixes fabric.Collection - * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups} - * @see {@link fabric.Group#initialize} for constructor definition - */ - fabric.Group = fabric.util.createClass(fabric.Object, fabric.Collection, /** @lends fabric.Group.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'group', - - /** - * Width of stroke - * @type Number - * @default - */ - strokeWidth: 0, - - /** - * Indicates if click, mouseover, mouseout events & hoverCursor should also check for subtargets - * @type Boolean - * @default - */ - subTargetCheck: false, - - /** - * Groups are container, do not render anything on theyr own, ence no cache properties - * @type Array - * @default - */ - cacheProperties: [], - - /** - * setOnGroup is a method used for TextBox that is no more used since 2.0.0 The behavior is still - * available setting this boolean to true. - * @type Boolean - * @since 2.0.0 - * @default - */ - useSetOnGroup: false, - - /** - * Constructor - * @param {Object} objects Group objects - * @param {Object} [options] Options object - * @param {Boolean} [isAlreadyGrouped] if true, objects have been grouped already. - * @return {Object} thisArg - */ - initialize: function(objects, options, isAlreadyGrouped) { - options = options || {}; - this._objects = []; - // if objects enclosed in a group have been grouped already, - // we cannot change properties of objects. - // Thus we need to set options to group without objects, - isAlreadyGrouped && this.callSuper('initialize', options); - this._objects = objects || []; - for (var i = this._objects.length; i--; ) { - this._objects[i].group = this; - } - - if (!isAlreadyGrouped) { - var center = options && options.centerPoint; - // we want to set origins before calculating the bounding box. - // so that the topleft can be set with that in mind. - // if specific top and left are passed, are overwritten later - // with the callSuper('initialize', options) - if (options.originX !== undefined) { - this.originX = options.originX; - } - if (options.originY !== undefined) { - this.originY = options.originY; - } - // if coming from svg i do not want to calc bounds. - // i assume width and height are passed along options - center || this._calcBounds(); - this._updateObjectsCoords(center); - delete options.centerPoint; - this.callSuper('initialize', options); - } - else { - this._updateObjectsACoords(); - } - - this.setCoords(); - }, - - /** - * @private - * @param {Boolean} [skipCoordsChange] if true, coordinates of objects enclosed in a group do not change - */ - _updateObjectsACoords: function() { - var ignoreZoom = true, skipAbsolute = true; - for (var i = this._objects.length; i--; ){ - this._objects[i].setCoords(ignoreZoom, skipAbsolute); - } - }, - - /** - * @private - * @param {Boolean} [skipCoordsChange] if true, coordinates of objects enclosed in a group do not change - */ - _updateObjectsCoords: function(center) { - var center = center || this.getCenterPoint(); - for (var i = this._objects.length; i--; ){ - this._updateObjectCoords(this._objects[i], center); - } - }, - - /** - * @private - * @param {Object} object - * @param {fabric.Point} center, current center of group. - */ - _updateObjectCoords: function(object, center) { - var objectLeft = object.left, - objectTop = object.top, - ignoreZoom = true, skipAbsolute = true; - - object.set({ - left: objectLeft - center.x, - top: objectTop - center.y - }); - object.group = this; - object.setCoords(ignoreZoom, skipAbsolute); - }, - - /** - * Returns string represenation of a group - * @return {String} - */ - toString: function() { - return '#'; - }, - - /** - * Adds an object to a group; Then recalculates group's dimension, position. - * @param {Object} object - * @return {fabric.Group} thisArg - * @chainable - */ - addWithUpdate: function(object) { - this._restoreObjectsState(); - fabric.util.resetObjectTransform(this); - if (object) { - this._objects.push(object); - object.group = this; - object._set('canvas', this.canvas); - } - this._calcBounds(); - this._updateObjectsCoords(); - this.setCoords(); - this.dirty = true; - return this; - }, - - /** - * Removes an object from a group; Then recalculates group's dimension, position. - * @param {Object} object - * @return {fabric.Group} thisArg - * @chainable - */ - removeWithUpdate: function(object) { - this._restoreObjectsState(); - fabric.util.resetObjectTransform(this); - - this.remove(object); - this._calcBounds(); - this._updateObjectsCoords(); - this.setCoords(); - this.dirty = true; - return this; - }, - - /** - * @private - */ - _onObjectAdded: function(object) { - this.dirty = true; - object.group = this; - object._set('canvas', this.canvas); - }, - - /** - * @private - */ - _onObjectRemoved: function(object) { - this.dirty = true; - delete object.group; - }, - - /** - * @private - */ - _set: function(key, value) { - var i = this._objects.length; - if (this.useSetOnGroup) { - while (i--) { - this._objects[i].setOnGroup(key, value); - } - } - if (key === 'canvas') { - while (i--) { - this._objects[i]._set(key, value); - } - } - fabric.Object.prototype._set.call(this, key, value); - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function(propertiesToInclude) { - var _includeDefaultValues = this.includeDefaultValues; - var objsToObject = this._objects.map(function(obj) { - var originalDefaults = obj.includeDefaultValues; - obj.includeDefaultValues = _includeDefaultValues; - var _obj = obj.toObject(propertiesToInclude); - obj.includeDefaultValues = originalDefaults; - return _obj; - }); - var obj = fabric.Object.prototype.toObject.call(this, propertiesToInclude); - obj.objects = objsToObject; - return obj; - }, - - /** - * Returns object representation of an instance, in dataless mode. - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toDatalessObject: function(propertiesToInclude) { - var objsToObject, sourcePath = this.sourcePath; - if (sourcePath) { - objsToObject = sourcePath; - } - else { - var _includeDefaultValues = this.includeDefaultValues; - objsToObject = this._objects.map(function(obj) { - var originalDefaults = obj.includeDefaultValues; - obj.includeDefaultValues = _includeDefaultValues; - var _obj = obj.toDatalessObject(propertiesToInclude); - obj.includeDefaultValues = originalDefaults; - return _obj; - }); - } - var obj = fabric.Object.prototype.toDatalessObject.call(this, propertiesToInclude); - obj.objects = objsToObject; - return obj; - }, - - /** - * Renders instance on a given context - * @param {CanvasRenderingContext2D} ctx context to render instance on - */ - render: function(ctx) { - this._transformDone = true; - this.callSuper('render', ctx); - this._transformDone = false; - }, - - /** - * Decide if the object should cache or not. Create its own cache level - * needsItsOwnCache should be used when the object drawing method requires - * a cache step. None of the fabric classes requires it. - * Generally you do not cache objects in groups because the group is already cached. - * @return {Boolean} - */ - shouldCache: function() { - var ownCache = fabric.Object.prototype.shouldCache.call(this); - if (ownCache) { - for (var i = 0, len = this._objects.length; i < len; i++) { - if (this._objects[i].willDrawShadow()) { - this.ownCaching = false; - return false; - } - } - } - return ownCache; - }, - - /** - * Check if this object or a child object will cast a shadow - * @return {Boolean} - */ - willDrawShadow: function() { - if (this.shadow) { - return fabric.Object.prototype.willDrawShadow.call(this); - } - for (var i = 0, len = this._objects.length; i < len; i++) { - if (this._objects[i].willDrawShadow()) { - return true; - } - } - return false; - }, - - /** - * Check if this group or its parent group are caching, recursively up - * @return {Boolean} - */ - isOnACache: function() { - return this.ownCaching || (this.group && this.group.isOnACache()); - }, - - /** - * Execute the drawing operation for an object on a specified context - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - drawObject: function(ctx) { - for (var i = 0, len = this._objects.length; i < len; i++) { - this._objects[i].render(ctx); - } - this._drawClipPath(ctx); - }, - - /** - * Check if cache is dirty - */ - isCacheDirty: function(skipCanvas) { - if (this.callSuper('isCacheDirty', skipCanvas)) { - return true; - } - if (!this.statefullCache) { - return false; - } - for (var i = 0, len = this._objects.length; i < len; i++) { - if (this._objects[i].isCacheDirty(true)) { - if (this._cacheCanvas) { - // if this group has not a cache canvas there is nothing to clean - var x = this.cacheWidth / this.zoomX, y = this.cacheHeight / this.zoomY; - this._cacheContext.clearRect(-x / 2, -y / 2, x, y); - } - return true; - } - } - return false; - }, - - /** - * Retores original state of each of group objects (original state is that which was before group was created). - * @private - * @return {fabric.Group} thisArg - * @chainable - */ - _restoreObjectsState: function() { - this._objects.forEach(this._restoreObjectState, this); - return this; - }, - - /** - * Realises the transform from this group onto the supplied object - * i.e. it tells you what would happen if the supplied object was in - * the group, and then the group was destroyed. It mutates the supplied - * object. - * @param {fabric.Object} object - * @return {fabric.Object} transformedObject - */ - realizeTransform: function(object) { - var matrix = object.calcTransformMatrix(), - options = fabric.util.qrDecompose(matrix), - center = new fabric.Point(options.translateX, options.translateY); - object.flipX = false; - object.flipY = false; - object.set('scaleX', options.scaleX); - object.set('scaleY', options.scaleY); - object.skewX = options.skewX; - object.skewY = options.skewY; - object.angle = options.angle; - object.setPositionByOrigin(center, 'center', 'center'); - return object; - }, - - /** - * Restores original state of a specified object in group - * @private - * @param {fabric.Object} object - * @return {fabric.Group} thisArg - */ - _restoreObjectState: function(object) { - this.realizeTransform(object); - object.setCoords(); - delete object.group; - return this; - }, - - /** - * Destroys a group (restoring state of its objects) - * @return {fabric.Group} thisArg - * @chainable - */ - destroy: function() { - // when group is destroyed objects needs to get a repaint to be eventually - // displayed on canvas. - this._objects.forEach(function(object) { - object.set('dirty', true); - }); - return this._restoreObjectsState(); - }, - - /** - * make a group an active selection, remove the group from canvas - * the group has to be on canvas for this to work. - * @return {fabric.ActiveSelection} thisArg - * @chainable - */ - toActiveSelection: function() { - if (!this.canvas) { - return; - } - var objects = this._objects, canvas = this.canvas; - this._objects = []; - var options = this.toObject(); - delete options.objects; - var activeSelection = new fabric.ActiveSelection([]); - activeSelection.set(options); - activeSelection.type = 'activeSelection'; - canvas.remove(this); - objects.forEach(function(object) { - object.group = activeSelection; - object.dirty = true; - canvas.add(object); - }); - activeSelection.canvas = canvas; - activeSelection._objects = objects; - canvas._activeObject = activeSelection; - activeSelection.setCoords(); - return activeSelection; - }, - - /** - * Destroys a group (restoring state of its objects) - * @return {fabric.Group} thisArg - * @chainable - */ - ungroupOnCanvas: function() { - return this._restoreObjectsState(); - }, - - /** - * Sets coordinates of all objects inside group - * @return {fabric.Group} thisArg - * @chainable - */ - setObjectsCoords: function() { - var ignoreZoom = true, skipAbsolute = true; - this.forEachObject(function(object) { - object.setCoords(ignoreZoom, skipAbsolute); - }); - return this; - }, - - /** - * @private - */ - _calcBounds: function(onlyWidthHeight) { - var aX = [], - aY = [], - o, prop, - props = ['tr', 'br', 'bl', 'tl'], - i = 0, iLen = this._objects.length, - j, jLen = props.length, - ignoreZoom = true; - - for ( ; i < iLen; ++i) { - o = this._objects[i]; - o.setCoords(ignoreZoom); - for (j = 0; j < jLen; j++) { - prop = props[j]; - aX.push(o.oCoords[prop].x); - aY.push(o.oCoords[prop].y); - } - } - - this._getBounds(aX, aY, onlyWidthHeight); - }, - - /** - * @private - */ - _getBounds: function(aX, aY, onlyWidthHeight) { - var minXY = new fabric.Point(min(aX), min(aY)), - maxXY = new fabric.Point(max(aX), max(aY)), - top = minXY.y || 0, left = minXY.x || 0, - width = (maxXY.x - minXY.x) || 0, - height = (maxXY.y - minXY.y) || 0; - this.width = width; - this.height = height; - if (!onlyWidthHeight) { - // the bounding box always finds the topleft most corner. - // whatever is the group origin, we set up here the left/top position. - this.setPositionByOrigin({ x: left, y: top }, 'left', 'top'); - } - }, - - /* _TO_SVG_START_ */ - /** - * Returns svg representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - _toSVG: function(reviver) { - var svgString = ['\n']; - - for (var i = 0, len = this._objects.length; i < len; i++) { - svgString.push('\t\t', this._objects[i].toSVG(reviver)); - } - svgString.push('\n'); - return svgString; - }, - - /** - * Returns styles-string for svg-export, specific version for group - * @return {String} - */ - getSvgStyles: function() { - var opacity = typeof this.opacity !== 'undefined' && this.opacity !== 1 ? - 'opacity: ' + this.opacity + ';' : '', - visibility = this.visible ? '' : ' visibility: hidden;'; - return [ - opacity, - this.getSvgFilter(), - visibility - ].join(''); - }, - - /** - * Returns svg clipPath representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toClipPathSVG: function(reviver) { - var svgString = []; - - for (var i = 0, len = this._objects.length; i < len; i++) { - svgString.push('\t', this._objects[i].toClipPathSVG(reviver)); - } - - return this._createBaseClipPathSVGMarkup(svgString, { reviver: reviver }); - }, - /* _TO_SVG_END_ */ - }); - - /** - * Returns {@link fabric.Group} instance from an object representation - * @static - * @memberOf fabric.Group - * @param {Object} object Object to create a group from - * @param {Function} [callback] Callback to invoke when an group instance is created - */ - fabric.Group.fromObject = function(object, callback) { - var objects = object.objects, - options = fabric.util.object.clone(object, true); - delete options.objects; - if (typeof objects === 'string') { - // it has to be an url or something went wrong. - fabric.loadSVGFromURL(objects, function (elements) { - var group = fabric.util.groupSVGElements(elements, object, objects); - group.set(options); - callback && callback(group); - }); - return; - } - fabric.util.enlivenObjects(objects, function(enlivenedObjects) { - fabric.util.enlivenObjects([object.clipPath], function(enlivedClipPath) { - var options = fabric.util.object.clone(object, true); - options.clipPath = enlivedClipPath[0]; - delete options.objects; - callback && callback(new fabric.Group(enlivenedObjects, options, true)); - }); - }); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }); - - if (fabric.ActiveSelection) { - return; - } - - /** - * Group class - * @class fabric.ActiveSelection - * @extends fabric.Group - * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups} - * @see {@link fabric.ActiveSelection#initialize} for constructor definition - */ - fabric.ActiveSelection = fabric.util.createClass(fabric.Group, /** @lends fabric.ActiveSelection.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'activeSelection', - - /** - * Constructor - * @param {Object} objects ActiveSelection objects - * @param {Object} [options] Options object - * @return {Object} thisArg - */ - initialize: function(objects, options) { - options = options || {}; - this._objects = objects || []; - for (var i = this._objects.length; i--; ) { - this._objects[i].group = this; - } - - if (options.originX) { - this.originX = options.originX; - } - if (options.originY) { - this.originY = options.originY; - } - this._calcBounds(); - this._updateObjectsCoords(); - fabric.Object.prototype.initialize.call(this, options); - this.setCoords(); - }, - - /** - * Change te activeSelection to a normal group, - * High level function that automatically adds it to canvas as - * active object. no events fired. - * @since 2.0.0 - * @return {fabric.Group} - */ - toGroup: function() { - var objects = this._objects.concat(); - this._objects = []; - var options = fabric.Object.prototype.toObject.call(this); - var newGroup = new fabric.Group([]); - delete options.type; - newGroup.set(options); - objects.forEach(function(object) { - object.canvas.remove(object); - object.group = newGroup; - }); - newGroup._objects = objects; - if (!this.canvas) { - return newGroup; - } - var canvas = this.canvas; - canvas.add(newGroup); - canvas._activeObject = newGroup; - newGroup.setCoords(); - return newGroup; - }, - - /** - * If returns true, deselection is cancelled. - * @since 2.0.0 - * @return {Boolean} [cancel] - */ - onDeselect: function() { - this.destroy(); - return false; - }, - - /** - * Returns string representation of a group - * @return {String} - */ - toString: function() { - return '#'; - }, - - /** - * Decide if the object should cache or not. Create its own cache level - * objectCaching is a global flag, wins over everything - * needsItsOwnCache should be used when the object drawing method requires - * a cache step. None of the fabric classes requires it. - * Generally you do not cache objects in groups because the group outside is cached. - * @return {Boolean} - */ - shouldCache: function() { - return false; - }, - - /** - * Check if this group or its parent group are caching, recursively up - * @return {Boolean} - */ - isOnACache: function() { - return false; - }, - - /** - * Renders controls and borders for the object - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Object} [styleOverride] properties to override the object style - * @param {Object} [childrenOverride] properties to override the children overrides - */ - _renderControls: function(ctx, styleOverride, childrenOverride) { - ctx.save(); - ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1; - this.callSuper('_renderControls', ctx, styleOverride); - childrenOverride = childrenOverride || { }; - if (typeof childrenOverride.hasControls === 'undefined') { - childrenOverride.hasControls = false; - } - if (typeof childrenOverride.hasRotatingPoint === 'undefined') { - childrenOverride.hasRotatingPoint = false; - } - childrenOverride.forActiveSelection = true; - for (var i = 0, len = this._objects.length; i < len; i++) { - this._objects[i]._renderControls(ctx, childrenOverride); - } - ctx.restore(); - }, - }); - - /** - * Returns {@link fabric.ActiveSelection} instance from an object representation - * @static - * @memberOf fabric.ActiveSelection - * @param {Object} object Object to create a group from - * @param {Function} [callback] Callback to invoke when an ActiveSelection instance is created - */ - fabric.ActiveSelection.fromObject = function(object, callback) { - fabric.util.enlivenObjects(object.objects, function(enlivenedObjects) { - delete object.objects; - callback && callback(new fabric.ActiveSelection(enlivenedObjects, object, true)); - }); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var extend = fabric.util.object.extend; - - if (!global.fabric) { - global.fabric = { }; - } - - if (global.fabric.Image) { - fabric.warn('fabric.Image is already defined.'); - return; - } - - /** - * Image class - * @class fabric.Image - * @extends fabric.Object - * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#images} - * @see {@link fabric.Image#initialize} for constructor definition - */ - fabric.Image = fabric.util.createClass(fabric.Object, /** @lends fabric.Image.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'image', - - /** - * crossOrigin value (one of "", "anonymous", "use-credentials") - * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes - * @type String - * @default - */ - crossOrigin: '', - - /** - * Width of a stroke. - * For image quality a stroke multiple of 2 gives better results. - * @type Number - * @default - */ - strokeWidth: 0, - - /** - * When calling {@link fabric.Image.getSrc}, return value from element src with `element.getAttribute('src')`. - * This allows for relative urls as image src. - * @since 2.7.0 - * @type Boolean - * @default - */ - srcFromAttribute: false, - - /** - * private - * contains last value of scaleX to detect - * if the Image got resized after the last Render - * @type Number - */ - _lastScaleX: 1, - - /** - * private - * contains last value of scaleY to detect - * if the Image got resized after the last Render - * @type Number - */ - _lastScaleY: 1, - - /** - * private - * contains last value of scaling applied by the apply filter chain - * @type Number - */ - _filterScalingX: 1, - - /** - * private - * contains last value of scaling applied by the apply filter chain - * @type Number - */ - _filterScalingY: 1, - - /** - * minimum scale factor under which any resizeFilter is triggered to resize the image - * 0 will disable the automatic resize. 1 will trigger automatically always. - * number bigger than 1 are not implemented yet. - * @type Number - */ - minimumScaleTrigger: 0.5, - - /** - * List of properties to consider when checking if - * state of an object is changed ({@link fabric.Object#hasStateChanged}) - * as well as for history (undo/redo) purposes - * @type Array - */ - stateProperties: fabric.Object.prototype.stateProperties.concat('cropX', 'cropY'), - - /** - * key used to retrieve the texture representing this image - * @since 2.0.0 - * @type String - * @default - */ - cacheKey: '', - - /** - * Image crop in pixels from original image size. - * @since 2.0.0 - * @type Number - * @default - */ - cropX: 0, - - /** - * Image crop in pixels from original image size. - * @since 2.0.0 - * @type Number - * @default - */ - cropY: 0, - - /** - * Constructor - * @param {HTMLImageElement | String} element Image element - * @param {Object} [options] Options object - * @param {function} [callback] callback function to call after eventual filters applied. - * @return {fabric.Image} thisArg - */ - initialize: function(element, options) { - options || (options = { }); - this.filters = []; - this.cacheKey = 'texture' + fabric.Object.__uid++; - this.callSuper('initialize', options); - this._initElement(element, options); - }, - - /** - * Returns image element which this instance if based on - * @return {HTMLImageElement} Image element - */ - getElement: function() { - return this._element || {}; - }, - - /** - * Sets image element for this instance to a specified one. - * If filters defined they are applied to new image. - * You might need to call `canvas.renderAll` and `object.setCoords` after replacing, to render new image and update controls area. - * @param {HTMLImageElement} element - * @param {Object} [options] Options object - * @return {fabric.Image} thisArg - * @chainable - */ - setElement: function(element, options) { - this.removeTexture(this.cacheKey); - this.removeTexture(this.cacheKey + '_filtered'); - this._element = element; - this._originalElement = element; - this._initConfig(options); - if (this.filters.length !== 0) { - this.applyFilters(); - } - // resizeFilters work on the already filtered copy. - // we need to apply resizeFilters AFTER normal filters. - // applyResizeFilters is run more often than normal fiters - // and is triggered by user interactions rather than dev code - if (this.resizeFilter) { - this.applyResizeFilters(); - } - return this; - }, - - /** - * Delete a single texture if in webgl mode - */ - removeTexture: function(key) { - var backend = fabric.filterBackend; - if (backend && backend.evictCachesForKey) { - backend.evictCachesForKey(key); - } - }, - - /** - * Delete textures, reference to elements and eventually JSDOM cleanup - */ - dispose: function() { - this.removeTexture(this.cacheKey); - this.removeTexture(this.cacheKey + '_filtered'); - this._cacheContext = undefined; - ['_originalElement', '_element', '_filteredEl', '_cacheCanvas'].forEach((function(element) { - fabric.util.cleanUpJsdomNode(this[element]); - this[element] = undefined; - }).bind(this)); - }, - - /** - * Sets crossOrigin value (on an instance and corresponding image element) - * @return {fabric.Image} thisArg - * @chainable - */ - setCrossOrigin: function(value) { - this.crossOrigin = value; - this._element.crossOrigin = value; - - return this; - }, - - /** - * Returns original size of an image - * @return {Object} Object with "width" and "height" properties - */ - getOriginalSize: function() { - var element = this.getElement(); - return { - width: element.naturalWidth || element.width, - height: element.naturalHeight || element.height - }; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _stroke: function(ctx) { - if (!this.stroke || this.strokeWidth === 0) { - return; - } - var w = this.width / 2, h = this.height / 2; - ctx.beginPath(); - ctx.moveTo(-w, -h); - ctx.lineTo(w, -h); - ctx.lineTo(w, h); - ctx.lineTo(-w, h); - ctx.lineTo(-w, -h); - ctx.closePath(); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderDashedStroke: function(ctx) { - var x = -this.width / 2, - y = -this.height / 2, - w = this.width, - h = this.height; - - ctx.save(); - this._setStrokeStyles(ctx, this); - - ctx.beginPath(); - fabric.util.drawDashedLine(ctx, x, y, x + w, y, this.strokeDashArray); - fabric.util.drawDashedLine(ctx, x + w, y, x + w, y + h, this.strokeDashArray); - fabric.util.drawDashedLine(ctx, x + w, y + h, x, y + h, this.strokeDashArray); - fabric.util.drawDashedLine(ctx, x, y + h, x, y, this.strokeDashArray); - ctx.closePath(); - ctx.restore(); - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} Object representation of an instance - */ - toObject: function(propertiesToInclude) { - var filters = []; - - this.filters.forEach(function(filterObj) { - if (filterObj) { - filters.push(filterObj.toObject()); - } - }); - var object = extend( - this.callSuper( - 'toObject', - ['crossOrigin', 'cropX', 'cropY'].concat(propertiesToInclude) - ), { - src: this.getSrc(), - filters: filters, - }); - if (this.resizeFilter) { - object.resizeFilter = this.resizeFilter.toObject(); - } - return object; - }, - - /** - * Returns true if an image has crop applied, inspecting values of cropX,cropY,width,hight. - * @return {Boolean} - */ - hasCrop: function() { - return this.cropX || this.cropY || this.width < this._element.width || this.height < this._element.height; - }, - - /* _TO_SVG_START_ */ - /** - * Returns svg representation of an instance - * @return {Array} an array of strings with the specific svg representation - * of the instance - */ - _toSVG: function() { - var svgString = [], imageMarkup = [], strokeSvg, - x = -this.width / 2, y = -this.height / 2, clipPath = ''; - if (this.hasCrop()) { - var clipPathId = fabric.Object.__uid++; - svgString.push( - '\n', - '\t\n', - '\n' - ); - clipPath = ' clip-path="url(#imageCrop_' + clipPathId + ')" '; - } - imageMarkup.push('\t\n'); - - if (this.stroke || this.strokeDashArray) { - var origFill = this.fill; - this.fill = null; - strokeSvg = [ - '\t\n' - ]; - this.fill = origFill; - } - if (this.paintFirst !== 'fill') { - svgString = svgString.concat(strokeSvg, imageMarkup); - } - else { - svgString = svgString.concat(imageMarkup, strokeSvg); - } - return svgString; - }, - /* _TO_SVG_END_ */ - - /** - * Returns source of an image - * @param {Boolean} filtered indicates if the src is needed for svg - * @return {String} Source of an image - */ - getSrc: function(filtered) { - var element = filtered ? this._element : this._originalElement; - if (element) { - if (element.toDataURL) { - return element.toDataURL(); - } - - if (this.srcFromAttribute) { - return element.getAttribute('src'); - } - else { - return element.src; - } - } - else { - return this.src || ''; - } - }, - - /** - * Sets source of an image - * @param {String} src Source string (URL) - * @param {Function} [callback] Callback is invoked when image has been loaded (and all filters have been applied) - * @param {Object} [options] Options object - * @return {fabric.Image} thisArg - * @chainable - */ - setSrc: function(src, callback, options) { - fabric.util.loadImage(src, function(img) { - this.setElement(img, options); - this._setWidthHeight(); - callback && callback(this); - }, this, options && options.crossOrigin); - return this; - }, - - /** - * Returns string representation of an instance - * @return {String} String representation of an instance - */ - toString: function() { - return '#'; - }, - - applyResizeFilters: function() { - var filter = this.resizeFilter, - minimumScale = this.minimumScaleTrigger, - objectScale = this.getTotalObjectScaling(), - scaleX = objectScale.scaleX, - scaleY = objectScale.scaleY, - elementToFilter = this._filteredEl || this._originalElement; - if (this.group) { - this.set('dirty', true); - } - if (!filter || (scaleX > minimumScale && scaleY > minimumScale)) { - this._element = elementToFilter; - this._filterScalingX = 1; - this._filterScalingY = 1; - this._lastScaleX = scaleX; - this._lastScaleY = scaleY; - return; - } - if (!fabric.filterBackend) { - fabric.filterBackend = fabric.initFilterBackend(); - } - var canvasEl = fabric.util.createCanvasElement(), - cacheKey = this._filteredEl ? (this.cacheKey + '_filtered') : this.cacheKey, - sourceWidth = elementToFilter.width, sourceHeight = elementToFilter.height; - canvasEl.width = sourceWidth; - canvasEl.height = sourceHeight; - this._element = canvasEl; - this._lastScaleX = filter.scaleX = scaleX; - this._lastScaleY = filter.scaleY = scaleY; - fabric.filterBackend.applyFilters( - [filter], elementToFilter, sourceWidth, sourceHeight, this._element, cacheKey); - this._filterScalingX = canvasEl.width / this._originalElement.width; - this._filterScalingY = canvasEl.height / this._originalElement.height; - }, - - /** - * Applies filters assigned to this image (from "filters" array) or from filter param - * @method applyFilters - * @param {Array} filters to be applied - * @param {Boolean} forResizing specify if the filter operation is a resize operation - * @return {thisArg} return the fabric.Image object - * @chainable - */ - applyFilters: function(filters) { - - filters = filters || this.filters || []; - filters = filters.filter(function(filter) { return filter && !filter.isNeutralState(); }); - this.set('dirty', true); - - // needs to clear out or WEBGL will not resize correctly - this.removeTexture(this.cacheKey + '_filtered'); - - if (filters.length === 0) { - this._element = this._originalElement; - this._filteredEl = null; - this._filterScalingX = 1; - this._filterScalingY = 1; - return this; - } - - var imgElement = this._originalElement, - sourceWidth = imgElement.naturalWidth || imgElement.width, - sourceHeight = imgElement.naturalHeight || imgElement.height; - - if (this._element === this._originalElement) { - // if the element is the same we need to create a new element - var canvasEl = fabric.util.createCanvasElement(); - canvasEl.width = sourceWidth; - canvasEl.height = sourceHeight; - this._element = canvasEl; - this._filteredEl = canvasEl; - } - else { - // clear the existing element to get new filter data - // also dereference the eventual resized _element - this._element = this._filteredEl; - this._filteredEl.getContext('2d').clearRect(0, 0, sourceWidth, sourceHeight); - // we also need to resize again at next renderAll, so remove saved _lastScaleX/Y - this._lastScaleX = 1; - this._lastScaleY = 1; - } - if (!fabric.filterBackend) { - fabric.filterBackend = fabric.initFilterBackend(); - } - fabric.filterBackend.applyFilters( - filters, this._originalElement, sourceWidth, sourceHeight, this._element, this.cacheKey); - if (this._originalElement.width !== this._element.width || - this._originalElement.height !== this._element.height) { - this._filterScalingX = this._element.width / this._originalElement.width; - this._filterScalingY = this._element.height / this._originalElement.height; - } - return this; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function(ctx) { - if (this.isMoving !== true && this.resizeFilter && this._needsResize()) { - this.applyResizeFilters(); - } - this._stroke(ctx); - this._renderPaintInOrder(ctx); - }, - - /** - * Decide if the object should cache or not. Create its own cache level - * needsItsOwnCache should be used when the object drawing method requires - * a cache step. None of the fabric classes requires it. - * Generally you do not cache objects in groups because the group outside is cached. - * This is the special image version where we would like to avoid caching where possible. - * Essentially images do not benefit from caching. They may require caching, and in that - * case we do it. Also caching an image usually ends in a loss of details. - * A full performance audit should be done. - * @return {Boolean} - */ - shouldCache: function() { - return this.needsItsOwnCache(); - }, - - _renderFill: function(ctx) { - var elementToDraw = this._element, - w = this.width, h = this.height, - sW = Math.min(elementToDraw.naturalWidth || elementToDraw.width, w * this._filterScalingX), - sH = Math.min(elementToDraw.naturalHeight || elementToDraw.height, h * this._filterScalingY), - x = -w / 2, y = -h / 2, - sX = Math.max(0, this.cropX * this._filterScalingX), - sY = Math.max(0, this.cropY * this._filterScalingY); - - elementToDraw && ctx.drawImage(elementToDraw, sX, sY, sW, sH, x, y, w, h); - }, - - /** - * needed to check if image needs resize - * @private - */ - _needsResize: function() { - var scale = this.getTotalObjectScaling(); - return (scale.scaleX !== this._lastScaleX || scale.scaleY !== this._lastScaleY); - }, - - /** - * @private - */ - _resetWidthHeight: function() { - this.set(this.getOriginalSize()); - }, - - /** - * The Image class's initialization method. This method is automatically - * called by the constructor. - * @private - * @param {HTMLImageElement|String} element The element representing the image - * @param {Object} [options] Options object - */ - _initElement: function(element, options) { - this.setElement(fabric.util.getById(element), options); - fabric.util.addClass(this.getElement(), fabric.Image.CSS_CANVAS); - }, - - /** - * @private - * @param {Object} [options] Options object - */ - _initConfig: function(options) { - options || (options = { }); - this.setOptions(options); - this._setWidthHeight(options); - if (this._element && this.crossOrigin) { - this._element.crossOrigin = this.crossOrigin; - } - }, - - /** - * @private - * @param {Array} filters to be initialized - * @param {Function} callback Callback to invoke when all fabric.Image.filters instances are created - */ - _initFilters: function(filters, callback) { - if (filters && filters.length) { - fabric.util.enlivenObjects(filters, function(enlivenedObjects) { - callback && callback(enlivenedObjects); - }, 'fabric.Image.filters'); - } - else { - callback && callback(); - } - }, - - /** - * @private - * Set the width and the height of the image object, using the element or the - * options. - * @param {Object} [options] Object with width/height properties - */ - _setWidthHeight: function(options) { - options || (options = { }); - var el = this.getElement(); - this.width = options.width || el.naturalWidth || el.width || 0; - this.height = options.height || el.naturalHeight || el.height || 0; - }, - - /** - * Calculate offset for center and scale factor for the image in order to respect - * the preserveAspectRatio attribute - * @private - * @return {Object} - */ - parsePreserveAspectRatioAttribute: function() { - var pAR = fabric.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio || ''), - rWidth = this._element.width, rHeight = this._element.height, - scaleX = 1, scaleY = 1, offsetLeft = 0, offsetTop = 0, cropX = 0, cropY = 0, - offset, pWidth = this.width, pHeight = this.height, parsedAttributes = { width: pWidth, height: pHeight }; - if (pAR && (pAR.alignX !== 'none' || pAR.alignY !== 'none')) { - if (pAR.meetOrSlice === 'meet') { - scaleX = scaleY = fabric.util.findScaleToFit(this._element, parsedAttributes); - offset = (pWidth - rWidth * scaleX) / 2; - if (pAR.alignX === 'Min') { - offsetLeft = -offset; - } - if (pAR.alignX === 'Max') { - offsetLeft = offset; - } - offset = (pHeight - rHeight * scaleY) / 2; - if (pAR.alignY === 'Min') { - offsetTop = -offset; - } - if (pAR.alignY === 'Max') { - offsetTop = offset; - } - } - if (pAR.meetOrSlice === 'slice') { - scaleX = scaleY = fabric.util.findScaleToCover(this._element, parsedAttributes); - offset = rWidth - pWidth / scaleX; - if (pAR.alignX === 'Mid') { - cropX = offset / 2; - } - if (pAR.alignX === 'Max') { - cropX = offset; - } - offset = rHeight - pHeight / scaleY; - if (pAR.alignY === 'Mid') { - cropY = offset / 2; - } - if (pAR.alignY === 'Max') { - cropY = offset; - } - rWidth = pWidth / scaleX; - rHeight = pHeight / scaleY; - } - } - else { - scaleX = pWidth / rWidth; - scaleY = pHeight / rHeight; - } - return { - width: rWidth, - height: rHeight, - scaleX: scaleX, - scaleY: scaleY, - offsetLeft: offsetLeft, - offsetTop: offsetTop, - cropX: cropX, - cropY: cropY - }; - } - }); - - /** - * Default CSS class name for canvas - * @static - * @type String - * @default - */ - fabric.Image.CSS_CANVAS = 'canvas-img'; - - /** - * Alias for getSrc - * @static - */ - fabric.Image.prototype.getSvgSrc = fabric.Image.prototype.getSrc; - - /** - * Creates an instance of fabric.Image from its object representation - * @static - * @param {Object} object Object to create an instance from - * @param {Function} callback Callback to invoke when an image instance is created - */ - fabric.Image.fromObject = function(_object, callback) { - var object = fabric.util.object.clone(_object); - fabric.util.loadImage(object.src, function(img, error) { - if (error) { - callback && callback(null, error); - return; - } - fabric.Image.prototype._initFilters.call(object, object.filters, function(filters) { - object.filters = filters || []; - fabric.Image.prototype._initFilters.call(object, [object.resizeFilter], function(resizeFilters) { - object.resizeFilter = resizeFilters[0]; - fabric.util.enlivenObjects([object.clipPath], function(enlivedProps) { - object.clipPath = enlivedProps[0]; - var image = new fabric.Image(img, object); - callback(image); - }); - }); - }); - }, null, object.crossOrigin); - }; - - /** - * Creates an instance of fabric.Image from an URL string - * @static - * @param {String} url URL to create an image from - * @param {Function} [callback] Callback to invoke when image is created (newly created image is passed as a first argument) - * @param {Object} [imgOptions] Options object - */ - fabric.Image.fromURL = function(url, callback, imgOptions) { - fabric.util.loadImage(url, function(img) { - callback && callback(new fabric.Image(img, imgOptions)); - }, null, imgOptions && imgOptions.crossOrigin); - }; - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by {@link fabric.Image.fromElement}) - * @static - * @see {@link http://www.w3.org/TR/SVG/struct.html#ImageElement} - */ - fabric.Image.ATTRIBUTE_NAMES = - fabric.SHARED_ATTRIBUTES.concat('x y width height preserveAspectRatio xlink:href crossOrigin'.split(' ')); - - /** - * Returns {@link fabric.Image} instance from an SVG element - * @static - * @param {SVGElement} element Element to parse - * @param {Object} [options] Options object - * @param {Function} callback Callback to execute when fabric.Image object is created - * @return {fabric.Image} Instance of fabric.Image - */ - fabric.Image.fromElement = function(element, callback, options) { - var parsedAttributes = fabric.parseAttributes(element, fabric.Image.ATTRIBUTE_NAMES); - fabric.Image.fromURL(parsedAttributes['xlink:href'], callback, - extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes)); - }; - /* _FROM_SVG_END_ */ - -})(typeof exports !== 'undefined' ? exports : this); - - -fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { - - /** - * @private - * @return {Number} angle value - */ - _getAngleValueForStraighten: function() { - var angle = this.angle % 360; - if (angle > 0) { - return Math.round((angle - 1) / 90) * 90; - } - return Math.round(angle / 90) * 90; - }, - - /** - * Straightens an object (rotating it from current angle to one of 0, 90, 180, 270, etc. depending on which is closer) - * @return {fabric.Object} thisArg - * @chainable - */ - straighten: function() { - this.rotate(this._getAngleValueForStraighten()); - return this; - }, - - /** - * Same as {@link fabric.Object.prototype.straighten} but with animation - * @param {Object} callbacks Object with callback functions - * @param {Function} [callbacks.onComplete] Invoked on completion - * @param {Function} [callbacks.onChange] Invoked on every step of animation - * @return {fabric.Object} thisArg - * @chainable - */ - fxStraighten: function(callbacks) { - callbacks = callbacks || { }; - - var empty = function() { }, - onComplete = callbacks.onComplete || empty, - onChange = callbacks.onChange || empty, - _this = this; - - fabric.util.animate({ - startValue: this.get('angle'), - endValue: this._getAngleValueForStraighten(), - duration: this.FX_DURATION, - onChange: function(value) { - _this.rotate(value); - onChange(); - }, - onComplete: function() { - _this.setCoords(); - onComplete(); - }, - }); - - return this; - } -}); - -fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ { - - /** - * Straightens object, then rerenders canvas - * @param {fabric.Object} object Object to straighten - * @return {fabric.Canvas} thisArg - * @chainable - */ - straightenObject: function (object) { - object.straighten(); - this.requestRenderAll(); - return this; - }, - - /** - * Same as {@link fabric.Canvas.prototype.straightenObject}, but animated - * @param {fabric.Object} object Object to straighten - * @return {fabric.Canvas} thisArg - * @chainable - */ - fxStraightenObject: function (object) { - object.fxStraighten({ - onChange: this.requestRenderAllBound - }); - return this; - } -}); - - -(function() { - - 'use strict'; - - /** - * Tests if webgl supports certain precision - * @param {WebGL} Canvas WebGL context to test on - * @param {String} Precision to test can be any of following: 'lowp', 'mediump', 'highp' - * @returns {Boolean} Whether the user's browser WebGL supports given precision. - */ - function testPrecision(gl, precision){ - var fragmentSource = 'precision ' + precision + ' float;\nvoid main(){}'; - var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); - gl.shaderSource(fragmentShader, fragmentSource); - gl.compileShader(fragmentShader); - if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) { - return false; - } - return true; - } - - /** - * Indicate whether this filtering backend is supported by the user's browser. - * @param {Number} tileSize check if the tileSize is supported - * @returns {Boolean} Whether the user's browser supports WebGL. - */ - fabric.isWebglSupported = function(tileSize) { - if (fabric.isLikelyNode) { - return false; - } - tileSize = tileSize || fabric.WebglFilterBackend.prototype.tileSize; - var canvas = document.createElement('canvas'); - var gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl'); - var isSupported = false; - // eslint-disable-next-line - if (gl) { - fabric.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE); - isSupported = fabric.maxTextureSize >= tileSize; - var precisions = ['highp', 'mediump', 'lowp']; - for (var i = 0; i < 3; i++){ - if (testPrecision(gl, precisions[i])){ - fabric.webGlPrecision = precisions[i]; - break; - }; - } - } - this.isSupported = isSupported; - return isSupported; - }; - - fabric.WebglFilterBackend = WebglFilterBackend; - - /** - * WebGL filter backend. - */ - function WebglFilterBackend(options) { - if (options && options.tileSize) { - this.tileSize = options.tileSize; - } - this.setupGLContext(this.tileSize, this.tileSize); - this.captureGPUInfo(); - }; - - WebglFilterBackend.prototype = /** @lends fabric.WebglFilterBackend.prototype */ { - - tileSize: 2048, - - /** - * Experimental. This object is a sort of repository of help layers used to avoid - * of recreating them during frequent filtering. If you are previewing a filter with - * a slider you problably do not want to create help layers every filter step. - * in this object there will be appended some canvases, created once, resized sometimes - * cleared never. Clearing is left to the developer. - **/ - resources: { - - }, - - /** - * Setup a WebGL context suitable for filtering, and bind any needed event handlers. - */ - setupGLContext: function(width, height) { - this.dispose(); - this.createWebGLCanvas(width, height); - // eslint-disable-next-line - this.aPosition = new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]); - this.chooseFastestCopyGLTo2DMethod(width, height); - }, - - /** - * Pick a method to copy data from GL context to 2d canvas. In some browsers using - * putImageData is faster than drawImage for that specific operation. - */ - chooseFastestCopyGLTo2DMethod: function(width, height) { - var canMeasurePerf = typeof window.performance !== 'undefined', canUseImageData; - try { - new ImageData(1, 1); - canUseImageData = true; - } - catch (e) { - canUseImageData = false; - } - // eslint-disable-next-line no-undef - var canUseArrayBuffer = typeof ArrayBuffer !== 'undefined'; - // eslint-disable-next-line no-undef - var canUseUint8Clamped = typeof Uint8ClampedArray !== 'undefined'; - - if (!(canMeasurePerf && canUseImageData && canUseArrayBuffer && canUseUint8Clamped)) { - return; - } - - var targetCanvas = fabric.util.createCanvasElement(); - // eslint-disable-next-line no-undef - var imageBuffer = new ArrayBuffer(width * height * 4); - if (fabric.forceGLPutImageData) { - this.imageBuffer = imageBuffer; - this.copyGLTo2D = copyGLTo2DPutImageData; - return; - } - var testContext = { - imageBuffer: imageBuffer, - destinationWidth: width, - destinationHeight: height, - targetCanvas: targetCanvas - }; - var startTime, drawImageTime, putImageDataTime; - targetCanvas.width = width; - targetCanvas.height = height; - - startTime = window.performance.now(); - copyGLTo2DDrawImage.call(testContext, this.gl, testContext); - drawImageTime = window.performance.now() - startTime; - - startTime = window.performance.now(); - copyGLTo2DPutImageData.call(testContext, this.gl, testContext); - putImageDataTime = window.performance.now() - startTime; - - if (drawImageTime > putImageDataTime) { - this.imageBuffer = imageBuffer; - this.copyGLTo2D = copyGLTo2DPutImageData; - } - else { - this.copyGLTo2D = copyGLTo2DDrawImage; - } - }, - - /** - * Create a canvas element and associated WebGL context and attaches them as - * class properties to the GLFilterBackend class. - */ - createWebGLCanvas: function(width, height) { - var canvas = fabric.util.createCanvasElement(); - canvas.width = width; - canvas.height = height; - var glOptions = { - alpha: true, - premultipliedAlpha: false, - depth: false, - stencil: false, - antialias: false - }, - gl = canvas.getContext('webgl', glOptions); - if (!gl) { - gl = canvas.getContext('experimental-webgl', glOptions); - } - if (!gl) { - return; - } - gl.clearColor(0, 0, 0, 0); - // this canvas can fire webglcontextlost and webglcontextrestored - this.canvas = canvas; - this.gl = gl; - }, - - /** - * Attempts to apply the requested filters to the source provided, drawing the filtered output - * to the provided target canvas. - * - * @param {Array} filters The filters to apply. - * @param {HTMLImageElement|HTMLCanvasElement} source The source to be filtered. - * @param {Number} width The width of the source input. - * @param {Number} height The height of the source input. - * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn. - * @param {String|undefined} cacheKey A key used to cache resources related to the source. If - * omitted, caching will be skipped. - */ - applyFilters: function(filters, source, width, height, targetCanvas, cacheKey) { - var gl = this.gl; - var cachedTexture; - if (cacheKey) { - cachedTexture = this.getCachedTexture(cacheKey, source); - } - var pipelineState = { - originalWidth: source.width || source.originalWidth, - originalHeight: source.height || source.originalHeight, - sourceWidth: width, - sourceHeight: height, - destinationWidth: width, - destinationHeight: height, - context: gl, - sourceTexture: this.createTexture(gl, width, height, !cachedTexture && source), - targetTexture: this.createTexture(gl, width, height), - originalTexture: cachedTexture || - this.createTexture(gl, width, height, !cachedTexture && source), - passes: filters.length, - webgl: true, - aPosition: this.aPosition, - programCache: this.programCache, - pass: 0, - filterBackend: this, - targetCanvas: targetCanvas - }; - var tempFbo = gl.createFramebuffer(); - gl.bindFramebuffer(gl.FRAMEBUFFER, tempFbo); - filters.forEach(function(filter) { filter && filter.applyTo(pipelineState); }); - resizeCanvasIfNeeded(pipelineState); - this.copyGLTo2D(gl, pipelineState); - gl.bindTexture(gl.TEXTURE_2D, null); - gl.deleteTexture(pipelineState.sourceTexture); - gl.deleteTexture(pipelineState.targetTexture); - gl.deleteFramebuffer(tempFbo); - targetCanvas.getContext('2d').setTransform(1, 0, 0, 1, 0, 0); - return pipelineState; - }, - - /** - * Detach event listeners, remove references, and clean up caches. - */ - dispose: function() { - if (this.canvas) { - this.canvas = null; - this.gl = null; - } - this.clearWebGLCaches(); - }, - - /** - * Wipe out WebGL-related caches. - */ - clearWebGLCaches: function() { - this.programCache = {}; - this.textureCache = {}; - }, - - /** - * Create a WebGL texture object. - * - * Accepts specific dimensions to initialize the textuer to or a source image. - * - * @param {WebGLRenderingContext} gl The GL context to use for creating the texture. - * @param {Number} width The width to initialize the texture at. - * @param {Number} height The height to initialize the texture. - * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source for the texture data. - * @returns {WebGLTexture} - */ - createTexture: function(gl, width, height, textureImageSource) { - var texture = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - if (textureImageSource) { - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, textureImageSource); - } - else { - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); - } - return texture; - }, - - /** - * Can be optionally used to get a texture from the cache array - * - * If an existing texture is not found, a new texture is created and cached. - * - * @param {String} uniqueId A cache key to use to find an existing texture. - * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source to use to create the - * texture cache entry if one does not already exist. - */ - getCachedTexture: function(uniqueId, textureImageSource) { - if (this.textureCache[uniqueId]) { - return this.textureCache[uniqueId]; - } - else { - var texture = this.createTexture( - this.gl, textureImageSource.width, textureImageSource.height, textureImageSource); - this.textureCache[uniqueId] = texture; - return texture; - } - }, - - /** - * Clear out cached resources related to a source image that has been - * filtered previously. - * - * @param {String} cacheKey The cache key provided when the source image was filtered. - */ - evictCachesForKey: function(cacheKey) { - if (this.textureCache[cacheKey]) { - this.gl.deleteTexture(this.textureCache[cacheKey]); - delete this.textureCache[cacheKey]; - } - }, - - copyGLTo2D: copyGLTo2DDrawImage, - - /** - * Attempt to extract GPU information strings from a WebGL context. - * - * Useful information when debugging or blacklisting specific GPUs. - * - * @returns {Object} A GPU info object with renderer and vendor strings. - */ - captureGPUInfo: function() { - if (this.gpuInfo) { - return this.gpuInfo; - } - var gl = this.gl, gpuInfo = { renderer: '', vendor: '' }; - if (!gl) { - return gpuInfo; - } - var ext = gl.getExtension('WEBGL_debug_renderer_info'); - if (ext) { - var renderer = gl.getParameter(ext.UNMASKED_RENDERER_WEBGL); - var vendor = gl.getParameter(ext.UNMASKED_VENDOR_WEBGL); - if (renderer) { - gpuInfo.renderer = renderer.toLowerCase(); - } - if (vendor) { - gpuInfo.vendor = vendor.toLowerCase(); - } - } - this.gpuInfo = gpuInfo; - return gpuInfo; - }, - }; -})(); - -function resizeCanvasIfNeeded(pipelineState) { - var targetCanvas = pipelineState.targetCanvas, - width = targetCanvas.width, height = targetCanvas.height, - dWidth = pipelineState.destinationWidth, - dHeight = pipelineState.destinationHeight; - - if (width !== dWidth || height !== dHeight) { - targetCanvas.width = dWidth; - targetCanvas.height = dHeight; - } -} - -/** - * Copy an input WebGL canvas on to an output 2D canvas. - * - * The WebGL canvas is assumed to be upside down, with the top-left pixel of the - * desired output image appearing in the bottom-left corner of the WebGL canvas. - * - * @param {WebGLRenderingContext} sourceContext The WebGL context to copy from. - * @param {HTMLCanvasElement} targetCanvas The 2D target canvas to copy on to. - * @param {Object} pipelineState The 2D target canvas to copy on to. - */ -function copyGLTo2DDrawImage(gl, pipelineState) { - var glCanvas = gl.canvas, targetCanvas = pipelineState.targetCanvas, - ctx = targetCanvas.getContext('2d'); - ctx.translate(0, targetCanvas.height); // move it down again - ctx.scale(1, -1); // vertical flip - // where is my image on the big glcanvas? - var sourceY = glCanvas.height - targetCanvas.height; - ctx.drawImage(glCanvas, 0, sourceY, targetCanvas.width, targetCanvas.height, 0, 0, - targetCanvas.width, targetCanvas.height); -} - -/** - * Copy an input WebGL canvas on to an output 2D canvas using 2d canvas' putImageData - * API. Measurably faster than using ctx.drawImage in Firefox (version 54 on OSX Sierra). - * - * @param {WebGLRenderingContext} sourceContext The WebGL context to copy from. - * @param {HTMLCanvasElement} targetCanvas The 2D target canvas to copy on to. - * @param {Object} pipelineState The 2D target canvas to copy on to. - */ -function copyGLTo2DPutImageData(gl, pipelineState) { - var targetCanvas = pipelineState.targetCanvas, ctx = targetCanvas.getContext('2d'), - dWidth = pipelineState.destinationWidth, - dHeight = pipelineState.destinationHeight, - numBytes = dWidth * dHeight * 4; - - // eslint-disable-next-line no-undef - var u8 = new Uint8Array(this.imageBuffer, 0, numBytes); - // eslint-disable-next-line no-undef - var u8Clamped = new Uint8ClampedArray(this.imageBuffer, 0, numBytes); - - gl.readPixels(0, 0, dWidth, dHeight, gl.RGBA, gl.UNSIGNED_BYTE, u8); - var imgData = new ImageData(u8Clamped, dWidth, dHeight); - ctx.putImageData(imgData, 0, 0); -} - - -(function() { - - 'use strict'; - - var noop = function() {}; - - fabric.Canvas2dFilterBackend = Canvas2dFilterBackend; - - /** - * Canvas 2D filter backend. - */ - function Canvas2dFilterBackend() {}; - - Canvas2dFilterBackend.prototype = /** @lends fabric.Canvas2dFilterBackend.prototype */ { - evictCachesForKey: noop, - dispose: noop, - clearWebGLCaches: noop, - - /** - * Experimental. This object is a sort of repository of help layers used to avoid - * of recreating them during frequent filtering. If you are previewing a filter with - * a slider you probably do not want to create help layers every filter step. - * in this object there will be appended some canvases, created once, resized sometimes - * cleared never. Clearing is left to the developer. - **/ - resources: { - - }, - - /** - * Apply a set of filters against a source image and draw the filtered output - * to the provided destination canvas. - * - * @param {EnhancedFilter} filters The filter to apply. - * @param {HTMLImageElement|HTMLCanvasElement} sourceElement The source to be filtered. - * @param {Number} sourceWidth The width of the source input. - * @param {Number} sourceHeight The height of the source input. - * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn. - */ - applyFilters: function(filters, sourceElement, sourceWidth, sourceHeight, targetCanvas) { - var ctx = targetCanvas.getContext('2d'); - ctx.drawImage(sourceElement, 0, 0, sourceWidth, sourceHeight); - var imageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight); - var originalImageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight); - var pipelineState = { - sourceWidth: sourceWidth, - sourceHeight: sourceHeight, - imageData: imageData, - originalEl: sourceElement, - originalImageData: originalImageData, - canvasEl: targetCanvas, - ctx: ctx, - filterBackend: this, - }; - filters.forEach(function(filter) { filter.applyTo(pipelineState); }); - if (pipelineState.imageData.width !== sourceWidth || pipelineState.imageData.height !== sourceHeight) { - targetCanvas.width = pipelineState.imageData.width; - targetCanvas.height = pipelineState.imageData.height; - } - ctx.putImageData(pipelineState.imageData, 0, 0); - return pipelineState; - }, - - }; -})(); - - -/** - * @namespace fabric.Image.filters - * @memberOf fabric.Image - * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#image_filters} - * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} - */ -fabric.Image = fabric.Image || { }; -fabric.Image.filters = fabric.Image.filters || { }; - -/** - * Root filter class from which all filter classes inherit from - * @class fabric.Image.filters.BaseFilter - * @memberOf fabric.Image.filters - */ -fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Image.filters.BaseFilter.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'BaseFilter', - - /** - * Array of attributes to send with buffers. do not modify - * @private - */ - - vertexSource: 'attribute vec2 aPosition;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vTexCoord = aPosition;\n' + - 'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n' + - '}', - - fragmentSource: 'precision highp float;\n' + - 'varying vec2 vTexCoord;\n' + - 'uniform sampler2D uTexture;\n' + - 'void main() {\n' + - 'gl_FragColor = texture2D(uTexture, vTexCoord);\n' + - '}', - - /** - * Constructor - * @param {Object} [options] Options object - */ - initialize: function(options) { - if (options) { - this.setOptions(options); - } - }, - - /** - * Sets filter's properties from options - * @param {Object} [options] Options object - */ - setOptions: function(options) { - for (var prop in options) { - this[prop] = options[prop]; - } - }, - - /** - * Compile this filter's shader program. - * - * @param {WebGLRenderingContext} gl The GL canvas context to use for shader compilation. - * @param {String} fragmentSource fragmentShader source for compilation - * @param {String} vertexSource vertexShader source for compilation - */ - createProgram: function(gl, fragmentSource, vertexSource) { - fragmentSource = fragmentSource || this.fragmentSource; - vertexSource = vertexSource || this.vertexSource; - if (fabric.webGlPrecision !== 'highp'){ - fragmentSource = fragmentSource.replace( - /precision highp float/g, - 'precision ' + fabric.webGlPrecision + ' float' - ); - } - var vertexShader = gl.createShader(gl.VERTEX_SHADER); - gl.shaderSource(vertexShader, vertexSource); - gl.compileShader(vertexShader); - if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) { - throw new Error( - // eslint-disable-next-line prefer-template - 'Vertex shader compile error for ' + this.type + ': ' + - gl.getShaderInfoLog(vertexShader) - ); - } - - var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); - gl.shaderSource(fragmentShader, fragmentSource); - gl.compileShader(fragmentShader); - if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) { - throw new Error( - // eslint-disable-next-line prefer-template - 'Fragment shader compile error for ' + this.type + ': ' + - gl.getShaderInfoLog(fragmentShader) - ); - } - - var program = gl.createProgram(); - gl.attachShader(program, vertexShader); - gl.attachShader(program, fragmentShader); - gl.linkProgram(program); - if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - throw new Error( - // eslint-disable-next-line prefer-template - 'Shader link error for "${this.type}" ' + - gl.getProgramInfoLog(program) - ); - } - - var attributeLocations = this.getAttributeLocations(gl, program); - var uniformLocations = this.getUniformLocations(gl, program) || { }; - uniformLocations.uStepW = gl.getUniformLocation(program, 'uStepW'); - uniformLocations.uStepH = gl.getUniformLocation(program, 'uStepH'); - return { - program: program, - attributeLocations: attributeLocations, - uniformLocations: uniformLocations - }; - }, - - /** - * Return a map of attribute names to WebGLAttributeLocation objects. - * - * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program. - * @param {WebGLShaderProgram} program The shader program from which to take attribute locations. - * @returns {Object} A map of attribute names to attribute locations. - */ - getAttributeLocations: function(gl, program) { - return { - aPosition: gl.getAttribLocation(program, 'aPosition'), - }; - }, - - /** - * Return a map of uniform names to WebGLUniformLocation objects. - * - * Intended to be overridden by subclasses. - * - * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program. - * @param {WebGLShaderProgram} program The shader program from which to take uniform locations. - * @returns {Object} A map of uniform names to uniform locations. - */ - getUniformLocations: function (/* gl, program */) { - // in case i do not need any special uniform i need to return an empty object - return { }; - }, - - /** - * Send attribute data from this filter to its shader program on the GPU. - * - * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program. - * @param {Object} attributeLocations A map of shader attribute names to their locations. - */ - sendAttributeData: function(gl, attributeLocations, aPositionData) { - var attributeLocation = attributeLocations.aPosition; - var buffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, buffer); - gl.enableVertexAttribArray(attributeLocation); - gl.vertexAttribPointer(attributeLocation, 2, gl.FLOAT, false, 0, 0); - gl.bufferData(gl.ARRAY_BUFFER, aPositionData, gl.STATIC_DRAW); - }, - - _setupFrameBuffer: function(options) { - var gl = options.context, width, height; - if (options.passes > 1) { - width = options.destinationWidth; - height = options.destinationHeight; - if (options.sourceWidth !== width || options.sourceHeight !== height) { - gl.deleteTexture(options.targetTexture); - options.targetTexture = options.filterBackend.createTexture(gl, width, height); - } - gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, - options.targetTexture, 0); - } - else { - // draw last filter on canvas and not to framebuffer. - gl.bindFramebuffer(gl.FRAMEBUFFER, null); - gl.finish(); - } - }, - - _swapTextures: function(options) { - options.passes--; - options.pass++; - var temp = options.targetTexture; - options.targetTexture = options.sourceTexture; - options.sourceTexture = temp; - }, - - /** - * Generic isNeutral implementation for one parameter based filters. - * Used only in image applyFilters to discard filters that will not have an effect - * on the image - * Other filters may need their own verison ( ColorMatrix, HueRotation, gamma, ComposedFilter ) - * @param {Object} options - **/ - isNeutralState: function(/* options */) { - var main = this.mainParameter, - _class = fabric.Image.filters[this.type].prototype; - if (main) { - if (Array.isArray(_class[main])) { - for (var i = _class[main].length; i--;) { - if (this[main][i] !== _class[main][i]) { - return false; - } - } - return true; - } - else { - return _class[main] === this[main]; - } - } - else { - return false; - } - }, - - /** - * Apply this filter to the input image data provided. - * - * Determines whether to use WebGL or Canvas2D based on the options.webgl flag. - * - * @param {Object} options - * @param {Number} options.passes The number of filters remaining to be executed - * @param {Boolean} options.webgl Whether to use webgl to render the filter. - * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered. - * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn. - * @param {WebGLRenderingContext} options.context The GL context used for rendering. - * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. - */ - applyTo: function(options) { - if (options.webgl) { - this._setupFrameBuffer(options); - this.applyToWebGL(options); - this._swapTextures(options); - } - else { - this.applyTo2d(options); - } - }, - - /** - * Retrieves the cached shader. - * @param {Object} options - * @param {WebGLRenderingContext} options.context The GL context used for rendering. - * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. - */ - retrieveShader: function(options) { - if (!options.programCache.hasOwnProperty(this.type)) { - options.programCache[this.type] = this.createProgram(options.context); - } - return options.programCache[this.type]; - }, - - /** - * Apply this filter using webgl. - * - * @param {Object} options - * @param {Number} options.passes The number of filters remaining to be executed - * @param {Boolean} options.webgl Whether to use webgl to render the filter. - * @param {WebGLTexture} options.originalTexture The texture of the original input image. - * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered. - * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn. - * @param {WebGLRenderingContext} options.context The GL context used for rendering. - * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. - */ - applyToWebGL: function(options) { - var gl = options.context; - var shader = this.retrieveShader(options); - if (options.pass === 0 && options.originalTexture) { - gl.bindTexture(gl.TEXTURE_2D, options.originalTexture); - } - else { - gl.bindTexture(gl.TEXTURE_2D, options.sourceTexture); - } - gl.useProgram(shader.program); - this.sendAttributeData(gl, shader.attributeLocations, options.aPosition); - - gl.uniform1f(shader.uniformLocations.uStepW, 1 / options.sourceWidth); - gl.uniform1f(shader.uniformLocations.uStepH, 1 / options.sourceHeight); - - this.sendUniformData(gl, shader.uniformLocations); - gl.viewport(0, 0, options.destinationWidth, options.destinationHeight); - gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); - }, - - bindAdditionalTexture: function(gl, texture, textureUnit) { - gl.activeTexture(textureUnit); - gl.bindTexture(gl.TEXTURE_2D, texture); - // reset active texture to 0 as usual - gl.activeTexture(gl.TEXTURE0); - }, - - unbindAdditionalTexture: function(gl, textureUnit) { - gl.activeTexture(textureUnit); - gl.bindTexture(gl.TEXTURE_2D, null); - gl.activeTexture(gl.TEXTURE0); - }, - - getMainParameter: function() { - return this[this.mainParameter]; - }, - - setMainParameter: function(value) { - this[this.mainParameter] = value; - }, - - /** - * Send uniform data from this filter to its shader program on the GPU. - * - * Intended to be overridden by subclasses. - * - * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program. - * @param {Object} uniformLocations A map of shader uniform names to their locations. - */ - sendUniformData: function(/* gl, uniformLocations */) { - // Intentionally left blank. Override me in subclasses. - }, - - /** - * If needed by a 2d filter, this functions can create an helper canvas to be used - * remember that options.targetCanvas is available for use till end of chain. - */ - createHelpLayer: function(options) { - if (!options.helpLayer) { - var helpLayer = document.createElement('canvas'); - helpLayer.width = options.sourceWidth; - helpLayer.height = options.sourceHeight; - options.helpLayer = helpLayer; - } - }, - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - var object = { type: this.type }, mainP = this.mainParameter; - if (mainP) { - object[mainP] = this[mainP]; - } - return object; - }, - - /** - * Returns a JSON representation of an instance - * @return {Object} JSON - */ - toJSON: function() { - // delegate, not alias - return this.toObject(); - } -}); - -fabric.Image.filters.BaseFilter.fromObject = function(object, callback) { - var filter = new fabric.Image.filters[object.type](object); - callback && callback(filter); - return filter; -}; - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * Color Matrix filter class - * @class fabric.Image.filters.ColorMatrix - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.ColorMatrix#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} - * @see {@Link http://www.webwasp.co.uk/tutorials/219/Color_Matrix_Filter.php} - * @see {@Link http://phoboslab.org/log/2013/11/fast-image-filters-with-webgl} - * @example Kodachrome filter - * var filter = new fabric.Image.filters.ColorMatrix({ - * matrix: [ - 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502, - -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203, - -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946, - 0, 0, 0, 1, 0 - ] - * }); - * object.filters.push(filter); - * object.applyFilters(); - */ - filters.ColorMatrix = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.ColorMatrix.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'ColorMatrix', - - fragmentSource: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'varying vec2 vTexCoord;\n' + - 'uniform mat4 uColorMatrix;\n' + - 'uniform vec4 uConstants;\n' + - 'void main() {\n' + - 'vec4 color = texture2D(uTexture, vTexCoord);\n' + - 'color *= uColorMatrix;\n' + - 'color += uConstants;\n' + - 'gl_FragColor = color;\n' + - '}', - - /** - * Colormatrix for pixels. - * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning - * outside the -1, 1 range. - * 0.0039215686 is the part of 1 that get translated to 1 in 2d - * @param {Array} matrix array of 20 numbers. - * @default - */ - matrix: [ - 1, 0, 0, 0, 0, - 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0 - ], - - mainParameter: 'matrix', - - /** - * Lock the colormatrix on the color part, skipping alpha, manly for non webgl scenario - * to save some calculation - */ - colorsOnly: true, - - /** - * Constructor - * @param {Object} [options] Options object - */ - initialize: function(options) { - this.callSuper('initialize', options); - // create a new array instead mutating the prototype with push - this.matrix = this.matrix.slice(0); - }, - - /** - * Apply the ColorMatrix operation to a Uint8Array representing the pixels of an image. - * - * @param {Object} options - * @param {ImageData} options.imageData The Uint8Array to be filtered. - */ - applyTo2d: function(options) { - var imageData = options.imageData, - data = imageData.data, - iLen = data.length, - m = this.matrix, - r, g, b, a, i, colorsOnly = this.colorsOnly; - - for (i = 0; i < iLen; i += 4) { - r = data[i]; - g = data[i + 1]; - b = data[i + 2]; - if (colorsOnly) { - data[i] = r * m[0] + g * m[1] + b * m[2] + m[4] * 255; - data[i + 1] = r * m[5] + g * m[6] + b * m[7] + m[9] * 255; - data[i + 2] = r * m[10] + g * m[11] + b * m[12] + m[14] * 255; - } - else { - a = data[i + 3]; - data[i] = r * m[0] + g * m[1] + b * m[2] + a * m[3] + m[4] * 255; - data[i + 1] = r * m[5] + g * m[6] + b * m[7] + a * m[8] + m[9] * 255; - data[i + 2] = r * m[10] + g * m[11] + b * m[12] + a * m[13] + m[14] * 255; - data[i + 3] = r * m[15] + g * m[16] + b * m[17] + a * m[18] + m[19] * 255; - } - } - }, - - /** - * Return WebGL uniform locations for this filter's shader. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {WebGLShaderProgram} program This filter's compiled shader program. - */ - getUniformLocations: function(gl, program) { - return { - uColorMatrix: gl.getUniformLocation(program, 'uColorMatrix'), - uConstants: gl.getUniformLocation(program, 'uConstants'), - }; - }, - - /** - * Send data from this filter to its shader program's uniforms. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects - */ - sendUniformData: function(gl, uniformLocations) { - var m = this.matrix, - matrix = [ - m[0], m[1], m[2], m[3], - m[5], m[6], m[7], m[8], - m[10], m[11], m[12], m[13], - m[15], m[16], m[17], m[18] - ], - constants = [m[4], m[9], m[14], m[19]]; - gl.uniformMatrix4fv(uniformLocations.uColorMatrix, false, matrix); - gl.uniform4fv(uniformLocations.uConstants, constants); - }, - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @param {function} [callback] function to invoke after filter creation - * @return {fabric.Image.filters.ColorMatrix} Instance of fabric.Image.filters.ColorMatrix - */ - fabric.Image.filters.ColorMatrix.fromObject = fabric.Image.filters.BaseFilter.fromObject; -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * Brightness filter class - * @class fabric.Image.filters.Brightness - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.Brightness#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Brightness({ - * brightness: 0.05 - * }); - * object.filters.push(filter); - * object.applyFilters(); - */ - filters.Brightness = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Brightness.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Brightness', - - /** - * Fragment source for the brightness program - */ - fragmentSource: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform float uBrightness;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 color = texture2D(uTexture, vTexCoord);\n' + - 'color.rgb += uBrightness;\n' + - 'gl_FragColor = color;\n' + - '}', - - /** - * Brightness value, from -1 to 1. - * translated to -255 to 255 for 2d - * 0.0039215686 is the part of 1 that get translated to 1 in 2d - * @param {Number} brightness - * @default - */ - brightness: 0, - - /** - * Describe the property that is the filter parameter - * @param {String} m - * @default - */ - mainParameter: 'brightness', - - /** - * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image. - * - * @param {Object} options - * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. - */ - applyTo2d: function(options) { - if (this.brightness === 0) { - return; - } - var imageData = options.imageData, - data = imageData.data, i, len = data.length, - brightness = Math.round(this.brightness * 255); - for (i = 0; i < len; i += 4) { - data[i] = data[i] + brightness; - data[i + 1] = data[i + 1] + brightness; - data[i + 2] = data[i + 2] + brightness; - } - }, - - /** - * Return WebGL uniform locations for this filter's shader. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {WebGLShaderProgram} program This filter's compiled shader program. - */ - getUniformLocations: function(gl, program) { - return { - uBrightness: gl.getUniformLocation(program, 'uBrightness'), - }; - }, - - /** - * Send data from this filter to its shader program's uniforms. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects - */ - sendUniformData: function(gl, uniformLocations) { - gl.uniform1f(uniformLocations.uBrightness, this.brightness); - }, - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @param {function} [callback] to be invoked after filter creation - * @return {fabric.Image.filters.Brightness} Instance of fabric.Image.filters.Brightness - */ - fabric.Image.filters.Brightness.fromObject = fabric.Image.filters.BaseFilter.fromObject; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend, - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * Adapted from html5rocks article - * @class fabric.Image.filters.Convolute - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.Convolute#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} - * @example Sharpen filter - * var filter = new fabric.Image.filters.Convolute({ - * matrix: [ 0, -1, 0, - * -1, 5, -1, - * 0, -1, 0 ] - * }); - * object.filters.push(filter); - * object.applyFilters(); - * canvas.renderAll(); - * @example Blur filter - * var filter = new fabric.Image.filters.Convolute({ - * matrix: [ 1/9, 1/9, 1/9, - * 1/9, 1/9, 1/9, - * 1/9, 1/9, 1/9 ] - * }); - * object.filters.push(filter); - * object.applyFilters(); - * canvas.renderAll(); - * @example Emboss filter - * var filter = new fabric.Image.filters.Convolute({ - * matrix: [ 1, 1, 1, - * 1, 0.7, -1, - * -1, -1, -1 ] - * }); - * object.filters.push(filter); - * object.applyFilters(); - * canvas.renderAll(); - * @example Emboss filter with opaqueness - * var filter = new fabric.Image.filters.Convolute({ - * opaque: true, - * matrix: [ 1, 1, 1, - * 1, 0.7, -1, - * -1, -1, -1 ] - * }); - * object.filters.push(filter); - * object.applyFilters(); - * canvas.renderAll(); - */ - filters.Convolute = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Convolute.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Convolute', - - /* - * Opaque value (true/false) - */ - opaque: false, - - /* - * matrix for the filter, max 9x9 - */ - matrix: [0, 0, 0, 0, 1, 0, 0, 0, 0], - - /** - * Fragment source for the brightness program - */ - fragmentSource: { - Convolute_3_1: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform float uMatrix[9];\n' + - 'uniform float uStepW;\n' + - 'uniform float uStepH;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 color = vec4(0, 0, 0, 0);\n' + - 'for (float h = 0.0; h < 3.0; h+=1.0) {\n' + - 'for (float w = 0.0; w < 3.0; w+=1.0) {\n' + - 'vec2 matrixPos = vec2(uStepW * (w - 1), uStepH * (h - 1));\n' + - 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 3.0 + w)];\n' + - '}\n' + - '}\n' + - 'gl_FragColor = color;\n' + - '}', - Convolute_3_0: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform float uMatrix[9];\n' + - 'uniform float uStepW;\n' + - 'uniform float uStepH;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 color = vec4(0, 0, 0, 1);\n' + - 'for (float h = 0.0; h < 3.0; h+=1.0) {\n' + - 'for (float w = 0.0; w < 3.0; w+=1.0) {\n' + - 'vec2 matrixPos = vec2(uStepW * (w - 1.0), uStepH * (h - 1.0));\n' + - 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 3.0 + w)];\n' + - '}\n' + - '}\n' + - 'float alpha = texture2D(uTexture, vTexCoord).a;\n' + - 'gl_FragColor = color;\n' + - 'gl_FragColor.a = alpha;\n' + - '}', - Convolute_5_1: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform float uMatrix[25];\n' + - 'uniform float uStepW;\n' + - 'uniform float uStepH;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 color = vec4(0, 0, 0, 0);\n' + - 'for (float h = 0.0; h < 5.0; h+=1.0) {\n' + - 'for (float w = 0.0; w < 5.0; w+=1.0) {\n' + - 'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\n' + - 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 5.0 + w)];\n' + - '}\n' + - '}\n' + - 'gl_FragColor = color;\n' + - '}', - Convolute_5_0: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform float uMatrix[25];\n' + - 'uniform float uStepW;\n' + - 'uniform float uStepH;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 color = vec4(0, 0, 0, 1);\n' + - 'for (float h = 0.0; h < 5.0; h+=1.0) {\n' + - 'for (float w = 0.0; w < 5.0; w+=1.0) {\n' + - 'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\n' + - 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 5.0 + w)];\n' + - '}\n' + - '}\n' + - 'float alpha = texture2D(uTexture, vTexCoord).a;\n' + - 'gl_FragColor = color;\n' + - 'gl_FragColor.a = alpha;\n' + - '}', - Convolute_7_1: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform float uMatrix[49];\n' + - 'uniform float uStepW;\n' + - 'uniform float uStepH;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 color = vec4(0, 0, 0, 0);\n' + - 'for (float h = 0.0; h < 7.0; h+=1.0) {\n' + - 'for (float w = 0.0; w < 7.0; w+=1.0) {\n' + - 'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\n' + - 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 7.0 + w)];\n' + - '}\n' + - '}\n' + - 'gl_FragColor = color;\n' + - '}', - Convolute_7_0: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform float uMatrix[49];\n' + - 'uniform float uStepW;\n' + - 'uniform float uStepH;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 color = vec4(0, 0, 0, 1);\n' + - 'for (float h = 0.0; h < 7.0; h+=1.0) {\n' + - 'for (float w = 0.0; w < 7.0; w+=1.0) {\n' + - 'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\n' + - 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 7.0 + w)];\n' + - '}\n' + - '}\n' + - 'float alpha = texture2D(uTexture, vTexCoord).a;\n' + - 'gl_FragColor = color;\n' + - 'gl_FragColor.a = alpha;\n' + - '}', - Convolute_9_1: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform float uMatrix[81];\n' + - 'uniform float uStepW;\n' + - 'uniform float uStepH;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 color = vec4(0, 0, 0, 0);\n' + - 'for (float h = 0.0; h < 9.0; h+=1.0) {\n' + - 'for (float w = 0.0; w < 9.0; w+=1.0) {\n' + - 'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\n' + - 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 9.0 + w)];\n' + - '}\n' + - '}\n' + - 'gl_FragColor = color;\n' + - '}', - Convolute_9_0: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform float uMatrix[81];\n' + - 'uniform float uStepW;\n' + - 'uniform float uStepH;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 color = vec4(0, 0, 0, 1);\n' + - 'for (float h = 0.0; h < 9.0; h+=1.0) {\n' + - 'for (float w = 0.0; w < 9.0; w+=1.0) {\n' + - 'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\n' + - 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 9.0 + w)];\n' + - '}\n' + - '}\n' + - 'float alpha = texture2D(uTexture, vTexCoord).a;\n' + - 'gl_FragColor = color;\n' + - 'gl_FragColor.a = alpha;\n' + - '}', - }, - - /** - * Constructor - * @memberOf fabric.Image.filters.Convolute.prototype - * @param {Object} [options] Options object - * @param {Boolean} [options.opaque=false] Opaque value (true/false) - * @param {Array} [options.matrix] Filter matrix - */ - - - /** - * Retrieves the cached shader. - * @param {Object} options - * @param {WebGLRenderingContext} options.context The GL context used for rendering. - * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. - */ - retrieveShader: function(options) { - var size = Math.sqrt(this.matrix.length); - var cacheKey = this.type + '_' + size + '_' + (this.opaque ? 1 : 0); - var shaderSource = this.fragmentSource[cacheKey]; - if (!options.programCache.hasOwnProperty(cacheKey)) { - options.programCache[cacheKey] = this.createProgram(options.context, shaderSource); - } - return options.programCache[cacheKey]; - }, - - /** - * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image. - * - * @param {Object} options - * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. - */ - applyTo2d: function(options) { - var imageData = options.imageData, - data = imageData.data, - weights = this.matrix, - side = Math.round(Math.sqrt(weights.length)), - halfSide = Math.floor(side / 2), - sw = imageData.width, - sh = imageData.height, - output = options.ctx.createImageData(sw, sh), - dst = output.data, - // go through the destination image pixels - alphaFac = this.opaque ? 1 : 0, - r, g, b, a, dstOff, - scx, scy, srcOff, wt, - x, y, cx, cy; - - for (y = 0; y < sh; y++) { - for (x = 0; x < sw; x++) { - dstOff = (y * sw + x) * 4; - // calculate the weighed sum of the source image pixels that - // fall under the convolution matrix - r = 0; g = 0; b = 0; a = 0; - - for (cy = 0; cy < side; cy++) { - for (cx = 0; cx < side; cx++) { - scy = y + cy - halfSide; - scx = x + cx - halfSide; - - // eslint-disable-next-line max-depth - if (scy < 0 || scy > sh || scx < 0 || scx > sw) { - continue; - } - - srcOff = (scy * sw + scx) * 4; - wt = weights[cy * side + cx]; - - r += data[srcOff] * wt; - g += data[srcOff + 1] * wt; - b += data[srcOff + 2] * wt; - // eslint-disable-next-line max-depth - if (!alphaFac) { - a += data[srcOff + 3] * wt; - } - } - } - dst[dstOff] = r; - dst[dstOff + 1] = g; - dst[dstOff + 2] = b; - if (!alphaFac) { - dst[dstOff + 3] = a; - } - else { - dst[dstOff + 3] = data[dstOff + 3]; - } - } - } - options.imageData = output; - }, - - /** - * Return WebGL uniform locations for this filter's shader. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {WebGLShaderProgram} program This filter's compiled shader program. - */ - getUniformLocations: function(gl, program) { - return { - uMatrix: gl.getUniformLocation(program, 'uMatrix'), - uOpaque: gl.getUniformLocation(program, 'uOpaque'), - uHalfSize: gl.getUniformLocation(program, 'uHalfSize'), - uSize: gl.getUniformLocation(program, 'uSize'), - }; - }, - - /** - * Send data from this filter to its shader program's uniforms. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects - */ - sendUniformData: function(gl, uniformLocations) { - gl.uniform1fv(uniformLocations.uMatrix, this.matrix); - }, - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - return extend(this.callSuper('toObject'), { - opaque: this.opaque, - matrix: this.matrix - }); - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @param {function} [callback] to be invoked after filter creation - * @return {fabric.Image.filters.Convolute} Instance of fabric.Image.filters.Convolute - */ - fabric.Image.filters.Convolute.fromObject = fabric.Image.filters.BaseFilter.fromObject; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * Grayscale image filter class - * @class fabric.Image.filters.Grayscale - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Grayscale(); - * object.filters.push(filter); - * object.applyFilters(); - */ - filters.Grayscale = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Grayscale.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Grayscale', - - fragmentSource: { - average: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 color = texture2D(uTexture, vTexCoord);\n' + - 'float average = (color.r + color.b + color.g) / 3.0;\n' + - 'gl_FragColor = vec4(average, average, average, color.a);\n' + - '}', - lightness: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform int uMode;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 col = texture2D(uTexture, vTexCoord);\n' + - 'float average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\n' + - 'gl_FragColor = vec4(average, average, average, col.a);\n' + - '}', - luminosity: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform int uMode;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 col = texture2D(uTexture, vTexCoord);\n' + - 'float average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\n' + - 'gl_FragColor = vec4(average, average, average, col.a);\n' + - '}', - }, - - - /** - * Grayscale mode, between 'average', 'lightness', 'luminosity' - * @param {String} type - * @default - */ - mode: 'average', - - mainParameter: 'mode', - - /** - * Apply the Grayscale operation to a Uint8Array representing the pixels of an image. - * - * @param {Object} options - * @param {ImageData} options.imageData The Uint8Array to be filtered. - */ - applyTo2d: function(options) { - var imageData = options.imageData, - data = imageData.data, i, - len = data.length, value, - mode = this.mode; - for (i = 0; i < len; i += 4) { - if (mode === 'average') { - value = (data[i] + data[i + 1] + data[i + 2]) / 3; - } - else if (mode === 'lightness') { - value = (Math.min(data[i], data[i + 1], data[i + 2]) + - Math.max(data[i], data[i + 1], data[i + 2])) / 2; - } - else if (mode === 'luminosity') { - value = 0.21 * data[i] + 0.72 * data[i + 1] + 0.07 * data[i + 2]; - } - data[i] = value; - data[i + 1] = value; - data[i + 2] = value; - } - }, - - /** - * Retrieves the cached shader. - * @param {Object} options - * @param {WebGLRenderingContext} options.context The GL context used for rendering. - * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. - */ - retrieveShader: function(options) { - var cacheKey = this.type + '_' + this.mode; - if (!options.programCache.hasOwnProperty(cacheKey)) { - var shaderSource = this.fragmentSource[this.mode]; - options.programCache[cacheKey] = this.createProgram(options.context, shaderSource); - } - return options.programCache[cacheKey]; - }, - - /** - * Return WebGL uniform locations for this filter's shader. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {WebGLShaderProgram} program This filter's compiled shader program. - */ - getUniformLocations: function(gl, program) { - return { - uMode: gl.getUniformLocation(program, 'uMode'), - }; - }, - - /** - * Send data from this filter to its shader program's uniforms. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects - */ - sendUniformData: function(gl, uniformLocations) { - // default average mode. - var mode = 1; - gl.uniform1i(uniformLocations.uMode, mode); - }, - - /** - * Grayscale filter isNeutralState implementation - * The filter is never neutral - * on the image - **/ - isNeutralState: function() { - return false; - }, - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @param {function} [callback] to be invoked after filter creation - * @return {fabric.Image.filters.Grayscale} Instance of fabric.Image.filters.Grayscale - */ - fabric.Image.filters.Grayscale.fromObject = fabric.Image.filters.BaseFilter.fromObject; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * Invert filter class - * @class fabric.Image.filters.Invert - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Invert(); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - */ - filters.Invert = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Invert.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Invert', - - fragmentSource: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform int uInvert;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 color = texture2D(uTexture, vTexCoord);\n' + - 'if (uInvert == 1) {\n' + - 'gl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a);\n' + - '} else {\n' + - 'gl_FragColor = color;\n' + - '}\n' + - '}', - - /** - * Filter invert. if false, does nothing - * @param {Boolean} invert - * @default - */ - invert: true, - - mainParameter: 'invert', - - /** - * Apply the Invert operation to a Uint8Array representing the pixels of an image. - * - * @param {Object} options - * @param {ImageData} options.imageData The Uint8Array to be filtered. - */ - applyTo2d: function(options) { - var imageData = options.imageData, - data = imageData.data, i, - len = data.length; - for (i = 0; i < len; i += 4) { - data[i] = 255 - data[i]; - data[i + 1] = 255 - data[i + 1]; - data[i + 2] = 255 - data[i + 2]; - } - }, - - /** - * Invert filter isNeutralState implementation - * Used only in image applyFilters to discard filters that will not have an effect - * on the image - * @param {Object} options - **/ - isNeutralState: function() { - return !this.invert; - }, - - /** - * Return WebGL uniform locations for this filter's shader. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {WebGLShaderProgram} program This filter's compiled shader program. - */ - getUniformLocations: function(gl, program) { - return { - uInvert: gl.getUniformLocation(program, 'uInvert'), - }; - }, - - /** - * Send data from this filter to its shader program's uniforms. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects - */ - sendUniformData: function(gl, uniformLocations) { - gl.uniform1i(uniformLocations.uInvert, this.invert); - }, - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @param {function} [callback] to be invoked after filter creation - * @return {fabric.Image.filters.Invert} Instance of fabric.Image.filters.Invert - */ - fabric.Image.filters.Invert.fromObject = fabric.Image.filters.BaseFilter.fromObject; - - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend, - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * Noise filter class - * @class fabric.Image.filters.Noise - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.Noise#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Noise({ - * noise: 700 - * }); - * object.filters.push(filter); - * object.applyFilters(); - * canvas.renderAll(); - */ - filters.Noise = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Noise.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Noise', - - /** - * Fragment source for the noise program - */ - fragmentSource: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform float uStepH;\n' + - 'uniform float uNoise;\n' + - 'uniform float uSeed;\n' + - 'varying vec2 vTexCoord;\n' + - 'float rand(vec2 co, float seed, float vScale) {\n' + - 'return fract(sin(dot(co.xy * vScale ,vec2(12.9898 , 78.233))) * 43758.5453 * (seed + 0.01) / 2.0);\n' + - '}\n' + - 'void main() {\n' + - 'vec4 color = texture2D(uTexture, vTexCoord);\n' + - 'color.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise;\n' + - 'gl_FragColor = color;\n' + - '}', - - /** - * Describe the property that is the filter parameter - * @param {String} m - * @default - */ - mainParameter: 'noise', - - /** - * Noise value, from - * @param {Number} noise - * @default - */ - noise: 0, - - /** - * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image. - * - * @param {Object} options - * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. - */ - applyTo2d: function(options) { - if (this.noise === 0) { - return; - } - var imageData = options.imageData, - data = imageData.data, i, len = data.length, - noise = this.noise, rand; - - for (i = 0, len = data.length; i < len; i += 4) { - - rand = (0.5 - Math.random()) * noise; - - data[i] += rand; - data[i + 1] += rand; - data[i + 2] += rand; - } - }, - - /** - * Return WebGL uniform locations for this filter's shader. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {WebGLShaderProgram} program This filter's compiled shader program. - */ - getUniformLocations: function(gl, program) { - return { - uNoise: gl.getUniformLocation(program, 'uNoise'), - uSeed: gl.getUniformLocation(program, 'uSeed'), - }; - }, - - /** - * Send data from this filter to its shader program's uniforms. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects - */ - sendUniformData: function(gl, uniformLocations) { - gl.uniform1f(uniformLocations.uNoise, this.noise / 255); - gl.uniform1f(uniformLocations.uSeed, Math.random()); - }, - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - return extend(this.callSuper('toObject'), { - noise: this.noise - }); - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @param {Function} [callback] to be invoked after filter creation - * @return {fabric.Image.filters.Noise} Instance of fabric.Image.filters.Noise - */ - fabric.Image.filters.Noise.fromObject = fabric.Image.filters.BaseFilter.fromObject; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * Pixelate filter class - * @class fabric.Image.filters.Pixelate - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.Pixelate#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Pixelate({ - * blocksize: 8 - * }); - * object.filters.push(filter); - * object.applyFilters(); - */ - filters.Pixelate = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Pixelate.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Pixelate', - - blocksize: 4, - - mainParameter: 'blocksize', - - /** - * Fragment source for the Pixelate program - */ - fragmentSource: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform float uBlocksize;\n' + - 'uniform float uStepW;\n' + - 'uniform float uStepH;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'float blockW = uBlocksize * uStepW;\n' + - 'float blockH = uBlocksize * uStepW;\n' + - 'int posX = int(vTexCoord.x / blockW);\n' + - 'int posY = int(vTexCoord.y / blockH);\n' + - 'float fposX = float(posX);\n' + - 'float fposY = float(posY);\n' + - 'vec2 squareCoords = vec2(fposX * blockW, fposY * blockH);\n' + - 'vec4 color = texture2D(uTexture, squareCoords);\n' + - 'gl_FragColor = color;\n' + - '}', - - /** - * Apply the Pixelate operation to a Uint8ClampedArray representing the pixels of an image. - * - * @param {Object} options - * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. - */ - applyTo2d: function(options) { - var imageData = options.imageData, - data = imageData.data, - iLen = imageData.height, - jLen = imageData.width, - index, i, j, r, g, b, a, - _i, _j, _iLen, _jLen; - - for (i = 0; i < iLen; i += this.blocksize) { - for (j = 0; j < jLen; j += this.blocksize) { - - index = (i * 4) * jLen + (j * 4); - - r = data[index]; - g = data[index + 1]; - b = data[index + 2]; - a = data[index + 3]; - - _iLen = Math.min(i + this.blocksize, iLen); - _jLen = Math.min(j + this.blocksize, jLen); - for (_i = i; _i < _iLen; _i++) { - for (_j = j; _j < _jLen; _j++) { - index = (_i * 4) * jLen + (_j * 4); - data[index] = r; - data[index + 1] = g; - data[index + 2] = b; - data[index + 3] = a; - } - } - } - } - }, - - /** - * Indicate when the filter is not gonna apply changes to the image - **/ - isNeutralState: function() { - return this.blocksize === 1; - }, - - /** - * Return WebGL uniform locations for this filter's shader. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {WebGLShaderProgram} program This filter's compiled shader program. - */ - getUniformLocations: function(gl, program) { - return { - uBlocksize: gl.getUniformLocation(program, 'uBlocksize'), - uStepW: gl.getUniformLocation(program, 'uStepW'), - uStepH: gl.getUniformLocation(program, 'uStepH'), - }; - }, - - /** - * Send data from this filter to its shader program's uniforms. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects - */ - sendUniformData: function(gl, uniformLocations) { - gl.uniform1f(uniformLocations.uBlocksize, this.blocksize); - }, - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @param {Function} [callback] to be invoked after filter creation - * @return {fabric.Image.filters.Pixelate} Instance of fabric.Image.filters.Pixelate - */ - fabric.Image.filters.Pixelate.fromObject = fabric.Image.filters.BaseFilter.fromObject; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend, - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * Remove white filter class - * @class fabric.Image.filters.RemoveColor - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.RemoveColor#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.RemoveColor({ - * threshold: 0.2, - * }); - * object.filters.push(filter); - * object.applyFilters(); - * canvas.renderAll(); - */ - filters.RemoveColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.RemoveColor.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'RemoveColor', - - /** - * Color to remove, in any format understood by fabric.Color. - * @param {String} type - * @default - */ - color: '#FFFFFF', - - /** - * Fragment source for the brightness program - */ - fragmentSource: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform vec4 uLow;\n' + - 'uniform vec4 uHigh;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'gl_FragColor = texture2D(uTexture, vTexCoord);\n' + - 'if(all(greaterThan(gl_FragColor.rgb,uLow.rgb)) && all(greaterThan(uHigh.rgb,gl_FragColor.rgb))) {\n' + - 'gl_FragColor.a = 0.0;\n' + - '}\n' + - '}', - - /** - * distance to actual color, as value up or down from each r,g,b - * between 0 and 1 - **/ - distance: 0.02, - - /** - * For color to remove inside distance, use alpha channel for a smoother deletion - * NOT IMPLEMENTED YET - **/ - useAlpha: false, - - /** - * Constructor - * @memberOf fabric.Image.filters.RemoveWhite.prototype - * @param {Object} [options] Options object - * @param {Number} [options.color=#RRGGBB] Threshold value - * @param {Number} [options.distance=10] Distance value - */ - - /** - * Applies filter to canvas element - * @param {Object} canvasEl Canvas element to apply filter to - */ - applyTo2d: function(options) { - var imageData = options.imageData, - data = imageData.data, i, - distance = this.distance * 255, - r, g, b, - source = new fabric.Color(this.color).getSource(), - lowC = [ - source[0] - distance, - source[1] - distance, - source[2] - distance, - ], - highC = [ - source[0] + distance, - source[1] + distance, - source[2] + distance, - ]; - - - for (i = 0; i < data.length; i += 4) { - r = data[i]; - g = data[i + 1]; - b = data[i + 2]; - - if (r > lowC[0] && - g > lowC[1] && - b > lowC[2] && - r < highC[0] && - g < highC[1] && - b < highC[2]) { - data[i + 3] = 0; - } - } - }, - - /** - * Return WebGL uniform locations for this filter's shader. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {WebGLShaderProgram} program This filter's compiled shader program. - */ - getUniformLocations: function(gl, program) { - return { - uLow: gl.getUniformLocation(program, 'uLow'), - uHigh: gl.getUniformLocation(program, 'uHigh'), - }; - }, - - /** - * Send data from this filter to its shader program's uniforms. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects - */ - sendUniformData: function(gl, uniformLocations) { - var source = new fabric.Color(this.color).getSource(), - distance = parseFloat(this.distance), - lowC = [ - 0 + source[0] / 255 - distance, - 0 + source[1] / 255 - distance, - 0 + source[2] / 255 - distance, - 1 - ], - highC = [ - source[0] / 255 + distance, - source[1] / 255 + distance, - source[2] / 255 + distance, - 1 - ]; - gl.uniform4fv(uniformLocations.uLow, lowC); - gl.uniform4fv(uniformLocations.uHigh, highC); - }, - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - return extend(this.callSuper('toObject'), { - color: this.color, - distance: this.distance - }); - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @param {Function} [callback] to be invoked after filter creation - * @return {fabric.Image.filters.RemoveColor} Instance of fabric.Image.filters.RemoveWhite - */ - fabric.Image.filters.RemoveColor.fromObject = fabric.Image.filters.BaseFilter.fromObject; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - var matrices = { - Brownie: [ - 0.59970,0.34553,-0.27082,0,0.186, - -0.03770,0.86095,0.15059,0,-0.1449, - 0.24113,-0.07441,0.44972,0,-0.02965, - 0,0,0,1,0 - ], - Vintage: [ - 0.62793,0.32021,-0.03965,0,0.03784, - 0.02578,0.64411,0.03259,0,0.02926, - 0.04660,-0.08512,0.52416,0,0.02023, - 0,0,0,1,0 - ], - Kodachrome: [ - 1.12855,-0.39673,-0.03992,0,0.24991, - -0.16404,1.08352,-0.05498,0,0.09698, - -0.16786,-0.56034,1.60148,0,0.13972, - 0,0,0,1,0 - ], - Technicolor: [ - 1.91252,-0.85453,-0.09155,0,0.04624, - -0.30878,1.76589,-0.10601,0,-0.27589, - -0.23110,-0.75018,1.84759,0,0.12137, - 0,0,0,1,0 - ], - Polaroid: [ - 1.438,-0.062,-0.062,0,0, - -0.122,1.378,-0.122,0,0, - -0.016,-0.016,1.483,0,0, - 0,0,0,1,0 - ], - Sepia: [ - 0.393, 0.769, 0.189, 0, 0, - 0.349, 0.686, 0.168, 0, 0, - 0.272, 0.534, 0.131, 0, 0, - 0, 0, 0, 1, 0 - ], - BlackWhite: [ - 1.5, 1.5, 1.5, 0, -1, - 1.5, 1.5, 1.5, 0, -1, - 1.5, 1.5, 1.5, 0, -1, - 0, 0, 0, 1, 0, - ] - }; - - for (var key in matrices) { - filters[key] = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.Sepia.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: key, - - /** - * Colormatrix for the effect - * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning - * outside the -1, 1 range. - * @param {Array} matrix array of 20 numbers. - * @default - */ - matrix: matrices[key], - - /** - * Lock the matrix export for this kind of static, parameter less filters. - */ - mainParameter: false, - /** - * Lock the colormatrix on the color part, skipping alpha - */ - colorsOnly: true, - - }); - fabric.Image.filters[key].fromObject = fabric.Image.filters.BaseFilter.fromObject; - } -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - 'use strict'; - - var fabric = global.fabric, - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * Color Blend filter class - * @class fabric.Image.filter.BlendColor - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @example - * var filter = new fabric.Image.filters.BlendColor({ - * color: '#000', - * mode: 'multiply' - * }); - * - * var filter = new fabric.Image.filters.BlendImage({ - * image: fabricImageObject, - * mode: 'multiply', - * alpha: 0.5 - * }); - * object.filters.push(filter); - * object.applyFilters(); - * canvas.renderAll(); - */ - - filters.BlendColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blend.prototype */ { - type: 'BlendColor', - - /** - * Color to make the blend operation with. default to a reddish color since black or white - * gives always strong result. - **/ - color: '#F95C63', - - /** - * Blend mode for the filter: one of multiply, add, diff, screen, subtract, - * darken, lighten, overlay, exclusion, tint. - **/ - mode: 'multiply', - - /** - * alpha value. represent the strength of the blend color operation. - **/ - alpha: 1, - - /** - * Fragment source for the Multiply program - */ - fragmentSource: { - multiply: 'gl_FragColor.rgb *= uColor.rgb;\n', - screen: 'gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb);\n', - add: 'gl_FragColor.rgb += uColor.rgb;\n', - diff: 'gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb);\n', - subtract: 'gl_FragColor.rgb -= uColor.rgb;\n', - lighten: 'gl_FragColor.rgb = max(gl_FragColor.rgb, uColor.rgb);\n', - darken: 'gl_FragColor.rgb = min(gl_FragColor.rgb, uColor.rgb);\n', - exclusion: 'gl_FragColor.rgb += uColor.rgb - 2.0 * (uColor.rgb * gl_FragColor.rgb);\n', - overlay: 'if (uColor.r < 0.5) {\n' + - 'gl_FragColor.r *= 2.0 * uColor.r;\n' + - '} else {\n' + - 'gl_FragColor.r = 1.0 - 2.0 * (1.0 - gl_FragColor.r) * (1.0 - uColor.r);\n' + - '}\n' + - 'if (uColor.g < 0.5) {\n' + - 'gl_FragColor.g *= 2.0 * uColor.g;\n' + - '} else {\n' + - 'gl_FragColor.g = 1.0 - 2.0 * (1.0 - gl_FragColor.g) * (1.0 - uColor.g);\n' + - '}\n' + - 'if (uColor.b < 0.5) {\n' + - 'gl_FragColor.b *= 2.0 * uColor.b;\n' + - '} else {\n' + - 'gl_FragColor.b = 1.0 - 2.0 * (1.0 - gl_FragColor.b) * (1.0 - uColor.b);\n' + - '}\n', - tint: 'gl_FragColor.rgb *= (1.0 - uColor.a);\n' + - 'gl_FragColor.rgb += uColor.rgb;\n', - }, - - /** - * build the fragment source for the filters, joining the common part with - * the specific one. - * @param {String} mode the mode of the filter, a key of this.fragmentSource - * @return {String} the source to be compiled - * @private - */ - buildSource: function(mode) { - return 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform vec4 uColor;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 color = texture2D(uTexture, vTexCoord);\n' + - 'gl_FragColor = color;\n' + - 'if (color.a > 0.0) {\n' + - this.fragmentSource[mode] + - '}\n' + - '}'; - }, - - /** - * Retrieves the cached shader. - * @param {Object} options - * @param {WebGLRenderingContext} options.context The GL context used for rendering. - * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. - */ - retrieveShader: function(options) { - var cacheKey = this.type + '_' + this.mode, shaderSource; - if (!options.programCache.hasOwnProperty(cacheKey)) { - shaderSource = this.buildSource(this.mode); - options.programCache[cacheKey] = this.createProgram(options.context, shaderSource); - } - return options.programCache[cacheKey]; - }, - - /** - * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image. - * - * @param {Object} options - * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. - */ - applyTo2d: function(options) { - var imageData = options.imageData, - data = imageData.data, iLen = data.length, - tr, tg, tb, - r, g, b, - source, alpha1 = 1 - this.alpha; - - source = new fabric.Color(this.color).getSource(); - tr = source[0] * this.alpha; - tg = source[1] * this.alpha; - tb = source[2] * this.alpha; - - for (var i = 0; i < iLen; i += 4) { - - r = data[i]; - g = data[i + 1]; - b = data[i + 2]; - - switch (this.mode) { - case 'multiply': - data[i] = r * tr / 255; - data[i + 1] = g * tg / 255; - data[i + 2] = b * tb / 255; - break; - case 'screen': - data[i] = 255 - (255 - r) * (255 - tr) / 255; - data[i + 1] = 255 - (255 - g) * (255 - tg) / 255; - data[i + 2] = 255 - (255 - b) * (255 - tb) / 255; - break; - case 'add': - data[i] = r + tr; - data[i + 1] = g + tg; - data[i + 2] = b + tb; - break; - case 'diff': - case 'difference': - data[i] = Math.abs(r - tr); - data[i + 1] = Math.abs(g - tg); - data[i + 2] = Math.abs(b - tb); - break; - case 'subtract': - data[i] = r - tr; - data[i + 1] = g - tg; - data[i + 2] = b - tb; - break; - case 'darken': - data[i] = Math.min(r, tr); - data[i + 1] = Math.min(g, tg); - data[i + 2] = Math.min(b, tb); - break; - case 'lighten': - data[i] = Math.max(r, tr); - data[i + 1] = Math.max(g, tg); - data[i + 2] = Math.max(b, tb); - break; - case 'overlay': - data[i] = tr < 128 ? (2 * r * tr / 255) : (255 - 2 * (255 - r) * (255 - tr) / 255); - data[i + 1] = tg < 128 ? (2 * g * tg / 255) : (255 - 2 * (255 - g) * (255 - tg) / 255); - data[i + 2] = tb < 128 ? (2 * b * tb / 255) : (255 - 2 * (255 - b) * (255 - tb) / 255); - break; - case 'exclusion': - data[i] = tr + r - ((2 * tr * r) / 255); - data[i + 1] = tg + g - ((2 * tg * g) / 255); - data[i + 2] = tb + b - ((2 * tb * b) / 255); - break; - case 'tint': - data[i] = tr + r * alpha1; - data[i + 1] = tg + g * alpha1; - data[i + 2] = tb + b * alpha1; - } - } - }, - - /** - * Return WebGL uniform locations for this filter's shader. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {WebGLShaderProgram} program This filter's compiled shader program. - */ - getUniformLocations: function(gl, program) { - return { - uColor: gl.getUniformLocation(program, 'uColor'), - }; - }, - - /** - * Send data from this filter to its shader program's uniforms. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects - */ - sendUniformData: function(gl, uniformLocations) { - var source = new fabric.Color(this.color).getSource(); - source[0] = this.alpha * source[0] / 255; - source[1] = this.alpha * source[1] / 255; - source[2] = this.alpha * source[2] / 255; - source[3] = this.alpha; - gl.uniform4fv(uniformLocations.uColor, source); - }, - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - return { - type: this.type, - color: this.color, - mode: this.mode, - alpha: this.alpha - }; - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @param {function} [callback] to be invoked after filter creation - * @return {fabric.Image.filters.BlendColor} Instance of fabric.Image.filters.BlendColor - */ - fabric.Image.filters.BlendColor.fromObject = fabric.Image.filters.BaseFilter.fromObject; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - 'use strict'; - - var fabric = global.fabric, - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * Image Blend filter class - * @class fabric.Image.filter.BlendImage - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @example - * var filter = new fabric.Image.filters.BlendColor({ - * color: '#000', - * mode: 'multiply' - * }); - * - * var filter = new fabric.Image.filters.BlendImage({ - * image: fabricImageObject, - * mode: 'multiply', - * alpha: 0.5 - * }); - * object.filters.push(filter); - * object.applyFilters(); - * canvas.renderAll(); - */ - - filters.BlendImage = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.BlendImage.prototype */ { - type: 'BlendImage', - - /** - * Color to make the blend operation with. default to a reddish color since black or white - * gives always strong result. - **/ - image: null, - - /** - * Blend mode for the filter: one of multiply, add, diff, screen, subtract, - * darken, lighten, overlay, exclusion, tint. - **/ - mode: 'multiply', - - /** - * alpha value. represent the strength of the blend image operation. - * not implemented. - **/ - alpha: 1, - - vertexSource: 'attribute vec2 aPosition;\n' + - 'varying vec2 vTexCoord;\n' + - 'varying vec2 vTexCoord2;\n' + - 'uniform mat3 uTransformMatrix;\n' + - 'void main() {\n' + - 'vTexCoord = aPosition;\n' + - 'vTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy;\n' + - 'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n' + - '}', - - /** - * Fragment source for the Multiply program - */ - fragmentSource: { - multiply: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform sampler2D uImage;\n' + - 'uniform vec4 uColor;\n' + - 'varying vec2 vTexCoord;\n' + - 'varying vec2 vTexCoord2;\n' + - 'void main() {\n' + - 'vec4 color = texture2D(uTexture, vTexCoord);\n' + - 'vec4 color2 = texture2D(uImage, vTexCoord2);\n' + - 'color.rgba *= color2.rgba;\n' + - 'gl_FragColor = color;\n' + - '}', - mask: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform sampler2D uImage;\n' + - 'uniform vec4 uColor;\n' + - 'varying vec2 vTexCoord;\n' + - 'varying vec2 vTexCoord2;\n' + - 'void main() {\n' + - 'vec4 color = texture2D(uTexture, vTexCoord);\n' + - 'vec4 color2 = texture2D(uImage, vTexCoord2);\n' + - 'color.a = color2.a;\n' + - 'gl_FragColor = color;\n' + - '}', - }, - - /** - * Retrieves the cached shader. - * @param {Object} options - * @param {WebGLRenderingContext} options.context The GL context used for rendering. - * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. - */ - retrieveShader: function(options) { - var cacheKey = this.type + '_' + this.mode; - var shaderSource = this.fragmentSource[this.mode]; - if (!options.programCache.hasOwnProperty(cacheKey)) { - options.programCache[cacheKey] = this.createProgram(options.context, shaderSource); - } - return options.programCache[cacheKey]; - }, - - applyToWebGL: function(options) { - // load texture to blend. - var gl = options.context, - texture = this.createTexture(options.filterBackend, this.image); - this.bindAdditionalTexture(gl, texture, gl.TEXTURE1); - this.callSuper('applyToWebGL', options); - this.unbindAdditionalTexture(gl, gl.TEXTURE1); - }, - - createTexture: function(backend, image) { - return backend.getCachedTexture(image.cacheKey, image._element); - }, - - /** - * Calculate a transformMatrix to adapt the image to blend over - * @param {Object} options - * @param {WebGLRenderingContext} options.context The GL context used for rendering. - * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. - */ - calculateMatrix: function() { - var image = this.image, - width = image._element.width, - height = image._element.height; - return [ - 1 / image.scaleX, 0, 0, - 0, 1 / image.scaleY, 0, - -image.left / width, -image.top / height, 1 - ]; - }, - - /** - * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image. - * - * @param {Object} options - * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. - */ - applyTo2d: function(options) { - var imageData = options.imageData, - resources = options.filterBackend.resources, - data = imageData.data, iLen = data.length, - width = imageData.width, - height = imageData.height, - tr, tg, tb, ta, - r, g, b, a, - canvas1, context, image = this.image, blendData; - - if (!resources.blendImage) { - resources.blendImage = fabric.util.createCanvasElement(); - } - canvas1 = resources.blendImage; - context = canvas1.getContext('2d'); - if (canvas1.width !== width || canvas1.height !== height) { - canvas1.width = width; - canvas1.height = height; - } - else { - context.clearRect(0, 0, width, height); - } - context.setTransform(image.scaleX, 0, 0, image.scaleY, image.left, image.top); - context.drawImage(image._element, 0, 0, width, height); - blendData = context.getImageData(0, 0, width, height).data; - for (var i = 0; i < iLen; i += 4) { - - r = data[i]; - g = data[i + 1]; - b = data[i + 2]; - a = data[i + 3]; - - tr = blendData[i]; - tg = blendData[i + 1]; - tb = blendData[i + 2]; - ta = blendData[i + 3]; - - switch (this.mode) { - case 'multiply': - data[i] = r * tr / 255; - data[i + 1] = g * tg / 255; - data[i + 2] = b * tb / 255; - data[i + 3] = a * ta / 255; - break; - case 'mask': - data[i + 3] = ta; - break; - } - } - }, - - /** - * Return WebGL uniform locations for this filter's shader. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {WebGLShaderProgram} program This filter's compiled shader program. - */ - getUniformLocations: function(gl, program) { - return { - uTransformMatrix: gl.getUniformLocation(program, 'uTransformMatrix'), - uImage: gl.getUniformLocation(program, 'uImage'), - }; - }, - - /** - * Send data from this filter to its shader program's uniforms. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects - */ - sendUniformData: function(gl, uniformLocations) { - var matrix = this.calculateMatrix(); - gl.uniform1i(uniformLocations.uImage, 1); // texture unit 1. - gl.uniformMatrix3fv(uniformLocations.uTransformMatrix, false, matrix); - }, - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - return { - type: this.type, - image: this.image && this.image.toObject(), - mode: this.mode, - alpha: this.alpha - }; - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @param {function} callback to be invoked after filter creation - * @return {fabric.Image.filters.BlendImage} Instance of fabric.Image.filters.BlendImage - */ - fabric.Image.filters.BlendImage.fromObject = function(object, callback) { - fabric.Image.fromObject(object.image, function(image) { - var options = fabric.util.object.clone(object); - options.image = image; - callback(new fabric.Image.filters.BlendImage(options)); - }); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), pow = Math.pow, floor = Math.floor, - sqrt = Math.sqrt, abs = Math.abs, round = Math.round, sin = Math.sin, - ceil = Math.ceil, - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * Resize image filter class - * @class fabric.Image.filters.Resize - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Resize(); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - */ - filters.Resize = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Resize.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Resize', - - /** - * Resize type - * for webgl resizeType is just lanczos, for canvas2d can be: - * bilinear, hermite, sliceHack, lanczos. - * @param {String} resizeType - * @default - */ - resizeType: 'hermite', - - /** - * Scale factor for resizing, x axis - * @param {Number} scaleX - * @default - */ - scaleX: 1, - - /** - * Scale factor for resizing, y axis - * @param {Number} scaleY - * @default - */ - scaleY: 1, - - /** - * LanczosLobes parameter for lanczos filter, valid for resizeType lanczos - * @param {Number} lanczosLobes - * @default - */ - lanczosLobes: 3, - - - /** - * Return WebGL uniform locations for this filter's shader. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {WebGLShaderProgram} program This filter's compiled shader program. - */ - getUniformLocations: function(gl, program) { - return { - uDelta: gl.getUniformLocation(program, 'uDelta'), - uTaps: gl.getUniformLocation(program, 'uTaps'), - }; - }, - - /** - * Send data from this filter to its shader program's uniforms. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects - */ - sendUniformData: function(gl, uniformLocations) { - gl.uniform2fv(uniformLocations.uDelta, this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height]); - gl.uniform1fv(uniformLocations.uTaps, this.taps); - }, - - /** - * Retrieves the cached shader. - * @param {Object} options - * @param {WebGLRenderingContext} options.context The GL context used for rendering. - * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. - */ - retrieveShader: function(options) { - var filterWindow = this.getFilterWindow(), cacheKey = this.type + '_' + filterWindow; - if (!options.programCache.hasOwnProperty(cacheKey)) { - var fragmentShader = this.generateShader(filterWindow); - options.programCache[cacheKey] = this.createProgram(options.context, fragmentShader); - } - return options.programCache[cacheKey]; - }, - - getFilterWindow: function() { - var scale = this.tempScale; - return Math.ceil(this.lanczosLobes / scale); - }, - - getTaps: function() { - var lobeFunction = this.lanczosCreate(this.lanczosLobes), scale = this.tempScale, - filterWindow = this.getFilterWindow(), taps = new Array(filterWindow); - for (var i = 1; i <= filterWindow; i++) { - taps[i - 1] = lobeFunction(i * scale); - } - return taps; - }, - - /** - * Generate vertex and shader sources from the necessary steps numbers - * @param {Number} filterWindow - */ - generateShader: function(filterWindow) { - var offsets = new Array(filterWindow), - fragmentShader = this.fragmentSourceTOP, filterWindow; - - for (var i = 1; i <= filterWindow; i++) { - offsets[i - 1] = i + '.0 * uDelta'; - } - - fragmentShader += 'uniform float uTaps[' + filterWindow + '];\n'; - fragmentShader += 'void main() {\n'; - fragmentShader += ' vec4 color = texture2D(uTexture, vTexCoord);\n'; - fragmentShader += ' float sum = 1.0;\n'; - - offsets.forEach(function(offset, i) { - fragmentShader += ' color += texture2D(uTexture, vTexCoord + ' + offset + ') * uTaps[' + i + '];\n'; - fragmentShader += ' color += texture2D(uTexture, vTexCoord - ' + offset + ') * uTaps[' + i + '];\n'; - fragmentShader += ' sum += 2.0 * uTaps[' + i + '];\n'; - }); - fragmentShader += ' gl_FragColor = color / sum;\n'; - fragmentShader += '}'; - return fragmentShader; - }, - - fragmentSourceTOP: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform vec2 uDelta;\n' + - 'varying vec2 vTexCoord;\n', - - /** - * Apply the resize filter to the image - * Determines whether to use WebGL or Canvas2D based on the options.webgl flag. - * - * @param {Object} options - * @param {Number} options.passes The number of filters remaining to be executed - * @param {Boolean} options.webgl Whether to use webgl to render the filter. - * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered. - * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn. - * @param {WebGLRenderingContext} options.context The GL context used for rendering. - * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. - */ - applyTo: function(options) { - if (options.webgl) { - options.passes++; - this.width = options.sourceWidth; - this.horizontal = true; - this.dW = Math.round(this.width * this.scaleX); - this.dH = options.sourceHeight; - this.tempScale = this.dW / this.width; - this.taps = this.getTaps(); - options.destinationWidth = this.dW; - this._setupFrameBuffer(options); - this.applyToWebGL(options); - this._swapTextures(options); - options.sourceWidth = options.destinationWidth; - - this.height = options.sourceHeight; - this.horizontal = false; - this.dH = Math.round(this.height * this.scaleY); - this.tempScale = this.dH / this.height; - this.taps = this.getTaps(); - options.destinationHeight = this.dH; - this._setupFrameBuffer(options); - this.applyToWebGL(options); - this._swapTextures(options); - options.sourceHeight = options.destinationHeight; - } - else { - this.applyTo2d(options); - } - }, - - isNeutralState: function() { - return this.scaleX === 1 && this.scaleY === 1; - }, - - lanczosCreate: function(lobes) { - return function(x) { - if (x >= lobes || x <= -lobes) { - return 0.0; - } - if (x < 1.19209290E-07 && x > -1.19209290E-07) { - return 1.0; - } - x *= Math.PI; - var xx = x / lobes; - return (sin(x) / x) * sin(xx) / xx; - }; - }, - - /** - * Applies filter to canvas element - * @memberOf fabric.Image.filters.Resize.prototype - * @param {Object} canvasEl Canvas element to apply filter to - * @param {Number} scaleX - * @param {Number} scaleY - */ - applyTo2d: function(options) { - var imageData = options.imageData, - scaleX = this.scaleX, - scaleY = this.scaleY; - - this.rcpScaleX = 1 / scaleX; - this.rcpScaleY = 1 / scaleY; - - var oW = imageData.width, oH = imageData.height, - dW = round(oW * scaleX), dH = round(oH * scaleY), - newData; - - if (this.resizeType === 'sliceHack') { - newData = this.sliceByTwo(options, oW, oH, dW, dH); - } - else if (this.resizeType === 'hermite') { - newData = this.hermiteFastResize(options, oW, oH, dW, dH); - } - else if (this.resizeType === 'bilinear') { - newData = this.bilinearFiltering(options, oW, oH, dW, dH); - } - else if (this.resizeType === 'lanczos') { - newData = this.lanczosResize(options, oW, oH, dW, dH); - } - options.imageData = newData; - }, - - /** - * Filter sliceByTwo - * @param {Object} canvasEl Canvas element to apply filter to - * @param {Number} oW Original Width - * @param {Number} oH Original Height - * @param {Number} dW Destination Width - * @param {Number} dH Destination Height - * @returns {ImageData} - */ - sliceByTwo: function(options, oW, oH, dW, dH) { - var imageData = options.imageData, - mult = 0.5, doneW = false, doneH = false, stepW = oW * mult, - stepH = oH * mult, resources = fabric.filterBackend.resources, - tmpCanvas, ctx, sX = 0, sY = 0, dX = oW, dY = 0; - if (!resources.sliceByTwo) { - resources.sliceByTwo = document.createElement('canvas'); - } - tmpCanvas = resources.sliceByTwo; - if (tmpCanvas.width < oW * 1.5 || tmpCanvas.height < oH) { - tmpCanvas.width = oW * 1.5; - tmpCanvas.height = oH; - } - ctx = tmpCanvas.getContext('2d'); - ctx.clearRect(0, 0, oW * 1.5, oH); - ctx.putImageData(imageData, 0, 0); - - dW = floor(dW); - dH = floor(dH); - - while (!doneW || !doneH) { - oW = stepW; - oH = stepH; - if (dW < floor(stepW * mult)) { - stepW = floor(stepW * mult); - } - else { - stepW = dW; - doneW = true; - } - if (dH < floor(stepH * mult)) { - stepH = floor(stepH * mult); - } - else { - stepH = dH; - doneH = true; - } - ctx.drawImage(tmpCanvas, sX, sY, oW, oH, dX, dY, stepW, stepH); - sX = dX; - sY = dY; - dY += stepH; - } - return ctx.getImageData(sX, sY, dW, dH); - }, - - /** - * Filter lanczosResize - * @param {Object} canvasEl Canvas element to apply filter to - * @param {Number} oW Original Width - * @param {Number} oH Original Height - * @param {Number} dW Destination Width - * @param {Number} dH Destination Height - * @returns {ImageData} - */ - lanczosResize: function(options, oW, oH, dW, dH) { - - function process(u) { - var v, i, weight, idx, a, red, green, - blue, alpha, fX, fY; - center.x = (u + 0.5) * ratioX; - icenter.x = floor(center.x); - for (v = 0; v < dH; v++) { - center.y = (v + 0.5) * ratioY; - icenter.y = floor(center.y); - a = 0; red = 0; green = 0; blue = 0; alpha = 0; - for (i = icenter.x - range2X; i <= icenter.x + range2X; i++) { - if (i < 0 || i >= oW) { - continue; - } - fX = floor(1000 * abs(i - center.x)); - if (!cacheLanc[fX]) { - cacheLanc[fX] = { }; - } - for (var j = icenter.y - range2Y; j <= icenter.y + range2Y; j++) { - if (j < 0 || j >= oH) { - continue; - } - fY = floor(1000 * abs(j - center.y)); - if (!cacheLanc[fX][fY]) { - cacheLanc[fX][fY] = lanczos(sqrt(pow(fX * rcpRatioX, 2) + pow(fY * rcpRatioY, 2)) / 1000); - } - weight = cacheLanc[fX][fY]; - if (weight > 0) { - idx = (j * oW + i) * 4; - a += weight; - red += weight * srcData[idx]; - green += weight * srcData[idx + 1]; - blue += weight * srcData[idx + 2]; - alpha += weight * srcData[idx + 3]; - } - } - } - idx = (v * dW + u) * 4; - destData[idx] = red / a; - destData[idx + 1] = green / a; - destData[idx + 2] = blue / a; - destData[idx + 3] = alpha / a; - } - - if (++u < dW) { - return process(u); - } - else { - return destImg; - } - } - - var srcData = options.imageData.data, - destImg = options.ctx.createImageData(dW, dH), - destData = destImg.data, - lanczos = this.lanczosCreate(this.lanczosLobes), - ratioX = this.rcpScaleX, ratioY = this.rcpScaleY, - rcpRatioX = 2 / this.rcpScaleX, rcpRatioY = 2 / this.rcpScaleY, - range2X = ceil(ratioX * this.lanczosLobes / 2), - range2Y = ceil(ratioY * this.lanczosLobes / 2), - cacheLanc = { }, center = { }, icenter = { }; - - return process(0); - }, - - /** - * bilinearFiltering - * @param {Object} canvasEl Canvas element to apply filter to - * @param {Number} oW Original Width - * @param {Number} oH Original Height - * @param {Number} dW Destination Width - * @param {Number} dH Destination Height - * @returns {ImageData} - */ - bilinearFiltering: function(options, oW, oH, dW, dH) { - var a, b, c, d, x, y, i, j, xDiff, yDiff, chnl, - color, offset = 0, origPix, ratioX = this.rcpScaleX, - ratioY = this.rcpScaleY, - w4 = 4 * (oW - 1), img = options.imageData, - pixels = img.data, destImage = options.ctx.createImageData(dW, dH), - destPixels = destImage.data; - for (i = 0; i < dH; i++) { - for (j = 0; j < dW; j++) { - x = floor(ratioX * j); - y = floor(ratioY * i); - xDiff = ratioX * j - x; - yDiff = ratioY * i - y; - origPix = 4 * (y * oW + x); - - for (chnl = 0; chnl < 4; chnl++) { - a = pixels[origPix + chnl]; - b = pixels[origPix + 4 + chnl]; - c = pixels[origPix + w4 + chnl]; - d = pixels[origPix + w4 + 4 + chnl]; - color = a * (1 - xDiff) * (1 - yDiff) + b * xDiff * (1 - yDiff) + - c * yDiff * (1 - xDiff) + d * xDiff * yDiff; - destPixels[offset++] = color; - } - } - } - return destImage; - }, - - /** - * hermiteFastResize - * @param {Object} canvasEl Canvas element to apply filter to - * @param {Number} oW Original Width - * @param {Number} oH Original Height - * @param {Number} dW Destination Width - * @param {Number} dH Destination Height - * @returns {ImageData} - */ - hermiteFastResize: function(options, oW, oH, dW, dH) { - var ratioW = this.rcpScaleX, ratioH = this.rcpScaleY, - ratioWHalf = ceil(ratioW / 2), - ratioHHalf = ceil(ratioH / 2), - img = options.imageData, data = img.data, - img2 = options.ctx.createImageData(dW, dH), data2 = img2.data; - for (var j = 0; j < dH; j++) { - for (var i = 0; i < dW; i++) { - var x2 = (i + j * dW) * 4, weight = 0, weights = 0, weightsAlpha = 0, - gxR = 0, gxG = 0, gxB = 0, gxA = 0, centerY = (j + 0.5) * ratioH; - for (var yy = floor(j * ratioH); yy < (j + 1) * ratioH; yy++) { - var dy = abs(centerY - (yy + 0.5)) / ratioHHalf, - centerX = (i + 0.5) * ratioW, w0 = dy * dy; - for (var xx = floor(i * ratioW); xx < (i + 1) * ratioW; xx++) { - var dx = abs(centerX - (xx + 0.5)) / ratioWHalf, - w = sqrt(w0 + dx * dx); - /* eslint-disable max-depth */ - if (w > 1 && w < -1) { - continue; - } - //hermite filter - weight = 2 * w * w * w - 3 * w * w + 1; - if (weight > 0) { - dx = 4 * (xx + yy * oW); - //alpha - gxA += weight * data[dx + 3]; - weightsAlpha += weight; - //colors - if (data[dx + 3] < 255) { - weight = weight * data[dx + 3] / 250; - } - gxR += weight * data[dx]; - gxG += weight * data[dx + 1]; - gxB += weight * data[dx + 2]; - weights += weight; - } - /* eslint-enable max-depth */ - } - } - data2[x2] = gxR / weights; - data2[x2 + 1] = gxG / weights; - data2[x2 + 2] = gxB / weights; - data2[x2 + 3] = gxA / weightsAlpha; - } - } - return img2; - }, - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - return { - type: this.type, - scaleX: this.scaleX, - scaleY: this.scaleY, - resizeType: this.resizeType, - lanczosLobes: this.lanczosLobes - }; - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @param {Function} [callback] to be invoked after filter creation - * @return {fabric.Image.filters.Resize} Instance of fabric.Image.filters.Resize - */ - fabric.Image.filters.Resize.fromObject = fabric.Image.filters.BaseFilter.fromObject; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * Contrast filter class - * @class fabric.Image.filters.Contrast - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.Contrast#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Contrast({ - * contrast: 40 - * }); - * object.filters.push(filter); - * object.applyFilters(); - */ - filters.Contrast = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Contrast.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Contrast', - - fragmentSource: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform float uContrast;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 color = texture2D(uTexture, vTexCoord);\n' + - 'float contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\n' + - 'color.rgb = contrastF * (color.rgb - 0.5) + 0.5;\n' + - 'gl_FragColor = color;\n' + - '}', - - contrast: 0, - - mainParameter: 'contrast', - - /** - * Constructor - * @memberOf fabric.Image.filters.Contrast.prototype - * @param {Object} [options] Options object - * @param {Number} [options.contrast=0] Value to contrast the image up (-1...1) - */ - - /** - * Apply the Contrast operation to a Uint8Array representing the pixels of an image. - * - * @param {Object} options - * @param {ImageData} options.imageData The Uint8Array to be filtered. - */ - applyTo2d: function(options) { - if (this.contrast === 0) { - return; - } - var imageData = options.imageData, i, len, - data = imageData.data, len = data.length, - contrast = Math.floor(this.contrast * 255), - contrastF = 259 * (contrast + 255) / (255 * (259 - contrast)); - - for (i = 0; i < len; i += 4) { - data[i] = contrastF * (data[i] - 128) + 128; - data[i + 1] = contrastF * (data[i + 1] - 128) + 128; - data[i + 2] = contrastF * (data[i + 2] - 128) + 128; - } - }, - - /** - * Return WebGL uniform locations for this filter's shader. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {WebGLShaderProgram} program This filter's compiled shader program. - */ - getUniformLocations: function(gl, program) { - return { - uContrast: gl.getUniformLocation(program, 'uContrast'), - }; - }, - - /** - * Send data from this filter to its shader program's uniforms. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects - */ - sendUniformData: function(gl, uniformLocations) { - gl.uniform1f(uniformLocations.uContrast, this.contrast); - }, - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @param {function} [callback] to be invoked after filter creation - * @return {fabric.Image.filters.Contrast} Instance of fabric.Image.filters.Contrast - */ - fabric.Image.filters.Contrast.fromObject = fabric.Image.filters.BaseFilter.fromObject; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * Saturate filter class - * @class fabric.Image.filters.Saturation - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.Saturation#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Saturation({ - * saturation: 100 - * }); - * object.filters.push(filter); - * object.applyFilters(); - */ - filters.Saturation = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Saturation.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Saturation', - - fragmentSource: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform float uSaturation;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 color = texture2D(uTexture, vTexCoord);\n' + - 'float rgMax = max(color.r, color.g);\n' + - 'float rgbMax = max(rgMax, color.b);\n' + - 'color.r += rgbMax != color.r ? (rgbMax - color.r) * uSaturation : 0.00;\n' + - 'color.g += rgbMax != color.g ? (rgbMax - color.g) * uSaturation : 0.00;\n' + - 'color.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00;\n' + - 'gl_FragColor = color;\n' + - '}', - - saturation: 0, - - mainParameter: 'saturation', - - /** - * Constructor - * @memberOf fabric.Image.filters.Saturate.prototype - * @param {Object} [options] Options object - * @param {Number} [options.saturate=0] Value to saturate the image (-1...1) - */ - - /** - * Apply the Saturation operation to a Uint8ClampedArray representing the pixels of an image. - * - * @param {Object} options - * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. - */ - applyTo2d: function(options) { - if (this.saturation === 0) { - return; - } - var imageData = options.imageData, - data = imageData.data, len = data.length, - adjust = -this.saturation, i, max; - - for (i = 0; i < len; i += 4) { - max = Math.max(data[i], data[i + 1], data[i + 2]); - data[i] += max !== data[i] ? (max - data[i]) * adjust : 0; - data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * adjust : 0; - data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * adjust : 0; - } - }, - - /** - * Return WebGL uniform locations for this filter's shader. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {WebGLShaderProgram} program This filter's compiled shader program. - */ - getUniformLocations: function(gl, program) { - return { - uSaturation: gl.getUniformLocation(program, 'uSaturation'), - }; - }, - - /** - * Send data from this filter to its shader program's uniforms. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects - */ - sendUniformData: function(gl, uniformLocations) { - gl.uniform1f(uniformLocations.uSaturation, -this.saturation); - }, - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @param {Function} [callback] to be invoked after filter creation - * @return {fabric.Image.filters.Saturation} Instance of fabric.Image.filters.Saturate - */ - fabric.Image.filters.Saturation.fromObject = fabric.Image.filters.BaseFilter.fromObject; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * Blur filter class - * @class fabric.Image.filters.Blur - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.Blur#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Blur({ - * blur: 0.5 - * }); - * object.filters.push(filter); - * object.applyFilters(); - * canvas.renderAll(); - */ - filters.Blur = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blur.prototype */ { - - type: 'Blur', - - /* -'gl_FragColor = vec4(0.0);', -'gl_FragColor += texture2D(texture, vTexCoord + -7 * uDelta)*0.0044299121055113265;', -'gl_FragColor += texture2D(texture, vTexCoord + -6 * uDelta)*0.00895781211794;', -'gl_FragColor += texture2D(texture, vTexCoord + -5 * uDelta)*0.0215963866053;', -'gl_FragColor += texture2D(texture, vTexCoord + -4 * uDelta)*0.0443683338718;', -'gl_FragColor += texture2D(texture, vTexCoord + -3 * uDelta)*0.0776744219933;', -'gl_FragColor += texture2D(texture, vTexCoord + -2 * uDelta)*0.115876621105;', -'gl_FragColor += texture2D(texture, vTexCoord + -1 * uDelta)*0.147308056121;', -'gl_FragColor += texture2D(texture, vTexCoord )*0.159576912161;', -'gl_FragColor += texture2D(texture, vTexCoord + 1 * uDelta)*0.147308056121;', -'gl_FragColor += texture2D(texture, vTexCoord + 2 * uDelta)*0.115876621105;', -'gl_FragColor += texture2D(texture, vTexCoord + 3 * uDelta)*0.0776744219933;', -'gl_FragColor += texture2D(texture, vTexCoord + 4 * uDelta)*0.0443683338718;', -'gl_FragColor += texture2D(texture, vTexCoord + 5 * uDelta)*0.0215963866053;', -'gl_FragColor += texture2D(texture, vTexCoord + 6 * uDelta)*0.00895781211794;', -'gl_FragColor += texture2D(texture, vTexCoord + 7 * uDelta)*0.0044299121055113265;', -*/ - - /* eslint-disable max-len */ - fragmentSource: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform vec2 uDelta;\n' + - 'varying vec2 vTexCoord;\n' + - 'const float nSamples = 15.0;\n' + - 'vec3 v3offset = vec3(12.9898, 78.233, 151.7182);\n' + - 'float random(vec3 scale) {\n' + - /* use the fragment position for a different seed per-pixel */ - 'return fract(sin(dot(gl_FragCoord.xyz, scale)) * 43758.5453);\n' + - '}\n' + - 'void main() {\n' + - 'vec4 color = vec4(0.0);\n' + - 'float total = 0.0;\n' + - 'float offset = random(v3offset);\n' + - 'for (float t = -nSamples; t <= nSamples; t++) {\n' + - 'float percent = (t + offset - 0.5) / nSamples;\n' + - 'float weight = 1.0 - abs(percent);\n' + - 'color += texture2D(uTexture, vTexCoord + uDelta * percent) * weight;\n' + - 'total += weight;\n' + - '}\n' + - 'gl_FragColor = color / total;\n' + - '}', - /* eslint-enable max-len */ - - /** - * blur value, in percentage of image dimensions. - * specific to keep the image blur constant at different resolutions - * range bewteen 0 and 1. - */ - blur: 0, - - mainParameter: 'blur', - - applyTo: function(options) { - if (options.webgl) { - // this aspectRatio is used to give the same blur to vertical and horizontal - this.aspectRatio = options.sourceWidth / options.sourceHeight; - options.passes++; - this._setupFrameBuffer(options); - this.horizontal = true; - this.applyToWebGL(options); - this._swapTextures(options); - this._setupFrameBuffer(options); - this.horizontal = false; - this.applyToWebGL(options); - this._swapTextures(options); - } - else { - this.applyTo2d(options); - } - }, - - applyTo2d: function(options) { - // paint canvasEl with current image data. - //options.ctx.putImageData(options.imageData, 0, 0); - options.imageData = this.simpleBlur(options); - }, - - simpleBlur: function(options) { - var resources = options.filterBackend.resources, canvas1, canvas2, - width = options.imageData.width, - height = options.imageData.height; - - if (!resources.blurLayer1) { - resources.blurLayer1 = fabric.util.createCanvasElement(); - resources.blurLayer2 = fabric.util.createCanvasElement(); - } - canvas1 = resources.blurLayer1; - canvas2 = resources.blurLayer2; - if (canvas1.width !== width || canvas1.height !== height) { - canvas2.width = canvas1.width = width; - canvas2.height = canvas1.height = height; - } - var ctx1 = canvas1.getContext('2d'), - ctx2 = canvas2.getContext('2d'), - nSamples = 15, - random, percent, j, i, - blur = this.blur * 0.06 * 0.5; - - // load first canvas - ctx1.putImageData(options.imageData, 0, 0); - ctx2.clearRect(0, 0, width, height); - - for (i = -nSamples; i <= nSamples; i++) { - random = (Math.random() - 0.5) / 4; - percent = i / nSamples; - j = blur * percent * width + random; - ctx2.globalAlpha = 1 - Math.abs(percent); - ctx2.drawImage(canvas1, j, random); - ctx1.drawImage(canvas2, 0, 0); - ctx2.globalAlpha = 1; - ctx2.clearRect(0, 0, canvas2.width, canvas2.height); - } - for (i = -nSamples; i <= nSamples; i++) { - random = (Math.random() - 0.5) / 4; - percent = i / nSamples; - j = blur * percent * height + random; - ctx2.globalAlpha = 1 - Math.abs(percent); - ctx2.drawImage(canvas1, random, j); - ctx1.drawImage(canvas2, 0, 0); - ctx2.globalAlpha = 1; - ctx2.clearRect(0, 0, canvas2.width, canvas2.height); - } - options.ctx.drawImage(canvas1, 0, 0); - var newImageData = options.ctx.getImageData(0, 0, canvas1.width, canvas1.height); - ctx1.globalAlpha = 1; - ctx1.clearRect(0, 0, canvas1.width, canvas1.height); - return newImageData; - }, - - /** - * Return WebGL uniform locations for this filter's shader. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {WebGLShaderProgram} program This filter's compiled shader program. - */ - getUniformLocations: function(gl, program) { - return { - delta: gl.getUniformLocation(program, 'uDelta'), - }; - }, - - /** - * Send data from this filter to its shader program's uniforms. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects - */ - sendUniformData: function(gl, uniformLocations) { - var delta = this.chooseRightDelta(); - gl.uniform2fv(uniformLocations.delta, delta); - }, - - /** - * choose right value of image percentage to blur with - * @returns {Array} a numeric array with delta values - */ - chooseRightDelta: function() { - var blurScale = 1, delta = [0, 0], blur; - if (this.horizontal) { - if (this.aspectRatio > 1) { - // image is wide, i want to shrink radius horizontal - blurScale = 1 / this.aspectRatio; - } - } - else { - if (this.aspectRatio < 1) { - // image is tall, i want to shrink radius vertical - blurScale = this.aspectRatio; - } - } - blur = blurScale * this.blur * 0.12; - if (this.horizontal) { - delta[0] = blur; - } - else { - delta[1] = blur; - } - return delta; - }, - }); - - /** - * Deserialize a JSON definition of a BlurFilter into a concrete instance. - */ - filters.Blur.fromObject = fabric.Image.filters.BaseFilter.fromObject; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * Gamma filter class - * @class fabric.Image.filters.Gamma - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.Gamma#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Gamma({ - * brightness: 200 - * }); - * object.filters.push(filter); - * object.applyFilters(); - */ - filters.Gamma = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Gamma.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Gamma', - - fragmentSource: 'precision highp float;\n' + - 'uniform sampler2D uTexture;\n' + - 'uniform vec3 uGamma;\n' + - 'varying vec2 vTexCoord;\n' + - 'void main() {\n' + - 'vec4 color = texture2D(uTexture, vTexCoord);\n' + - 'vec3 correction = (1.0 / uGamma);\n' + - 'color.r = pow(color.r, correction.r);\n' + - 'color.g = pow(color.g, correction.g);\n' + - 'color.b = pow(color.b, correction.b);\n' + - 'gl_FragColor = color;\n' + - 'gl_FragColor.rgb *= color.a;\n' + - '}', - - /** - * Gamma array value, from 0.01 to 2.2. - * @param {Array} gamma - * @default - */ - gamma: [1, 1, 1], - - /** - * Describe the property that is the filter parameter - * @param {String} m - * @default - */ - mainParameter: 'gamma', - - /** - * Constructor - * @param {Object} [options] Options object - */ - initialize: function(options) { - this.gamma = [1, 1, 1]; - filters.BaseFilter.prototype.initialize.call(this, options); - }, - - /** - * Apply the Gamma operation to a Uint8Array representing the pixels of an image. - * - * @param {Object} options - * @param {ImageData} options.imageData The Uint8Array to be filtered. - */ - applyTo2d: function(options) { - var imageData = options.imageData, data = imageData.data, - gamma = this.gamma, len = data.length, - rInv = 1 / gamma[0], gInv = 1 / gamma[1], - bInv = 1 / gamma[2], i; - - if (!this.rVals) { - // eslint-disable-next-line - this.rVals = new Uint8Array(256); - // eslint-disable-next-line - this.gVals = new Uint8Array(256); - // eslint-disable-next-line - this.bVals = new Uint8Array(256); - } - - // This is an optimization - pre-compute a look-up table for each color channel - // instead of performing these pow calls for each pixel in the image. - for (i = 0, len = 256; i < len; i++) { - this.rVals[i] = Math.pow(i / 255, rInv) * 255; - this.gVals[i] = Math.pow(i / 255, gInv) * 255; - this.bVals[i] = Math.pow(i / 255, bInv) * 255; - } - for (i = 0, len = data.length; i < len; i += 4) { - data[i] = this.rVals[data[i]]; - data[i + 1] = this.gVals[data[i + 1]]; - data[i + 2] = this.bVals[data[i + 2]]; - } - }, - - /** - * Return WebGL uniform locations for this filter's shader. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {WebGLShaderProgram} program This filter's compiled shader program. - */ - getUniformLocations: function(gl, program) { - return { - uGamma: gl.getUniformLocation(program, 'uGamma'), - }; - }, - - /** - * Send data from this filter to its shader program's uniforms. - * - * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. - * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects - */ - sendUniformData: function(gl, uniformLocations) { - gl.uniform3fv(uniformLocations.uGamma, this.gamma); - }, - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @param {function} [callback] to be invoked after filter creation - * @return {fabric.Image.filters.Gamma} Instance of fabric.Image.filters.Gamma - */ - fabric.Image.filters.Gamma.fromObject = fabric.Image.filters.BaseFilter.fromObject; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * A container class that knows how to apply a sequence of filters to an input image. - */ - filters.Composed = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Composed.prototype */ { - - type: 'Composed', - - /** - * A non sparse array of filters to apply - */ - subFilters: [], - - /** - * Constructor - * @param {Object} [options] Options object - */ - initialize: function(options) { - this.callSuper('initialize', options); - // create a new array instead mutating the prototype with push - this.subFilters = this.subFilters.slice(0); - }, - - /** - * Apply this container's filters to the input image provided. - * - * @param {Object} options - * @param {Number} options.passes The number of filters remaining to be applied. - */ - applyTo: function(options) { - options.passes += this.subFilters.length - 1; - this.subFilters.forEach(function(filter) { - filter.applyTo(options); - }); - }, - - /** - * Serialize this filter into JSON. - * - * @returns {Object} A JSON representation of this filter. - */ - toObject: function() { - return fabric.util.object.extend(this.callSuper('toObject'), { - subFilters: this.subFilters.map(function(filter) { return filter.toObject(); }), - }); - }, - - isNeutralState: function() { - return !this.subFilters.some(function(filter) { return !filter.isNeutralState(); }); - } - }); - - /** - * Deserialize a JSON definition of a ComposedFilter into a concrete instance. - */ - fabric.Image.filters.Composed.fromObject = function(object, callback) { - var filters = object.subFilters || [], - subFilters = filters.map(function(filter) { - return new fabric.Image.filters[filter.type](filter); - }), - instance = new fabric.Image.filters.Composed({ subFilters: subFilters }); - callback && callback(instance); - return instance; - }; -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - filters = fabric.Image.filters, - createClass = fabric.util.createClass; - - /** - * HueRotation filter class - * @class fabric.Image.filters.HueRotation - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.HueRotation#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.HueRotation({ - * rotation: -0.5 - * }); - * object.filters.push(filter); - * object.applyFilters(); - */ - filters.HueRotation = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.HueRotation.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'HueRotation', - - /** - * HueRotation value, from -1 to 1. - * the unit is radians - * @param {Number} myParameter - * @default - */ - rotation: 0, - - /** - * Describe the property that is the filter parameter - * @param {String} m - * @default - */ - mainParameter: 'rotation', - - calculateMatrix: function() { - var rad = this.rotation * Math.PI, cos = fabric.util.cos(rad), sin = fabric.util.sin(rad), - aThird = 1 / 3, aThirdSqtSin = Math.sqrt(aThird) * sin, OneMinusCos = 1 - cos; - this.matrix = [ - 1, 0, 0, 0, 0, - 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0 - ]; - this.matrix[0] = cos + OneMinusCos / 3; - this.matrix[1] = aThird * OneMinusCos - aThirdSqtSin; - this.matrix[2] = aThird * OneMinusCos + aThirdSqtSin; - this.matrix[5] = aThird * OneMinusCos + aThirdSqtSin; - this.matrix[6] = cos + aThird * OneMinusCos; - this.matrix[7] = aThird * OneMinusCos - aThirdSqtSin; - this.matrix[10] = aThird * OneMinusCos - aThirdSqtSin; - this.matrix[11] = aThird * OneMinusCos + aThirdSqtSin; - this.matrix[12] = cos + aThird * OneMinusCos; - }, - - /** - * HueRotation isNeutralState implementation - * Used only in image applyFilters to discard filters that will not have an effect - * on the image - * @param {Object} options - **/ - isNeutralState: function(options) { - this.calculateMatrix(); - return filters.BaseFilter.prototype.isNeutralState.call(this, options); - }, - - /** - * Apply this filter to the input image data provided. - * - * Determines whether to use WebGL or Canvas2D based on the options.webgl flag. - * - * @param {Object} options - * @param {Number} options.passes The number of filters remaining to be executed - * @param {Boolean} options.webgl Whether to use webgl to render the filter. - * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered. - * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn. - * @param {WebGLRenderingContext} options.context The GL context used for rendering. - * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. - */ - applyTo: function(options) { - this.calculateMatrix(); - filters.BaseFilter.prototype.applyTo.call(this, options); - }, - - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @param {function} [callback] to be invoked after filter creation - * @return {fabric.Image.filters.HueRotation} Instance of fabric.Image.filters.HueRotation - */ - fabric.Image.filters.HueRotation.fromObject = fabric.Image.filters.BaseFilter.fromObject; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - clone = fabric.util.object.clone; - - if (fabric.Text) { - fabric.warn('fabric.Text is already defined'); - return; - } - - /** - * Text class - * @class fabric.Text - * @extends fabric.Object - * @return {fabric.Text} thisArg - * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#text} - * @see {@link fabric.Text#initialize} for constructor definition - */ - fabric.Text = fabric.util.createClass(fabric.Object, /** @lends fabric.Text.prototype */ { - - /** - * Properties which when set cause object to change dimensions - * @type Array - * @private - */ - _dimensionAffectingProps: [ - 'fontSize', - 'fontWeight', - 'fontFamily', - 'fontStyle', - 'lineHeight', - 'text', - 'charSpacing', - 'textAlign', - 'styles', - ], - - /** - * @private - */ - _reNewline: /\r?\n/, - - /** - * Use this regular expression to filter for whitespaces that is not a new line. - * Mostly used when text is 'justify' aligned. - * @private - */ - _reSpacesAndTabs: /[ \t\r]/g, - - /** - * Use this regular expression to filter for whitespace that is not a new line. - * Mostly used when text is 'justify' aligned. - * @private - */ - _reSpaceAndTab: /[ \t\r]/, - - /** - * Use this regular expression to filter consecutive groups of non spaces. - * Mostly used when text is 'justify' aligned. - * @private - */ - _reWords: /\S+/g, - - /** - * Type of an object - * @type String - * @default - */ - type: 'text', - - /** - * Font size (in pixels) - * @type Number - * @default - */ - fontSize: 40, - - /** - * Font weight (e.g. bold, normal, 400, 600, 800) - * @type {(Number|String)} - * @default - */ - fontWeight: 'normal', - - /** - * Font family - * @type String - * @default - */ - fontFamily: 'Times New Roman', - - /** - * Text decoration underline. - * @type Boolean - * @default - */ - underline: false, - - /** - * Text decoration overline. - * @type Boolean - * @default - */ - overline: false, - - /** - * Text decoration linethrough. - * @type Boolean - * @default - */ - linethrough: false, - - /** - * Text alignment. Possible values: "left", "center", "right", "justify", - * "justify-left", "justify-center" or "justify-right". - * @type String - * @default - */ - textAlign: 'left', - - /** - * Font style . Possible values: "", "normal", "italic" or "oblique". - * @type String - * @default - */ - fontStyle: 'normal', - - /** - * Line height - * @type Number - * @default - */ - lineHeight: 1.16, - - /** - * Superscript schema object (minimum overlap) - * @type {Object} - * @default - */ - superscript: { - size: 0.60, // fontSize factor - baseline: -0.35 // baseline-shift factor (upwards) - }, - - /** - * Subscript schema object (minimum overlap) - * @type {Object} - * @default - */ - subscript: { - size: 0.60, // fontSize factor - baseline: 0.11 // baseline-shift factor (downwards) - }, - - /** - * Background color of text lines - * @type String - * @default - */ - textBackgroundColor: '', - - /** - * List of properties to consider when checking if - * state of an object is changed ({@link fabric.Object#hasStateChanged}) - * as well as for history (undo/redo) purposes - * @type Array - */ - stateProperties: fabric.Object.prototype.stateProperties.concat('fontFamily', - 'fontWeight', - 'fontSize', - 'text', - 'underline', - 'overline', - 'linethrough', - 'textAlign', - 'fontStyle', - 'lineHeight', - 'textBackgroundColor', - 'charSpacing', - 'styles'), - - /** - * List of properties to consider when checking if cache needs refresh - * @type Array - */ - cacheProperties: fabric.Object.prototype.cacheProperties.concat('fontFamily', - 'fontWeight', - 'fontSize', - 'text', - 'underline', - 'overline', - 'linethrough', - 'textAlign', - 'fontStyle', - 'lineHeight', - 'textBackgroundColor', - 'charSpacing', - 'styles'), - - /** - * When defined, an object is rendered via stroke and this property specifies its color. - * Backwards incompatibility note: This property was named "strokeStyle" until v1.1.6 - * @type String - * @default - */ - stroke: null, - - /** - * Shadow object representing shadow of this shape. - * Backwards incompatibility note: This property was named "textShadow" (String) until v1.2.11 - * @type fabric.Shadow - * @default - */ - shadow: null, - - /** - * @private - */ - _fontSizeFraction: 0.222, - - /** - * @private - */ - offsets: { - underline: 0.10, - linethrough: -0.315, - overline: -0.88 - }, - - /** - * Text Line proportion to font Size (in pixels) - * @type Number - * @default - */ - _fontSizeMult: 1.13, - - /** - * additional space between characters - * expressed in thousands of em unit - * @type Number - * @default - */ - charSpacing: 0, - - /** - * Object containing character styles - top-level properties -> line numbers, - * 2nd-level properties - charater numbers - * @type Object - * @default - */ - styles: null, - - /** - * Reference to a context to measure text char or couple of chars - * the cacheContext of the canvas will be used or a freshly created one if the object is not on canvas - * once created it will be referenced on fabric._measuringContext to avoide creating a canvas for every - * text object created. - * @type {CanvasRenderingContext2D} - * @default - */ - _measuringContext: null, - - /** - * Baseline shift, stlyes only, keep at 0 for the main text object - * @type {Number} - * @default - */ - deltaY: 0, - - /** - * Array of properties that define a style unit (of 'styles'). - * @type {Array} - * @default - */ - _styleProperties: [ - 'stroke', - 'strokeWidth', - 'fill', - 'fontFamily', - 'fontSize', - 'fontWeight', - 'fontStyle', - 'underline', - 'overline', - 'linethrough', - 'deltaY', - 'textBackgroundColor', - ], - - /** - * contains characters bounding boxes - */ - __charBounds: [], - - /** - * use this size when measuring text. To avoid IE11 rounding errors - * @type {Number} - * @default - * @readonly - * @private - */ - CACHE_FONT_SIZE: 400, - - /** - * contains the min text width to avoid getting 0 - * @type {Number} - * @default - */ - MIN_TEXT_WIDTH: 2, - - /** - * Constructor - * @param {String} text Text string - * @param {Object} [options] Options object - * @return {fabric.Text} thisArg - */ - initialize: function(text, options) { - this.styles = options ? (options.styles || { }) : { }; - this.text = text; - this.__skipDimension = true; - this.callSuper('initialize', options); - this.__skipDimension = false; - this.initDimensions(); - this.setCoords(); - this.setupState({ propertySet: '_dimensionAffectingProps' }); - }, - - /** - * Return a contex for measurement of text string. - * if created it gets stored for reuse - * @param {String} text Text string - * @param {Object} [options] Options object - * @return {fabric.Text} thisArg - */ - getMeasuringContext: function() { - // if we did not return we have to measure something. - if (!fabric._measuringContext) { - fabric._measuringContext = this.canvas && this.canvas.contextCache || - fabric.util.createCanvasElement().getContext('2d'); - } - return fabric._measuringContext; - }, - - /** - * @private - * Divides text into lines of text and lines of graphemes. - */ - _splitText: function() { - var newLines = this._splitTextIntoLines(this.text); - this.textLines = newLines.lines; - this._textLines = newLines.graphemeLines; - this._unwrappedTextLines = newLines._unwrappedLines; - this._text = newLines.graphemeText; - return newLines; - }, - - /** - * Initialize or update text dimensions. - * Updates this.width and this.height with the proper values. - * Does not return dimensions. - */ - initDimensions: function() { - if (this.__skipDimension) { - return; - } - this._splitText(); - this._clearCache(); - this.width = this.calcTextWidth() || this.cursorWidth || this.MIN_TEXT_WIDTH; - if (this.textAlign.indexOf('justify') !== -1) { - // once text is measured we need to make space fatter to make justified text. - this.enlargeSpaces(); - } - this.height = this.calcTextHeight(); - this.saveState({ propertySet: '_dimensionAffectingProps' }); - }, - - /** - * Enlarge space boxes and shift the others - */ - enlargeSpaces: function() { - var diffSpace, currentLineWidth, numberOfSpaces, accumulatedSpace, line, charBound, spaces; - for (var i = 0, len = this._textLines.length; i < len; i++) { - if (this.textAlign !== 'justify' && (i === len - 1 || this.isEndOfWrapping(i))) { - continue; - } - accumulatedSpace = 0; - line = this._textLines[i]; - currentLineWidth = this.getLineWidth(i); - if (currentLineWidth < this.width && (spaces = this.textLines[i].match(this._reSpacesAndTabs))) { - numberOfSpaces = spaces.length; - diffSpace = (this.width - currentLineWidth) / numberOfSpaces; - for (var j = 0, jlen = line.length; j <= jlen; j++) { - charBound = this.__charBounds[i][j]; - if (this._reSpaceAndTab.test(line[j])) { - charBound.width += diffSpace; - charBound.kernedWidth += diffSpace; - charBound.left += accumulatedSpace; - accumulatedSpace += diffSpace; - } - else { - charBound.left += accumulatedSpace; - } - } - } - } - }, - - /** - * Detect if the text line is ended with an hard break - * text and itext do not have wrapping, return false - * @return {Boolean} - */ - isEndOfWrapping: function(lineIndex) { - return lineIndex === this._textLines.length - 1; - }, - - /** - * Detect if a line has a linebreak and so we need to account for it when moving - * and counting style. - * It return always for text and Itext. - * @return Number - */ - missingNewlineOffset: function() { - return 1; - }, - - /** - * Returns string representation of an instance - * @return {String} String representation of text object - */ - toString: function() { - return '#'; - }, - - /** - * Return the dimension and the zoom level needed to create a cache canvas - * big enough to host the object to be cached. - * @private - * @param {Object} dim.x width of object to be cached - * @param {Object} dim.y height of object to be cached - * @return {Object}.width width of canvas - * @return {Object}.height height of canvas - * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache - * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache - */ - _getCacheCanvasDimensions: function() { - var dims = this.callSuper('_getCacheCanvasDimensions'); - var fontSize = this.fontSize; - dims.width += fontSize * dims.zoomX; - dims.height += fontSize * dims.zoomY; - return dims; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function(ctx) { - this._setTextStyles(ctx); - this._renderTextLinesBackground(ctx); - this._renderTextDecoration(ctx, 'underline'); - this._renderText(ctx); - this._renderTextDecoration(ctx, 'overline'); - this._renderTextDecoration(ctx, 'linethrough'); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderText: function(ctx) { - if (this.paintFirst === 'stroke') { - this._renderTextStroke(ctx); - this._renderTextFill(ctx); - } - else { - this._renderTextFill(ctx); - this._renderTextStroke(ctx); - } - }, - - /** - * Set the font parameter of the context with the object properties or with charStyle - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Object} [charStyle] object with font style properties - * @param {String} [charStyle.fontFamily] Font Family - * @param {Number} [charStyle.fontSize] Font size in pixels. ( without px suffix ) - * @param {String} [charStyle.fontWeight] Font weight - * @param {String} [charStyle.fontStyle] Font style (italic|normal) - */ - _setTextStyles: function(ctx, charStyle, forMeasuring) { - ctx.textBaseline = 'alphabetic'; - ctx.font = this._getFontDeclaration(charStyle, forMeasuring); - }, - - /** - * calculate and return the text Width measuring each line. - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @return {Number} Maximum width of fabric.Text object - */ - calcTextWidth: function() { - var maxWidth = this.getLineWidth(0); - - for (var i = 1, len = this._textLines.length; i < len; i++) { - var currentLineWidth = this.getLineWidth(i); - if (currentLineWidth > maxWidth) { - maxWidth = currentLineWidth; - } - } - return maxWidth; - }, - - /** - * @private - * @param {String} method Method name ("fillText" or "strokeText") - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {String} line Text to render - * @param {Number} left Left position of text - * @param {Number} top Top position of text - * @param {Number} lineIndex Index of a line in a text - */ - _renderTextLine: function(method, ctx, line, left, top, lineIndex) { - this._renderChars(method, ctx, line, left, top, lineIndex); - }, - - /** - * Renders the text background for lines, taking care of style - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderTextLinesBackground: function(ctx) { - if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor')) { - return; - } - var lineTopOffset = 0, heightOfLine, - lineLeftOffset, originalFill = ctx.fillStyle, - line, lastColor, - leftOffset = this._getLeftOffset(), - topOffset = this._getTopOffset(), - boxStart = 0, boxWidth = 0, charBox, currentColor; - - for (var i = 0, len = this._textLines.length; i < len; i++) { - heightOfLine = this.getHeightOfLine(i); - if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor', i)) { - lineTopOffset += heightOfLine; - continue; - } - line = this._textLines[i]; - lineLeftOffset = this._getLineLeftOffset(i); - boxWidth = 0; - boxStart = 0; - lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor'); - for (var j = 0, jlen = line.length; j < jlen; j++) { - charBox = this.__charBounds[i][j]; - currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor'); - if (currentColor !== lastColor) { - ctx.fillStyle = lastColor; - lastColor && ctx.fillRect( - leftOffset + lineLeftOffset + boxStart, - topOffset + lineTopOffset, - boxWidth, - heightOfLine / this.lineHeight - ); - boxStart = charBox.left; - boxWidth = charBox.width; - lastColor = currentColor; - } - else { - boxWidth += charBox.kernedWidth; - } - } - if (currentColor) { - ctx.fillStyle = currentColor; - ctx.fillRect( - leftOffset + lineLeftOffset + boxStart, - topOffset + lineTopOffset, - boxWidth, - heightOfLine / this.lineHeight - ); - } - lineTopOffset += heightOfLine; - } - ctx.fillStyle = originalFill; - // if there is text background color no - // other shadows should be casted - this._removeShadow(ctx); - }, - - /** - * @private - * @param {Object} decl style declaration for cache - * @param {String} decl.fontFamily fontFamily - * @param {String} decl.fontStyle fontStyle - * @param {String} decl.fontWeight fontWeight - * @return {Object} reference to cache - */ - getFontCache: function(decl) { - var fontFamily = decl.fontFamily.toLowerCase(); - if (!fabric.charWidthsCache[fontFamily]) { - fabric.charWidthsCache[fontFamily] = { }; - } - var cache = fabric.charWidthsCache[fontFamily], - cacheProp = decl.fontStyle.toLowerCase() + '_' + (decl.fontWeight + '').toLowerCase(); - if (!cache[cacheProp]) { - cache[cacheProp] = { }; - } - return cache[cacheProp]; - }, - - /** - * apply all the character style to canvas for rendering - * @private - * @param {String} _char - * @param {Number} lineIndex - * @param {Number} charIndex - * @param {Object} [decl] - */ - _applyCharStyles: function(method, ctx, lineIndex, charIndex, styleDeclaration) { - - this._setFillStyles(ctx, styleDeclaration); - this._setStrokeStyles(ctx, styleDeclaration); - - ctx.font = this._getFontDeclaration(styleDeclaration); - }, - - /** - * measure and return the width of a single character. - * possibly overridden to accommodate different measure logic or - * to hook some external lib for character measurement - * @private - * @param {String} _char, char to be measured - * @param {Object} charStyle style of char to be measured - * @param {String} [previousChar] previous char - * @param {Object} [prevCharStyle] style of previous char - */ - _measureChar: function(_char, charStyle, previousChar, prevCharStyle) { - // first i try to return from cache - var fontCache = this.getFontCache(charStyle), fontDeclaration = this._getFontDeclaration(charStyle), - previousFontDeclaration = this._getFontDeclaration(prevCharStyle), couple = previousChar + _char, - stylesAreEqual = fontDeclaration === previousFontDeclaration, width, coupleWidth, previousWidth, - fontMultiplier = charStyle.fontSize / this.CACHE_FONT_SIZE, kernedWidth; - - if (previousChar && fontCache[previousChar] !== undefined) { - previousWidth = fontCache[previousChar]; - } - if (fontCache[_char] !== undefined) { - kernedWidth = width = fontCache[_char]; - } - if (stylesAreEqual && fontCache[couple] !== undefined) { - coupleWidth = fontCache[couple]; - kernedWidth = coupleWidth - previousWidth; - } - if (width === undefined || previousWidth === undefined || coupleWidth === undefined) { - var ctx = this.getMeasuringContext(); - // send a TRUE to specify measuring font size CACHE_FONT_SIZE - this._setTextStyles(ctx, charStyle, true); - } - if (width === undefined) { - kernedWidth = width = ctx.measureText(_char).width; - fontCache[_char] = width; - } - if (previousWidth === undefined && stylesAreEqual && previousChar) { - previousWidth = ctx.measureText(previousChar).width; - fontCache[previousChar] = previousWidth; - } - if (stylesAreEqual && coupleWidth === undefined) { - // we can measure the kerning couple and subtract the width of the previous character - coupleWidth = ctx.measureText(couple).width; - fontCache[couple] = coupleWidth; - kernedWidth = coupleWidth - previousWidth; - } - return { width: width * fontMultiplier, kernedWidth: kernedWidth * fontMultiplier }; - }, - - /** - * Computes height of character at given position - * @param {Number} line the line index number - * @param {Number} _char the character index number - * @return {Number} fontSize of the character - */ - getHeightOfChar: function(line, _char) { - return this.getValueOfPropertyAt(line, _char, 'fontSize'); - }, - - /** - * measure a text line measuring all characters. - * @param {Number} lineIndex line number - * @return {Number} Line width - */ - measureLine: function(lineIndex) { - var lineInfo = this._measureLine(lineIndex); - if (this.charSpacing !== 0) { - lineInfo.width -= this._getWidthOfCharSpacing(); - } - if (lineInfo.width < 0) { - lineInfo.width = 0; - } - return lineInfo; - }, - - /** - * measure every grapheme of a line, populating __charBounds - * @param {Number} lineIndex - * @return {Object} object.width total width of characters - * @return {Object} object.widthOfSpaces length of chars that match this._reSpacesAndTabs - */ - _measureLine: function(lineIndex) { - var width = 0, i, grapheme, line = this._textLines[lineIndex], prevGrapheme, - graphemeInfo, numOfSpaces = 0, lineBounds = new Array(line.length); - - this.__charBounds[lineIndex] = lineBounds; - for (i = 0; i < line.length; i++) { - grapheme = line[i]; - graphemeInfo = this._getGraphemeBox(grapheme, lineIndex, i, prevGrapheme); - lineBounds[i] = graphemeInfo; - width += graphemeInfo.kernedWidth; - prevGrapheme = grapheme; - } - // this latest bound box represent the last character of the line - // to simplify cursor handling in interactive mode. - lineBounds[i] = { - left: graphemeInfo ? graphemeInfo.left + graphemeInfo.width : 0, - width: 0, - kernedWidth: 0, - height: this.fontSize - }; - return { width: width, numOfSpaces: numOfSpaces }; - }, - - /** - * Measure and return the info of a single grapheme. - * needs the the info of previous graphemes already filled - * @private - * @param {String} grapheme to be measured - * @param {Number} lineIndex index of the line where the char is - * @param {Number} charIndex position in the line - * @param {String} [prevGrapheme] character preceding the one to be measured - */ - _getGraphemeBox: function(grapheme, lineIndex, charIndex, prevGrapheme, skipLeft) { - var style = this.getCompleteStyleDeclaration(lineIndex, charIndex), - prevStyle = prevGrapheme ? this.getCompleteStyleDeclaration(lineIndex, charIndex - 1) : { }, - info = this._measureChar(grapheme, style, prevGrapheme, prevStyle), - kernedWidth = info.kernedWidth, - width = info.width, charSpacing; - - if (this.charSpacing !== 0) { - charSpacing = this._getWidthOfCharSpacing(); - width += charSpacing; - kernedWidth += charSpacing; - } - - var box = { - width: width, - left: 0, - height: style.fontSize, - kernedWidth: kernedWidth, - deltaY: style.deltaY, - }; - if (charIndex > 0 && !skipLeft) { - var previousBox = this.__charBounds[lineIndex][charIndex - 1]; - box.left = previousBox.left + previousBox.width + info.kernedWidth - info.width; - } - return box; - }, - - /** - * Calculate height of line at 'lineIndex' - * @param {Number} lineIndex index of line to calculate - * @return {Number} - */ - getHeightOfLine: function(lineIndex) { - if (this.__lineHeights[lineIndex]) { - return this.__lineHeights[lineIndex]; - } - - var line = this._textLines[lineIndex], - // char 0 is measured before the line cycle because it nneds to char - // emptylines - maxHeight = this.getHeightOfChar(lineIndex, 0); - for (var i = 1, len = line.length; i < len; i++) { - maxHeight = Math.max(this.getHeightOfChar(lineIndex, i), maxHeight); - } - - return this.__lineHeights[lineIndex] = maxHeight * this.lineHeight * this._fontSizeMult; - }, - - /** - * Calculate text box height - */ - calcTextHeight: function() { - var lineHeight, height = 0; - for (var i = 0, len = this._textLines.length; i < len; i++) { - lineHeight = this.getHeightOfLine(i); - height += (i === len - 1 ? lineHeight / this.lineHeight : lineHeight); - } - return height; - }, - - /** - * @private - * @return {Number} Left offset - */ - _getLeftOffset: function() { - return -this.width / 2; - }, - - /** - * @private - * @return {Number} Top offset - */ - _getTopOffset: function() { - return -this.height / 2; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {String} method Method name ("fillText" or "strokeText") - */ - _renderTextCommon: function(ctx, method) { - ctx.save(); - var lineHeights = 0, left = this._getLeftOffset(), top = this._getTopOffset(), - offsets = this._applyPatternGradientTransform(ctx, method === 'fillText' ? this.fill : this.stroke); - for (var i = 0, len = this._textLines.length; i < len; i++) { - var heightOfLine = this.getHeightOfLine(i), - maxHeight = heightOfLine / this.lineHeight, - leftOffset = this._getLineLeftOffset(i); - this._renderTextLine( - method, - ctx, - this._textLines[i], - left + leftOffset - offsets.offsetX, - top + lineHeights + maxHeight - offsets.offsetY, - i - ); - lineHeights += heightOfLine; - } - ctx.restore(); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderTextFill: function(ctx) { - if (!this.fill && !this.styleHas('fill')) { - return; - } - - this._renderTextCommon(ctx, 'fillText'); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderTextStroke: function(ctx) { - if ((!this.stroke || this.strokeWidth === 0) && this.isEmptyStyles()) { - return; - } - - if (this.shadow && !this.shadow.affectStroke) { - this._removeShadow(ctx); - } - - ctx.save(); - this._setLineDash(ctx, this.strokeDashArray); - ctx.beginPath(); - this._renderTextCommon(ctx, 'strokeText'); - ctx.closePath(); - ctx.restore(); - }, - - /** - * @private - * @param {String} method - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {String} line Content of the line - * @param {Number} left - * @param {Number} top - * @param {Number} lineIndex - * @param {Number} charOffset - */ - _renderChars: function(method, ctx, line, left, top, lineIndex) { - // set proper line offset - var lineHeight = this.getHeightOfLine(lineIndex), - isJustify = this.textAlign.indexOf('justify') !== -1, - actualStyle, - nextStyle, - charsToRender = '', - charBox, - boxWidth = 0, - timeToRender, - shortCut = !isJustify && this.charSpacing === 0 && this.isEmptyStyles(lineIndex); - - ctx.save(); - top -= lineHeight * this._fontSizeFraction / this.lineHeight; - if (shortCut) { - // render all the line in one pass without checking - this._renderChar(method, ctx, lineIndex, 0, this.textLines[lineIndex], left, top, lineHeight); - ctx.restore(); - return; - } - for (var i = 0, len = line.length - 1; i <= len; i++) { - timeToRender = i === len || this.charSpacing; - charsToRender += line[i]; - charBox = this.__charBounds[lineIndex][i]; - if (boxWidth === 0) { - left += charBox.kernedWidth - charBox.width; - boxWidth += charBox.width; - } - else { - boxWidth += charBox.kernedWidth; - } - if (isJustify && !timeToRender) { - if (this._reSpaceAndTab.test(line[i])) { - timeToRender = true; - } - } - if (!timeToRender) { - // if we have charSpacing, we render char by char - actualStyle = actualStyle || this.getCompleteStyleDeclaration(lineIndex, i); - nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1); - timeToRender = this._hasStyleChanged(actualStyle, nextStyle); - } - if (timeToRender) { - this._renderChar(method, ctx, lineIndex, i, charsToRender, left, top, lineHeight); - charsToRender = ''; - actualStyle = nextStyle; - left += boxWidth; - boxWidth = 0; - } - } - ctx.restore(); - }, - - /** - * @private - * @param {String} method - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Number} lineIndex - * @param {Number} charIndex - * @param {String} _char - * @param {Number} left Left coordinate - * @param {Number} top Top coordinate - * @param {Number} lineHeight Height of the line - */ - _renderChar: function(method, ctx, lineIndex, charIndex, _char, left, top) { - var decl = this._getStyleDeclaration(lineIndex, charIndex), - fullDecl = this.getCompleteStyleDeclaration(lineIndex, charIndex), - shouldFill = method === 'fillText' && fullDecl.fill, - shouldStroke = method === 'strokeText' && fullDecl.stroke && fullDecl.strokeWidth; - - if (!shouldStroke && !shouldFill) { - return; - } - decl && ctx.save(); - - this._applyCharStyles(method, ctx, lineIndex, charIndex, fullDecl); - - if (decl && decl.textBackgroundColor) { - this._removeShadow(ctx); - } - if (decl && decl.deltaY) { - top += decl.deltaY; - } - - shouldFill && ctx.fillText(_char, left, top); - shouldStroke && ctx.strokeText(_char, left, top); - decl && ctx.restore(); - }, - - /** - * Turns the character into a 'superior figure' (i.e. 'superscript') - * @param {Number} start selection start - * @param {Number} end selection end - * @returns {fabric.Text} thisArg - * @chainable - */ - setSuperscript: function(start, end) { - return this._setScript(start, end, this.superscript); - }, - - /** - * Turns the character into an 'inferior figure' (i.e. 'subscript') - * @param {Number} start selection start - * @param {Number} end selection end - * @returns {fabric.Text} thisArg - * @chainable - */ - setSubscript: function(start, end) { - return this._setScript(start, end, this.subscript); - }, - - /** - * Applies 'schema' at given position - * @private - * @param {Number} start selection start - * @param {Number} end selection end - * @param {Number} schema - * @returns {fabric.Text} thisArg - * @chainable - */ - _setScript: function(start, end, schema) { - var loc = this.get2DCursorLocation(start, true), - fontSize = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'fontSize'), - dy = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'deltaY'), - style = { fontSize: fontSize * schema.size, deltaY: dy + fontSize * schema.baseline }; - this.setSelectionStyles(style, start, end); - return this; - }, - - /** - * @private - * @param {Object} prevStyle - * @param {Object} thisStyle - */ - _hasStyleChanged: function(prevStyle, thisStyle) { - return prevStyle.fill !== thisStyle.fill || - prevStyle.stroke !== thisStyle.stroke || - prevStyle.strokeWidth !== thisStyle.strokeWidth || - prevStyle.fontSize !== thisStyle.fontSize || - prevStyle.fontFamily !== thisStyle.fontFamily || - prevStyle.fontWeight !== thisStyle.fontWeight || - prevStyle.fontStyle !== thisStyle.fontStyle || - prevStyle.deltaY !== thisStyle.deltaY; - }, - - /** - * @private - * @param {Object} prevStyle - * @param {Object} thisStyle - */ - _hasStyleChangedForSvg: function(prevStyle, thisStyle) { - return this._hasStyleChanged(prevStyle, thisStyle) || - prevStyle.overline !== thisStyle.overline || - prevStyle.underline !== thisStyle.underline || - prevStyle.linethrough !== thisStyle.linethrough; - }, - - /** - * @private - * @param {Number} lineIndex index text line - * @return {Number} Line left offset - */ - _getLineLeftOffset: function(lineIndex) { - var lineWidth = this.getLineWidth(lineIndex); - if (this.textAlign === 'center') { - return (this.width - lineWidth) / 2; - } - if (this.textAlign === 'right') { - return this.width - lineWidth; - } - if (this.textAlign === 'justify-center' && this.isEndOfWrapping(lineIndex)) { - return (this.width - lineWidth) / 2; - } - if (this.textAlign === 'justify-right' && this.isEndOfWrapping(lineIndex)) { - return this.width - lineWidth; - } - return 0; - }, - - /** - * @private - */ - _clearCache: function() { - this.__lineWidths = []; - this.__lineHeights = []; - this.__charBounds = []; - }, - - /** - * @private - */ - _shouldClearDimensionCache: function() { - var shouldClear = this._forceClearCache; - shouldClear || (shouldClear = this.hasStateChanged('_dimensionAffectingProps')); - if (shouldClear) { - this.dirty = true; - this._forceClearCache = false; - } - return shouldClear; - }, - - /** - * Measure a single line given its index. Used to calculate the initial - * text bounding box. The values are calculated and stored in __lineWidths cache. - * @private - * @param {Number} lineIndex line number - * @return {Number} Line width - */ - getLineWidth: function(lineIndex) { - if (this.__lineWidths[lineIndex]) { - return this.__lineWidths[lineIndex]; - } - - var width, line = this._textLines[lineIndex], lineInfo; - - if (line === '') { - width = 0; - } - else { - lineInfo = this.measureLine(lineIndex); - width = lineInfo.width; - } - this.__lineWidths[lineIndex] = width; - return width; - }, - - _getWidthOfCharSpacing: function() { - if (this.charSpacing !== 0) { - return this.fontSize * this.charSpacing / 1000; - } - return 0; - }, - - /** - * Retrieves the value of property at given character position - * @param {Number} lineIndex the line number - * @param {Number} charIndex the charater number - * @param {String} property the property name - * @returns the value of 'property' - */ - getValueOfPropertyAt: function(lineIndex, charIndex, property) { - var charStyle = this._getStyleDeclaration(lineIndex, charIndex); - if (charStyle && typeof charStyle[property] !== 'undefined') { - return charStyle[property]; - } - return this[property]; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderTextDecoration: function(ctx, type) { - if (!this[type] && !this.styleHas(type)) { - return; - } - var heightOfLine, size, _size, - lineLeftOffset, dy, _dy, - line, lastDecoration, - leftOffset = this._getLeftOffset(), - topOffset = this._getTopOffset(), top, - boxStart, boxWidth, charBox, currentDecoration, - maxHeight, currentFill, lastFill, - charSpacing = this._getWidthOfCharSpacing(); - - for (var i = 0, len = this._textLines.length; i < len; i++) { - heightOfLine = this.getHeightOfLine(i); - if (!this[type] && !this.styleHas(type, i)) { - topOffset += heightOfLine; - continue; - } - line = this._textLines[i]; - maxHeight = heightOfLine / this.lineHeight; - lineLeftOffset = this._getLineLeftOffset(i); - boxStart = 0; - boxWidth = 0; - lastDecoration = this.getValueOfPropertyAt(i, 0, type); - lastFill = this.getValueOfPropertyAt(i, 0, 'fill'); - top = topOffset + maxHeight * (1 - this._fontSizeFraction); - size = this.getHeightOfChar(i, 0); - dy = this.getValueOfPropertyAt(i, 0, 'deltaY'); - for (var j = 0, jlen = line.length; j < jlen; j++) { - charBox = this.__charBounds[i][j]; - currentDecoration = this.getValueOfPropertyAt(i, j, type); - currentFill = this.getValueOfPropertyAt(i, j, 'fill'); - _size = this.getHeightOfChar(i, j); - _dy = this.getValueOfPropertyAt(i, j, 'deltaY'); - if ((currentDecoration !== lastDecoration || currentFill !== lastFill || _size !== size || _dy !== dy) && - boxWidth > 0) { - ctx.fillStyle = lastFill; - lastDecoration && lastFill && ctx.fillRect( - leftOffset + lineLeftOffset + boxStart, - top + this.offsets[type] * size + dy, - boxWidth, - this.fontSize / 15 - ); - boxStart = charBox.left; - boxWidth = charBox.width; - lastDecoration = currentDecoration; - lastFill = currentFill; - size = _size; - dy = _dy; - } - else { - boxWidth += charBox.kernedWidth; - } - } - ctx.fillStyle = currentFill; - currentDecoration && currentFill && ctx.fillRect( - leftOffset + lineLeftOffset + boxStart, - top + this.offsets[type] * size + dy, - boxWidth - charSpacing, - this.fontSize / 15 - ); - topOffset += heightOfLine; - } - // if there is text background color no - // other shadows should be casted - this._removeShadow(ctx); - }, - - /** - * return font declaration string for canvas context - * @param {Object} [styleObject] object - * @returns {String} font declaration formatted for canvas context. - */ - _getFontDeclaration: function(styleObject, forMeasuring) { - var style = styleObject || this, family = this.fontFamily, - fontIsGeneric = fabric.Text.genericFonts.indexOf(family.toLowerCase()) > -1; - var fontFamily = family === undefined || - family.indexOf('\'') > -1 || family.indexOf(',') > -1 || - family.indexOf('"') > -1 || fontIsGeneric - ? style.fontFamily : '"' + style.fontFamily + '"'; - return [ - // node-canvas needs "weight style", while browsers need "style weight" - // verify if this can be fixed in JSDOM - (fabric.isLikelyNode ? style.fontWeight : style.fontStyle), - (fabric.isLikelyNode ? style.fontStyle : style.fontWeight), - forMeasuring ? this.CACHE_FONT_SIZE + 'px' : style.fontSize + 'px', - fontFamily - ].join(' '); - }, - - /** - * Renders text instance on a specified context - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - render: function(ctx) { - // do not render if object is not visible - if (!this.visible) { - return; - } - if (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen()) { - return; - } - if (this._shouldClearDimensionCache()) { - this.initDimensions(); - } - this.callSuper('render', ctx); - }, - - /** - * Returns the text as an array of lines. - * @param {String} text text to split - * @returns {Array} Lines in the text - */ - _splitTextIntoLines: function(text) { - var lines = text.split(this._reNewline), - newLines = new Array(lines.length), - newLine = ['\n'], - newText = []; - for (var i = 0; i < lines.length; i++) { - newLines[i] = fabric.util.string.graphemeSplit(lines[i]); - newText = newText.concat(newLines[i], newLine); - } - newText.pop(); - return { _unwrappedLines: newLines, lines: lines, graphemeText: newText, graphemeLines: newLines }; - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} Object representation of an instance - */ - toObject: function(propertiesToInclude) { - var additionalProperties = [ - 'text', - 'fontSize', - 'fontWeight', - 'fontFamily', - 'fontStyle', - 'lineHeight', - 'underline', - 'overline', - 'linethrough', - 'textAlign', - 'textBackgroundColor', - 'charSpacing', - ].concat(propertiesToInclude); - var obj = this.callSuper('toObject', additionalProperties); - obj.styles = clone(this.styles, true); - return obj; - }, - - /** - * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`. - * @param {String|Object} key Property name or object (if object, iterate over the object properties) - * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one) - * @return {fabric.Object} thisArg - * @chainable - */ - set: function(key, value) { - this.callSuper('set', key, value); - var needsDims = false; - if (typeof key === 'object') { - for (var _key in key) { - needsDims = needsDims || this._dimensionAffectingProps.indexOf(_key) !== -1; - } - } - else { - needsDims = this._dimensionAffectingProps.indexOf(key) !== -1; - } - if (needsDims) { - this.initDimensions(); - this.setCoords(); - } - return this; - }, - - /** - * Returns complexity of an instance - * @return {Number} complexity - */ - complexity: function() { - return 1; - } - }); - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by {@link fabric.Text.fromElement}) - * @static - * @memberOf fabric.Text - * @see: http://www.w3.org/TR/SVG/text.html#TextElement - */ - fabric.Text.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat( - 'x y dx dy font-family font-style font-weight font-size letter-spacing text-decoration text-anchor'.split(' ')); - - /** - * Default SVG font size - * @static - * @memberOf fabric.Text - */ - fabric.Text.DEFAULT_SVG_FONT_SIZE = 16; - - /** - * Returns fabric.Text instance from an SVG element (not yet implemented) - * @static - * @memberOf fabric.Text - * @param {SVGElement} element Element to parse - * @param {Function} callback callback function invoked after parsing - * @param {Object} [options] Options object - */ - fabric.Text.fromElement = function(element, callback, options) { - if (!element) { - return callback(null); - } - - var parsedAttributes = fabric.parseAttributes(element, fabric.Text.ATTRIBUTE_NAMES), - parsedAnchor = parsedAttributes.textAnchor || 'left'; - options = fabric.util.object.extend((options ? clone(options) : { }), parsedAttributes); - - options.top = options.top || 0; - options.left = options.left || 0; - if (parsedAttributes.textDecoration) { - var textDecoration = parsedAttributes.textDecoration; - if (textDecoration.indexOf('underline') !== -1) { - options.underline = true; - } - if (textDecoration.indexOf('overline') !== -1) { - options.overline = true; - } - if (textDecoration.indexOf('line-through') !== -1) { - options.linethrough = true; - } - delete options.textDecoration; - } - if ('dx' in parsedAttributes) { - options.left += parsedAttributes.dx; - } - if ('dy' in parsedAttributes) { - options.top += parsedAttributes.dy; - } - if (!('fontSize' in options)) { - options.fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE; - } - - var textContent = ''; - - // The XML is not properly parsed in IE9 so a workaround to get - // textContent is through firstChild.data. Another workaround would be - // to convert XML loaded from a file to be converted using DOMParser (same way loadSVGFromString() does) - if (!('textContent' in element)) { - if ('firstChild' in element && element.firstChild !== null) { - if ('data' in element.firstChild && element.firstChild.data !== null) { - textContent = element.firstChild.data; - } - } - } - else { - textContent = element.textContent; - } - - textContent = textContent.replace(/^\s+|\s+$|\n+/g, '').replace(/\s+/g, ' '); - var originalStrokeWidth = options.strokeWidth; - options.strokeWidth = 0; - - var text = new fabric.Text(textContent, options), - textHeightScaleFactor = text.getScaledHeight() / text.height, - lineHeightDiff = (text.height + text.strokeWidth) * text.lineHeight - text.height, - scaledDiff = lineHeightDiff * textHeightScaleFactor, - textHeight = text.getScaledHeight() + scaledDiff, - offX = 0; - /* - Adjust positioning: - x/y attributes in SVG correspond to the bottom-left corner of text bounding box - fabric output by default at top, left. - */ - if (parsedAnchor === 'center') { - offX = text.getScaledWidth() / 2; - } - if (parsedAnchor === 'right') { - offX = text.getScaledWidth(); - } - text.set({ - left: text.left - offX, - top: text.top - (textHeight - text.fontSize * (0.07 + text._fontSizeFraction)) / text.lineHeight, - strokeWidth: typeof originalStrokeWidth !== 'undefined' ? originalStrokeWidth : 1, - }); - callback(text); - }; - /* _FROM_SVG_END_ */ - - /** - * Returns fabric.Text instance from an object representation - * @static - * @memberOf fabric.Text - * @param {Object} object Object to create an instance from - * @param {Function} [callback] Callback to invoke when an fabric.Text instance is created - */ - fabric.Text.fromObject = function(object, callback) { - return fabric.Object._fromObject('Text', object, callback, 'text'); - }; - - fabric.Text.genericFonts = ['sans-serif', 'serif', 'cursive', 'fantasy', 'monospace']; - - fabric.util.createAccessors && fabric.util.createAccessors(fabric.Text); - -})(typeof exports !== 'undefined' ? exports : this); - - -(function() { - fabric.util.object.extend(fabric.Text.prototype, /** @lends fabric.Text.prototype */ { - /** - * Returns true if object has no styling or no styling in a line - * @param {Number} lineIndex , lineIndex is on wrapped lines. - * @return {Boolean} - */ - isEmptyStyles: function(lineIndex) { - if (!this.styles) { - return true; - } - if (typeof lineIndex !== 'undefined' && !this.styles[lineIndex]) { - return true; - } - var obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] }; - for (var p1 in obj) { - for (var p2 in obj[p1]) { - // eslint-disable-next-line no-unused-vars - for (var p3 in obj[p1][p2]) { - return false; - } - } - } - return true; - }, - - /** - * Returns true if object has a style property or has it ina specified line - * This function is used to detect if a text will use a particular property or not. - * @param {String} property to check for - * @param {Number} lineIndex to check the style on - * @return {Boolean} - */ - styleHas: function(property, lineIndex) { - if (!this.styles || !property || property === '') { - return false; - } - if (typeof lineIndex !== 'undefined' && !this.styles[lineIndex]) { - return false; - } - var obj = typeof lineIndex === 'undefined' ? this.styles : { 0: this.styles[lineIndex] }; - // eslint-disable-next-line - for (var p1 in obj) { - // eslint-disable-next-line - for (var p2 in obj[p1]) { - if (typeof obj[p1][p2][property] !== 'undefined') { - return true; - } - } - } - return false; - }, - - /** - * Check if characters in a text have a value for a property - * whose value matches the textbox's value for that property. If so, - * the character-level property is deleted. If the character - * has no other properties, then it is also deleted. Finally, - * if the line containing that character has no other characters - * then it also is deleted. - * - * @param {string} property The property to compare between characters and text. - */ - cleanStyle: function(property) { - if (!this.styles || !property || property === '') { - return false; - } - var obj = this.styles, stylesCount = 0, letterCount, stylePropertyValue, - allStyleObjectPropertiesMatch = true, graphemeCount = 0, styleObject; - // eslint-disable-next-line - for (var p1 in obj) { - letterCount = 0; - // eslint-disable-next-line - for (var p2 in obj[p1]) { - var styleObject = obj[p1][p2], - stylePropertyHasBeenSet = styleObject.hasOwnProperty(property); - - stylesCount++; - - if (stylePropertyHasBeenSet) { - if (!stylePropertyValue) { - stylePropertyValue = styleObject[property]; - } - else if (styleObject[property] !== stylePropertyValue) { - allStyleObjectPropertiesMatch = false; - } - - if (styleObject[property] === this[property]) { - delete styleObject[property]; - } - } - else { - allStyleObjectPropertiesMatch = false; - } - - if (Object.keys(styleObject).length !== 0) { - letterCount++; - } - else { - delete obj[p1][p2]; - } - } - - if (letterCount === 0) { - delete obj[p1]; - } - } - // if every grapheme has the same style set then - // delete those styles and set it on the parent - for (var i = 0; i < this._textLines.length; i++) { - graphemeCount += this._textLines[i].length; - } - if (allStyleObjectPropertiesMatch && stylesCount === graphemeCount) { - this[property] = stylePropertyValue; - this.removeStyle(property); - } - }, - - /** - * Remove a style property or properties from all individual character styles - * in a text object. Deletes the character style object if it contains no other style - * props. Deletes a line style object if it contains no other character styles. - * - * @param {String} props The property to remove from character styles. - */ - removeStyle: function(property) { - if (!this.styles || !property || property === '') { - return; - } - var obj = this.styles, line, lineNum, charNum; - for (lineNum in obj) { - line = obj[lineNum]; - for (charNum in line) { - delete line[charNum][property]; - if (Object.keys(line[charNum]).length === 0) { - delete line[charNum]; - } - } - if (Object.keys(line).length === 0) { - delete obj[lineNum]; - } - } - }, - - /** - * @private - */ - _extendStyles: function(index, styles) { - var loc = this.get2DCursorLocation(index); - - if (!this._getLineStyle(loc.lineIndex)) { - this._setLineStyle(loc.lineIndex); - } - - if (!this._getStyleDeclaration(loc.lineIndex, loc.charIndex)) { - this._setStyleDeclaration(loc.lineIndex, loc.charIndex, {}); - } - - fabric.util.object.extend(this._getStyleDeclaration(loc.lineIndex, loc.charIndex), styles); - }, - - /** - * Returns 2d representation (lineIndex and charIndex) of cursor (or selection start) - * @param {Number} [selectionStart] Optional index. When not given, current selectionStart is used. - * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. usefull to manage styles. - */ - get2DCursorLocation: function(selectionStart, skipWrapping) { - if (typeof selectionStart === 'undefined') { - selectionStart = this.selectionStart; - } - var lines = skipWrapping ? this._unwrappedTextLines : this._textLines, - len = lines.length; - for (var i = 0; i < len; i++) { - if (selectionStart <= lines[i].length) { - return { - lineIndex: i, - charIndex: selectionStart - }; - } - selectionStart -= lines[i].length + this.missingNewlineOffset(i); - } - return { - lineIndex: i - 1, - charIndex: lines[i - 1].length < selectionStart ? lines[i - 1].length : selectionStart - }; - }, - - /** - * Gets style of a current selection/cursor (at the start position) - * if startIndex or endIndex are not provided, slectionStart or selectionEnd will be used. - * @param {Number} [startIndex] Start index to get styles at - * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1 - * @param {Boolean} [complete] get full style or not - * @return {Array} styles an array with one, zero or more Style objects - */ - getSelectionStyles: function(startIndex, endIndex, complete) { - if (typeof startIndex === 'undefined') { - startIndex = this.selectionStart || 0; - } - if (typeof endIndex === 'undefined') { - endIndex = this.selectionEnd || startIndex; - } - var styles = []; - for (var i = startIndex; i < endIndex; i++) { - styles.push(this.getStyleAtPosition(i, complete)); - } - return styles; - }, - - /** - * Gets style of a current selection/cursor position - * @param {Number} position to get styles at - * @param {Boolean} [complete] full style if true - * @return {Object} style Style object at a specified index - * @private - */ - getStyleAtPosition: function(position, complete) { - var loc = this.get2DCursorLocation(position), - style = complete ? this.getCompleteStyleDeclaration(loc.lineIndex, loc.charIndex) : - this._getStyleDeclaration(loc.lineIndex, loc.charIndex); - return style || {}; - }, - - /** - * Sets style of a current selection, if no selection exist, do not set anything. - * @param {Object} [styles] Styles object - * @param {Number} [startIndex] Start index to get styles at - * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1 - * @return {fabric.IText} thisArg - * @chainable - */ - setSelectionStyles: function(styles, startIndex, endIndex) { - if (typeof startIndex === 'undefined') { - startIndex = this.selectionStart || 0; - } - if (typeof endIndex === 'undefined') { - endIndex = this.selectionEnd || startIndex; - } - for (var i = startIndex; i < endIndex; i++) { - this._extendStyles(i, styles); - } - /* not included in _extendStyles to avoid clearing cache more than once */ - this._forceClearCache = true; - return this; - }, - - /** - * get the reference, not a clone, of the style object for a given character - * @param {Number} lineIndex - * @param {Number} charIndex - * @return {Object} style object - */ - _getStyleDeclaration: function(lineIndex, charIndex) { - var lineStyle = this.styles && this.styles[lineIndex]; - if (!lineStyle) { - return null; - } - return lineStyle[charIndex]; - }, - - /** - * return a new object that contains all the style property for a character - * the object returned is newly created - * @param {Number} lineIndex of the line where the character is - * @param {Number} charIndex position of the character on the line - * @return {Object} style object - */ - getCompleteStyleDeclaration: function(lineIndex, charIndex) { - var style = this._getStyleDeclaration(lineIndex, charIndex) || { }, - styleObject = { }, prop; - for (var i = 0; i < this._styleProperties.length; i++) { - prop = this._styleProperties[i]; - styleObject[prop] = typeof style[prop] === 'undefined' ? this[prop] : style[prop]; - } - return styleObject; - }, - - /** - * @param {Number} lineIndex - * @param {Number} charIndex - * @param {Object} style - * @private - */ - _setStyleDeclaration: function(lineIndex, charIndex, style) { - this.styles[lineIndex][charIndex] = style; - }, - - /** - * - * @param {Number} lineIndex - * @param {Number} charIndex - * @private - */ - _deleteStyleDeclaration: function(lineIndex, charIndex) { - delete this.styles[lineIndex][charIndex]; - }, - - /** - * @param {Number} lineIndex - * @return {Boolean} if the line exists or not - * @private - */ - _getLineStyle: function(lineIndex) { - return !!this.styles[lineIndex]; - }, - - /** - * Set the line style to an empty object so that is initialized - * @param {Number} lineIndex - * @private - */ - _setLineStyle: function(lineIndex) { - this.styles[lineIndex] = {}; - }, - - /** - * @param {Number} lineIndex - * @private - */ - _deleteLineStyle: function(lineIndex) { - delete this.styles[lineIndex]; - } - }); -})(); - - -(function() { - - function parseDecoration(object) { - if (object.textDecoration) { - object.textDecoration.indexOf('underline') > -1 && (object.underline = true); - object.textDecoration.indexOf('line-through') > -1 && (object.linethrough = true); - object.textDecoration.indexOf('overline') > -1 && (object.overline = true); - delete object.textDecoration; - } - } - - /** - * IText class (introduced in v1.4) Events are also fired with "text:" - * prefix when observing canvas. - * @class fabric.IText - * @extends fabric.Text - * @mixes fabric.Observable - * - * @fires changed - * @fires selection:changed - * @fires editing:entered - * @fires editing:exited - * - * @return {fabric.IText} thisArg - * @see {@link fabric.IText#initialize} for constructor definition - * - *

Supported key combinations:

- *
-   *   Move cursor:                    left, right, up, down
-   *   Select character:               shift + left, shift + right
-   *   Select text vertically:         shift + up, shift + down
-   *   Move cursor by word:            alt + left, alt + right
-   *   Select words:                   shift + alt + left, shift + alt + right
-   *   Move cursor to line start/end:  cmd + left, cmd + right or home, end
-   *   Select till start/end of line:  cmd + shift + left, cmd + shift + right or shift + home, shift + end
-   *   Jump to start/end of text:      cmd + up, cmd + down
-   *   Select till start/end of text:  cmd + shift + up, cmd + shift + down or shift + pgUp, shift + pgDown
-   *   Delete character:               backspace
-   *   Delete word:                    alt + backspace
-   *   Delete line:                    cmd + backspace
-   *   Forward delete:                 delete
-   *   Copy text:                      ctrl/cmd + c
-   *   Paste text:                     ctrl/cmd + v
-   *   Cut text:                       ctrl/cmd + x
-   *   Select entire text:             ctrl/cmd + a
-   *   Quit editing                    tab or esc
-   * 
- * - *

Supported mouse/touch combination

- *
-   *   Position cursor:                click/touch
-   *   Create selection:               click/touch & drag
-   *   Create selection:               click & shift + click
-   *   Select word:                    double click
-   *   Select line:                    triple click
-   * 
- */ - fabric.IText = fabric.util.createClass(fabric.Text, fabric.Observable, /** @lends fabric.IText.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'i-text', - - /** - * Index where text selection starts (or where cursor is when there is no selection) - * @type Number - * @default - */ - selectionStart: 0, - - /** - * Index where text selection ends - * @type Number - * @default - */ - selectionEnd: 0, - - /** - * Color of text selection - * @type String - * @default - */ - selectionColor: 'rgba(17,119,255,0.3)', - - /** - * Indicates whether text is in editing mode - * @type Boolean - * @default - */ - isEditing: false, - - /** - * Indicates whether a text can be edited - * @type Boolean - * @default - */ - editable: true, - - /** - * Border color of text object while it's in editing mode - * @type String - * @default - */ - editingBorderColor: 'rgba(102,153,255,0.25)', - - /** - * Width of cursor (in px) - * @type Number - * @default - */ - cursorWidth: 2, - - /** - * Color of default cursor (when not overwritten by character style) - * @type String - * @default - */ - cursorColor: '#333', - - /** - * Delay between cursor blink (in ms) - * @type Number - * @default - */ - cursorDelay: 1000, - - /** - * Duration of cursor fadein (in ms) - * @type Number - * @default - */ - cursorDuration: 600, - - /** - * Indicates whether internal text char widths can be cached - * @type Boolean - * @default - */ - caching: true, - - /** - * @private - */ - _reSpace: /\s|\n/, - - /** - * @private - */ - _currentCursorOpacity: 0, - - /** - * @private - */ - _selectionDirection: null, - - /** - * @private - */ - _abortCursorAnimation: false, - - /** - * @private - */ - __widthOfSpace: [], - - /** - * Helps determining when the text is in composition, so that the cursor - * rendering is altered. - */ - inCompositionMode: false, - - /** - * Constructor - * @param {String} text Text string - * @param {Object} [options] Options object - * @return {fabric.IText} thisArg - */ - initialize: function(text, options) { - this.callSuper('initialize', text, options); - this.initBehavior(); - }, - - /** - * Sets selection start (left boundary of a selection) - * @param {Number} index Index to set selection start to - */ - setSelectionStart: function(index) { - index = Math.max(index, 0); - this._updateAndFire('selectionStart', index); - }, - - /** - * Sets selection end (right boundary of a selection) - * @param {Number} index Index to set selection end to - */ - setSelectionEnd: function(index) { - index = Math.min(index, this.text.length); - this._updateAndFire('selectionEnd', index); - }, - - /** - * @private - * @param {String} property 'selectionStart' or 'selectionEnd' - * @param {Number} index new position of property - */ - _updateAndFire: function(property, index) { - if (this[property] !== index) { - this._fireSelectionChanged(); - this[property] = index; - } - this._updateTextarea(); - }, - - /** - * Fires the even of selection changed - * @private - */ - _fireSelectionChanged: function() { - this.fire('selection:changed'); - this.canvas && this.canvas.fire('text:selection:changed', { target: this }); - }, - - /** - * Initialize text dimensions. Render all text on given context - * or on a offscreen canvas to get the text width with measureText. - * Updates this.width and this.height with the proper values. - * Does not return dimensions. - * @private - */ - initDimensions: function() { - this.isEditing && this.initDelayedCursor(); - this.clearContextTop(); - this.callSuper('initDimensions'); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - render: function(ctx) { - this.clearContextTop(); - this.callSuper('render', ctx); - // clear the cursorOffsetCache, so we ensure to calculate once per renderCursor - // the correct position but not at every cursor animation. - this.cursorOffsetCache = { }; - this.renderCursorOrSelection(); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function(ctx) { - this.callSuper('_render', ctx); - }, - - /** - * Prepare and clean the contextTop - */ - clearContextTop: function(skipRestore) { - if (!this.isEditing || !this.canvas || !this.canvas.contextTop) { - return; - } - var ctx = this.canvas.contextTop, v = this.canvas.viewportTransform; - ctx.save(); - ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); - this.transform(ctx); - this.transformMatrix && ctx.transform.apply(ctx, this.transformMatrix); - this._clearTextArea(ctx); - skipRestore || ctx.restore(); - }, - - /** - * Renders cursor or selection (depending on what exists) - * it does on the contextTop. If contextTop is not available, do nothing. - */ - renderCursorOrSelection: function() { - if (!this.isEditing || !this.canvas || !this.canvas.contextTop) { - return; - } - var boundaries = this._getCursorBoundaries(), - ctx = this.canvas.contextTop; - this.clearContextTop(true); - if (this.selectionStart === this.selectionEnd) { - this.renderCursor(boundaries, ctx); - } - else { - this.renderSelection(boundaries, ctx); - } - ctx.restore(); - }, - - _clearTextArea: function(ctx) { - // we add 4 pixel, to be sure to do not leave any pixel out - var width = this.width + 4, height = this.height + 4; - ctx.clearRect(-width / 2, -height / 2, width, height); - }, - - /** - * Returns cursor boundaries (left, top, leftOffset, topOffset) - * @private - * @param {Array} chars Array of characters - * @param {String} typeOfBoundaries - */ - _getCursorBoundaries: function(position) { - - // left/top are left/top of entire text box - // leftOffset/topOffset are offset from that left/top point of a text box - - if (typeof position === 'undefined') { - position = this.selectionStart; - } - - var left = this._getLeftOffset(), - top = this._getTopOffset(), - offsets = this._getCursorBoundariesOffsets(position); - - return { - left: left, - top: top, - leftOffset: offsets.left, - topOffset: offsets.top - }; - }, - - /** - * @private - */ - _getCursorBoundariesOffsets: function(position) { - if (this.cursorOffsetCache && 'top' in this.cursorOffsetCache) { - return this.cursorOffsetCache; - } - var lineLeftOffset, - lineIndex, - charIndex, - topOffset = 0, - leftOffset = 0, - boundaries, - cursorPosition = this.get2DCursorLocation(position); - charIndex = cursorPosition.charIndex; - lineIndex = cursorPosition.lineIndex; - for (var i = 0; i < lineIndex; i++) { - topOffset += this.getHeightOfLine(i); - } - lineLeftOffset = this._getLineLeftOffset(lineIndex); - var bound = this.__charBounds[lineIndex][charIndex]; - bound && (leftOffset = bound.left); - if (this.charSpacing !== 0 && charIndex === this._textLines[lineIndex].length) { - leftOffset -= this._getWidthOfCharSpacing(); - } - boundaries = { - top: topOffset, - left: lineLeftOffset + (leftOffset > 0 ? leftOffset : 0), - }; - this.cursorOffsetCache = boundaries; - return this.cursorOffsetCache; - }, - - /** - * Renders cursor - * @param {Object} boundaries - * @param {CanvasRenderingContext2D} ctx transformed context to draw on - */ - renderCursor: function(boundaries, ctx) { - var cursorLocation = this.get2DCursorLocation(), - lineIndex = cursorLocation.lineIndex, - charIndex = cursorLocation.charIndex > 0 ? cursorLocation.charIndex - 1 : 0, - charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize'), - multiplier = this.scaleX * this.canvas.getZoom(), - cursorWidth = this.cursorWidth / multiplier, - topOffset = boundaries.topOffset, - dy = this.getValueOfPropertyAt(lineIndex, charIndex, 'deltaY'); - - topOffset += (1 - this._fontSizeFraction) * this.getHeightOfLine(lineIndex) / this.lineHeight - - charHeight * (1 - this._fontSizeFraction); - - if (this.inCompositionMode) { - this.renderSelection(boundaries, ctx); - } - - ctx.fillStyle = this.getValueOfPropertyAt(lineIndex, charIndex, 'fill'); - ctx.globalAlpha = this.__isMousedown ? 1 : this._currentCursorOpacity; - ctx.fillRect( - boundaries.left + boundaries.leftOffset - cursorWidth / 2, - topOffset + boundaries.top + dy, - cursorWidth, - charHeight); - }, - - /** - * Renders text selection - * @param {Object} boundaries Object with left/top/leftOffset/topOffset - * @param {CanvasRenderingContext2D} ctx transformed context to draw on - */ - renderSelection: function(boundaries, ctx) { - - var selectionStart = this.inCompositionMode ? this.hiddenTextarea.selectionStart : this.selectionStart, - selectionEnd = this.inCompositionMode ? this.hiddenTextarea.selectionEnd : this.selectionEnd, - isJustify = this.textAlign.indexOf('justify') !== -1, - start = this.get2DCursorLocation(selectionStart), - end = this.get2DCursorLocation(selectionEnd), - startLine = start.lineIndex, - endLine = end.lineIndex, - startChar = start.charIndex < 0 ? 0 : start.charIndex, - endChar = end.charIndex < 0 ? 0 : end.charIndex; - - for (var i = startLine; i <= endLine; i++) { - var lineOffset = this._getLineLeftOffset(i) || 0, - lineHeight = this.getHeightOfLine(i), - realLineHeight = 0, boxStart = 0, boxEnd = 0; - - if (i === startLine) { - boxStart = this.__charBounds[startLine][startChar].left; - } - if (i >= startLine && i < endLine) { - boxEnd = isJustify && !this.isEndOfWrapping(i) ? this.width : this.getLineWidth(i) || 5; // WTF is this 5? - } - else if (i === endLine) { - if (endChar === 0) { - boxEnd = this.__charBounds[endLine][endChar].left; - } - else { - var charSpacing = this._getWidthOfCharSpacing(); - boxEnd = this.__charBounds[endLine][endChar - 1].left - + this.__charBounds[endLine][endChar - 1].width - charSpacing; - } - } - realLineHeight = lineHeight; - if (this.lineHeight < 1 || (i === endLine && this.lineHeight > 1)) { - lineHeight /= this.lineHeight; - } - if (this.inCompositionMode) { - ctx.fillStyle = this.compositionColor || 'black'; - ctx.fillRect( - boundaries.left + lineOffset + boxStart, - boundaries.top + boundaries.topOffset + lineHeight, - boxEnd - boxStart, - 1); - } - else { - ctx.fillStyle = this.selectionColor; - ctx.fillRect( - boundaries.left + lineOffset + boxStart, - boundaries.top + boundaries.topOffset, - boxEnd - boxStart, - lineHeight); - } - - - boundaries.topOffset += realLineHeight; - } - }, - - /** - * High level function to know the height of the cursor. - * the currentChar is the one that precedes the cursor - * Returns fontSize of char at the current cursor - * @return {Number} Character font size - */ - getCurrentCharFontSize: function() { - var cp = this._getCurrentCharIndex(); - return this.getValueOfPropertyAt(cp.l, cp.c, 'fontSize'); - }, - - /** - * High level function to know the color of the cursor. - * the currentChar is the one that precedes the cursor - * Returns color (fill) of char at the current cursor - * @return {String} Character color (fill) - */ - getCurrentCharColor: function() { - var cp = this._getCurrentCharIndex(); - return this.getValueOfPropertyAt(cp.l, cp.c, 'fill'); - }, - - /** - * Returns the cursor position for the getCurrent.. functions - * @private - */ - _getCurrentCharIndex: function() { - var cursorPosition = this.get2DCursorLocation(this.selectionStart, true), - charIndex = cursorPosition.charIndex > 0 ? cursorPosition.charIndex - 1 : 0; - return { l: cursorPosition.lineIndex, c: charIndex }; - } - }); - - /** - * Returns fabric.IText instance from an object representation - * @static - * @memberOf fabric.IText - * @param {Object} object Object to create an instance from - * @param {function} [callback] invoked with new instance as argument - */ - fabric.IText.fromObject = function(object, callback) { - parseDecoration(object); - if (object.styles) { - for (var i in object.styles) { - for (var j in object.styles[i]) { - parseDecoration(object.styles[i][j]); - } - } - } - fabric.Object._fromObject('IText', object, callback, 'text'); - }; -})(); - - -(function() { - - var clone = fabric.util.object.clone; - - fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ { - - /** - * Initializes all the interactive behavior of IText - */ - initBehavior: function() { - this.initAddedHandler(); - this.initRemovedHandler(); - this.initCursorSelectionHandlers(); - this.initDoubleClickSimulation(); - this.mouseMoveHandler = this.mouseMoveHandler.bind(this); - }, - - onDeselect: function() { - this.isEditing && this.exitEditing(); - this.selected = false; - }, - - /** - * Initializes "added" event handler - */ - initAddedHandler: function() { - var _this = this; - this.on('added', function() { - var canvas = _this.canvas; - if (canvas) { - if (!canvas._hasITextHandlers) { - canvas._hasITextHandlers = true; - _this._initCanvasHandlers(canvas); - } - canvas._iTextInstances = canvas._iTextInstances || []; - canvas._iTextInstances.push(_this); - } - }); - }, - - initRemovedHandler: function() { - var _this = this; - this.on('removed', function() { - var canvas = _this.canvas; - if (canvas) { - canvas._iTextInstances = canvas._iTextInstances || []; - fabric.util.removeFromArray(canvas._iTextInstances, _this); - if (canvas._iTextInstances.length === 0) { - canvas._hasITextHandlers = false; - _this._removeCanvasHandlers(canvas); - } - } - }); - }, - - /** - * register canvas event to manage exiting on other instances - * @private - */ - _initCanvasHandlers: function(canvas) { - canvas._mouseUpITextHandler = function() { - if (canvas._iTextInstances) { - canvas._iTextInstances.forEach(function(obj) { - obj.__isMousedown = false; - }); - } - }; - canvas.on('mouse:up', canvas._mouseUpITextHandler); - }, - - /** - * remove canvas event to manage exiting on other instances - * @private - */ - _removeCanvasHandlers: function(canvas) { - canvas.off('mouse:up', canvas._mouseUpITextHandler); - }, - - /** - * @private - */ - _tick: function() { - this._currentTickState = this._animateCursor(this, 1, this.cursorDuration, '_onTickComplete'); - }, - - /** - * @private - */ - _animateCursor: function(obj, targetOpacity, duration, completeMethod) { - - var tickState; - - tickState = { - isAborted: false, - abort: function() { - this.isAborted = true; - }, - }; - - obj.animate('_currentCursorOpacity', targetOpacity, { - duration: duration, - onComplete: function() { - if (!tickState.isAborted) { - obj[completeMethod](); - } - }, - onChange: function() { - // we do not want to animate a selection, only cursor - if (obj.canvas && obj.selectionStart === obj.selectionEnd) { - obj.renderCursorOrSelection(); - } - }, - abort: function() { - return tickState.isAborted; - } - }); - return tickState; - }, - - /** - * @private - */ - _onTickComplete: function() { - - var _this = this; - - if (this._cursorTimeout1) { - clearTimeout(this._cursorTimeout1); - } - this._cursorTimeout1 = setTimeout(function() { - _this._currentTickCompleteState = _this._animateCursor(_this, 0, this.cursorDuration / 2, '_tick'); - }, 100); - }, - - /** - * Initializes delayed cursor - */ - initDelayedCursor: function(restart) { - var _this = this, - delay = restart ? 0 : this.cursorDelay; - - this.abortCursorAnimation(); - this._currentCursorOpacity = 1; - this._cursorTimeout2 = setTimeout(function() { - _this._tick(); - }, delay); - }, - - /** - * Aborts cursor animation and clears all timeouts - */ - abortCursorAnimation: function() { - var shouldClear = this._currentTickState || this._currentTickCompleteState, - canvas = this.canvas; - this._currentTickState && this._currentTickState.abort(); - this._currentTickCompleteState && this._currentTickCompleteState.abort(); - - clearTimeout(this._cursorTimeout1); - clearTimeout(this._cursorTimeout2); - - this._currentCursorOpacity = 0; - // to clear just itext area we need to transform the context - // it may not be worth it - if (shouldClear && canvas) { - canvas.clearContext(canvas.contextTop || canvas.contextContainer); - } - - }, - - /** - * Selects entire text - * @return {fabric.IText} thisArg - * @chainable - */ - selectAll: function() { - this.selectionStart = 0; - this.selectionEnd = this._text.length; - this._fireSelectionChanged(); - this._updateTextarea(); - return this; - }, - - /** - * Returns selected text - * @return {String} - */ - getSelectedText: function() { - return this._text.slice(this.selectionStart, this.selectionEnd).join(''); - }, - - /** - * Find new selection index representing start of current word according to current selection index - * @param {Number} startFrom Current selection index - * @return {Number} New selection index - */ - findWordBoundaryLeft: function(startFrom) { - var offset = 0, index = startFrom - 1; - - // remove space before cursor first - if (this._reSpace.test(this._text[index])) { - while (this._reSpace.test(this._text[index])) { - offset++; - index--; - } - } - while (/\S/.test(this._text[index]) && index > -1) { - offset++; - index--; - } - - return startFrom - offset; - }, - - /** - * Find new selection index representing end of current word according to current selection index - * @param {Number} startFrom Current selection index - * @return {Number} New selection index - */ - findWordBoundaryRight: function(startFrom) { - var offset = 0, index = startFrom; - - // remove space after cursor first - if (this._reSpace.test(this._text[index])) { - while (this._reSpace.test(this._text[index])) { - offset++; - index++; - } - } - while (/\S/.test(this._text[index]) && index < this._text.length) { - offset++; - index++; - } - - return startFrom + offset; - }, - - /** - * Find new selection index representing start of current line according to current selection index - * @param {Number} startFrom Current selection index - * @return {Number} New selection index - */ - findLineBoundaryLeft: function(startFrom) { - var offset = 0, index = startFrom - 1; - - while (!/\n/.test(this._text[index]) && index > -1) { - offset++; - index--; - } - - return startFrom - offset; - }, - - /** - * Find new selection index representing end of current line according to current selection index - * @param {Number} startFrom Current selection index - * @return {Number} New selection index - */ - findLineBoundaryRight: function(startFrom) { - var offset = 0, index = startFrom; - - while (!/\n/.test(this._text[index]) && index < this._text.length) { - offset++; - index++; - } - - return startFrom + offset; - }, - - /** - * Finds index corresponding to beginning or end of a word - * @param {Number} selectionStart Index of a character - * @param {Number} direction 1 or -1 - * @return {Number} Index of the beginning or end of a word - */ - searchWordBoundary: function(selectionStart, direction) { - var text = this._text, - index = this._reSpace.test(text[selectionStart]) ? selectionStart - 1 : selectionStart, - _char = text[index], - // wrong - reNonWord = fabric.reNonWord; - - while (!reNonWord.test(_char) && index > 0 && index < text.length) { - index += direction; - _char = text[index]; - } - if (reNonWord.test(_char)) { - index += direction === 1 ? 0 : 1; - } - return index; - }, - - /** - * Selects a word based on the index - * @param {Number} selectionStart Index of a character - */ - selectWord: function(selectionStart) { - selectionStart = selectionStart || this.selectionStart; - var newSelectionStart = this.searchWordBoundary(selectionStart, -1), /* search backwards */ - newSelectionEnd = this.searchWordBoundary(selectionStart, 1); /* search forward */ - - this.selectionStart = newSelectionStart; - this.selectionEnd = newSelectionEnd; - this._fireSelectionChanged(); - this._updateTextarea(); - this.renderCursorOrSelection(); - }, - - /** - * Selects a line based on the index - * @param {Number} selectionStart Index of a character - * @return {fabric.IText} thisArg - * @chainable - */ - selectLine: function(selectionStart) { - selectionStart = selectionStart || this.selectionStart; - var newSelectionStart = this.findLineBoundaryLeft(selectionStart), - newSelectionEnd = this.findLineBoundaryRight(selectionStart); - - this.selectionStart = newSelectionStart; - this.selectionEnd = newSelectionEnd; - this._fireSelectionChanged(); - this._updateTextarea(); - return this; - }, - - /** - * Enters editing state - * @return {fabric.IText} thisArg - * @chainable - */ - enterEditing: function(e) { - if (this.isEditing || !this.editable) { - return; - } - - if (this.canvas) { - this.canvas.calcOffset(); - this.exitEditingOnOthers(this.canvas); - } - - this.isEditing = true; - - this.initHiddenTextarea(e); - this.hiddenTextarea.focus(); - this.hiddenTextarea.value = this.text; - this._updateTextarea(); - this._saveEditingProps(); - this._setEditingProps(); - this._textBeforeEdit = this.text; - - this._tick(); - this.fire('editing:entered'); - this._fireSelectionChanged(); - if (!this.canvas) { - return this; - } - this.canvas.fire('text:editing:entered', { target: this }); - this.initMouseMoveHandler(); - this.canvas.requestRenderAll(); - return this; - }, - - exitEditingOnOthers: function(canvas) { - if (canvas._iTextInstances) { - canvas._iTextInstances.forEach(function(obj) { - obj.selected = false; - if (obj.isEditing) { - obj.exitEditing(); - } - }); - } - }, - - /** - * Initializes "mousemove" event handler - */ - initMouseMoveHandler: function() { - this.canvas.on('mouse:move', this.mouseMoveHandler); - }, - - /** - * @private - */ - mouseMoveHandler: function(options) { - if (!this.__isMousedown || !this.isEditing) { - return; - } - - var newSelectionStart = this.getSelectionStartFromPointer(options.e), - currentStart = this.selectionStart, - currentEnd = this.selectionEnd; - if ( - (newSelectionStart !== this.__selectionStartOnMouseDown || currentStart === currentEnd) - && - (currentStart === newSelectionStart || currentEnd === newSelectionStart) - ) { - return; - } - if (newSelectionStart > this.__selectionStartOnMouseDown) { - this.selectionStart = this.__selectionStartOnMouseDown; - this.selectionEnd = newSelectionStart; - } - else { - this.selectionStart = newSelectionStart; - this.selectionEnd = this.__selectionStartOnMouseDown; - } - if (this.selectionStart !== currentStart || this.selectionEnd !== currentEnd) { - this.restartCursorIfNeeded(); - this._fireSelectionChanged(); - this._updateTextarea(); - this.renderCursorOrSelection(); - } - }, - - /** - * @private - */ - _setEditingProps: function() { - this.hoverCursor = 'text'; - - if (this.canvas) { - this.canvas.defaultCursor = this.canvas.moveCursor = 'text'; - } - - this.borderColor = this.editingBorderColor; - this.hasControls = this.selectable = false; - this.lockMovementX = this.lockMovementY = true; - }, - - /** - * convert from textarea to grapheme indexes - */ - fromStringToGraphemeSelection: function(start, end, text) { - var smallerTextStart = text.slice(0, start), - graphemeStart = fabric.util.string.graphemeSplit(smallerTextStart).length; - if (start === end) { - return { selectionStart: graphemeStart, selectionEnd: graphemeStart }; - } - var smallerTextEnd = text.slice(start, end), - graphemeEnd = fabric.util.string.graphemeSplit(smallerTextEnd).length; - return { selectionStart: graphemeStart, selectionEnd: graphemeStart + graphemeEnd }; - }, - - /** - * convert from fabric to textarea values - */ - fromGraphemeToStringSelection: function(start, end, _text) { - var smallerTextStart = _text.slice(0, start), - graphemeStart = smallerTextStart.join('').length; - if (start === end) { - return { selectionStart: graphemeStart, selectionEnd: graphemeStart }; - } - var smallerTextEnd = _text.slice(start, end), - graphemeEnd = smallerTextEnd.join('').length; - return { selectionStart: graphemeStart, selectionEnd: graphemeStart + graphemeEnd }; - }, - - /** - * @private - */ - _updateTextarea: function() { - this.cursorOffsetCache = { }; - if (!this.hiddenTextarea) { - return; - } - if (!this.inCompositionMode) { - var newSelection = this.fromGraphemeToStringSelection(this.selectionStart, this.selectionEnd, this._text); - this.hiddenTextarea.selectionStart = newSelection.selectionStart; - this.hiddenTextarea.selectionEnd = newSelection.selectionEnd; - } - this.updateTextareaPosition(); - }, - - /** - * @private - */ - updateFromTextArea: function() { - if (!this.hiddenTextarea) { - return; - } - this.cursorOffsetCache = { }; - this.text = this.hiddenTextarea.value; - if (this._shouldClearDimensionCache()) { - this.initDimensions(); - this.setCoords(); - } - var newSelection = this.fromStringToGraphemeSelection( - this.hiddenTextarea.selectionStart, this.hiddenTextarea.selectionEnd, this.hiddenTextarea.value); - this.selectionEnd = this.selectionStart = newSelection.selectionEnd; - if (!this.inCompositionMode) { - this.selectionStart = newSelection.selectionStart; - } - this.updateTextareaPosition(); - }, - - /** - * @private - */ - updateTextareaPosition: function() { - if (this.selectionStart === this.selectionEnd) { - var style = this._calcTextareaPosition(); - this.hiddenTextarea.style.left = style.left; - this.hiddenTextarea.style.top = style.top; - } - }, - - /** - * @private - * @return {Object} style contains style for hiddenTextarea - */ - _calcTextareaPosition: function() { - if (!this.canvas) { - return { x: 1, y: 1 }; - } - var desiredPosition = this.inCompositionMode ? this.compositionStart : this.selectionStart, - boundaries = this._getCursorBoundaries(desiredPosition), - cursorLocation = this.get2DCursorLocation(desiredPosition), - lineIndex = cursorLocation.lineIndex, - charIndex = cursorLocation.charIndex, - charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize') * this.lineHeight, - leftOffset = boundaries.leftOffset, - m = this.calcTransformMatrix(), - p = { - x: boundaries.left + leftOffset, - y: boundaries.top + boundaries.topOffset + charHeight - }, - retinaScaling = this.canvas.getRetinaScaling(), - upperCanvas = this.canvas.upperCanvasEl, - upperCanvasWidth = upperCanvas.width / retinaScaling, - upperCanvasHeight = upperCanvas.height / retinaScaling, - maxWidth = upperCanvasWidth - charHeight, - maxHeight = upperCanvasHeight - charHeight, - scaleX = upperCanvas.clientWidth / upperCanvasWidth, - scaleY = upperCanvas.clientHeight / upperCanvasHeight; - - p = fabric.util.transformPoint(p, m); - p = fabric.util.transformPoint(p, this.canvas.viewportTransform); - p.x *= scaleX; - p.y *= scaleY; - if (p.x < 0) { - p.x = 0; - } - if (p.x > maxWidth) { - p.x = maxWidth; - } - if (p.y < 0) { - p.y = 0; - } - if (p.y > maxHeight) { - p.y = maxHeight; - } - - // add canvas offset on document - p.x += this.canvas._offset.left; - p.y += this.canvas._offset.top; - - return { left: p.x + 'px', top: p.y + 'px', fontSize: charHeight + 'px', charHeight: charHeight }; - }, - - /** - * @private - */ - _saveEditingProps: function() { - this._savedProps = { - hasControls: this.hasControls, - borderColor: this.borderColor, - lockMovementX: this.lockMovementX, - lockMovementY: this.lockMovementY, - hoverCursor: this.hoverCursor, - selectable: this.selectable, - defaultCursor: this.canvas && this.canvas.defaultCursor, - moveCursor: this.canvas && this.canvas.moveCursor - }; - }, - - /** - * @private - */ - _restoreEditingProps: function() { - if (!this._savedProps) { - return; - } - - this.hoverCursor = this._savedProps.hoverCursor; - this.hasControls = this._savedProps.hasControls; - this.borderColor = this._savedProps.borderColor; - this.selectable = this._savedProps.selectable; - this.lockMovementX = this._savedProps.lockMovementX; - this.lockMovementY = this._savedProps.lockMovementY; - - if (this.canvas) { - this.canvas.defaultCursor = this._savedProps.defaultCursor; - this.canvas.moveCursor = this._savedProps.moveCursor; - } - }, - - /** - * Exits from editing state - * @return {fabric.IText} thisArg - * @chainable - */ - exitEditing: function() { - var isTextChanged = (this._textBeforeEdit !== this.text); - this.selected = false; - this.isEditing = false; - - this.selectionEnd = this.selectionStart; - - if (this.hiddenTextarea) { - this.hiddenTextarea.blur && this.hiddenTextarea.blur(); - this.canvas && this.hiddenTextarea.parentNode.removeChild(this.hiddenTextarea); - this.hiddenTextarea = null; - } - - this.abortCursorAnimation(); - this._restoreEditingProps(); - this._currentCursorOpacity = 0; - if (this._shouldClearDimensionCache()) { - this.initDimensions(); - this.setCoords(); - } - this.fire('editing:exited'); - isTextChanged && this.fire('modified'); - if (this.canvas) { - this.canvas.off('mouse:move', this.mouseMoveHandler); - this.canvas.fire('text:editing:exited', { target: this }); - isTextChanged && this.canvas.fire('object:modified', { target: this }); - } - return this; - }, - - /** - * @private - */ - _removeExtraneousStyles: function() { - for (var prop in this.styles) { - if (!this._textLines[prop]) { - delete this.styles[prop]; - } - } - }, - - /** - * remove and reflow a style block from start to end. - * @param {Number} start linear start position for removal (included in removal) - * @param {Number} end linear end position for removal ( excluded from removal ) - */ - removeStyleFromTo: function(start, end) { - var cursorStart = this.get2DCursorLocation(start, true), - cursorEnd = this.get2DCursorLocation(end, true), - lineStart = cursorStart.lineIndex, - charStart = cursorStart.charIndex, - lineEnd = cursorEnd.lineIndex, - charEnd = cursorEnd.charIndex, - i, styleObj; - if (lineStart !== lineEnd) { - // step1 remove the trailing of lineStart - if (this.styles[lineStart]) { - for (i = charStart; i < this._unwrappedTextLines[lineStart].length; i++) { - delete this.styles[lineStart][i]; - } - } - // step2 move the trailing of lineEnd to lineStart if needed - if (this.styles[lineEnd]) { - for (i = charEnd; i < this._unwrappedTextLines[lineEnd].length; i++) { - styleObj = this.styles[lineEnd][i]; - if (styleObj) { - this.styles[lineStart] || (this.styles[lineStart] = { }); - this.styles[lineStart][charStart + i - charEnd] = styleObj; - } - } - } - // step3 detects lines will be completely removed. - for (i = lineStart + 1; i <= lineEnd; i++) { - delete this.styles[i]; - } - // step4 shift remaining lines. - this.shiftLineStyles(lineEnd, lineStart - lineEnd); - } - else { - // remove and shift left on the same line - if (this.styles[lineStart]) { - styleObj = this.styles[lineStart]; - var diff = charEnd - charStart, numericChar, _char; - for (i = charStart; i < charEnd; i++) { - delete styleObj[i]; - } - for (_char in this.styles[lineStart]) { - numericChar = parseInt(_char, 10); - if (numericChar >= charEnd) { - styleObj[numericChar - diff] = styleObj[_char]; - delete styleObj[_char]; - } - } - } - } - }, - - /** - * Shifts line styles up or down - * @param {Number} lineIndex Index of a line - * @param {Number} offset Can any number? - */ - shiftLineStyles: function(lineIndex, offset) { - // shift all line styles by offset upward or downward - // do not clone deep. we need new array, not new style objects - var clonedStyles = clone(this.styles); - for (var line in this.styles) { - var numericLine = parseInt(line, 10); - if (numericLine > lineIndex) { - this.styles[numericLine + offset] = clonedStyles[numericLine]; - if (!clonedStyles[numericLine - offset]) { - delete this.styles[numericLine]; - } - } - } - }, - - restartCursorIfNeeded: function() { - if (!this._currentTickState || this._currentTickState.isAborted - || !this._currentTickCompleteState || this._currentTickCompleteState.isAborted - ) { - this.initDelayedCursor(); - } - }, - - /** - * Inserts new style object - * @param {Number} lineIndex Index of a line - * @param {Number} charIndex Index of a char - * @param {Number} qty number of lines to add - * @param {Array} copiedStyle Array of objects styles - */ - insertNewlineStyleObject: function(lineIndex, charIndex, qty, copiedStyle) { - var currentCharStyle, - newLineStyles = {}, - somethingAdded = false; - - qty || (qty = 1); - this.shiftLineStyles(lineIndex, qty); - if (this.styles[lineIndex]) { - currentCharStyle = this.styles[lineIndex][charIndex === 0 ? charIndex : charIndex - 1]; - } - - // we clone styles of all chars - // after cursor onto the current line - for (var index in this.styles[lineIndex]) { - var numIndex = parseInt(index, 10); - if (numIndex >= charIndex) { - somethingAdded = true; - newLineStyles[numIndex - charIndex] = this.styles[lineIndex][index]; - // remove lines from the previous line since they're on a new line now - delete this.styles[lineIndex][index]; - } - } - if (somethingAdded) { - this.styles[lineIndex + qty] = newLineStyles; - } - else { - delete this.styles[lineIndex + qty]; - } - // for the other lines - // we clone current char style onto the next (otherwise empty) line - while (qty > 1) { - qty--; - if (copiedStyle && copiedStyle[qty]) { - this.styles[lineIndex + qty] = { 0: clone(copiedStyle[qty]) }; - } - else if (currentCharStyle) { - this.styles[lineIndex + qty] = { 0: clone(currentCharStyle) }; - } - else { - delete this.styles[lineIndex + qty]; - } - } - this._forceClearCache = true; - }, - - /** - * Inserts style object for a given line/char index - * @param {Number} lineIndex Index of a line - * @param {Number} charIndex Index of a char - * @param {Number} quantity number Style object to insert, if given - * @param {Array} copiedStyle array of style objects - */ - insertCharStyleObject: function(lineIndex, charIndex, quantity, copiedStyle) { - if (!this.styles) { - this.styles = {}; - } - var currentLineStyles = this.styles[lineIndex], - currentLineStylesCloned = currentLineStyles ? clone(currentLineStyles) : {}; - - quantity || (quantity = 1); - // shift all char styles by quantity forward - // 0,1,2,3 -> (charIndex=2) -> 0,1,3,4 -> (insert 2) -> 0,1,2,3,4 - for (var index in currentLineStylesCloned) { - var numericIndex = parseInt(index, 10); - if (numericIndex >= charIndex) { - currentLineStyles[numericIndex + quantity] = currentLineStylesCloned[numericIndex]; - // only delete the style if there was nothing moved there - if (!currentLineStylesCloned[numericIndex - quantity]) { - delete currentLineStyles[numericIndex]; - } - } - } - this._forceClearCache = true; - if (copiedStyle) { - while (quantity--) { - if (!Object.keys(copiedStyle[quantity]).length) { - continue; - } - if (!this.styles[lineIndex]) { - this.styles[lineIndex] = {}; - } - this.styles[lineIndex][charIndex + quantity] = clone(copiedStyle[quantity]); - } - return; - } - if (!currentLineStyles) { - return; - } - var newStyle = currentLineStyles[charIndex ? charIndex - 1 : 1]; - while (newStyle && quantity--) { - this.styles[lineIndex][charIndex + quantity] = clone(newStyle); - } - }, - - /** - * Inserts style object(s) - * @param {Array} insertedText Characters at the location where style is inserted - * @param {Number} start cursor index for inserting style - * @param {Array} [copiedStyle] array of style objects to insert. - */ - insertNewStyleBlock: function(insertedText, start, copiedStyle) { - var cursorLoc = this.get2DCursorLocation(start, true), - addedLines = [0], linesLength = 0; - for (var i = 0; i < insertedText.length; i++) { - if (insertedText[i] === '\n') { - linesLength++; - addedLines[linesLength] = 0; - } - else { - addedLines[linesLength]++; - } - } - if (addedLines[0] > 0) { - this.insertCharStyleObject(cursorLoc.lineIndex, cursorLoc.charIndex, addedLines[0], copiedStyle); - copiedStyle = copiedStyle && copiedStyle.slice(addedLines[0] + 1); - } - linesLength && this.insertNewlineStyleObject( - cursorLoc.lineIndex, cursorLoc.charIndex + addedLines[0], linesLength); - for (var i = 1; i < linesLength; i++) { - if (addedLines[i] > 0) { - this.insertCharStyleObject(cursorLoc.lineIndex + i, 0, addedLines[i], copiedStyle); - } - else if (copiedStyle) { - this.styles[cursorLoc.lineIndex + i][0] = copiedStyle[0]; - } - copiedStyle = copiedStyle && copiedStyle.slice(addedLines[i] + 1); - } - // we use i outside the loop to get it like linesLength - if (addedLines[i] > 0) { - this.insertCharStyleObject(cursorLoc.lineIndex + i, 0, addedLines[i], copiedStyle); - } - }, - - /** - * Set the selectionStart and selectionEnd according to the new position of cursor - * mimic the key - mouse navigation when shift is pressed. - */ - setSelectionStartEndWithShift: function(start, end, newSelection) { - if (newSelection <= start) { - if (end === start) { - this._selectionDirection = 'left'; - } - else if (this._selectionDirection === 'right') { - this._selectionDirection = 'left'; - this.selectionEnd = start; - } - this.selectionStart = newSelection; - } - else if (newSelection > start && newSelection < end) { - if (this._selectionDirection === 'right') { - this.selectionEnd = newSelection; - } - else { - this.selectionStart = newSelection; - } - } - else { - // newSelection is > selection start and end - if (end === start) { - this._selectionDirection = 'right'; - } - else if (this._selectionDirection === 'left') { - this._selectionDirection = 'right'; - this.selectionStart = end; - } - this.selectionEnd = newSelection; - } - }, - - setSelectionInBoundaries: function() { - var length = this.text.length; - if (this.selectionStart > length) { - this.selectionStart = length; - } - else if (this.selectionStart < 0) { - this.selectionStart = 0; - } - if (this.selectionEnd > length) { - this.selectionEnd = length; - } - else if (this.selectionEnd < 0) { - this.selectionEnd = 0; - } - } - }); -})(); - - -fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ { - /** - * Initializes "dbclick" event handler - */ - initDoubleClickSimulation: function() { - - // for double click - this.__lastClickTime = +new Date(); - - // for triple click - this.__lastLastClickTime = +new Date(); - - this.__lastPointer = { }; - - this.on('mousedown', this.onMouseDown); - }, - - /** - * Default event handler to simulate triple click - * @private - */ - onMouseDown: function(options) { - if (!this.canvas) { - return; - } - this.__newClickTime = +new Date(); - var newPointer = options.pointer; - if (this.isTripleClick(newPointer)) { - this.fire('tripleclick', options); - this._stopEvent(options.e); - } - this.__lastLastClickTime = this.__lastClickTime; - this.__lastClickTime = this.__newClickTime; - this.__lastPointer = newPointer; - this.__lastIsEditing = this.isEditing; - this.__lastSelected = this.selected; - }, - - isTripleClick: function(newPointer) { - return this.__newClickTime - this.__lastClickTime < 500 && - this.__lastClickTime - this.__lastLastClickTime < 500 && - this.__lastPointer.x === newPointer.x && - this.__lastPointer.y === newPointer.y; - }, - - /** - * @private - */ - _stopEvent: function(e) { - e.preventDefault && e.preventDefault(); - e.stopPropagation && e.stopPropagation(); - }, - - /** - * Initializes event handlers related to cursor or selection - */ - initCursorSelectionHandlers: function() { - this.initMousedownHandler(); - this.initMouseupHandler(); - this.initClicks(); - }, - - /** - * Default handler for double click, select a word - */ - doubleClickHandler: function(options) { - if (!this.isEditing) { - return; - } - this.selectWord(this.getSelectionStartFromPointer(options.e)); - }, - - /** - * Default handler for triple click, select a line - */ - tripleClickHandler: function(options) { - if (!this.isEditing) { - return; - } - this.selectLine(this.getSelectionStartFromPointer(options.e)); - }, - - /** - * Initializes double and triple click event handlers - */ - initClicks: function() { - this.on('mousedblclick', this.doubleClickHandler); - this.on('tripleclick', this.tripleClickHandler); - }, - - /** - * Default event handler for the basic functionalities needed on _mouseDown - * can be overridden to do something different. - * Scope of this implementation is: find the click position, set selectionStart - * find selectionEnd, initialize the drawing of either cursor or selection area - */ - _mouseDownHandler: function(options) { - if (!this.canvas || !this.editable || (options.e.button && options.e.button !== 1)) { - return; - } - - this.__isMousedown = true; - - if (this.selected) { - this.setCursorByClick(options.e); - } - - if (this.isEditing) { - this.__selectionStartOnMouseDown = this.selectionStart; - if (this.selectionStart === this.selectionEnd) { - this.abortCursorAnimation(); - } - this.renderCursorOrSelection(); - } - }, - - /** - * Default event handler for the basic functionalities needed on mousedown:before - * can be overridden to do something different. - * Scope of this implementation is: verify the object is already selected when mousing down - */ - _mouseDownHandlerBefore: function(options) { - if (!this.canvas || !this.editable || (options.e.button && options.e.button !== 1)) { - return; - } - // we want to avoid that an object that was selected and then becomes unselectable, - // may trigger editing mode in some way. - this.selected = this === this.canvas._activeObject; - }, - - /** - * Initializes "mousedown" event handler - */ - initMousedownHandler: function() { - this.on('mousedown', this._mouseDownHandler); - this.on('mousedown:before', this._mouseDownHandlerBefore); - }, - - /** - * Initializes "mouseup" event handler - */ - initMouseupHandler: function() { - this.on('mouseup', this.mouseUpHandler); - }, - - /** - * standard hander for mouse up, overridable - * @private - */ - mouseUpHandler: function(options) { - this.__isMousedown = false; - if (!this.editable || this.group || - (options.transform && options.transform.actionPerformed) || - (options.e.button && options.e.button !== 1)) { - return; - } - - if (this.canvas) { - var currentActive = this.canvas._activeObject; - if (currentActive && currentActive !== this) { - // avoid running this logic when there is an active object - // this because is possible with shift click and fast clicks, - // to rapidly deselect and reselect this object and trigger an enterEdit - return; - } - } - - if (this.__lastSelected && !this.__corner) { - this.selected = false; - this.__lastSelected = false; - this.enterEditing(options.e); - if (this.selectionStart === this.selectionEnd) { - this.initDelayedCursor(true); - } - else { - this.renderCursorOrSelection(); - } - } - else { - this.selected = true; - } - }, - - /** - * Changes cursor location in a text depending on passed pointer (x/y) object - * @param {Event} e Event object - */ - setCursorByClick: function(e) { - var newSelection = this.getSelectionStartFromPointer(e), - start = this.selectionStart, end = this.selectionEnd; - if (e.shiftKey) { - this.setSelectionStartEndWithShift(start, end, newSelection); - } - else { - this.selectionStart = newSelection; - this.selectionEnd = newSelection; - } - if (this.isEditing) { - this._fireSelectionChanged(); - this._updateTextarea(); - } - }, - - /** - * Returns index of a character corresponding to where an object was clicked - * @param {Event} e Event object - * @return {Number} Index of a character - */ - getSelectionStartFromPointer: function(e) { - var mouseOffset = this.getLocalPointer(e), - prevWidth = 0, - width = 0, - height = 0, - charIndex = 0, - lineIndex = 0, - lineLeftOffset, - line; - - for (var i = 0, len = this._textLines.length; i < len; i++) { - if (height <= mouseOffset.y) { - height += this.getHeightOfLine(i) * this.scaleY; - lineIndex = i; - if (i > 0) { - charIndex += this._textLines[i - 1].length + this.missingNewlineOffset(i - 1); - } - } - else { - break; - } - } - lineLeftOffset = this._getLineLeftOffset(lineIndex); - width = lineLeftOffset * this.scaleX; - line = this._textLines[lineIndex]; - for (var j = 0, jlen = line.length; j < jlen; j++) { - prevWidth = width; - // i removed something about flipX here, check. - width += this.__charBounds[lineIndex][j].kernedWidth * this.scaleX; - if (width <= mouseOffset.x) { - charIndex++; - } - else { - break; - } - } - return this._getNewSelectionStartFromOffset(mouseOffset, prevWidth, width, charIndex, jlen); - }, - - /** - * @private - */ - _getNewSelectionStartFromOffset: function(mouseOffset, prevWidth, width, index, jlen) { - // we need Math.abs because when width is after the last char, the offset is given as 1, while is 0 - var distanceBtwLastCharAndCursor = mouseOffset.x - prevWidth, - distanceBtwNextCharAndCursor = width - mouseOffset.x, - offset = distanceBtwNextCharAndCursor > distanceBtwLastCharAndCursor || - distanceBtwNextCharAndCursor < 0 ? 0 : 1, - newSelectionStart = index + offset; - // if object is horizontally flipped, mirror cursor location from the end - if (this.flipX) { - newSelectionStart = jlen - newSelectionStart; - } - - if (newSelectionStart > this._text.length) { - newSelectionStart = this._text.length; - } - - return newSelectionStart; - } -}); - - -fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ { - - /** - * Initializes hidden textarea (needed to bring up keyboard in iOS) - */ - initHiddenTextarea: function() { - this.hiddenTextarea = fabric.document.createElement('textarea'); - this.hiddenTextarea.setAttribute('autocapitalize', 'off'); - this.hiddenTextarea.setAttribute('autocorrect', 'off'); - this.hiddenTextarea.setAttribute('autocomplete', 'off'); - this.hiddenTextarea.setAttribute('spellcheck', 'false'); - this.hiddenTextarea.setAttribute('data-fabric-hiddentextarea', ''); - this.hiddenTextarea.setAttribute('wrap', 'off'); - var style = this._calcTextareaPosition(); - // line-height: 1px; was removed from the style to fix this: - // https://bugs.chromium.org/p/chromium/issues/detail?id=870966 - this.hiddenTextarea.style.cssText = 'position: absolute; top: ' + style.top + - '; left: ' + style.left + '; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px;' + - ' paddingーtop: ' + style.fontSize + ';'; - fabric.document.body.appendChild(this.hiddenTextarea); - - fabric.util.addListener(this.hiddenTextarea, 'keydown', this.onKeyDown.bind(this)); - fabric.util.addListener(this.hiddenTextarea, 'keyup', this.onKeyUp.bind(this)); - fabric.util.addListener(this.hiddenTextarea, 'input', this.onInput.bind(this)); - fabric.util.addListener(this.hiddenTextarea, 'copy', this.copy.bind(this)); - fabric.util.addListener(this.hiddenTextarea, 'cut', this.copy.bind(this)); - fabric.util.addListener(this.hiddenTextarea, 'paste', this.paste.bind(this)); - fabric.util.addListener(this.hiddenTextarea, 'compositionstart', this.onCompositionStart.bind(this)); - fabric.util.addListener(this.hiddenTextarea, 'compositionupdate', this.onCompositionUpdate.bind(this)); - fabric.util.addListener(this.hiddenTextarea, 'compositionend', this.onCompositionEnd.bind(this)); - - if (!this._clickHandlerInitialized && this.canvas) { - fabric.util.addListener(this.canvas.upperCanvasEl, 'click', this.onClick.bind(this)); - this._clickHandlerInitialized = true; - } - }, - - /** - * For functionalities on keyDown - * Map a special key to a function of the instance/prototype - * If you need different behaviour for ESC or TAB or arrows, you have to change - * this map setting the name of a function that you build on the fabric.Itext or - * your prototype. - * the map change will affect all Instances unless you need for only some text Instances - * in that case you have to clone this object and assign your Instance. - * this.keysMap = fabric.util.object.clone(this.keysMap); - * The function must be in fabric.Itext.prototype.myFunction And will receive event as args[0] - */ - keysMap: { - 9: 'exitEditing', - 27: 'exitEditing', - 33: 'moveCursorUp', - 34: 'moveCursorDown', - 35: 'moveCursorRight', - 36: 'moveCursorLeft', - 37: 'moveCursorLeft', - 38: 'moveCursorUp', - 39: 'moveCursorRight', - 40: 'moveCursorDown', - }, - - /** - * For functionalities on keyUp + ctrl || cmd - */ - ctrlKeysMapUp: { - 67: 'copy', - 88: 'cut' - }, - - /** - * For functionalities on keyDown + ctrl || cmd - */ - ctrlKeysMapDown: { - 65: 'selectAll' - }, - - onClick: function() { - // No need to trigger click event here, focus is enough to have the keyboard appear on Android - this.hiddenTextarea && this.hiddenTextarea.focus(); - }, - - /** - * Handles keyup event - * @param {Event} e Event object - */ - onKeyDown: function(e) { - if (!this.isEditing || this.inCompositionMode) { - return; - } - if (e.keyCode in this.keysMap) { - this[this.keysMap[e.keyCode]](e); - } - else if ((e.keyCode in this.ctrlKeysMapDown) && (e.ctrlKey || e.metaKey)) { - this[this.ctrlKeysMapDown[e.keyCode]](e); - } - else { - return; - } - e.stopImmediatePropagation(); - e.preventDefault(); - if (e.keyCode >= 33 && e.keyCode <= 40) { - // if i press an arrow key just update selection - this.clearContextTop(); - this.renderCursorOrSelection(); - } - else { - this.canvas && this.canvas.requestRenderAll(); - } - }, - - /** - * Handles keyup event - * We handle KeyUp because ie11 and edge have difficulties copy/pasting - * if a copy/cut event fired, keyup is dismissed - * @param {Event} e Event object - */ - onKeyUp: function(e) { - if (!this.isEditing || this._copyDone || this.inCompositionMode) { - this._copyDone = false; - return; - } - if ((e.keyCode in this.ctrlKeysMapUp) && (e.ctrlKey || e.metaKey)) { - this[this.ctrlKeysMapUp[e.keyCode]](e); - } - else { - return; - } - e.stopImmediatePropagation(); - e.preventDefault(); - this.canvas && this.canvas.requestRenderAll(); - }, - - /** - * Handles onInput event - * @param {Event} e Event object - */ - onInput: function(e) { - var fromPaste = this.fromPaste; - this.fromPaste = false; - e && e.stopPropagation(); - if (!this.isEditing) { - return; - } - // decisions about style changes. - var nextText = this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText, - charCount = this._text.length, - nextCharCount = nextText.length, - removedText, insertedText, - charDiff = nextCharCount - charCount; - if (this.hiddenTextarea.value === '') { - this.styles = { }; - this.updateFromTextArea(); - this.fire('changed'); - if (this.canvas) { - this.canvas.fire('text:changed', { target: this }); - this.canvas.requestRenderAll(); - } - return; - } - - var textareaSelection = this.fromStringToGraphemeSelection( - this.hiddenTextarea.selectionStart, - this.hiddenTextarea.selectionEnd, - this.hiddenTextarea.value - ); - var backDelete = this.selectionStart > textareaSelection.selectionStart; - - if (this.selectionStart !== this.selectionEnd) { - removedText = this._text.slice(this.selectionStart, this.selectionEnd); - charDiff += this.selectionEnd - this.selectionStart; - } - else if (nextCharCount < charCount) { - if (backDelete) { - removedText = this._text.slice(this.selectionEnd + charDiff, this.selectionEnd); - } - else { - removedText = this._text.slice(this.selectionStart, this.selectionStart - charDiff); - } - } - insertedText = nextText.slice(textareaSelection.selectionEnd - charDiff, textareaSelection.selectionEnd); - if (removedText && removedText.length) { - if (this.selectionStart !== this.selectionEnd) { - this.removeStyleFromTo(this.selectionStart, this.selectionEnd); - } - else if (backDelete) { - // detect differencies between forwardDelete and backDelete - this.removeStyleFromTo(this.selectionEnd - removedText.length, this.selectionEnd); - } - else { - this.removeStyleFromTo(this.selectionEnd, this.selectionEnd + removedText.length); - } - } - if (insertedText.length) { - if (fromPaste && insertedText.join('') === fabric.copiedText && !fabric.disableStyleCopyPaste) { - this.insertNewStyleBlock(insertedText, this.selectionStart, fabric.copiedTextStyle); - } - else { - this.insertNewStyleBlock(insertedText, this.selectionStart); - } - } - this.updateFromTextArea(); - this.fire('changed'); - if (this.canvas) { - this.canvas.fire('text:changed', { target: this }); - this.canvas.requestRenderAll(); - } - }, - /** - * Composition start - */ - onCompositionStart: function() { - this.inCompositionMode = true; - }, - - /** - * Composition end - */ - onCompositionEnd: function() { - this.inCompositionMode = false; - }, - - // /** - // * Composition update - // */ - onCompositionUpdate: function(e) { - this.compositionStart = e.target.selectionStart; - this.compositionEnd = e.target.selectionEnd; - this.updateTextareaPosition(); - }, - - /** - * Copies selected text - * @param {Event} e Event object - */ - copy: function() { - if (this.selectionStart === this.selectionEnd) { - //do not cut-copy if no selection - return; - } - - fabric.copiedText = this.getSelectedText(); - if (!fabric.disableStyleCopyPaste) { - fabric.copiedTextStyle = this.getSelectionStyles(this.selectionStart, this.selectionEnd, true); - } - else { - fabric.copiedTextStyle = null; - } - this._copyDone = true; - }, - - /** - * Pastes text - * @param {Event} e Event object - */ - paste: function() { - this.fromPaste = true; - }, - - /** - * @private - * @param {Event} e Event object - * @return {Object} Clipboard data object - */ - _getClipboardData: function(e) { - return (e && e.clipboardData) || fabric.window.clipboardData; - }, - - /** - * Finds the width in pixels before the cursor on the same line - * @private - * @param {Number} lineIndex - * @param {Number} charIndex - * @return {Number} widthBeforeCursor width before cursor - */ - _getWidthBeforeCursor: function(lineIndex, charIndex) { - var widthBeforeCursor = this._getLineLeftOffset(lineIndex), bound; - - if (charIndex > 0) { - bound = this.__charBounds[lineIndex][charIndex - 1]; - widthBeforeCursor += bound.left + bound.width; - } - return widthBeforeCursor; - }, - - /** - * Gets start offset of a selection - * @param {Event} e Event object - * @param {Boolean} isRight - * @return {Number} - */ - getDownCursorOffset: function(e, isRight) { - var selectionProp = this._getSelectionForOffset(e, isRight), - cursorLocation = this.get2DCursorLocation(selectionProp), - lineIndex = cursorLocation.lineIndex; - // if on last line, down cursor goes to end of line - if (lineIndex === this._textLines.length - 1 || e.metaKey || e.keyCode === 34) { - // move to the end of a text - return this._text.length - selectionProp; - } - var charIndex = cursorLocation.charIndex, - widthBeforeCursor = this._getWidthBeforeCursor(lineIndex, charIndex), - indexOnOtherLine = this._getIndexOnLine(lineIndex + 1, widthBeforeCursor), - textAfterCursor = this._textLines[lineIndex].slice(charIndex); - return textAfterCursor.length + indexOnOtherLine + 1 + this.missingNewlineOffset(lineIndex); - }, - - /** - * private - * Helps finding if the offset should be counted from Start or End - * @param {Event} e Event object - * @param {Boolean} isRight - * @return {Number} - */ - _getSelectionForOffset: function(e, isRight) { - if (e.shiftKey && this.selectionStart !== this.selectionEnd && isRight) { - return this.selectionEnd; - } - else { - return this.selectionStart; - } - }, - - /** - * @param {Event} e Event object - * @param {Boolean} isRight - * @return {Number} - */ - getUpCursorOffset: function(e, isRight) { - var selectionProp = this._getSelectionForOffset(e, isRight), - cursorLocation = this.get2DCursorLocation(selectionProp), - lineIndex = cursorLocation.lineIndex; - if (lineIndex === 0 || e.metaKey || e.keyCode === 33) { - // if on first line, up cursor goes to start of line - return -selectionProp; - } - var charIndex = cursorLocation.charIndex, - widthBeforeCursor = this._getWidthBeforeCursor(lineIndex, charIndex), - indexOnOtherLine = this._getIndexOnLine(lineIndex - 1, widthBeforeCursor), - textBeforeCursor = this._textLines[lineIndex].slice(0, charIndex), - missingNewlineOffset = this.missingNewlineOffset(lineIndex - 1); - // return a negative offset - return -this._textLines[lineIndex - 1].length - + indexOnOtherLine - textBeforeCursor.length + (1 - missingNewlineOffset); - }, - - /** - * for a given width it founds the matching character. - * @private - */ - _getIndexOnLine: function(lineIndex, width) { - - var line = this._textLines[lineIndex], - lineLeftOffset = this._getLineLeftOffset(lineIndex), - widthOfCharsOnLine = lineLeftOffset, - indexOnLine = 0, charWidth, foundMatch; - - for (var j = 0, jlen = line.length; j < jlen; j++) { - charWidth = this.__charBounds[lineIndex][j].width; - widthOfCharsOnLine += charWidth; - if (widthOfCharsOnLine > width) { - foundMatch = true; - var leftEdge = widthOfCharsOnLine - charWidth, - rightEdge = widthOfCharsOnLine, - offsetFromLeftEdge = Math.abs(leftEdge - width), - offsetFromRightEdge = Math.abs(rightEdge - width); - - indexOnLine = offsetFromRightEdge < offsetFromLeftEdge ? j : (j - 1); - break; - } - } - - // reached end - if (!foundMatch) { - indexOnLine = line.length - 1; - } - - return indexOnLine; - }, - - - /** - * Moves cursor down - * @param {Event} e Event object - */ - moveCursorDown: function(e) { - if (this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length) { - return; - } - this._moveCursorUpOrDown('Down', e); - }, - - /** - * Moves cursor up - * @param {Event} e Event object - */ - moveCursorUp: function(e) { - if (this.selectionStart === 0 && this.selectionEnd === 0) { - return; - } - this._moveCursorUpOrDown('Up', e); - }, - - /** - * Moves cursor up or down, fires the events - * @param {String} direction 'Up' or 'Down' - * @param {Event} e Event object - */ - _moveCursorUpOrDown: function(direction, e) { - // getUpCursorOffset - // getDownCursorOffset - var action = 'get' + direction + 'CursorOffset', - offset = this[action](e, this._selectionDirection === 'right'); - if (e.shiftKey) { - this.moveCursorWithShift(offset); - } - else { - this.moveCursorWithoutShift(offset); - } - if (offset !== 0) { - this.setSelectionInBoundaries(); - this.abortCursorAnimation(); - this._currentCursorOpacity = 1; - this.initDelayedCursor(); - this._fireSelectionChanged(); - this._updateTextarea(); - } - }, - - /** - * Moves cursor with shift - * @param {Number} offset - */ - moveCursorWithShift: function(offset) { - var newSelection = this._selectionDirection === 'left' - ? this.selectionStart + offset - : this.selectionEnd + offset; - this.setSelectionStartEndWithShift(this.selectionStart, this.selectionEnd, newSelection); - return offset !== 0; - }, - - /** - * Moves cursor up without shift - * @param {Number} offset - */ - moveCursorWithoutShift: function(offset) { - if (offset < 0) { - this.selectionStart += offset; - this.selectionEnd = this.selectionStart; - } - else { - this.selectionEnd += offset; - this.selectionStart = this.selectionEnd; - } - return offset !== 0; - }, - - /** - * Moves cursor left - * @param {Event} e Event object - */ - moveCursorLeft: function(e) { - if (this.selectionStart === 0 && this.selectionEnd === 0) { - return; - } - this._moveCursorLeftOrRight('Left', e); - }, - - /** - * @private - * @return {Boolean} true if a change happened - */ - _move: function(e, prop, direction) { - var newValue; - if (e.altKey) { - newValue = this['findWordBoundary' + direction](this[prop]); - } - else if (e.metaKey || e.keyCode === 35 || e.keyCode === 36 ) { - newValue = this['findLineBoundary' + direction](this[prop]); - } - else { - this[prop] += direction === 'Left' ? -1 : 1; - return true; - } - if (typeof newValue !== undefined && this[prop] !== newValue) { - this[prop] = newValue; - return true; - } - }, - - /** - * @private - */ - _moveLeft: function(e, prop) { - return this._move(e, prop, 'Left'); - }, - - /** - * @private - */ - _moveRight: function(e, prop) { - return this._move(e, prop, 'Right'); - }, - - /** - * Moves cursor left without keeping selection - * @param {Event} e - */ - moveCursorLeftWithoutShift: function(e) { - var change = true; - this._selectionDirection = 'left'; - - // only move cursor when there is no selection, - // otherwise we discard it, and leave cursor on same place - if (this.selectionEnd === this.selectionStart && this.selectionStart !== 0) { - change = this._moveLeft(e, 'selectionStart'); - - } - this.selectionEnd = this.selectionStart; - return change; - }, - - /** - * Moves cursor left while keeping selection - * @param {Event} e - */ - moveCursorLeftWithShift: function(e) { - if (this._selectionDirection === 'right' && this.selectionStart !== this.selectionEnd) { - return this._moveLeft(e, 'selectionEnd'); - } - else if (this.selectionStart !== 0){ - this._selectionDirection = 'left'; - return this._moveLeft(e, 'selectionStart'); - } - }, - - /** - * Moves cursor right - * @param {Event} e Event object - */ - moveCursorRight: function(e) { - if (this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length) { - return; - } - this._moveCursorLeftOrRight('Right', e); - }, - - /** - * Moves cursor right or Left, fires event - * @param {String} direction 'Left', 'Right' - * @param {Event} e Event object - */ - _moveCursorLeftOrRight: function(direction, e) { - var actionName = 'moveCursor' + direction + 'With'; - this._currentCursorOpacity = 1; - - if (e.shiftKey) { - actionName += 'Shift'; - } - else { - actionName += 'outShift'; - } - if (this[actionName](e)) { - this.abortCursorAnimation(); - this.initDelayedCursor(); - this._fireSelectionChanged(); - this._updateTextarea(); - } - }, - - /** - * Moves cursor right while keeping selection - * @param {Event} e - */ - moveCursorRightWithShift: function(e) { - if (this._selectionDirection === 'left' && this.selectionStart !== this.selectionEnd) { - return this._moveRight(e, 'selectionStart'); - } - else if (this.selectionEnd !== this._text.length) { - this._selectionDirection = 'right'; - return this._moveRight(e, 'selectionEnd'); - } - }, - - /** - * Moves cursor right without keeping selection - * @param {Event} e Event object - */ - moveCursorRightWithoutShift: function(e) { - var changed = true; - this._selectionDirection = 'right'; - - if (this.selectionStart === this.selectionEnd) { - changed = this._moveRight(e, 'selectionStart'); - this.selectionEnd = this.selectionStart; - } - else { - this.selectionStart = this.selectionEnd; - } - return changed; - }, - - /** - * Removes characters from start/end - * start/end ar per grapheme position in _text array. - * - * @param {Number} start - * @param {Number} end default to start + 1 - */ - removeChars: function(start, end) { - if (typeof end === 'undefined') { - end = start + 1; - } - this.removeStyleFromTo(start, end); - this._text.splice(start, end - start); - this.text = this._text.join(''); - this.set('dirty', true); - if (this._shouldClearDimensionCache()) { - this.initDimensions(); - this.setCoords(); - } - this._removeExtraneousStyles(); - }, - - /** - * insert characters at start position, before start position. - * start equal 1 it means the text get inserted between actual grapheme 0 and 1 - * if style array is provided, it must be as the same length of text in graphemes - * if end is provided and is bigger than start, old text is replaced. - * start/end ar per grapheme position in _text array. - * - * @param {String} text text to insert - * @param {Array} style array of style objects - * @param {Number} start - * @param {Number} end default to start + 1 - */ - insertChars: function(text, style, start, end) { - if (typeof end === 'undefined') { - end = start; - } - if (end > start) { - this.removeStyleFromTo(start, end); - } - var graphemes = fabric.util.string.graphemeSplit(text); - this.insertNewStyleBlock(graphemes, start, style); - this._text = [].concat(this._text.slice(0, start), graphemes, this._text.slice(end)); - this.text = this._text.join(''); - this.set('dirty', true); - if (this._shouldClearDimensionCache()) { - this.initDimensions(); - this.setCoords(); - } - this._removeExtraneousStyles(); - }, - -}); - - -/* _TO_SVG_START_ */ -(function() { - var toFixed = fabric.util.toFixed, - multipleSpacesRegex = / +/g; - - fabric.util.object.extend(fabric.Text.prototype, /** @lends fabric.Text.prototype */ { - - /** - * Returns SVG representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - _toSVG: function() { - var offsets = this._getSVGLeftTopOffsets(), - textAndBg = this._getSVGTextAndBg(offsets.textTop, offsets.textLeft); - return this._wrapSVGTextAndBg(textAndBg); - }, - - /** - * Returns svg representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toSVG: function(reviver) { - return this._createBaseSVGMarkup( - this._toSVG(), - { reviver: reviver, noStyle: true, withShadow: true } - ); - }, - - /** - * @private - */ - _getSVGLeftTopOffsets: function() { - return { - textLeft: -this.width / 2, - textTop: -this.height / 2, - lineTop: this.getHeightOfLine(0) - }; - }, - - /** - * @private - */ - _wrapSVGTextAndBg: function(textAndBg) { - var noShadow = true, - textDecoration = this.getSvgTextDecoration(this); - return [ - textAndBg.textBgRects.join(''), - '\t\t', - textAndBg.textSpans.join(''), - '\n' - ]; - }, - - /** - * @private - * @param {Number} textTopOffset Text top offset - * @param {Number} textLeftOffset Text left offset - * @return {Object} - */ - _getSVGTextAndBg: function(textTopOffset, textLeftOffset) { - var textSpans = [], - textBgRects = [], - height = textTopOffset, lineOffset; - // bounding-box background - this._setSVGBg(textBgRects); - - // text and text-background - for (var i = 0, len = this._textLines.length; i < len; i++) { - lineOffset = this._getLineLeftOffset(i); - if (this.textBackgroundColor || this.styleHas('textBackgroundColor', i)) { - this._setSVGTextLineBg(textBgRects, i, textLeftOffset + lineOffset, height); - } - this._setSVGTextLineText(textSpans, i, textLeftOffset + lineOffset, height); - height += this.getHeightOfLine(i); - } - - return { - textSpans: textSpans, - textBgRects: textBgRects - }; - }, - - /** - * @private - */ - _createTextCharSpan: function(_char, styleDecl, left, top) { - var shouldUseWhitespace = _char !== _char.trim() || _char.match(multipleSpacesRegex), - styleProps = this.getSvgSpanStyles(styleDecl, shouldUseWhitespace), - fillStyles = styleProps ? 'style="' + styleProps + '"' : '', - dy = styleDecl.deltaY, dySpan = '', - NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS; - if (dy) { - dySpan = ' dy="' + toFixed(dy, NUM_FRACTION_DIGITS) + '" '; - } - return [ - '', - fabric.util.string.escapeXml(_char), - '' - ].join(''); - }, - - _setSVGTextLineText: function(textSpans, lineIndex, textLeftOffset, textTopOffset) { - // set proper line offset - var lineHeight = this.getHeightOfLine(lineIndex), - isJustify = this.textAlign.indexOf('justify') !== -1, - actualStyle, - nextStyle, - charsToRender = '', - charBox, style, - boxWidth = 0, - line = this._textLines[lineIndex], - timeToRender; - - textTopOffset += lineHeight * (1 - this._fontSizeFraction) / this.lineHeight; - for (var i = 0, len = line.length - 1; i <= len; i++) { - timeToRender = i === len || this.charSpacing; - charsToRender += line[i]; - charBox = this.__charBounds[lineIndex][i]; - if (boxWidth === 0) { - textLeftOffset += charBox.kernedWidth - charBox.width; - boxWidth += charBox.width; - } - else { - boxWidth += charBox.kernedWidth; - } - if (isJustify && !timeToRender) { - if (this._reSpaceAndTab.test(line[i])) { - timeToRender = true; - } - } - if (!timeToRender) { - // if we have charSpacing, we render char by char - actualStyle = actualStyle || this.getCompleteStyleDeclaration(lineIndex, i); - nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1); - timeToRender = this._hasStyleChangedForSvg(actualStyle, nextStyle); - } - if (timeToRender) { - style = this._getStyleDeclaration(lineIndex, i) || { }; - textSpans.push(this._createTextCharSpan(charsToRender, style, textLeftOffset, textTopOffset)); - charsToRender = ''; - actualStyle = nextStyle; - textLeftOffset += boxWidth; - boxWidth = 0; - } - } - }, - - _pushTextBgRect: function(textBgRects, color, left, top, width, height) { - var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS; - textBgRects.push( - '\t\t\n'); - }, - - _setSVGTextLineBg: function(textBgRects, i, leftOffset, textTopOffset) { - var line = this._textLines[i], - heightOfLine = this.getHeightOfLine(i) / this.lineHeight, - boxWidth = 0, - boxStart = 0, - charBox, currentColor, - lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor'); - for (var j = 0, jlen = line.length; j < jlen; j++) { - charBox = this.__charBounds[i][j]; - currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor'); - if (currentColor !== lastColor) { - lastColor && this._pushTextBgRect(textBgRects, lastColor, leftOffset + boxStart, - textTopOffset, boxWidth, heightOfLine); - boxStart = charBox.left; - boxWidth = charBox.width; - lastColor = currentColor; - } - else { - boxWidth += charBox.kernedWidth; - } - } - currentColor && this._pushTextBgRect(textBgRects, currentColor, leftOffset + boxStart, - textTopOffset, boxWidth, heightOfLine); - }, - - /** - * Adobe Illustrator (at least CS5) is unable to render rgba()-based fill values - * we work around it by "moving" alpha channel into opacity attribute and setting fill's alpha to 1 - * - * @private - * @param {*} value - * @return {String} - */ - _getFillAttributes: function(value) { - var fillColor = (value && typeof value === 'string') ? new fabric.Color(value) : ''; - if (!fillColor || !fillColor.getSource() || fillColor.getAlpha() === 1) { - return 'fill="' + value + '"'; - } - return 'opacity="' + fillColor.getAlpha() + '" fill="' + fillColor.setAlpha(1).toRgb() + '"'; - }, - - /** - * @private - */ - _getSVGLineTopOffset: function(lineIndex) { - var lineTopOffset = 0, lastHeight = 0; - for (var j = 0; j < lineIndex; j++) { - lineTopOffset += this.getHeightOfLine(j); - } - lastHeight = this.getHeightOfLine(j); - return { - lineTop: lineTopOffset, - offset: (this._fontSizeMult - this._fontSizeFraction) * lastHeight / (this.lineHeight * this._fontSizeMult) - }; - }, - - /** - * Returns styles-string for svg-export - * @param {Boolean} skipShadow a boolean to skip shadow filter output - * @return {String} - */ - getSvgStyles: function(skipShadow) { - var svgStyle = fabric.Object.prototype.getSvgStyles.call(this, skipShadow); - return svgStyle + ' white-space: pre;'; - }, - }); -})(); -/* _TO_SVG_END_ */ - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = {}); - - /** - * Textbox class, based on IText, allows the user to resize the text rectangle - * and wraps lines automatically. Textboxes have their Y scaling locked, the - * user can only change width. Height is adjusted automatically based on the - * wrapping of lines. - * @class fabric.Textbox - * @extends fabric.IText - * @mixes fabric.Observable - * @return {fabric.Textbox} thisArg - * @see {@link fabric.Textbox#initialize} for constructor definition - */ - fabric.Textbox = fabric.util.createClass(fabric.IText, fabric.Observable, { - - /** - * Type of an object - * @type String - * @default - */ - type: 'textbox', - - /** - * Minimum width of textbox, in pixels. - * @type Number - * @default - */ - minWidth: 20, - - /** - * Minimum calculated width of a textbox, in pixels. - * fixed to 2 so that an empty textbox cannot go to 0 - * and is still selectable without text. - * @type Number - * @default - */ - dynamicMinWidth: 2, - - /** - * Cached array of text wrapping. - * @type Array - */ - __cachedLines: null, - - /** - * Override standard Object class values - */ - lockScalingFlip: true, - - /** - * Override standard Object class values - * Textbox needs this on false - */ - noScaleCache: false, - - /** - * Properties which when set cause object to change dimensions - * @type Object - * @private - */ - _dimensionAffectingProps: fabric.Text.prototype._dimensionAffectingProps.concat('width'), - - /** - * Use this regular expression to split strings in breakable lines - * @private - */ - _wordJoiners: /[ \t\r]/, - - /** - * Use this boolean property in order to split strings that have no white space concept. - * this is a cheap way to help with chinese/japaense - * @type Boolean - * @since 2.6.0 - */ - splitByGrapheme: false, - - /** - * Unlike superclass's version of this function, Textbox does not update - * its width. - * @private - * @override - */ - initDimensions: function() { - if (this.__skipDimension) { - return; - } - this.isEditing && this.initDelayedCursor(); - this.clearContextTop(); - this._clearCache(); - // clear dynamicMinWidth as it will be different after we re-wrap line - this.dynamicMinWidth = 0; - // wrap lines - this._styleMap = this._generateStyleMap(this._splitText()); - // if after wrapping, the width is smaller than dynamicMinWidth, change the width and re-wrap - if (this.dynamicMinWidth > this.width) { - this._set('width', this.dynamicMinWidth); - } - if (this.textAlign.indexOf('justify') !== -1) { - // once text is measured we need to make space fatter to make justified text. - this.enlargeSpaces(); - } - // clear cache and re-calculate height - this.height = this.calcTextHeight(); - this.saveState({ propertySet: '_dimensionAffectingProps' }); - }, - - /** - * Generate an object that translates the style object so that it is - * broken up by visual lines (new lines and automatic wrapping). - * The original text styles object is broken up by actual lines (new lines only), - * which is only sufficient for Text / IText - * @private - */ - _generateStyleMap: function(textInfo) { - var realLineCount = 0, - realLineCharCount = 0, - charCount = 0, - map = {}; - - for (var i = 0; i < textInfo.graphemeLines.length; i++) { - if (textInfo.graphemeText[charCount] === '\n' && i > 0) { - realLineCharCount = 0; - charCount++; - realLineCount++; - } - else if (!this.splitByGrapheme && this._reSpaceAndTab.test(textInfo.graphemeText[charCount]) && i > 0) { - // this case deals with space's that are removed from end of lines when wrapping - realLineCharCount++; - charCount++; - } - - map[i] = { line: realLineCount, offset: realLineCharCount }; - - charCount += textInfo.graphemeLines[i].length; - realLineCharCount += textInfo.graphemeLines[i].length; - } - - return map; - }, - - /** - * Returns true if object has a style property or has it on a specified line - * @param {Number} lineIndex - * @return {Boolean} - */ - styleHas: function(property, lineIndex) { - if (this._styleMap && !this.isWrapping) { - var map = this._styleMap[lineIndex]; - if (map) { - lineIndex = map.line; - } - } - return fabric.Text.prototype.styleHas.call(this, property, lineIndex); - }, - - /** - * Returns true if object has no styling or no styling in a line - * @param {Number} lineIndex , lineIndex is on wrapped lines. - * @return {Boolean} - */ - isEmptyStyles: function(lineIndex) { - if (!this.styles) { - return true; - } - var offset = 0, nextLineIndex = lineIndex + 1, nextOffset, obj, shouldLimit = false, - map = this._styleMap[lineIndex], mapNextLine = this._styleMap[lineIndex + 1]; - if (map) { - lineIndex = map.line; - offset = map.offset; - } - if (mapNextLine) { - nextLineIndex = mapNextLine.line; - shouldLimit = nextLineIndex === lineIndex; - nextOffset = mapNextLine.offset; - } - obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] }; - for (var p1 in obj) { - for (var p2 in obj[p1]) { - if (p2 >= offset && (!shouldLimit || p2 < nextOffset)) { - // eslint-disable-next-line no-unused-vars - for (var p3 in obj[p1][p2]) { - return false; - } - } - } - } - return true; - }, - - /** - * @param {Number} lineIndex - * @param {Number} charIndex - * @private - */ - _getStyleDeclaration: function(lineIndex, charIndex) { - if (this._styleMap && !this.isWrapping) { - var map = this._styleMap[lineIndex]; - if (!map) { - return null; - } - lineIndex = map.line; - charIndex = map.offset + charIndex; - } - return this.callSuper('_getStyleDeclaration', lineIndex, charIndex); - }, - - /** - * @param {Number} lineIndex - * @param {Number} charIndex - * @param {Object} style - * @private - */ - _setStyleDeclaration: function(lineIndex, charIndex, style) { - var map = this._styleMap[lineIndex]; - lineIndex = map.line; - charIndex = map.offset + charIndex; - - this.styles[lineIndex][charIndex] = style; - }, - - /** - * @param {Number} lineIndex - * @param {Number} charIndex - * @private - */ - _deleteStyleDeclaration: function(lineIndex, charIndex) { - var map = this._styleMap[lineIndex]; - lineIndex = map.line; - charIndex = map.offset + charIndex; - delete this.styles[lineIndex][charIndex]; - }, - - /** - * probably broken need a fix - * Returns the real style line that correspond to the wrapped lineIndex line - * Used just to verify if the line does exist or not. - * @param {Number} lineIndex - * @returns {Boolean} if the line exists or not - * @private - */ - _getLineStyle: function(lineIndex) { - var map = this._styleMap[lineIndex]; - return !!this.styles[map.line]; - }, - - /** - * Set the line style to an empty object so that is initialized - * @param {Number} lineIndex - * @param {Object} style - * @private - */ - _setLineStyle: function(lineIndex) { - var map = this._styleMap[lineIndex]; - this.styles[map.line] = {}; - }, - - /** - * Wraps text using the 'width' property of Textbox. First this function - * splits text on newlines, so we preserve newlines entered by the user. - * Then it wraps each line using the width of the Textbox by calling - * _wrapLine(). - * @param {Array} lines The string array of text that is split into lines - * @param {Number} desiredWidth width you want to wrap to - * @returns {Array} Array of lines - */ - _wrapText: function(lines, desiredWidth) { - var wrapped = [], i; - this.isWrapping = true; - for (i = 0; i < lines.length; i++) { - wrapped = wrapped.concat(this._wrapLine(lines[i], i, desiredWidth)); - } - this.isWrapping = false; - return wrapped; - }, - - /** - * Helper function to measure a string of text, given its lineIndex and charIndex offset - * it gets called when charBounds are not available yet. - * @param {CanvasRenderingContext2D} ctx - * @param {String} text - * @param {number} lineIndex - * @param {number} charOffset - * @returns {number} - * @private - */ - _measureWord: function(word, lineIndex, charOffset) { - var width = 0, prevGrapheme, skipLeft = true; - charOffset = charOffset || 0; - for (var i = 0, len = word.length; i < len; i++) { - var box = this._getGraphemeBox(word[i], lineIndex, i + charOffset, prevGrapheme, skipLeft); - width += box.kernedWidth; - prevGrapheme = word[i]; - } - return width; - }, - - /** - * Wraps a line of text using the width of the Textbox and a context. - * @param {Array} line The grapheme array that represent the line - * @param {Number} lineIndex - * @param {Number} desiredWidth width you want to wrap the line to - * @param {Number} reservedSpace space to remove from wrapping for custom functionalities - * @returns {Array} Array of line(s) into which the given text is wrapped - * to. - */ - _wrapLine: function(_line, lineIndex, desiredWidth, reservedSpace) { - var lineWidth = 0, - splitByGrapheme = this.splitByGrapheme, - graphemeLines = [], - line = [], - // spaces in different languges? - words = splitByGrapheme ? fabric.util.string.graphemeSplit(_line) : _line.split(this._wordJoiners), - word = '', - offset = 0, - infix = splitByGrapheme ? '' : ' ', - wordWidth = 0, - infixWidth = 0, - largestWordWidth = 0, - lineJustStarted = true, - additionalSpace = splitByGrapheme ? 0 : this._getWidthOfCharSpacing(), - reservedSpace = reservedSpace || 0; - // fix a difference between split and graphemeSplit - if (words.length === 0) { - words.push([]); - } - desiredWidth -= reservedSpace; - for (var i = 0; i < words.length; i++) { - // if using splitByGrapheme words are already in graphemes. - word = splitByGrapheme ? words[i] : fabric.util.string.graphemeSplit(words[i]); - wordWidth = this._measureWord(word, lineIndex, offset); - offset += word.length; - - lineWidth += infixWidth + wordWidth - additionalSpace; - - if (lineWidth >= desiredWidth && !lineJustStarted) { - graphemeLines.push(line); - line = []; - lineWidth = wordWidth; - lineJustStarted = true; - } - else { - lineWidth += additionalSpace; - } - - if (!lineJustStarted && !splitByGrapheme) { - line.push(infix); - } - line = line.concat(word); - - infixWidth = this._measureWord([infix], lineIndex, offset); - offset++; - lineJustStarted = false; - // keep track of largest word - if (wordWidth > largestWordWidth) { - largestWordWidth = wordWidth; - } - } - - i && graphemeLines.push(line); - - if (largestWordWidth + reservedSpace > this.dynamicMinWidth) { - this.dynamicMinWidth = largestWordWidth - additionalSpace + reservedSpace; - } - - return graphemeLines; - }, - - /** - * Detect if the text line is ended with an hard break - * text and itext do not have wrapping, return false - * @param {Number} lineIndex text to split - * @return {Boolean} - */ - isEndOfWrapping: function(lineIndex) { - if (!this._styleMap[lineIndex + 1]) { - // is last line, return true; - return true; - } - if (this._styleMap[lineIndex + 1].line !== this._styleMap[lineIndex].line) { - // this is last line before a line break, return true; - return true; - } - return false; - }, - - /** - * Detect if a line has a linebreak and so we need to account for it when moving - * and counting style. - * @return Number - */ - missingNewlineOffset: function(lineIndex) { - if (this.splitByGrapheme) { - return this.isEndOfWrapping(lineIndex) ? 1 : 0; - } - return 1; - }, - - /** - * Gets lines of text to render in the Textbox. This function calculates - * text wrapping on the fly every time it is called. - * @param {String} text text to split - * @returns {Array} Array of lines in the Textbox. - * @override - */ - _splitTextIntoLines: function(text) { - var newText = fabric.Text.prototype._splitTextIntoLines.call(this, text), - graphemeLines = this._wrapText(newText.lines, this.width), - lines = new Array(graphemeLines.length); - for (var i = 0; i < graphemeLines.length; i++) { - lines[i] = graphemeLines[i].join(''); - } - newText.lines = lines; - newText.graphemeLines = graphemeLines; - return newText; - }, - - getMinWidth: function() { - return Math.max(this.minWidth, this.dynamicMinWidth); - }, - - _removeExtraneousStyles: function() { - var linesToKeep = {}; - for (var prop in this._styleMap) { - if (this._textLines[prop]) { - linesToKeep[this._styleMap[prop].line] = 1; - } - } - for (var prop in this.styles) { - if (!linesToKeep[prop]) { - delete this.styles[prop]; - } - } - }, - - /** - * Returns object representation of an instance - * @method toObject - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function(propertiesToInclude) { - return this.callSuper('toObject', ['minWidth', 'splitByGrapheme'].concat(propertiesToInclude)); - } - }); - - /** - * Returns fabric.Textbox instance from an object representation - * @static - * @memberOf fabric.Textbox - * @param {Object} object Object to create an instance from - * @param {Function} [callback] Callback to invoke when an fabric.Textbox instance is created - */ - fabric.Textbox.fromObject = function(object, callback) { - return fabric.Object._fromObject('Textbox', object, callback, 'text'); - }; -})(typeof exports !== 'undefined' ? exports : this); - +/* build: `node build.js modules=ALL exclude=gestures,accessors requirejs minifier=uglifyjs` */ +/*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */ + +var fabric = fabric || { version: '3.6.0' }; +if (typeof exports !== 'undefined') { + exports.fabric = fabric; +} +/* _AMD_START_ */ +else if (typeof define === 'function' && define.amd) { + define([], function() { return fabric; }); +} +/* _AMD_END_ */ +if (typeof document !== 'undefined' && typeof window !== 'undefined') { + if (document instanceof (typeof HTMLDocument !== 'undefined' ? HTMLDocument : Document)) { + fabric.document = document; + } + else { + fabric.document = document.implementation.createHTMLDocument(''); + } + fabric.window = window; +} +else { + // assume we're running under node.js when document/window are not present + var jsdom = require('jsdom'); + var virtualWindow = new jsdom.JSDOM( + decodeURIComponent('%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E'), + { + features: { + FetchExternalResources: ['img'] + }, + resources: 'usable' + }).window; + fabric.document = virtualWindow.document; + fabric.jsdomImplForWrapper = require('jsdom/lib/jsdom/living/generated/utils').implForWrapper; + fabric.nodeCanvas = require('jsdom/lib/jsdom/utils').Canvas; + fabric.window = virtualWindow; + DOMParser = fabric.window.DOMParser; +} + +/** + * True when in environment that supports touch events + * @type boolean + */ +fabric.isTouchSupported = 'ontouchstart' in fabric.window || 'ontouchstart' in fabric.document || + (fabric.window && fabric.window.navigator && fabric.window.navigator.maxTouchPoints > 0); + +/** + * True when in environment that's probably Node.js + * @type boolean + */ +fabric.isLikelyNode = typeof Buffer !== 'undefined' && + typeof window === 'undefined'; + +/* _FROM_SVG_START_ */ +/** + * Attributes parsed from all SVG elements + * @type array + */ +fabric.SHARED_ATTRIBUTES = [ + 'display', + 'transform', + 'fill', 'fill-opacity', 'fill-rule', + 'opacity', + 'stroke', 'stroke-dasharray', 'stroke-linecap', 'stroke-dashoffset', + 'stroke-linejoin', 'stroke-miterlimit', + 'stroke-opacity', 'stroke-width', + 'id', 'paint-order', 'vector-effect', + 'instantiated_by_use', 'clip-path' +]; +/* _FROM_SVG_END_ */ + +/** + * Pixel per Inch as a default value set to 96. Can be changed for more realistic conversion. + */ +fabric.DPI = 96; +fabric.reNum = '(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)'; +fabric.rePathCommand = /([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/ig; +fabric.reNonWord = /[ \n\.,;!\?\-]/; +fabric.fontPaths = { }; +fabric.iMatrix = [1, 0, 0, 1, 0, 0]; +fabric.svgNS = 'http://www.w3.org/2000/svg'; + +/** + * Pixel limit for cache canvases. 1Mpx , 4Mpx should be fine. + * @since 1.7.14 + * @type Number + * @default + */ +fabric.perfLimitSizeTotal = 2097152; + +/** + * Pixel limit for cache canvases width or height. IE fixes the maximum at 5000 + * @since 1.7.14 + * @type Number + * @default + */ +fabric.maxCacheSideLimit = 4096; + +/** + * Lowest pixel limit for cache canvases, set at 256PX + * @since 1.7.14 + * @type Number + * @default + */ +fabric.minCacheSideLimit = 256; + +/** + * Cache Object for widths of chars in text rendering. + */ +fabric.charWidthsCache = { }; + +/** + * if webgl is enabled and available, textureSize will determine the size + * of the canvas backend + * @since 2.0.0 + * @type Number + * @default + */ +fabric.textureSize = 2048; + +/** + * When 'true', style information is not retained when copy/pasting text, making + * pasted text use destination style. + * Defaults to 'false'. + * @type Boolean + * @default + */ +fabric.disableStyleCopyPaste = false; + +/** + * Enable webgl for filtering picture is available + * A filtering backend will be initialized, this will both take memory and + * time since a default 2048x2048 canvas will be created for the gl context + * @since 2.0.0 + * @type Boolean + * @default + */ +fabric.enableGLFiltering = true; + +/** + * Device Pixel Ratio + * @see https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/HTML-canvas-guide/SettingUptheCanvas/SettingUptheCanvas.html + */ +fabric.devicePixelRatio = fabric.window.devicePixelRatio || + fabric.window.webkitDevicePixelRatio || + fabric.window.mozDevicePixelRatio || + 1; +/** + * Browser-specific constant to adjust CanvasRenderingContext2D.shadowBlur value, + * which is unitless and not rendered equally across browsers. + * + * Values that work quite well (as of October 2017) are: + * - Chrome: 1.5 + * - Edge: 1.75 + * - Firefox: 0.9 + * - Safari: 0.95 + * + * @since 2.0.0 + * @type Number + * @default 1 + */ +fabric.browserShadowBlurConstant = 1; + +/** + * This object contains the result of arc to beizer conversion for faster retrieving if the same arc needs to be converted again. + * It was an internal variable, is accessible since version 2.3.4 + */ +fabric.arcToSegmentsCache = { }; + +/** + * This object keeps the results of the boundsOfCurve calculation mapped by the joined arguments necessary to calculate it. + * It does speed up calculation, if you parse and add always the same paths, but in case of heavy usage of freedrawing + * you do not get any speed benefit and you get a big object in memory. + * The object was a private variable before, while now is appended to the lib so that you have access to it and you + * can eventually clear it. + * It was an internal variable, is accessible since version 2.3.4 + */ +fabric.boundsOfCurveCache = { }; + +/** + * If disabled boundsOfCurveCache is not used. For apps that make heavy usage of pencil drawing probably disabling it is better + * @default true + */ +fabric.cachesBoundsOfCurve = true; + +/** + * Skip performance testing of setupGLContext and force the use of putImageData that seems to be the one that works best on + * Chrome + old hardware. if your users are experiencing empty images after filtering you may try to force this to true + * this has to be set before instantiating the filtering backend ( before filtering the first image ) + * @type Boolean + * @default false + */ +fabric.forceGLPutImageData = false; + +fabric.initFilterBackend = function() { + if (fabric.enableGLFiltering && fabric.isWebglSupported && fabric.isWebglSupported(fabric.textureSize)) { + console.log('max texture size: ' + fabric.maxTextureSize); + return (new fabric.WebglFilterBackend({ tileSize: fabric.textureSize })); + } + else if (fabric.Canvas2dFilterBackend) { + return (new fabric.Canvas2dFilterBackend()); + } +}; + + +if (typeof document !== 'undefined' && typeof window !== 'undefined') { + // ensure globality even if entire library were function wrapped (as in Meteor.js packaging system) + window.fabric = fabric; +} + + +(function() { + + /** + * @private + * @param {String} eventName + * @param {Function} handler + */ + function _removeEventListener(eventName, handler) { + if (!this.__eventListeners[eventName]) { + return; + } + var eventListener = this.__eventListeners[eventName]; + if (handler) { + eventListener[eventListener.indexOf(handler)] = false; + } + else { + fabric.util.array.fill(eventListener, false); + } + } + + /** + * Observes specified event + * @deprecated `observe` deprecated since 0.8.34 (use `on` instead) + * @memberOf fabric.Observable + * @alias on + * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler}) + * @param {Function} handler Function that receives a notification when an event of the specified type occurs + * @return {Self} thisArg + * @chainable + */ + function observe(eventName, handler) { + if (!this.__eventListeners) { + this.__eventListeners = { }; + } + // one object with key/value pairs was passed + if (arguments.length === 1) { + for (var prop in eventName) { + this.on(prop, eventName[prop]); + } + } + else { + if (!this.__eventListeners[eventName]) { + this.__eventListeners[eventName] = []; + } + this.__eventListeners[eventName].push(handler); + } + return this; + } + + /** + * Stops event observing for a particular event handler. Calling this method + * without arguments removes all handlers for all events + * @deprecated `stopObserving` deprecated since 0.8.34 (use `off` instead) + * @memberOf fabric.Observable + * @alias off + * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler}) + * @param {Function} handler Function to be deleted from EventListeners + * @return {Self} thisArg + * @chainable + */ + function stopObserving(eventName, handler) { + if (!this.__eventListeners) { + return this; + } + + // remove all key/value pairs (event name -> event handler) + if (arguments.length === 0) { + for (eventName in this.__eventListeners) { + _removeEventListener.call(this, eventName); + } + } + // one object with key/value pairs was passed + else if (arguments.length === 1 && typeof arguments[0] === 'object') { + for (var prop in eventName) { + _removeEventListener.call(this, prop, eventName[prop]); + } + } + else { + _removeEventListener.call(this, eventName, handler); + } + return this; + } + + /** + * Fires event with an optional options object + * @deprecated `fire` deprecated since 1.0.7 (use `trigger` instead) + * @memberOf fabric.Observable + * @alias trigger + * @param {String} eventName Event name to fire + * @param {Object} [options] Options object + * @return {Self} thisArg + * @chainable + */ + function fire(eventName, options) { + if (!this.__eventListeners) { + return this; + } + + var listenersForEvent = this.__eventListeners[eventName]; + if (!listenersForEvent) { + return this; + } + + for (var i = 0, len = listenersForEvent.length; i < len; i++) { + listenersForEvent[i] && listenersForEvent[i].call(this, options || { }); + } + this.__eventListeners[eventName] = listenersForEvent.filter(function(value) { + return value !== false; + }); + return this; + } + + /** + * @namespace fabric.Observable + * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#events} + * @see {@link http://fabricjs.com/events|Events demo} + */ + fabric.Observable = { + observe: observe, + stopObserving: stopObserving, + fire: fire, + + on: observe, + off: stopObserving, + trigger: fire + }; +})(); + + +/** + * @namespace fabric.Collection + */ +fabric.Collection = { + + _objects: [], + + /** + * Adds objects to collection, Canvas or Group, then renders canvas + * (if `renderOnAddRemove` is not `false`). + * in case of Group no changes to bounding box are made. + * Objects should be instances of (or inherit from) fabric.Object + * Use of this function is highly discouraged for groups. + * you can add a bunch of objects with the add method but then you NEED + * to run a addWithUpdate call for the Group class or position/bbox will be wrong. + * @param {...fabric.Object} object Zero or more fabric instances + * @return {Self} thisArg + * @chainable + */ + add: function () { + this._objects.push.apply(this._objects, arguments); + if (this._onObjectAdded) { + for (var i = 0, length = arguments.length; i < length; i++) { + this._onObjectAdded(arguments[i]); + } + } + this.renderOnAddRemove && this.requestRenderAll(); + return this; + }, + + /** + * Inserts an object into collection at specified index, then renders canvas (if `renderOnAddRemove` is not `false`) + * An object should be an instance of (or inherit from) fabric.Object + * Use of this function is highly discouraged for groups. + * you can add a bunch of objects with the insertAt method but then you NEED + * to run a addWithUpdate call for the Group class or position/bbox will be wrong. + * @param {Object} object Object to insert + * @param {Number} index Index to insert object at + * @param {Boolean} nonSplicing When `true`, no splicing (shifting) of objects occurs + * @return {Self} thisArg + * @chainable + */ + insertAt: function (object, index, nonSplicing) { + var objects = this._objects; + if (nonSplicing) { + objects[index] = object; + } + else { + objects.splice(index, 0, object); + } + this._onObjectAdded && this._onObjectAdded(object); + this.renderOnAddRemove && this.requestRenderAll(); + return this; + }, + + /** + * Removes objects from a collection, then renders canvas (if `renderOnAddRemove` is not `false`) + * @param {...fabric.Object} object Zero or more fabric instances + * @return {Self} thisArg + * @chainable + */ + remove: function() { + var objects = this._objects, + index, somethingRemoved = false; + + for (var i = 0, length = arguments.length; i < length; i++) { + index = objects.indexOf(arguments[i]); + + // only call onObjectRemoved if an object was actually removed + if (index !== -1) { + somethingRemoved = true; + objects.splice(index, 1); + this._onObjectRemoved && this._onObjectRemoved(arguments[i]); + } + } + + this.renderOnAddRemove && somethingRemoved && this.requestRenderAll(); + return this; + }, + + /** + * Executes given function for each object in this group + * @param {Function} callback + * Callback invoked with current object as first argument, + * index - as second and an array of all objects - as third. + * Callback is invoked in a context of Global Object (e.g. `window`) + * when no `context` argument is given + * + * @param {Object} context Context (aka thisObject) + * @return {Self} thisArg + * @chainable + */ + forEachObject: function(callback, context) { + var objects = this.getObjects(); + for (var i = 0, len = objects.length; i < len; i++) { + callback.call(context, objects[i], i, objects); + } + return this; + }, + + /** + * Returns an array of children objects of this instance + * Type parameter introduced in 1.3.10 + * since 2.3.5 this method return always a COPY of the array; + * @param {String} [type] When specified, only objects of this type are returned + * @return {Array} + */ + getObjects: function(type) { + if (typeof type === 'undefined') { + return this._objects.concat(); + } + return this._objects.filter(function(o) { + return o.type === type; + }); + }, + + /** + * Returns object at specified index + * @param {Number} index + * @return {Self} thisArg + */ + item: function (index) { + return this._objects[index]; + }, + + /** + * Returns true if collection contains no objects + * @return {Boolean} true if collection is empty + */ + isEmpty: function () { + return this._objects.length === 0; + }, + + /** + * Returns a size of a collection (i.e: length of an array containing its objects) + * @return {Number} Collection size + */ + size: function() { + return this._objects.length; + }, + + /** + * Returns true if collection contains an object + * @param {Object} object Object to check against + * @return {Boolean} `true` if collection contains an object + */ + contains: function(object) { + return this._objects.indexOf(object) > -1; + }, + + /** + * Returns number representation of a collection complexity + * @return {Number} complexity + */ + complexity: function () { + return this._objects.reduce(function (memo, current) { + memo += current.complexity ? current.complexity() : 0; + return memo; + }, 0); + } +}; + + +/** + * @namespace fabric.CommonMethods + */ +fabric.CommonMethods = { + + /** + * Sets object's properties from options + * @param {Object} [options] Options object + */ + _setOptions: function(options) { + for (var prop in options) { + this.set(prop, options[prop]); + } + }, + + /** + * @private + * @param {Object} [filler] Options object + * @param {String} [property] property to set the Gradient to + */ + _initGradient: function(filler, property) { + if (filler && filler.colorStops && !(filler instanceof fabric.Gradient)) { + this.set(property, new fabric.Gradient(filler)); + } + }, + + /** + * @private + * @param {Object} [filler] Options object + * @param {String} [property] property to set the Pattern to + * @param {Function} [callback] callback to invoke after pattern load + */ + _initPattern: function(filler, property, callback) { + if (filler && filler.source && !(filler instanceof fabric.Pattern)) { + this.set(property, new fabric.Pattern(filler, callback)); + } + else { + callback && callback(); + } + }, + + /** + * @private + * @param {Object} [options] Options object + */ + _initClipping: function(options) { + if (!options.clipTo || typeof options.clipTo !== 'string') { + return; + } + + var functionBody = fabric.util.getFunctionBody(options.clipTo); + if (typeof functionBody !== 'undefined') { + this.clipTo = new Function('ctx', functionBody); + } + }, + + /** + * @private + */ + _setObject: function(obj) { + for (var prop in obj) { + this._set(prop, obj[prop]); + } + }, + + /** + * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`. + * @param {String|Object} key Property name or object (if object, iterate over the object properties) + * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one) + * @return {fabric.Object} thisArg + * @chainable + */ + set: function(key, value) { + if (typeof key === 'object') { + this._setObject(key); + } + else { + if (typeof value === 'function' && key !== 'clipTo') { + this._set(key, value(this.get(key))); + } + else { + this._set(key, value); + } + } + return this; + }, + + _set: function(key, value) { + this[key] = value; + }, + + /** + * Toggles specified property from `true` to `false` or from `false` to `true` + * @param {String} property Property to toggle + * @return {fabric.Object} thisArg + * @chainable + */ + toggle: function(property) { + var value = this.get(property); + if (typeof value === 'boolean') { + this.set(property, !value); + } + return this; + }, + + /** + * Basic getter + * @param {String} property Property name + * @return {*} value of a property + */ + get: function(property) { + return this[property]; + } +}; + + +(function(global) { + + var sqrt = Math.sqrt, + atan2 = Math.atan2, + pow = Math.pow, + PiBy180 = Math.PI / 180, + PiBy2 = Math.PI / 2; + + /** + * @namespace fabric.util + */ + fabric.util = { + + /** + * Calculate the cos of an angle, avoiding returning floats for known results + * @static + * @memberOf fabric.util + * @param {Number} angle the angle in radians or in degree + * @return {Number} + */ + cos: function(angle) { + if (angle === 0) { return 1; } + if (angle < 0) { + // cos(a) = cos(-a) + angle = -angle; + } + var angleSlice = angle / PiBy2; + switch (angleSlice) { + case 1: case 3: return 0; + case 2: return -1; + } + return Math.cos(angle); + }, + + /** + * Calculate the sin of an angle, avoiding returning floats for known results + * @static + * @memberOf fabric.util + * @param {Number} angle the angle in radians or in degree + * @return {Number} + */ + sin: function(angle) { + if (angle === 0) { return 0; } + var angleSlice = angle / PiBy2, sign = 1; + if (angle < 0) { + // sin(-a) = -sin(a) + sign = -1; + } + switch (angleSlice) { + case 1: return sign; + case 2: return 0; + case 3: return -sign; + } + return Math.sin(angle); + }, + + /** + * Removes value from an array. + * Presence of value (and its position in an array) is determined via `Array.prototype.indexOf` + * @static + * @memberOf fabric.util + * @param {Array} array + * @param {*} value + * @return {Array} original array + */ + removeFromArray: function(array, value) { + var idx = array.indexOf(value); + if (idx !== -1) { + array.splice(idx, 1); + } + return array; + }, + + /** + * Returns random number between 2 specified ones. + * @static + * @memberOf fabric.util + * @param {Number} min lower limit + * @param {Number} max upper limit + * @return {Number} random value (between min and max) + */ + getRandomInt: function(min, max) { + return Math.floor(Math.random() * (max - min + 1)) + min; + }, + + /** + * Transforms degrees to radians. + * @static + * @memberOf fabric.util + * @param {Number} degrees value in degrees + * @return {Number} value in radians + */ + degreesToRadians: function(degrees) { + return degrees * PiBy180; + }, + + /** + * Transforms radians to degrees. + * @static + * @memberOf fabric.util + * @param {Number} radians value in radians + * @return {Number} value in degrees + */ + radiansToDegrees: function(radians) { + return radians / PiBy180; + }, + + /** + * Rotates `point` around `origin` with `radians` + * @static + * @memberOf fabric.util + * @param {fabric.Point} point The point to rotate + * @param {fabric.Point} origin The origin of the rotation + * @param {Number} radians The radians of the angle for the rotation + * @return {fabric.Point} The new rotated point + */ + rotatePoint: function(point, origin, radians) { + point.subtractEquals(origin); + var v = fabric.util.rotateVector(point, radians); + return new fabric.Point(v.x, v.y).addEquals(origin); + }, + + /** + * Rotates `vector` with `radians` + * @static + * @memberOf fabric.util + * @param {Object} vector The vector to rotate (x and y) + * @param {Number} radians The radians of the angle for the rotation + * @return {Object} The new rotated point + */ + rotateVector: function(vector, radians) { + var sin = fabric.util.sin(radians), + cos = fabric.util.cos(radians), + rx = vector.x * cos - vector.y * sin, + ry = vector.x * sin + vector.y * cos; + return { + x: rx, + y: ry + }; + }, + + /** + * Apply transform t to point p + * @static + * @memberOf fabric.util + * @param {fabric.Point} p The point to transform + * @param {Array} t The transform + * @param {Boolean} [ignoreOffset] Indicates that the offset should not be applied + * @return {fabric.Point} The transformed point + */ + transformPoint: function(p, t, ignoreOffset) { + if (ignoreOffset) { + return new fabric.Point( + t[0] * p.x + t[2] * p.y, + t[1] * p.x + t[3] * p.y + ); + } + return new fabric.Point( + t[0] * p.x + t[2] * p.y + t[4], + t[1] * p.x + t[3] * p.y + t[5] + ); + }, + + /** + * Returns coordinates of points's bounding rectangle (left, top, width, height) + * @param {Array} points 4 points array + * @param {Array} [transform] an array of 6 numbers representing a 2x3 transform matrix + * @return {Object} Object with left, top, width, height properties + */ + makeBoundingBoxFromPoints: function(points, transform) { + if (transform) { + for (var i = 0; i < points.length; i++) { + points[i] = fabric.util.transformPoint(points[i], transform); + } + } + var xPoints = [points[0].x, points[1].x, points[2].x, points[3].x], + minX = fabric.util.array.min(xPoints), + maxX = fabric.util.array.max(xPoints), + width = maxX - minX, + yPoints = [points[0].y, points[1].y, points[2].y, points[3].y], + minY = fabric.util.array.min(yPoints), + maxY = fabric.util.array.max(yPoints), + height = maxY - minY; + + return { + left: minX, + top: minY, + width: width, + height: height + }; + }, + + /** + * Invert transformation t + * @static + * @memberOf fabric.util + * @param {Array} t The transform + * @return {Array} The inverted transform + */ + invertTransform: function(t) { + var a = 1 / (t[0] * t[3] - t[1] * t[2]), + r = [a * t[3], -a * t[1], -a * t[2], a * t[0]], + o = fabric.util.transformPoint({ x: t[4], y: t[5] }, r, true); + r[4] = -o.x; + r[5] = -o.y; + return r; + }, + + /** + * A wrapper around Number#toFixed, which contrary to native method returns number, not string. + * @static + * @memberOf fabric.util + * @param {Number|String} number number to operate on + * @param {Number} fractionDigits number of fraction digits to "leave" + * @return {Number} + */ + toFixed: function(number, fractionDigits) { + return parseFloat(Number(number).toFixed(fractionDigits)); + }, + + /** + * Converts from attribute value to pixel value if applicable. + * Returns converted pixels or original value not converted. + * @param {Number|String} value number to operate on + * @param {Number} fontSize + * @return {Number|String} + */ + parseUnit: function(value, fontSize) { + var unit = /\D{0,2}$/.exec(value), + number = parseFloat(value); + if (!fontSize) { + fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE; + } + switch (unit[0]) { + case 'mm': + return number * fabric.DPI / 25.4; + + case 'cm': + return number * fabric.DPI / 2.54; + + case 'in': + return number * fabric.DPI; + + case 'pt': + return number * fabric.DPI / 72; // or * 4 / 3 + + case 'pc': + return number * fabric.DPI / 72 * 12; // or * 16 + + case 'em': + return number * fontSize; + + default: + return number; + } + }, + + /** + * Function which always returns `false`. + * @static + * @memberOf fabric.util + * @return {Boolean} + */ + falseFunction: function() { + return false; + }, + + /** + * Returns klass "Class" object of given namespace + * @memberOf fabric.util + * @param {String} type Type of object (eg. 'circle') + * @param {String} namespace Namespace to get klass "Class" object from + * @return {Object} klass "Class" + */ + getKlass: function(type, namespace) { + // capitalize first letter only + type = fabric.util.string.camelize(type.charAt(0).toUpperCase() + type.slice(1)); + return fabric.util.resolveNamespace(namespace)[type]; + }, + + /** + * Returns array of attributes for given svg that fabric parses + * @memberOf fabric.util + * @param {String} type Type of svg element (eg. 'circle') + * @return {Array} string names of supported attributes + */ + getSvgAttributes: function(type) { + var attributes = [ + 'instantiated_by_use', + 'style', + 'id', + 'class' + ]; + switch (type) { + case 'linearGradient': + attributes = attributes.concat(['x1', 'y1', 'x2', 'y2', 'gradientUnits', 'gradientTransform']); + break; + case 'radialGradient': + attributes = attributes.concat(['gradientUnits', 'gradientTransform', 'cx', 'cy', 'r', 'fx', 'fy', 'fr']); + break; + case 'stop': + attributes = attributes.concat(['offset', 'stop-color', 'stop-opacity']); + break; + } + return attributes; + }, + + /** + * Returns object of given namespace + * @memberOf fabric.util + * @param {String} namespace Namespace string e.g. 'fabric.Image.filter' or 'fabric' + * @return {Object} Object for given namespace (default fabric) + */ + resolveNamespace: function(namespace) { + if (!namespace) { + return fabric; + } + + var parts = namespace.split('.'), + len = parts.length, i, + obj = global || fabric.window; + + for (i = 0; i < len; ++i) { + obj = obj[parts[i]]; + } + + return obj; + }, + + /** + * Loads image element from given url and passes it to a callback + * @memberOf fabric.util + * @param {String} url URL representing an image + * @param {Function} callback Callback; invoked with loaded image + * @param {*} [context] Context to invoke callback in + * @param {Object} [crossOrigin] crossOrigin value to set image element to + */ + loadImage: function(url, callback, context, crossOrigin) { + if (!url) { + callback && callback.call(context, url); + return; + } + + var img = fabric.util.createImage(); + + /** @ignore */ + var onLoadCallback = function () { + callback && callback.call(context, img); + img = img.onload = img.onerror = null; + }; + + img.onload = onLoadCallback; + /** @ignore */ + img.onerror = function() { + fabric.log('Error loading ' + img.src); + callback && callback.call(context, null, true); + img = img.onload = img.onerror = null; + }; + + // data-urls appear to be buggy with crossOrigin + // https://github.com/kangax/fabric.js/commit/d0abb90f1cd5c5ef9d2a94d3fb21a22330da3e0a#commitcomment-4513767 + // see https://code.google.com/p/chromium/issues/detail?id=315152 + // https://bugzilla.mozilla.org/show_bug.cgi?id=935069 + if (url.indexOf('data') !== 0 && crossOrigin) { + img.crossOrigin = crossOrigin; + } + + // IE10 / IE11-Fix: SVG contents from data: URI + // will only be available if the IMG is present + // in the DOM (and visible) + if (url.substring(0,14) === 'data:image/svg') { + img.onload = null; + fabric.util.loadImageInDom(img, onLoadCallback); + } + + img.src = url; + }, + + /** + * Attaches SVG image with data: URL to the dom + * @memberOf fabric.util + * @param {Object} img Image object with data:image/svg src + * @param {Function} callback Callback; invoked with loaded image + * @return {Object} DOM element (div containing the SVG image) + */ + loadImageInDom: function(img, onLoadCallback) { + var div = fabric.document.createElement('div'); + div.style.width = div.style.height = '1px'; + div.style.left = div.style.top = '-100%'; + div.style.position = 'absolute'; + div.appendChild(img); + fabric.document.querySelector('body').appendChild(div); + /** + * Wrap in function to: + * 1. Call existing callback + * 2. Cleanup DOM + */ + img.onload = function () { + onLoadCallback(); + div.parentNode.removeChild(div); + div = null; + }; + }, + + /** + * Creates corresponding fabric instances from their object representations + * @static + * @memberOf fabric.util + * @param {Array} objects Objects to enliven + * @param {Function} callback Callback to invoke when all objects are created + * @param {String} namespace Namespace to get klass "Class" object from + * @param {Function} reviver Method for further parsing of object elements, + * called after each fabric object created. + */ + enlivenObjects: function(objects, callback, namespace, reviver) { + objects = objects || []; + + var enlivenedObjects = [], + numLoadedObjects = 0, + numTotalObjects = objects.length; + + function onLoaded() { + if (++numLoadedObjects === numTotalObjects) { + callback && callback(enlivenedObjects.filter(function(obj) { + // filter out undefined objects (objects that gave error) + return obj; + })); + } + } + + if (!numTotalObjects) { + callback && callback(enlivenedObjects); + return; + } + + objects.forEach(function (o, index) { + // if sparse array + if (!o || !o.type) { + onLoaded(); + return; + } + var klass = fabric.util.getKlass(o.type, namespace); + klass.fromObject(o, function (obj, error) { + error || (enlivenedObjects[index] = obj); + reviver && reviver(o, obj, error); + onLoaded(); + }); + }); + }, + + /** + * Create and wait for loading of patterns + * @static + * @memberOf fabric.util + * @param {Array} patterns Objects to enliven + * @param {Function} callback Callback to invoke when all objects are created + * called after each fabric object created. + */ + enlivenPatterns: function(patterns, callback) { + patterns = patterns || []; + + function onLoaded() { + if (++numLoadedPatterns === numPatterns) { + callback && callback(enlivenedPatterns); + } + } + + var enlivenedPatterns = [], + numLoadedPatterns = 0, + numPatterns = patterns.length; + + if (!numPatterns) { + callback && callback(enlivenedPatterns); + return; + } + + patterns.forEach(function (p, index) { + if (p && p.source) { + new fabric.Pattern(p, function(pattern) { + enlivenedPatterns[index] = pattern; + onLoaded(); + }); + } + else { + enlivenedPatterns[index] = p; + onLoaded(); + } + }); + }, + + /** + * Groups SVG elements (usually those retrieved from SVG document) + * @static + * @memberOf fabric.util + * @param {Array} elements SVG elements to group + * @param {Object} [options] Options object + * @param {String} path Value to set sourcePath to + * @return {fabric.Object|fabric.Group} + */ + groupSVGElements: function(elements, options, path) { + var object; + if (elements && elements.length === 1) { + return elements[0]; + } + if (options) { + if (options.width && options.height) { + options.centerPoint = { + x: options.width / 2, + y: options.height / 2 + }; + } + else { + delete options.width; + delete options.height; + } + } + object = new fabric.Group(elements, options); + if (typeof path !== 'undefined') { + object.sourcePath = path; + } + return object; + }, + + /** + * Populates an object with properties of another object + * @static + * @memberOf fabric.util + * @param {Object} source Source object + * @param {Object} destination Destination object + * @return {Array} properties Properties names to include + */ + populateWithProperties: function(source, destination, properties) { + if (properties && Object.prototype.toString.call(properties) === '[object Array]') { + for (var i = 0, len = properties.length; i < len; i++) { + if (properties[i] in source) { + destination[properties[i]] = source[properties[i]]; + } + } + } + }, + + /** + * Draws a dashed line between two points + * + * This method is used to draw dashed line around selection area. + * See dotted stroke in canvas + * + * @param {CanvasRenderingContext2D} ctx context + * @param {Number} x start x coordinate + * @param {Number} y start y coordinate + * @param {Number} x2 end x coordinate + * @param {Number} y2 end y coordinate + * @param {Array} da dash array pattern + */ + drawDashedLine: function(ctx, x, y, x2, y2, da) { + var dx = x2 - x, + dy = y2 - y, + len = sqrt(dx * dx + dy * dy), + rot = atan2(dy, dx), + dc = da.length, + di = 0, + draw = true; + + ctx.save(); + ctx.translate(x, y); + ctx.moveTo(0, 0); + ctx.rotate(rot); + + x = 0; + while (len > x) { + x += da[di++ % dc]; + if (x > len) { + x = len; + } + ctx[draw ? 'lineTo' : 'moveTo'](x, 0); + draw = !draw; + } + + ctx.restore(); + }, + + /** + * Creates canvas element + * @static + * @memberOf fabric.util + * @return {CanvasElement} initialized canvas element + */ + createCanvasElement: function() { + return fabric.document.createElement('canvas'); + }, + + /** + * Creates a canvas element that is a copy of another and is also painted + * @param {CanvasElement} canvas to copy size and content of + * @static + * @memberOf fabric.util + * @return {CanvasElement} initialized canvas element + */ + copyCanvasElement: function(canvas) { + var newCanvas = fabric.util.createCanvasElement(); + newCanvas.width = canvas.width; + newCanvas.height = canvas.height; + newCanvas.getContext('2d').drawImage(canvas, 0, 0); + return newCanvas; + }, + + /** + * since 2.6.0 moved from canvas instance to utility. + * @param {CanvasElement} canvasEl to copy size and content of + * @param {String} format 'jpeg' or 'png', in some browsers 'webp' is ok too + * @param {Number} quality <= 1 and > 0 + * @static + * @memberOf fabric.util + * @return {String} data url + */ + toDataURL: function(canvasEl, format, quality) { + return canvasEl.toDataURL('image/' + format, quality); + }, + + /** + * Creates image element (works on client and node) + * @static + * @memberOf fabric.util + * @return {HTMLImageElement} HTML image element + */ + createImage: function() { + return fabric.document.createElement('img'); + }, + + /** + * @static + * @memberOf fabric.util + * @deprecated since 2.0.0 + * @param {fabric.Object} receiver Object implementing `clipTo` method + * @param {CanvasRenderingContext2D} ctx Context to clip + */ + clipContext: function(receiver, ctx) { + ctx.save(); + ctx.beginPath(); + receiver.clipTo(ctx); + ctx.clip(); + }, + + /** + * Multiply matrix A by matrix B to nest transformations + * @static + * @memberOf fabric.util + * @param {Array} a First transformMatrix + * @param {Array} b Second transformMatrix + * @param {Boolean} is2x2 flag to multiply matrices as 2x2 matrices + * @return {Array} The product of the two transform matrices + */ + multiplyTransformMatrices: function(a, b, is2x2) { + // Matrix multiply a * b + return [ + a[0] * b[0] + a[2] * b[1], + a[1] * b[0] + a[3] * b[1], + a[0] * b[2] + a[2] * b[3], + a[1] * b[2] + a[3] * b[3], + is2x2 ? 0 : a[0] * b[4] + a[2] * b[5] + a[4], + is2x2 ? 0 : a[1] * b[4] + a[3] * b[5] + a[5] + ]; + }, + + /** + * Decomposes standard 2x3 matrix into transform components + * @static + * @memberOf fabric.util + * @param {Array} a transformMatrix + * @return {Object} Components of transform + */ + qrDecompose: function(a) { + var angle = atan2(a[1], a[0]), + denom = pow(a[0], 2) + pow(a[1], 2), + scaleX = sqrt(denom), + scaleY = (a[0] * a[3] - a[2] * a [1]) / scaleX, + skewX = atan2(a[0] * a[2] + a[1] * a [3], denom); + return { + angle: angle / PiBy180, + scaleX: scaleX, + scaleY: scaleY, + skewX: skewX / PiBy180, + skewY: 0, + translateX: a[4], + translateY: a[5] + }; + }, + + /** + * Returns a transform matrix starting from an object of the same kind of + * the one returned from qrDecompose, useful also if you want to calculate some + * transformations from an object that is not enlived yet + * @static + * @memberOf fabric.util + * @param {Object} options + * @param {Number} [options.angle] angle in degrees + * @return {Number[]} transform matrix + */ + calcRotateMatrix: function(options) { + if (!options.angle) { + return fabric.iMatrix.concat(); + } + var theta = fabric.util.degreesToRadians(options.angle), + cos = fabric.util.cos(theta), + sin = fabric.util.sin(theta); + return [cos, sin, -sin, cos, 0, 0]; + }, + + /** + * Returns a transform matrix starting from an object of the same kind of + * the one returned from qrDecompose, useful also if you want to calculate some + * transformations from an object that is not enlived yet. + * is called DimensionsTransformMatrix because those properties are the one that influence + * the size of the resulting box of the object. + * @static + * @memberOf fabric.util + * @param {Object} options + * @param {Number} [options.scaleX] + * @param {Number} [options.scaleY] + * @param {Boolean} [options.flipX] + * @param {Boolean} [options.flipY] + * @param {Number} [options.skewX] + * @param {Number} [options.skewX] + * @return {Number[]} transform matrix + */ + calcDimensionsMatrix: function(options) { + var scaleX = typeof options.scaleX === 'undefined' ? 1 : options.scaleX, + scaleY = typeof options.scaleY === 'undefined' ? 1 : options.scaleY, + scaleMatrix = [ + options.flipX ? -scaleX : scaleX, + 0, + 0, + options.flipY ? -scaleY : scaleY, + 0, + 0], + multiply = fabric.util.multiplyTransformMatrices, + degreesToRadians = fabric.util.degreesToRadians; + if (options.skewX) { + scaleMatrix = multiply( + scaleMatrix, + [1, 0, Math.tan(degreesToRadians(options.skewX)), 1], + true); + } + if (options.skewY) { + scaleMatrix = multiply( + scaleMatrix, + [1, Math.tan(degreesToRadians(options.skewY)), 0, 1], + true); + } + return scaleMatrix; + }, + + /** + * Returns a transform matrix starting from an object of the same kind of + * the one returned from qrDecompose, useful also if you want to calculate some + * transformations from an object that is not enlived yet + * @static + * @memberOf fabric.util + * @param {Object} options + * @param {Number} [options.angle] + * @param {Number} [options.scaleX] + * @param {Number} [options.scaleY] + * @param {Boolean} [options.flipX] + * @param {Boolean} [options.flipY] + * @param {Number} [options.skewX] + * @param {Number} [options.skewX] + * @param {Number} [options.translateX] + * @param {Number} [options.translateY] + * @return {Number[]} transform matrix + */ + composeMatrix: function(options) { + var matrix = [1, 0, 0, 1, options.translateX || 0, options.translateY || 0], + multiply = fabric.util.multiplyTransformMatrices; + if (options.angle) { + matrix = multiply(matrix, fabric.util.calcRotateMatrix(options)); + } + if (options.scaleX || options.scaleY || options.skewX || options.skewY || options.flipX || options.flipY) { + matrix = multiply(matrix, fabric.util.calcDimensionsMatrix(options)); + } + return matrix; + }, + + /** + * Returns a transform matrix that has the same effect of scaleX, scaleY and skewX. + * Is deprecated for composeMatrix. Please do not use it. + * @static + * @deprecated since 3.4.0 + * @memberOf fabric.util + * @param {Number} scaleX + * @param {Number} scaleY + * @param {Number} skewX + * @return {Number[]} transform matrix + */ + customTransformMatrix: function(scaleX, scaleY, skewX) { + return fabric.util.composeMatrix({ scaleX: scaleX, scaleY: scaleY, skewX: skewX }); + }, + + /** + * reset an object transform state to neutral. Top and left are not accounted for + * @static + * @memberOf fabric.util + * @param {fabric.Object} target object to transform + */ + resetObjectTransform: function (target) { + target.scaleX = 1; + target.scaleY = 1; + target.skewX = 0; + target.skewY = 0; + target.flipX = false; + target.flipY = false; + target.rotate(0); + }, + + /** + * Extract Object transform values + * @static + * @memberOf fabric.util + * @param {fabric.Object} target object to read from + * @return {Object} Components of transform + */ + saveObjectTransform: function (target) { + return { + scaleX: target.scaleX, + scaleY: target.scaleY, + skewX: target.skewX, + skewY: target.skewY, + angle: target.angle, + left: target.left, + flipX: target.flipX, + flipY: target.flipY, + top: target.top + }; + }, + + /** + * Returns string representation of function body + * @param {Function} fn Function to get body of + * @return {String} Function body + */ + getFunctionBody: function(fn) { + return (String(fn).match(/function[^{]*\{([\s\S]*)\}/) || {})[1]; + }, + + /** + * Returns true if context has transparent pixel + * at specified location (taking tolerance into account) + * @param {CanvasRenderingContext2D} ctx context + * @param {Number} x x coordinate + * @param {Number} y y coordinate + * @param {Number} tolerance Tolerance + */ + isTransparent: function(ctx, x, y, tolerance) { + + // If tolerance is > 0 adjust start coords to take into account. + // If moves off Canvas fix to 0 + if (tolerance > 0) { + if (x > tolerance) { + x -= tolerance; + } + else { + x = 0; + } + if (y > tolerance) { + y -= tolerance; + } + else { + y = 0; + } + } + + var _isTransparent = true, i, temp, + imageData = ctx.getImageData(x, y, (tolerance * 2) || 1, (tolerance * 2) || 1), + l = imageData.data.length; + + // Split image data - for tolerance > 1, pixelDataSize = 4; + for (i = 3; i < l; i += 4) { + temp = imageData.data[i]; + _isTransparent = temp <= 0; + if (_isTransparent === false) { + break; // Stop if colour found + } + } + + imageData = null; + + return _isTransparent; + }, + + /** + * Parse preserveAspectRatio attribute from element + * @param {string} attribute to be parsed + * @return {Object} an object containing align and meetOrSlice attribute + */ + parsePreserveAspectRatioAttribute: function(attribute) { + var meetOrSlice = 'meet', alignX = 'Mid', alignY = 'Mid', + aspectRatioAttrs = attribute.split(' '), align; + + if (aspectRatioAttrs && aspectRatioAttrs.length) { + meetOrSlice = aspectRatioAttrs.pop(); + if (meetOrSlice !== 'meet' && meetOrSlice !== 'slice') { + align = meetOrSlice; + meetOrSlice = 'meet'; + } + else if (aspectRatioAttrs.length) { + align = aspectRatioAttrs.pop(); + } + } + //divide align in alignX and alignY + alignX = align !== 'none' ? align.slice(1, 4) : 'none'; + alignY = align !== 'none' ? align.slice(5, 8) : 'none'; + return { + meetOrSlice: meetOrSlice, + alignX: alignX, + alignY: alignY + }; + }, + + /** + * Clear char widths cache for the given font family or all the cache if no + * fontFamily is specified. + * Use it if you know you are loading fonts in a lazy way and you are not waiting + * for custom fonts to load properly when adding text objects to the canvas. + * If a text object is added when its own font is not loaded yet, you will get wrong + * measurement and so wrong bounding boxes. + * After the font cache is cleared, either change the textObject text content or call + * initDimensions() to trigger a recalculation + * @memberOf fabric.util + * @param {String} [fontFamily] font family to clear + */ + clearFabricFontCache: function(fontFamily) { + fontFamily = (fontFamily || '').toLowerCase(); + if (!fontFamily) { + fabric.charWidthsCache = { }; + } + else if (fabric.charWidthsCache[fontFamily]) { + delete fabric.charWidthsCache[fontFamily]; + } + }, + + /** + * Given current aspect ratio, determines the max width and height that can + * respect the total allowed area for the cache. + * @memberOf fabric.util + * @param {Number} ar aspect ratio + * @param {Number} maximumArea Maximum area you want to achieve + * @return {Object.x} Limited dimensions by X + * @return {Object.y} Limited dimensions by Y + */ + limitDimsByArea: function(ar, maximumArea) { + var roughWidth = Math.sqrt(maximumArea * ar), + perfLimitSizeY = Math.floor(maximumArea / roughWidth); + return { x: Math.floor(roughWidth), y: perfLimitSizeY }; + }, + + capValue: function(min, value, max) { + return Math.max(min, Math.min(value, max)); + }, + + findScaleToFit: function(source, destination) { + return Math.min(destination.width / source.width, destination.height / source.height); + }, + + findScaleToCover: function(source, destination) { + return Math.max(destination.width / source.width, destination.height / source.height); + }, + + /** + * given an array of 6 number returns something like `"matrix(...numbers)"` + * @memberOf fabric.util + * @param {Array} trasnform an array with 6 numbers + * @return {String} transform matrix for svg + * @return {Object.y} Limited dimensions by Y + */ + matrixToSVG: function(transform) { + return 'matrix(' + transform.map(function(value) { + return fabric.util.toFixed(value, fabric.Object.NUM_FRACTION_DIGITS); + }).join(' ') + ')'; + } + }; +})(typeof exports !== 'undefined' ? exports : this); + + +(function() { + + var _join = Array.prototype.join; + + /* Adapted from http://dxr.mozilla.org/mozilla-central/source/content/svg/content/src/nsSVGPathDataParser.cpp + * by Andrea Bogazzi code is under MPL. if you don't have a copy of the license you can take it here + * http://mozilla.org/MPL/2.0/ + */ + function arcToSegments(toX, toY, rx, ry, large, sweep, rotateX) { + var argsString = _join.call(arguments); + if (fabric.arcToSegmentsCache[argsString]) { + return fabric.arcToSegmentsCache[argsString]; + } + + var PI = Math.PI, th = rotateX * PI / 180, + sinTh = fabric.util.sin(th), + cosTh = fabric.util.cos(th), + fromX = 0, fromY = 0; + + rx = Math.abs(rx); + ry = Math.abs(ry); + + var px = -cosTh * toX * 0.5 - sinTh * toY * 0.5, + py = -cosTh * toY * 0.5 + sinTh * toX * 0.5, + rx2 = rx * rx, ry2 = ry * ry, py2 = py * py, px2 = px * px, + pl = rx2 * ry2 - rx2 * py2 - ry2 * px2, + root = 0; + + if (pl < 0) { + var s = Math.sqrt(1 - pl / (rx2 * ry2)); + rx *= s; + ry *= s; + } + else { + root = (large === sweep ? -1.0 : 1.0) * + Math.sqrt( pl / (rx2 * py2 + ry2 * px2)); + } + + var cx = root * rx * py / ry, + cy = -root * ry * px / rx, + cx1 = cosTh * cx - sinTh * cy + toX * 0.5, + cy1 = sinTh * cx + cosTh * cy + toY * 0.5, + mTheta = calcVectorAngle(1, 0, (px - cx) / rx, (py - cy) / ry), + dtheta = calcVectorAngle((px - cx) / rx, (py - cy) / ry, (-px - cx) / rx, (-py - cy) / ry); + + if (sweep === 0 && dtheta > 0) { + dtheta -= 2 * PI; + } + else if (sweep === 1 && dtheta < 0) { + dtheta += 2 * PI; + } + + // Convert into cubic bezier segments <= 90deg + var segments = Math.ceil(Math.abs(dtheta / PI * 2)), + result = [], mDelta = dtheta / segments, + mT = 8 / 3 * Math.sin(mDelta / 4) * Math.sin(mDelta / 4) / Math.sin(mDelta / 2), + th3 = mTheta + mDelta; + + for (var i = 0; i < segments; i++) { + result[i] = segmentToBezier(mTheta, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY); + fromX = result[i][4]; + fromY = result[i][5]; + mTheta = th3; + th3 += mDelta; + } + fabric.arcToSegmentsCache[argsString] = result; + return result; + } + + function segmentToBezier(th2, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY) { + var costh2 = fabric.util.cos(th2), + sinth2 = fabric.util.sin(th2), + costh3 = fabric.util.cos(th3), + sinth3 = fabric.util.sin(th3), + toX = cosTh * rx * costh3 - sinTh * ry * sinth3 + cx1, + toY = sinTh * rx * costh3 + cosTh * ry * sinth3 + cy1, + cp1X = fromX + mT * ( -cosTh * rx * sinth2 - sinTh * ry * costh2), + cp1Y = fromY + mT * ( -sinTh * rx * sinth2 + cosTh * ry * costh2), + cp2X = toX + mT * ( cosTh * rx * sinth3 + sinTh * ry * costh3), + cp2Y = toY + mT * ( sinTh * rx * sinth3 - cosTh * ry * costh3); + + return [ + cp1X, cp1Y, + cp2X, cp2Y, + toX, toY + ]; + } + + /* + * Private + */ + function calcVectorAngle(ux, uy, vx, vy) { + var ta = Math.atan2(uy, ux), + tb = Math.atan2(vy, vx); + if (tb >= ta) { + return tb - ta; + } + else { + return 2 * Math.PI - (ta - tb); + } + } + + /** + * Draws arc + * @param {CanvasRenderingContext2D} ctx + * @param {Number} fx + * @param {Number} fy + * @param {Array} coords + */ + fabric.util.drawArc = function(ctx, fx, fy, coords) { + var rx = coords[0], + ry = coords[1], + rot = coords[2], + large = coords[3], + sweep = coords[4], + tx = coords[5], + ty = coords[6], + segs = [[], [], [], []], + segsNorm = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot); + + for (var i = 0, len = segsNorm.length; i < len; i++) { + segs[i][0] = segsNorm[i][0] + fx; + segs[i][1] = segsNorm[i][1] + fy; + segs[i][2] = segsNorm[i][2] + fx; + segs[i][3] = segsNorm[i][3] + fy; + segs[i][4] = segsNorm[i][4] + fx; + segs[i][5] = segsNorm[i][5] + fy; + ctx.bezierCurveTo.apply(ctx, segs[i]); + } + }; + + /** + * Calculate bounding box of a elliptic-arc + * @param {Number} fx start point of arc + * @param {Number} fy + * @param {Number} rx horizontal radius + * @param {Number} ry vertical radius + * @param {Number} rot angle of horizontal axe + * @param {Number} large 1 or 0, whatever the arc is the big or the small on the 2 points + * @param {Number} sweep 1 or 0, 1 clockwise or counterclockwise direction + * @param {Number} tx end point of arc + * @param {Number} ty + */ + fabric.util.getBoundsOfArc = function(fx, fy, rx, ry, rot, large, sweep, tx, ty) { + + var fromX = 0, fromY = 0, bound, bounds = [], + segs = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot); + + for (var i = 0, len = segs.length; i < len; i++) { + bound = getBoundsOfCurve(fromX, fromY, segs[i][0], segs[i][1], segs[i][2], segs[i][3], segs[i][4], segs[i][5]); + bounds.push({ x: bound[0].x + fx, y: bound[0].y + fy }); + bounds.push({ x: bound[1].x + fx, y: bound[1].y + fy }); + fromX = segs[i][4]; + fromY = segs[i][5]; + } + return bounds; + }; + + /** + * Calculate bounding box of a beziercurve + * @param {Number} x0 starting point + * @param {Number} y0 + * @param {Number} x1 first control point + * @param {Number} y1 + * @param {Number} x2 secondo control point + * @param {Number} y2 + * @param {Number} x3 end of beizer + * @param {Number} y3 + */ + // taken from http://jsbin.com/ivomiq/56/edit no credits available for that. + function getBoundsOfCurve(x0, y0, x1, y1, x2, y2, x3, y3) { + var argsString; + if (fabric.cachesBoundsOfCurve) { + argsString = _join.call(arguments); + if (fabric.boundsOfCurveCache[argsString]) { + return fabric.boundsOfCurveCache[argsString]; + } + } + + var sqrt = Math.sqrt, + min = Math.min, max = Math.max, + abs = Math.abs, tvalues = [], + bounds = [[], []], + a, b, c, t, t1, t2, b2ac, sqrtb2ac; + + b = 6 * x0 - 12 * x1 + 6 * x2; + a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3; + c = 3 * x1 - 3 * x0; + + for (var i = 0; i < 2; ++i) { + if (i > 0) { + b = 6 * y0 - 12 * y1 + 6 * y2; + a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3; + c = 3 * y1 - 3 * y0; + } + + if (abs(a) < 1e-12) { + if (abs(b) < 1e-12) { + continue; + } + t = -c / b; + if (0 < t && t < 1) { + tvalues.push(t); + } + continue; + } + b2ac = b * b - 4 * c * a; + if (b2ac < 0) { + continue; + } + sqrtb2ac = sqrt(b2ac); + t1 = (-b + sqrtb2ac) / (2 * a); + if (0 < t1 && t1 < 1) { + tvalues.push(t1); + } + t2 = (-b - sqrtb2ac) / (2 * a); + if (0 < t2 && t2 < 1) { + tvalues.push(t2); + } + } + + var x, y, j = tvalues.length, jlen = j, mt; + while (j--) { + t = tvalues[j]; + mt = 1 - t; + x = (mt * mt * mt * x0) + (3 * mt * mt * t * x1) + (3 * mt * t * t * x2) + (t * t * t * x3); + bounds[0][j] = x; + + y = (mt * mt * mt * y0) + (3 * mt * mt * t * y1) + (3 * mt * t * t * y2) + (t * t * t * y3); + bounds[1][j] = y; + } + + bounds[0][jlen] = x0; + bounds[1][jlen] = y0; + bounds[0][jlen + 1] = x3; + bounds[1][jlen + 1] = y3; + var result = [ + { + x: min.apply(null, bounds[0]), + y: min.apply(null, bounds[1]) + }, + { + x: max.apply(null, bounds[0]), + y: max.apply(null, bounds[1]) + } + ]; + if (fabric.cachesBoundsOfCurve) { + fabric.boundsOfCurveCache[argsString] = result; + } + return result; + } + + fabric.util.getBoundsOfCurve = getBoundsOfCurve; + +})(); + + +(function() { + + var slice = Array.prototype.slice; + + /** + * Invokes method on all items in a given array + * @memberOf fabric.util.array + * @param {Array} array Array to iterate over + * @param {String} method Name of a method to invoke + * @return {Array} + */ + function invoke(array, method) { + var args = slice.call(arguments, 2), result = []; + for (var i = 0, len = array.length; i < len; i++) { + result[i] = args.length ? array[i][method].apply(array[i], args) : array[i][method].call(array[i]); + } + return result; + } + + /** + * Finds maximum value in array (not necessarily "first" one) + * @memberOf fabric.util.array + * @param {Array} array Array to iterate over + * @param {String} byProperty + * @return {*} + */ + function max(array, byProperty) { + return find(array, byProperty, function(value1, value2) { + return value1 >= value2; + }); + } + + /** + * Finds minimum value in array (not necessarily "first" one) + * @memberOf fabric.util.array + * @param {Array} array Array to iterate over + * @param {String} byProperty + * @return {*} + */ + function min(array, byProperty) { + return find(array, byProperty, function(value1, value2) { + return value1 < value2; + }); + } + + /** + * @private + */ + function fill(array, value) { + var k = array.length; + while (k--) { + array[k] = value; + } + return array; + } + + /** + * @private + */ + function find(array, byProperty, condition) { + if (!array || array.length === 0) { + return; + } + + var i = array.length - 1, + result = byProperty ? array[i][byProperty] : array[i]; + if (byProperty) { + while (i--) { + if (condition(array[i][byProperty], result)) { + result = array[i][byProperty]; + } + } + } + else { + while (i--) { + if (condition(array[i], result)) { + result = array[i]; + } + } + } + return result; + } + + /** + * @namespace fabric.util.array + */ + fabric.util.array = { + fill: fill, + invoke: invoke, + min: min, + max: max + }; + +})(); + + +(function() { + /** + * Copies all enumerable properties of one js object to another + * this does not and cannot compete with generic utils. + * Does not clone or extend fabric.Object subclasses. + * This is mostly for internal use and has extra handling for fabricJS objects + * it skips the canvas property in deep cloning. + * @memberOf fabric.util.object + * @param {Object} destination Where to copy to + * @param {Object} source Where to copy from + * @return {Object} + */ + + function extend(destination, source, deep) { + // JScript DontEnum bug is not taken care of + // the deep clone is for internal use, is not meant to avoid + // javascript traps or cloning html element or self referenced objects. + if (deep) { + if (!fabric.isLikelyNode && source instanceof Element) { + // avoid cloning deep images, canvases, + destination = source; + } + else if (source instanceof Array) { + destination = []; + for (var i = 0, len = source.length; i < len; i++) { + destination[i] = extend({ }, source[i], deep); + } + } + else if (source && typeof source === 'object') { + for (var property in source) { + if (property === 'canvas') { + destination[property] = extend({ }, source[property]); + } + else if (source.hasOwnProperty(property)) { + destination[property] = extend({ }, source[property], deep); + } + } + } + else { + // this sounds odd for an extend but is ok for recursive use + destination = source; + } + } + else { + for (var property in source) { + destination[property] = source[property]; + } + } + return destination; + } + + /** + * Creates an empty object and copies all enumerable properties of another object to it + * @memberOf fabric.util.object + * TODO: this function return an empty object if you try to clone null + * @param {Object} object Object to clone + * @return {Object} + */ + function clone(object, deep) { + return extend({ }, object, deep); + } + + /** @namespace fabric.util.object */ + fabric.util.object = { + extend: extend, + clone: clone + }; + fabric.util.object.extend(fabric.util, fabric.Observable); +})(); + + +(function() { + + /** + * Camelizes a string + * @memberOf fabric.util.string + * @param {String} string String to camelize + * @return {String} Camelized version of a string + */ + function camelize(string) { + return string.replace(/-+(.)?/g, function(match, character) { + return character ? character.toUpperCase() : ''; + }); + } + + /** + * Capitalizes a string + * @memberOf fabric.util.string + * @param {String} string String to capitalize + * @param {Boolean} [firstLetterOnly] If true only first letter is capitalized + * and other letters stay untouched, if false first letter is capitalized + * and other letters are converted to lowercase. + * @return {String} Capitalized version of a string + */ + function capitalize(string, firstLetterOnly) { + return string.charAt(0).toUpperCase() + + (firstLetterOnly ? string.slice(1) : string.slice(1).toLowerCase()); + } + + /** + * Escapes XML in a string + * @memberOf fabric.util.string + * @param {String} string String to escape + * @return {String} Escaped version of a string + */ + function escapeXml(string) { + return string.replace(/&/g, '&') + .replace(/"/g, '"') + .replace(/'/g, ''') + .replace(//g, '>'); + } + + /** + * Divide a string in the user perceived single units + * @memberOf fabric.util.string + * @param {String} textstring String to escape + * @return {Array} array containing the graphemes + */ + function graphemeSplit(textstring) { + var i = 0, chr, graphemes = []; + for (i = 0, chr; i < textstring.length; i++) { + if ((chr = getWholeChar(textstring, i)) === false) { + continue; + } + graphemes.push(chr); + } + return graphemes; + } + + // taken from mdn in the charAt doc page. + function getWholeChar(str, i) { + var code = str.charCodeAt(i); + + if (isNaN(code)) { + return ''; // Position not found + } + if (code < 0xD800 || code > 0xDFFF) { + return str.charAt(i); + } + + // High surrogate (could change last hex to 0xDB7F to treat high private + // surrogates as single characters) + if (0xD800 <= code && code <= 0xDBFF) { + if (str.length <= (i + 1)) { + throw 'High surrogate without following low surrogate'; + } + var next = str.charCodeAt(i + 1); + if (0xDC00 > next || next > 0xDFFF) { + throw 'High surrogate without following low surrogate'; + } + return str.charAt(i) + str.charAt(i + 1); + } + // Low surrogate (0xDC00 <= code && code <= 0xDFFF) + if (i === 0) { + throw 'Low surrogate without preceding high surrogate'; + } + var prev = str.charCodeAt(i - 1); + + // (could change last hex to 0xDB7F to treat high private + // surrogates as single characters) + if (0xD800 > prev || prev > 0xDBFF) { + throw 'Low surrogate without preceding high surrogate'; + } + // We can pass over low surrogates now as the second component + // in a pair which we have already processed + return false; + } + + + /** + * String utilities + * @namespace fabric.util.string + */ + fabric.util.string = { + camelize: camelize, + capitalize: capitalize, + escapeXml: escapeXml, + graphemeSplit: graphemeSplit + }; +})(); + + +(function() { + + var slice = Array.prototype.slice, emptyFunction = function() { }, + + IS_DONTENUM_BUGGY = (function() { + for (var p in { toString: 1 }) { + if (p === 'toString') { + return false; + } + } + return true; + })(), + + /** @ignore */ + addMethods = function(klass, source, parent) { + for (var property in source) { + + if (property in klass.prototype && + typeof klass.prototype[property] === 'function' && + (source[property] + '').indexOf('callSuper') > -1) { + + klass.prototype[property] = (function(property) { + return function() { + + var superclass = this.constructor.superclass; + this.constructor.superclass = parent; + var returnValue = source[property].apply(this, arguments); + this.constructor.superclass = superclass; + + if (property !== 'initialize') { + return returnValue; + } + }; + })(property); + } + else { + klass.prototype[property] = source[property]; + } + + if (IS_DONTENUM_BUGGY) { + if (source.toString !== Object.prototype.toString) { + klass.prototype.toString = source.toString; + } + if (source.valueOf !== Object.prototype.valueOf) { + klass.prototype.valueOf = source.valueOf; + } + } + } + }; + + function Subclass() { } + + function callSuper(methodName) { + var parentMethod = null, + _this = this; + + // climb prototype chain to find method not equal to callee's method + while (_this.constructor.superclass) { + var superClassMethod = _this.constructor.superclass.prototype[methodName]; + if (_this[methodName] !== superClassMethod) { + parentMethod = superClassMethod; + break; + } + // eslint-disable-next-line + _this = _this.constructor.superclass.prototype; + } + + if (!parentMethod) { + return console.log('tried to callSuper ' + methodName + ', method not found in prototype chain', this); + } + + return (arguments.length > 1) + ? parentMethod.apply(this, slice.call(arguments, 1)) + : parentMethod.call(this); + } + + /** + * Helper for creation of "classes". + * @memberOf fabric.util + * @param {Function} [parent] optional "Class" to inherit from + * @param {Object} [properties] Properties shared by all instances of this class + * (be careful modifying objects defined here as this would affect all instances) + */ + function createClass() { + var parent = null, + properties = slice.call(arguments, 0); + + if (typeof properties[0] === 'function') { + parent = properties.shift(); + } + function klass() { + this.initialize.apply(this, arguments); + } + + klass.superclass = parent; + klass.subclasses = []; + + if (parent) { + Subclass.prototype = parent.prototype; + klass.prototype = new Subclass(); + parent.subclasses.push(klass); + } + for (var i = 0, length = properties.length; i < length; i++) { + addMethods(klass, properties[i], parent); + } + if (!klass.prototype.initialize) { + klass.prototype.initialize = emptyFunction; + } + klass.prototype.constructor = klass; + klass.prototype.callSuper = callSuper; + return klass; + } + + fabric.util.createClass = createClass; +})(); + + +(function () { + // since ie10 or ie9 can use addEventListener but they do not support options, i need to check + var couldUseAttachEvent = !!fabric.document.createElement('div').attachEvent; + /** + * Adds an event listener to an element + * @function + * @memberOf fabric.util + * @param {HTMLElement} element + * @param {String} eventName + * @param {Function} handler + */ + fabric.util.addListener = function(element, eventName, handler, options) { + element && element.addEventListener(eventName, handler, couldUseAttachEvent ? false : options); + }; + + /** + * Removes an event listener from an element + * @function + * @memberOf fabric.util + * @param {HTMLElement} element + * @param {String} eventName + * @param {Function} handler + */ + fabric.util.removeListener = function(element, eventName, handler, options) { + element && element.removeEventListener(eventName, handler, couldUseAttachEvent ? false : options); + }; + + function getTouchInfo(event) { + var touchProp = event.changedTouches; + if (touchProp && touchProp[0]) { + return touchProp[0]; + } + return event; + } + + fabric.util.getPointer = function(event) { + var element = event.target, + scroll = fabric.util.getScrollLeftTop(element), + _evt = getTouchInfo(event); + return { + x: _evt.clientX + scroll.left, + y: _evt.clientY + scroll.top + }; + }; +})(); + + +(function () { + + /** + * Cross-browser wrapper for setting element's style + * @memberOf fabric.util + * @param {HTMLElement} element + * @param {Object} styles + * @return {HTMLElement} Element that was passed as a first argument + */ + function setStyle(element, styles) { + var elementStyle = element.style; + if (!elementStyle) { + return element; + } + if (typeof styles === 'string') { + element.style.cssText += ';' + styles; + return styles.indexOf('opacity') > -1 + ? setOpacity(element, styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) + : element; + } + for (var property in styles) { + if (property === 'opacity') { + setOpacity(element, styles[property]); + } + else { + var normalizedProperty = (property === 'float' || property === 'cssFloat') + ? (typeof elementStyle.styleFloat === 'undefined' ? 'cssFloat' : 'styleFloat') + : property; + elementStyle[normalizedProperty] = styles[property]; + } + } + return element; + } + + var parseEl = fabric.document.createElement('div'), + supportsOpacity = typeof parseEl.style.opacity === 'string', + supportsFilters = typeof parseEl.style.filter === 'string', + reOpacity = /alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/, + + /** @ignore */ + setOpacity = function (element) { return element; }; + + if (supportsOpacity) { + /** @ignore */ + setOpacity = function(element, value) { + element.style.opacity = value; + return element; + }; + } + else if (supportsFilters) { + /** @ignore */ + setOpacity = function(element, value) { + var es = element.style; + if (element.currentStyle && !element.currentStyle.hasLayout) { + es.zoom = 1; + } + if (reOpacity.test(es.filter)) { + value = value >= 0.9999 ? '' : ('alpha(opacity=' + (value * 100) + ')'); + es.filter = es.filter.replace(reOpacity, value); + } + else { + es.filter += ' alpha(opacity=' + (value * 100) + ')'; + } + return element; + }; + } + + fabric.util.setStyle = setStyle; + +})(); + + +(function() { + + var _slice = Array.prototype.slice; + + /** + * Takes id and returns an element with that id (if one exists in a document) + * @memberOf fabric.util + * @param {String|HTMLElement} id + * @return {HTMLElement|null} + */ + function getById(id) { + return typeof id === 'string' ? fabric.document.getElementById(id) : id; + } + + var sliceCanConvertNodelists, + /** + * Converts an array-like object (e.g. arguments or NodeList) to an array + * @memberOf fabric.util + * @param {Object} arrayLike + * @return {Array} + */ + toArray = function(arrayLike) { + return _slice.call(arrayLike, 0); + }; + + try { + sliceCanConvertNodelists = toArray(fabric.document.childNodes) instanceof Array; + } + catch (err) { } + + if (!sliceCanConvertNodelists) { + toArray = function(arrayLike) { + var arr = new Array(arrayLike.length), i = arrayLike.length; + while (i--) { + arr[i] = arrayLike[i]; + } + return arr; + }; + } + + /** + * Creates specified element with specified attributes + * @memberOf fabric.util + * @param {String} tagName Type of an element to create + * @param {Object} [attributes] Attributes to set on an element + * @return {HTMLElement} Newly created element + */ + function makeElement(tagName, attributes) { + var el = fabric.document.createElement(tagName); + for (var prop in attributes) { + if (prop === 'class') { + el.className = attributes[prop]; + } + else if (prop === 'for') { + el.htmlFor = attributes[prop]; + } + else { + el.setAttribute(prop, attributes[prop]); + } + } + return el; + } + + /** + * Adds class to an element + * @memberOf fabric.util + * @param {HTMLElement} element Element to add class to + * @param {String} className Class to add to an element + */ + function addClass(element, className) { + if (element && (' ' + element.className + ' ').indexOf(' ' + className + ' ') === -1) { + element.className += (element.className ? ' ' : '') + className; + } + } + + /** + * Wraps element with another element + * @memberOf fabric.util + * @param {HTMLElement} element Element to wrap + * @param {HTMLElement|String} wrapper Element to wrap with + * @param {Object} [attributes] Attributes to set on a wrapper + * @return {HTMLElement} wrapper + */ + function wrapElement(element, wrapper, attributes) { + if (typeof wrapper === 'string') { + wrapper = makeElement(wrapper, attributes); + } + if (element.parentNode) { + element.parentNode.replaceChild(wrapper, element); + } + wrapper.appendChild(element); + return wrapper; + } + + /** + * Returns element scroll offsets + * @memberOf fabric.util + * @param {HTMLElement} element Element to operate on + * @return {Object} Object with left/top values + */ + function getScrollLeftTop(element) { + + var left = 0, + top = 0, + docElement = fabric.document.documentElement, + body = fabric.document.body || { + scrollLeft: 0, scrollTop: 0 + }; + + // While loop checks (and then sets element to) .parentNode OR .host + // to account for ShadowDOM. We still want to traverse up out of ShadowDOM, + // but the .parentNode of a root ShadowDOM node will always be null, instead + // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938 + while (element && (element.parentNode || element.host)) { + + // Set element to element parent, or 'host' in case of ShadowDOM + element = element.parentNode || element.host; + + if (element === fabric.document) { + left = body.scrollLeft || docElement.scrollLeft || 0; + top = body.scrollTop || docElement.scrollTop || 0; + } + else { + left += element.scrollLeft || 0; + top += element.scrollTop || 0; + } + + if (element.nodeType === 1 && element.style.position === 'fixed') { + break; + } + } + + return { left: left, top: top }; + } + + /** + * Returns offset for a given element + * @function + * @memberOf fabric.util + * @param {HTMLElement} element Element to get offset for + * @return {Object} Object with "left" and "top" properties + */ + function getElementOffset(element) { + var docElem, + doc = element && element.ownerDocument, + box = { left: 0, top: 0 }, + offset = { left: 0, top: 0 }, + scrollLeftTop, + offsetAttributes = { + borderLeftWidth: 'left', + borderTopWidth: 'top', + paddingLeft: 'left', + paddingTop: 'top' + }; + + if (!doc) { + return offset; + } + + for (var attr in offsetAttributes) { + offset[offsetAttributes[attr]] += parseInt(getElementStyle(element, attr), 10) || 0; + } + + docElem = doc.documentElement; + if ( typeof element.getBoundingClientRect !== 'undefined' ) { + box = element.getBoundingClientRect(); + } + + scrollLeftTop = getScrollLeftTop(element); + + return { + left: box.left + scrollLeftTop.left - (docElem.clientLeft || 0) + offset.left, + top: box.top + scrollLeftTop.top - (docElem.clientTop || 0) + offset.top + }; + } + + /** + * Returns style attribute value of a given element + * @memberOf fabric.util + * @param {HTMLElement} element Element to get style attribute for + * @param {String} attr Style attribute to get for element + * @return {String} Style attribute value of the given element. + */ + var getElementStyle; + if (fabric.document.defaultView && fabric.document.defaultView.getComputedStyle) { + getElementStyle = function(element, attr) { + var style = fabric.document.defaultView.getComputedStyle(element, null); + return style ? style[attr] : undefined; + }; + } + else { + getElementStyle = function(element, attr) { + var value = element.style[attr]; + if (!value && element.currentStyle) { + value = element.currentStyle[attr]; + } + return value; + }; + } + + (function () { + var style = fabric.document.documentElement.style, + selectProp = 'userSelect' in style + ? 'userSelect' + : 'MozUserSelect' in style + ? 'MozUserSelect' + : 'WebkitUserSelect' in style + ? 'WebkitUserSelect' + : 'KhtmlUserSelect' in style + ? 'KhtmlUserSelect' + : ''; + + /** + * Makes element unselectable + * @memberOf fabric.util + * @param {HTMLElement} element Element to make unselectable + * @return {HTMLElement} Element that was passed in + */ + function makeElementUnselectable(element) { + if (typeof element.onselectstart !== 'undefined') { + element.onselectstart = fabric.util.falseFunction; + } + if (selectProp) { + element.style[selectProp] = 'none'; + } + else if (typeof element.unselectable === 'string') { + element.unselectable = 'on'; + } + return element; + } + + /** + * Makes element selectable + * @memberOf fabric.util + * @param {HTMLElement} element Element to make selectable + * @return {HTMLElement} Element that was passed in + */ + function makeElementSelectable(element) { + if (typeof element.onselectstart !== 'undefined') { + element.onselectstart = null; + } + if (selectProp) { + element.style[selectProp] = ''; + } + else if (typeof element.unselectable === 'string') { + element.unselectable = ''; + } + return element; + } + + fabric.util.makeElementUnselectable = makeElementUnselectable; + fabric.util.makeElementSelectable = makeElementSelectable; + })(); + + (function() { + + /** + * Inserts a script element with a given url into a document; invokes callback, when that script is finished loading + * @memberOf fabric.util + * @param {String} url URL of a script to load + * @param {Function} callback Callback to execute when script is finished loading + */ + function getScript(url, callback) { + var headEl = fabric.document.getElementsByTagName('head')[0], + scriptEl = fabric.document.createElement('script'), + loading = true; + + /** @ignore */ + scriptEl.onload = /** @ignore */ scriptEl.onreadystatechange = function(e) { + if (loading) { + if (typeof this.readyState === 'string' && + this.readyState !== 'loaded' && + this.readyState !== 'complete') { + return; + } + loading = false; + callback(e || fabric.window.event); + scriptEl = scriptEl.onload = scriptEl.onreadystatechange = null; + } + }; + scriptEl.src = url; + headEl.appendChild(scriptEl); + // causes issue in Opera + // headEl.removeChild(scriptEl); + } + + fabric.util.getScript = getScript; + })(); + + function getNodeCanvas(element) { + var impl = fabric.jsdomImplForWrapper(element); + return impl._canvas || impl._image; + }; + + function cleanUpJsdomNode(element) { + if (!fabric.isLikelyNode) { + return; + } + var impl = fabric.jsdomImplForWrapper(element); + if (impl) { + impl._image = null; + impl._canvas = null; + // unsure if necessary + impl._currentSrc = null; + impl._attributes = null; + impl._classList = null; + } + } + + fabric.util.getById = getById; + fabric.util.toArray = toArray; + fabric.util.makeElement = makeElement; + fabric.util.addClass = addClass; + fabric.util.wrapElement = wrapElement; + fabric.util.getScrollLeftTop = getScrollLeftTop; + fabric.util.getElementOffset = getElementOffset; + fabric.util.getElementStyle = getElementStyle; + fabric.util.getNodeCanvas = getNodeCanvas; + fabric.util.cleanUpJsdomNode = cleanUpJsdomNode; + +})(); + + +(function() { + + function addParamToUrl(url, param) { + return url + (/\?/.test(url) ? '&' : '?') + param; + } + + function emptyFn() { } + + /** + * Cross-browser abstraction for sending XMLHttpRequest + * @memberOf fabric.util + * @param {String} url URL to send XMLHttpRequest to + * @param {Object} [options] Options object + * @param {String} [options.method="GET"] + * @param {String} [options.parameters] parameters to append to url in GET or in body + * @param {String} [options.body] body to send with POST or PUT request + * @param {Function} options.onComplete Callback to invoke when request is completed + * @return {XMLHttpRequest} request + */ + function request(url, options) { + options || (options = { }); + + var method = options.method ? options.method.toUpperCase() : 'GET', + onComplete = options.onComplete || function() { }, + xhr = new fabric.window.XMLHttpRequest(), + body = options.body || options.parameters; + + /** @ignore */ + xhr.onreadystatechange = function() { + if (xhr.readyState === 4) { + onComplete(xhr); + xhr.onreadystatechange = emptyFn; + } + }; + + if (method === 'GET') { + body = null; + if (typeof options.parameters === 'string') { + url = addParamToUrl(url, options.parameters); + } + } + + xhr.open(method, url, true); + + if (method === 'POST' || method === 'PUT') { + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + } + + xhr.send(body); + return xhr; + } + + fabric.util.request = request; +})(); + + +/** + * Wrapper around `console.log` (when available) + * @param {*} [values] Values to log + */ +fabric.log = console.log; + +/** + * Wrapper around `console.warn` (when available) + * @param {*} [values] Values to log as a warning + */ +fabric.warn = console.warn; + + +(function() { + + function noop() { + return false; + } + + function defaultEasing(t, b, c, d) { + return -c * Math.cos(t / d * (Math.PI / 2)) + c + b; + } + + /** + * Changes value from one to another within certain period of time, invoking callbacks as value is being changed. + * @memberOf fabric.util + * @param {Object} [options] Animation options + * @param {Function} [options.onChange] Callback; invoked on every value change + * @param {Function} [options.onComplete] Callback; invoked when value change is completed + * @param {Number} [options.startValue=0] Starting value + * @param {Number} [options.endValue=100] Ending value + * @param {Number} [options.byValue=100] Value to modify the property by + * @param {Function} [options.easing] Easing function + * @param {Number} [options.duration=500] Duration of change (in ms) + * @param {Function} [options.abort] Additional function with logic. If returns true, onComplete is called. + */ + function animate(options) { + + requestAnimFrame(function(timestamp) { + options || (options = { }); + + var start = timestamp || +new Date(), + duration = options.duration || 500, + finish = start + duration, time, + onChange = options.onChange || noop, + abort = options.abort || noop, + onComplete = options.onComplete || noop, + easing = options.easing || defaultEasing, + startValue = 'startValue' in options ? options.startValue : 0, + endValue = 'endValue' in options ? options.endValue : 100, + byValue = options.byValue || endValue - startValue; + + options.onStart && options.onStart(); + + (function tick(ticktime) { + // TODO: move abort call after calculation + // and pass (current,valuePerc, timePerc) as arguments + time = ticktime || +new Date(); + var currentTime = time > finish ? duration : (time - start), + timePerc = currentTime / duration, + current = easing(currentTime, startValue, byValue, duration), + valuePerc = Math.abs((current - startValue) / byValue); + if (abort()) { + onComplete(endValue, 1, 1); + return; + } + if (time > finish) { + onChange(endValue, 1, 1); + onComplete(endValue, 1, 1); + return; + } + else { + onChange(current, valuePerc, timePerc); + requestAnimFrame(tick); + } + })(start); + }); + } + + var _requestAnimFrame = fabric.window.requestAnimationFrame || + fabric.window.webkitRequestAnimationFrame || + fabric.window.mozRequestAnimationFrame || + fabric.window.oRequestAnimationFrame || + fabric.window.msRequestAnimationFrame || + function(callback) { + return fabric.window.setTimeout(callback, 1000 / 60); + }; + + var _cancelAnimFrame = fabric.window.cancelAnimationFrame || fabric.window.clearTimeout; + + /** + * requestAnimationFrame polyfill based on http://paulirish.com/2011/requestanimationframe-for-smart-animating/ + * In order to get a precise start time, `requestAnimFrame` should be called as an entry into the method + * @memberOf fabric.util + * @param {Function} callback Callback to invoke + * @param {DOMElement} element optional Element to associate with animation + */ + function requestAnimFrame() { + return _requestAnimFrame.apply(fabric.window, arguments); + } + + function cancelAnimFrame() { + return _cancelAnimFrame.apply(fabric.window, arguments); + } + + fabric.util.animate = animate; + fabric.util.requestAnimFrame = requestAnimFrame; + fabric.util.cancelAnimFrame = cancelAnimFrame; +})(); + + +(function() { + // Calculate an in-between color. Returns a "rgba()" string. + // Credit: Edwin Martin + // http://www.bitstorm.org/jquery/color-animation/jquery.animate-colors.js + function calculateColor(begin, end, pos) { + var color = 'rgba(' + + parseInt((begin[0] + pos * (end[0] - begin[0])), 10) + ',' + + parseInt((begin[1] + pos * (end[1] - begin[1])), 10) + ',' + + parseInt((begin[2] + pos * (end[2] - begin[2])), 10); + + color += ',' + (begin && end ? parseFloat(begin[3] + pos * (end[3] - begin[3])) : 1); + color += ')'; + return color; + } + + /** + * Changes the color from one to another within certain period of time, invoking callbacks as value is being changed. + * @memberOf fabric.util + * @param {String} fromColor The starting color in hex or rgb(a) format. + * @param {String} toColor The starting color in hex or rgb(a) format. + * @param {Number} [duration] Duration of change (in ms). + * @param {Object} [options] Animation options + * @param {Function} [options.onChange] Callback; invoked on every value change + * @param {Function} [options.onComplete] Callback; invoked when value change is completed + * @param {Function} [options.colorEasing] Easing function. Note that this function only take two arguments (currentTime, duration). Thus the regular animation easing functions cannot be used. + * @param {Function} [options.abort] Additional function with logic. If returns true, onComplete is called. + */ + function animateColor(fromColor, toColor, duration, options) { + var startColor = new fabric.Color(fromColor).getSource(), + endColor = new fabric.Color(toColor).getSource(); + + options = options || {}; + + fabric.util.animate(fabric.util.object.extend(options, { + duration: duration || 500, + startValue: startColor, + endValue: endColor, + byValue: endColor, + easing: function (currentTime, startValue, byValue, duration) { + var posValue = options.colorEasing + ? options.colorEasing(currentTime, duration) + : 1 - Math.cos(currentTime / duration * (Math.PI / 2)); + return calculateColor(startValue, byValue, posValue); + } + })); + } + + fabric.util.animateColor = animateColor; + +})(); + + +(function() { + + function normalize(a, c, p, s) { + if (a < Math.abs(c)) { + a = c; + s = p / 4; + } + else { + //handle the 0/0 case: + if (c === 0 && a === 0) { + s = p / (2 * Math.PI) * Math.asin(1); + } + else { + s = p / (2 * Math.PI) * Math.asin(c / a); + } + } + return { a: a, c: c, p: p, s: s }; + } + + function elastic(opts, t, d) { + return opts.a * + Math.pow(2, 10 * (t -= 1)) * + Math.sin( (t * d - opts.s) * (2 * Math.PI) / opts.p ); + } + + /** + * Cubic easing out + * @memberOf fabric.util.ease + */ + function easeOutCubic(t, b, c, d) { + return c * ((t = t / d - 1) * t * t + 1) + b; + } + + /** + * Cubic easing in and out + * @memberOf fabric.util.ease + */ + function easeInOutCubic(t, b, c, d) { + t /= d / 2; + if (t < 1) { + return c / 2 * t * t * t + b; + } + return c / 2 * ((t -= 2) * t * t + 2) + b; + } + + /** + * Quartic easing in + * @memberOf fabric.util.ease + */ + function easeInQuart(t, b, c, d) { + return c * (t /= d) * t * t * t + b; + } + + /** + * Quartic easing out + * @memberOf fabric.util.ease + */ + function easeOutQuart(t, b, c, d) { + return -c * ((t = t / d - 1) * t * t * t - 1) + b; + } + + /** + * Quartic easing in and out + * @memberOf fabric.util.ease + */ + function easeInOutQuart(t, b, c, d) { + t /= d / 2; + if (t < 1) { + return c / 2 * t * t * t * t + b; + } + return -c / 2 * ((t -= 2) * t * t * t - 2) + b; + } + + /** + * Quintic easing in + * @memberOf fabric.util.ease + */ + function easeInQuint(t, b, c, d) { + return c * (t /= d) * t * t * t * t + b; + } + + /** + * Quintic easing out + * @memberOf fabric.util.ease + */ + function easeOutQuint(t, b, c, d) { + return c * ((t = t / d - 1) * t * t * t * t + 1) + b; + } + + /** + * Quintic easing in and out + * @memberOf fabric.util.ease + */ + function easeInOutQuint(t, b, c, d) { + t /= d / 2; + if (t < 1) { + return c / 2 * t * t * t * t * t + b; + } + return c / 2 * ((t -= 2) * t * t * t * t + 2) + b; + } + + /** + * Sinusoidal easing in + * @memberOf fabric.util.ease + */ + function easeInSine(t, b, c, d) { + return -c * Math.cos(t / d * (Math.PI / 2)) + c + b; + } + + /** + * Sinusoidal easing out + * @memberOf fabric.util.ease + */ + function easeOutSine(t, b, c, d) { + return c * Math.sin(t / d * (Math.PI / 2)) + b; + } + + /** + * Sinusoidal easing in and out + * @memberOf fabric.util.ease + */ + function easeInOutSine(t, b, c, d) { + return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b; + } + + /** + * Exponential easing in + * @memberOf fabric.util.ease + */ + function easeInExpo(t, b, c, d) { + return (t === 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b; + } + + /** + * Exponential easing out + * @memberOf fabric.util.ease + */ + function easeOutExpo(t, b, c, d) { + return (t === d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b; + } + + /** + * Exponential easing in and out + * @memberOf fabric.util.ease + */ + function easeInOutExpo(t, b, c, d) { + if (t === 0) { + return b; + } + if (t === d) { + return b + c; + } + t /= d / 2; + if (t < 1) { + return c / 2 * Math.pow(2, 10 * (t - 1)) + b; + } + return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b; + } + + /** + * Circular easing in + * @memberOf fabric.util.ease + */ + function easeInCirc(t, b, c, d) { + return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b; + } + + /** + * Circular easing out + * @memberOf fabric.util.ease + */ + function easeOutCirc(t, b, c, d) { + return c * Math.sqrt(1 - (t = t / d - 1) * t) + b; + } + + /** + * Circular easing in and out + * @memberOf fabric.util.ease + */ + function easeInOutCirc(t, b, c, d) { + t /= d / 2; + if (t < 1) { + return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b; + } + return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b; + } + + /** + * Elastic easing in + * @memberOf fabric.util.ease + */ + function easeInElastic(t, b, c, d) { + var s = 1.70158, p = 0, a = c; + if (t === 0) { + return b; + } + t /= d; + if (t === 1) { + return b + c; + } + if (!p) { + p = d * 0.3; + } + var opts = normalize(a, c, p, s); + return -elastic(opts, t, d) + b; + } + + /** + * Elastic easing out + * @memberOf fabric.util.ease + */ + function easeOutElastic(t, b, c, d) { + var s = 1.70158, p = 0, a = c; + if (t === 0) { + return b; + } + t /= d; + if (t === 1) { + return b + c; + } + if (!p) { + p = d * 0.3; + } + var opts = normalize(a, c, p, s); + return opts.a * Math.pow(2, -10 * t) * Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) + opts.c + b; + } + + /** + * Elastic easing in and out + * @memberOf fabric.util.ease + */ + function easeInOutElastic(t, b, c, d) { + var s = 1.70158, p = 0, a = c; + if (t === 0) { + return b; + } + t /= d / 2; + if (t === 2) { + return b + c; + } + if (!p) { + p = d * (0.3 * 1.5); + } + var opts = normalize(a, c, p, s); + if (t < 1) { + return -0.5 * elastic(opts, t, d) + b; + } + return opts.a * Math.pow(2, -10 * (t -= 1)) * + Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) * 0.5 + opts.c + b; + } + + /** + * Backwards easing in + * @memberOf fabric.util.ease + */ + function easeInBack(t, b, c, d, s) { + if (s === undefined) { + s = 1.70158; + } + return c * (t /= d) * t * ((s + 1) * t - s) + b; + } + + /** + * Backwards easing out + * @memberOf fabric.util.ease + */ + function easeOutBack(t, b, c, d, s) { + if (s === undefined) { + s = 1.70158; + } + return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b; + } + + /** + * Backwards easing in and out + * @memberOf fabric.util.ease + */ + function easeInOutBack(t, b, c, d, s) { + if (s === undefined) { + s = 1.70158; + } + t /= d / 2; + if (t < 1) { + return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b; + } + return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b; + } + + /** + * Bouncing easing in + * @memberOf fabric.util.ease + */ + function easeInBounce(t, b, c, d) { + return c - easeOutBounce (d - t, 0, c, d) + b; + } + + /** + * Bouncing easing out + * @memberOf fabric.util.ease + */ + function easeOutBounce(t, b, c, d) { + if ((t /= d) < (1 / 2.75)) { + return c * (7.5625 * t * t) + b; + } + else if (t < (2 / 2.75)) { + return c * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75) + b; + } + else if (t < (2.5 / 2.75)) { + return c * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375) + b; + } + else { + return c * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375) + b; + } + } + + /** + * Bouncing easing in and out + * @memberOf fabric.util.ease + */ + function easeInOutBounce(t, b, c, d) { + if (t < d / 2) { + return easeInBounce (t * 2, 0, c, d) * 0.5 + b; + } + return easeOutBounce(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b; + } + + /** + * Easing functions + * See Easing Equations by Robert Penner + * @namespace fabric.util.ease + */ + fabric.util.ease = { + + /** + * Quadratic easing in + * @memberOf fabric.util.ease + */ + easeInQuad: function(t, b, c, d) { + return c * (t /= d) * t + b; + }, + + /** + * Quadratic easing out + * @memberOf fabric.util.ease + */ + easeOutQuad: function(t, b, c, d) { + return -c * (t /= d) * (t - 2) + b; + }, + + /** + * Quadratic easing in and out + * @memberOf fabric.util.ease + */ + easeInOutQuad: function(t, b, c, d) { + t /= (d / 2); + if (t < 1) { + return c / 2 * t * t + b; + } + return -c / 2 * ((--t) * (t - 2) - 1) + b; + }, + + /** + * Cubic easing in + * @memberOf fabric.util.ease + */ + easeInCubic: function(t, b, c, d) { + return c * (t /= d) * t * t + b; + }, + + easeOutCubic: easeOutCubic, + easeInOutCubic: easeInOutCubic, + easeInQuart: easeInQuart, + easeOutQuart: easeOutQuart, + easeInOutQuart: easeInOutQuart, + easeInQuint: easeInQuint, + easeOutQuint: easeOutQuint, + easeInOutQuint: easeInOutQuint, + easeInSine: easeInSine, + easeOutSine: easeOutSine, + easeInOutSine: easeInOutSine, + easeInExpo: easeInExpo, + easeOutExpo: easeOutExpo, + easeInOutExpo: easeInOutExpo, + easeInCirc: easeInCirc, + easeOutCirc: easeOutCirc, + easeInOutCirc: easeInOutCirc, + easeInElastic: easeInElastic, + easeOutElastic: easeOutElastic, + easeInOutElastic: easeInOutElastic, + easeInBack: easeInBack, + easeOutBack: easeOutBack, + easeInOutBack: easeInOutBack, + easeInBounce: easeInBounce, + easeOutBounce: easeOutBounce, + easeInOutBounce: easeInOutBounce + }; + +})(); + + +(function(global) { + + 'use strict'; + + /** + * @name fabric + * @namespace + */ + + var fabric = global.fabric || (global.fabric = { }), + extend = fabric.util.object.extend, + clone = fabric.util.object.clone, + toFixed = fabric.util.toFixed, + parseUnit = fabric.util.parseUnit, + multiplyTransformMatrices = fabric.util.multiplyTransformMatrices, + + svgValidTagNames = ['path', 'circle', 'polygon', 'polyline', 'ellipse', 'rect', 'line', + 'image', 'text'], + svgViewBoxElements = ['symbol', 'image', 'marker', 'pattern', 'view', 'svg'], + svgInvalidAncestors = ['pattern', 'defs', 'symbol', 'metadata', 'clipPath', 'mask', 'desc'], + svgValidParents = ['symbol', 'g', 'a', 'svg', 'clipPath', 'defs'], + + attributesMap = { + cx: 'left', + x: 'left', + r: 'radius', + cy: 'top', + y: 'top', + display: 'visible', + visibility: 'visible', + transform: 'transformMatrix', + 'fill-opacity': 'fillOpacity', + 'fill-rule': 'fillRule', + 'font-family': 'fontFamily', + 'font-size': 'fontSize', + 'font-style': 'fontStyle', + 'font-weight': 'fontWeight', + 'letter-spacing': 'charSpacing', + 'paint-order': 'paintFirst', + 'stroke-dasharray': 'strokeDashArray', + 'stroke-dashoffset': 'strokeDashOffset', + 'stroke-linecap': 'strokeLineCap', + 'stroke-linejoin': 'strokeLineJoin', + 'stroke-miterlimit': 'strokeMiterLimit', + 'stroke-opacity': 'strokeOpacity', + 'stroke-width': 'strokeWidth', + 'text-decoration': 'textDecoration', + 'text-anchor': 'textAnchor', + opacity: 'opacity', + 'clip-path': 'clipPath', + 'clip-rule': 'clipRule', + 'vector-effect': 'strokeUniform' + }, + + colorAttributes = { + stroke: 'strokeOpacity', + fill: 'fillOpacity' + }, + + fSize = 'font-size', cPath = 'clip-path'; + + fabric.svgValidTagNamesRegEx = getSvgRegex(svgValidTagNames); + fabric.svgViewBoxElementsRegEx = getSvgRegex(svgViewBoxElements); + fabric.svgInvalidAncestorsRegEx = getSvgRegex(svgInvalidAncestors); + fabric.svgValidParentsRegEx = getSvgRegex(svgValidParents); + + fabric.cssRules = { }; + fabric.gradientDefs = { }; + fabric.clipPaths = { }; + + function normalizeAttr(attr) { + // transform attribute names + if (attr in attributesMap) { + return attributesMap[attr]; + } + return attr; + } + + function normalizeValue(attr, value, parentAttributes, fontSize) { + var isArray = Object.prototype.toString.call(value) === '[object Array]', + parsed; + + if ((attr === 'fill' || attr === 'stroke') && value === 'none') { + value = ''; + } + else if (attr === 'vector-effect') { + value = value === 'non-scaling-stroke'; + } + else if (attr === 'strokeDashArray') { + if (value === 'none') { + value = null; + } + else { + value = value.replace(/,/g, ' ').split(/\s+/).map(parseFloat); + } + } + else if (attr === 'transformMatrix') { + if (parentAttributes && parentAttributes.transformMatrix) { + value = multiplyTransformMatrices( + parentAttributes.transformMatrix, fabric.parseTransformAttribute(value)); + } + else { + value = fabric.parseTransformAttribute(value); + } + } + else if (attr === 'visible') { + value = value !== 'none' && value !== 'hidden'; + // display=none on parent element always takes precedence over child element + if (parentAttributes && parentAttributes.visible === false) { + value = false; + } + } + else if (attr === 'opacity') { + value = parseFloat(value); + if (parentAttributes && typeof parentAttributes.opacity !== 'undefined') { + value *= parentAttributes.opacity; + } + } + else if (attr === 'textAnchor' /* text-anchor */) { + value = value === 'start' ? 'left' : value === 'end' ? 'right' : 'center'; + } + else if (attr === 'charSpacing') { + // parseUnit returns px and we convert it to em + parsed = parseUnit(value, fontSize) / fontSize * 1000; + } + else if (attr === 'paintFirst') { + var fillIndex = value.indexOf('fill'); + var strokeIndex = value.indexOf('stroke'); + var value = 'fill'; + if (fillIndex > -1 && strokeIndex > -1 && strokeIndex < fillIndex) { + value = 'stroke'; + } + else if (fillIndex === -1 && strokeIndex > -1) { + value = 'stroke'; + } + } + else if (attr === 'href' || attr === 'xlink:href') { + return value; + } + else { + parsed = isArray ? value.map(parseUnit) : parseUnit(value, fontSize); + } + + return (!isArray && isNaN(parsed) ? value : parsed); + } + + /** + * @private + */ + function getSvgRegex(arr) { + return new RegExp('^(' + arr.join('|') + ')\\b', 'i'); + } + + /** + * @private + * @param {Object} attributes Array of attributes to parse + */ + function _setStrokeFillOpacity(attributes) { + for (var attr in colorAttributes) { + + if (typeof attributes[colorAttributes[attr]] === 'undefined' || attributes[attr] === '') { + continue; + } + + if (typeof attributes[attr] === 'undefined') { + if (!fabric.Object.prototype[attr]) { + continue; + } + attributes[attr] = fabric.Object.prototype[attr]; + } + + if (attributes[attr].indexOf('url(') === 0) { + continue; + } + + var color = new fabric.Color(attributes[attr]); + attributes[attr] = color.setAlpha(toFixed(color.getAlpha() * attributes[colorAttributes[attr]], 2)).toRgba(); + } + return attributes; + } + + /** + * @private + */ + function _getMultipleNodes(doc, nodeNames) { + var nodeName, nodeArray = [], nodeList, i, len; + for (i = 0, len = nodeNames.length; i < len; i++) { + nodeName = nodeNames[i]; + nodeList = doc.getElementsByTagName(nodeName); + nodeArray = nodeArray.concat(Array.prototype.slice.call(nodeList)); + } + return nodeArray; + } + + /** + * Parses "transform" attribute, returning an array of values + * @static + * @function + * @memberOf fabric + * @param {String} attributeValue String containing attribute value + * @return {Array} Array of 6 elements representing transformation matrix + */ + fabric.parseTransformAttribute = (function() { + function rotateMatrix(matrix, args) { + var cos = fabric.util.cos(args[0]), sin = fabric.util.sin(args[0]), + x = 0, y = 0; + if (args.length === 3) { + x = args[1]; + y = args[2]; + } + + matrix[0] = cos; + matrix[1] = sin; + matrix[2] = -sin; + matrix[3] = cos; + matrix[4] = x - (cos * x - sin * y); + matrix[5] = y - (sin * x + cos * y); + } + + function scaleMatrix(matrix, args) { + var multiplierX = args[0], + multiplierY = (args.length === 2) ? args[1] : args[0]; + + matrix[0] = multiplierX; + matrix[3] = multiplierY; + } + + function skewMatrix(matrix, args, pos) { + matrix[pos] = Math.tan(fabric.util.degreesToRadians(args[0])); + } + + function translateMatrix(matrix, args) { + matrix[4] = args[0]; + if (args.length === 2) { + matrix[5] = args[1]; + } + } + + // identity matrix + var iMatrix = fabric.iMatrix, + + // == begin transform regexp + number = fabric.reNum, + + commaWsp = '(?:\\s+,?\\s*|,\\s*)', + + skewX = '(?:(skewX)\\s*\\(\\s*(' + number + ')\\s*\\))', + + skewY = '(?:(skewY)\\s*\\(\\s*(' + number + ')\\s*\\))', + + rotate = '(?:(rotate)\\s*\\(\\s*(' + number + ')(?:' + + commaWsp + '(' + number + ')' + + commaWsp + '(' + number + '))?\\s*\\))', + + scale = '(?:(scale)\\s*\\(\\s*(' + number + ')(?:' + + commaWsp + '(' + number + '))?\\s*\\))', + + translate = '(?:(translate)\\s*\\(\\s*(' + number + ')(?:' + + commaWsp + '(' + number + '))?\\s*\\))', + + matrix = '(?:(matrix)\\s*\\(\\s*' + + '(' + number + ')' + commaWsp + + '(' + number + ')' + commaWsp + + '(' + number + ')' + commaWsp + + '(' + number + ')' + commaWsp + + '(' + number + ')' + commaWsp + + '(' + number + ')' + + '\\s*\\))', + + transform = '(?:' + + matrix + '|' + + translate + '|' + + scale + '|' + + rotate + '|' + + skewX + '|' + + skewY + + ')', + + transforms = '(?:' + transform + '(?:' + commaWsp + '*' + transform + ')*' + ')', + + transformList = '^\\s*(?:' + transforms + '?)\\s*$', + + // http://www.w3.org/TR/SVG/coords.html#TransformAttribute + reTransformList = new RegExp(transformList), + // == end transform regexp + + reTransform = new RegExp(transform, 'g'); + + return function(attributeValue) { + + // start with identity matrix + var matrix = iMatrix.concat(), + matrices = []; + + // return if no argument was given or + // an argument does not match transform attribute regexp + if (!attributeValue || (attributeValue && !reTransformList.test(attributeValue))) { + return matrix; + } + + attributeValue.replace(reTransform, function(match) { + + var m = new RegExp(transform).exec(match).filter(function (match) { + // match !== '' && match != null + return (!!match); + }), + operation = m[1], + args = m.slice(2).map(parseFloat); + + switch (operation) { + case 'translate': + translateMatrix(matrix, args); + break; + case 'rotate': + args[0] = fabric.util.degreesToRadians(args[0]); + rotateMatrix(matrix, args); + break; + case 'scale': + scaleMatrix(matrix, args); + break; + case 'skewX': + skewMatrix(matrix, args, 2); + break; + case 'skewY': + skewMatrix(matrix, args, 1); + break; + case 'matrix': + matrix = args; + break; + } + + // snapshot current matrix into matrices array + matrices.push(matrix.concat()); + // reset + matrix = iMatrix.concat(); + }); + + var combinedMatrix = matrices[0]; + while (matrices.length > 1) { + matrices.shift(); + combinedMatrix = fabric.util.multiplyTransformMatrices(combinedMatrix, matrices[0]); + } + return combinedMatrix; + }; + })(); + + /** + * @private + */ + function parseStyleString(style, oStyle) { + var attr, value; + style.replace(/;\s*$/, '').split(';').forEach(function (chunk) { + var pair = chunk.split(':'); + + attr = pair[0].trim().toLowerCase(); + value = pair[1].trim(); + + oStyle[attr] = value; + }); + } + + /** + * @private + */ + function parseStyleObject(style, oStyle) { + var attr, value; + for (var prop in style) { + if (typeof style[prop] === 'undefined') { + continue; + } + + attr = prop.toLowerCase(); + value = style[prop]; + + oStyle[attr] = value; + } + } + + /** + * @private + */ + function getGlobalStylesForElement(element, svgUid) { + var styles = { }; + for (var rule in fabric.cssRules[svgUid]) { + if (elementMatchesRule(element, rule.split(' '))) { + for (var property in fabric.cssRules[svgUid][rule]) { + styles[property] = fabric.cssRules[svgUid][rule][property]; + } + } + } + return styles; + } + + /** + * @private + */ + function elementMatchesRule(element, selectors) { + var firstMatching, parentMatching = true; + //start from rightmost selector. + firstMatching = selectorMatches(element, selectors.pop()); + if (firstMatching && selectors.length) { + parentMatching = doesSomeParentMatch(element, selectors); + } + return firstMatching && parentMatching && (selectors.length === 0); + } + + function doesSomeParentMatch(element, selectors) { + var selector, parentMatching = true; + while (element.parentNode && element.parentNode.nodeType === 1 && selectors.length) { + if (parentMatching) { + selector = selectors.pop(); + } + element = element.parentNode; + parentMatching = selectorMatches(element, selector); + } + return selectors.length === 0; + } + + /** + * @private + */ + function selectorMatches(element, selector) { + var nodeName = element.nodeName, + classNames = element.getAttribute('class'), + id = element.getAttribute('id'), matcher, i; + // i check if a selector matches slicing away part from it. + // if i get empty string i should match + matcher = new RegExp('^' + nodeName, 'i'); + selector = selector.replace(matcher, ''); + if (id && selector.length) { + matcher = new RegExp('#' + id + '(?![a-zA-Z\\-]+)', 'i'); + selector = selector.replace(matcher, ''); + } + if (classNames && selector.length) { + classNames = classNames.split(' '); + for (i = classNames.length; i--;) { + matcher = new RegExp('\\.' + classNames[i] + '(?![a-zA-Z\\-]+)', 'i'); + selector = selector.replace(matcher, ''); + } + } + return selector.length === 0; + } + + /** + * @private + * to support IE8 missing getElementById on SVGdocument and on node xmlDOM + */ + function elementById(doc, id) { + var el; + doc.getElementById && (el = doc.getElementById(id)); + if (el) { + return el; + } + var node, i, len, nodelist = doc.getElementsByTagName('*'); + for (i = 0, len = nodelist.length; i < len; i++) { + node = nodelist[i]; + if (id === node.getAttribute('id')) { + return node; + } + } + } + + /** + * @private + */ + function parseUseDirectives(doc) { + var nodelist = _getMultipleNodes(doc, ['use', 'svg:use']), i = 0; + while (nodelist.length && i < nodelist.length) { + var el = nodelist[i], + xlink = (el.getAttribute('xlink:href') || el.getAttribute('href')).substr(1), + x = el.getAttribute('x') || 0, + y = el.getAttribute('y') || 0, + el2 = elementById(doc, xlink).cloneNode(true), + currentTrans = (el2.getAttribute('transform') || '') + ' translate(' + x + ', ' + y + ')', + parentNode, oldLength = nodelist.length, attr, j, attrs, len, namespace = fabric.svgNS; + + applyViewboxTransform(el2); + if (/^svg$/i.test(el2.nodeName)) { + var el3 = el2.ownerDocument.createElementNS(namespace, 'g'); + for (j = 0, attrs = el2.attributes, len = attrs.length; j < len; j++) { + attr = attrs.item(j); + el3.setAttributeNS(namespace, attr.nodeName, attr.nodeValue); + } + // el2.firstChild != null + while (el2.firstChild) { + el3.appendChild(el2.firstChild); + } + el2 = el3; + } + + for (j = 0, attrs = el.attributes, len = attrs.length; j < len; j++) { + attr = attrs.item(j); + if (attr.nodeName === 'x' || attr.nodeName === 'y' || + attr.nodeName === 'xlink:href' || attr.nodeName === 'href') { + continue; + } + + if (attr.nodeName === 'transform') { + currentTrans = attr.nodeValue + ' ' + currentTrans; + } + else { + el2.setAttribute(attr.nodeName, attr.nodeValue); + } + } + + el2.setAttribute('transform', currentTrans); + el2.setAttribute('instantiated_by_use', '1'); + el2.removeAttribute('id'); + parentNode = el.parentNode; + parentNode.replaceChild(el2, el); + // some browsers do not shorten nodelist after replaceChild (IE8) + if (nodelist.length === oldLength) { + i++; + } + } + } + + // http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute + // matches, e.g.: +14.56e-12, etc. + var reViewBoxAttrValue = new RegExp( + '^' + + '\\s*(' + fabric.reNum + '+)\\s*,?' + + '\\s*(' + fabric.reNum + '+)\\s*,?' + + '\\s*(' + fabric.reNum + '+)\\s*,?' + + '\\s*(' + fabric.reNum + '+)\\s*' + + '$' + ); + + /** + * Add a element that envelop all child elements and makes the viewbox transformMatrix descend on all elements + */ + function applyViewboxTransform(element) { + + var viewBoxAttr = element.getAttribute('viewBox'), + scaleX = 1, + scaleY = 1, + minX = 0, + minY = 0, + viewBoxWidth, viewBoxHeight, matrix, el, + widthAttr = element.getAttribute('width'), + heightAttr = element.getAttribute('height'), + x = element.getAttribute('x') || 0, + y = element.getAttribute('y') || 0, + preserveAspectRatio = element.getAttribute('preserveAspectRatio') || '', + missingViewBox = (!viewBoxAttr || !fabric.svgViewBoxElementsRegEx.test(element.nodeName) + || !(viewBoxAttr = viewBoxAttr.match(reViewBoxAttrValue))), + missingDimAttr = (!widthAttr || !heightAttr || widthAttr === '100%' || heightAttr === '100%'), + toBeParsed = missingViewBox && missingDimAttr, + parsedDim = { }, translateMatrix = '', widthDiff = 0, heightDiff = 0; + + parsedDim.width = 0; + parsedDim.height = 0; + parsedDim.toBeParsed = toBeParsed; + + if (toBeParsed) { + return parsedDim; + } + + if (missingViewBox) { + parsedDim.width = parseUnit(widthAttr); + parsedDim.height = parseUnit(heightAttr); + return parsedDim; + } + minX = -parseFloat(viewBoxAttr[1]); + minY = -parseFloat(viewBoxAttr[2]); + viewBoxWidth = parseFloat(viewBoxAttr[3]); + viewBoxHeight = parseFloat(viewBoxAttr[4]); + parsedDim.minX = minX; + parsedDim.minY = minY; + parsedDim.viewBoxWidth = viewBoxWidth; + parsedDim.viewBoxHeight = viewBoxHeight; + if (!missingDimAttr) { + parsedDim.width = parseUnit(widthAttr); + parsedDim.height = parseUnit(heightAttr); + scaleX = parsedDim.width / viewBoxWidth; + scaleY = parsedDim.height / viewBoxHeight; + } + else { + parsedDim.width = viewBoxWidth; + parsedDim.height = viewBoxHeight; + } + + // default is to preserve aspect ratio + preserveAspectRatio = fabric.util.parsePreserveAspectRatioAttribute(preserveAspectRatio); + if (preserveAspectRatio.alignX !== 'none') { + //translate all container for the effect of Mid, Min, Max + if (preserveAspectRatio.meetOrSlice === 'meet') { + scaleY = scaleX = (scaleX > scaleY ? scaleY : scaleX); + // calculate additional translation to move the viewbox + } + if (preserveAspectRatio.meetOrSlice === 'slice') { + scaleY = scaleX = (scaleX > scaleY ? scaleX : scaleY); + // calculate additional translation to move the viewbox + } + widthDiff = parsedDim.width - viewBoxWidth * scaleX; + heightDiff = parsedDim.height - viewBoxHeight * scaleX; + if (preserveAspectRatio.alignX === 'Mid') { + widthDiff /= 2; + } + if (preserveAspectRatio.alignY === 'Mid') { + heightDiff /= 2; + } + if (preserveAspectRatio.alignX === 'Min') { + widthDiff = 0; + } + if (preserveAspectRatio.alignY === 'Min') { + heightDiff = 0; + } + } + + if (scaleX === 1 && scaleY === 1 && minX === 0 && minY === 0 && x === 0 && y === 0) { + return parsedDim; + } + + if (x || y) { + translateMatrix = ' translate(' + parseUnit(x) + ' ' + parseUnit(y) + ') '; + } + + matrix = translateMatrix + ' matrix(' + scaleX + + ' 0' + + ' 0 ' + + scaleY + ' ' + + (minX * scaleX + widthDiff) + ' ' + + (minY * scaleY + heightDiff) + ') '; + parsedDim.viewboxTransform = fabric.parseTransformAttribute(matrix); + if (element.nodeName === 'svg') { + el = element.ownerDocument.createElementNS(fabric.svgNS, 'g'); + // element.firstChild != null + while (element.firstChild) { + el.appendChild(element.firstChild); + } + element.appendChild(el); + } + else { + el = element; + matrix = el.getAttribute('transform') + matrix; + } + el.setAttribute('transform', matrix); + return parsedDim; + } + + function hasAncestorWithNodeName(element, nodeName) { + while (element && (element = element.parentNode)) { + if (element.nodeName && nodeName.test(element.nodeName.replace('svg:', '')) + && !element.getAttribute('instantiated_by_use')) { + return true; + } + } + return false; + } + + /** + * Parses an SVG document, converts it to an array of corresponding fabric.* instances and passes them to a callback + * @static + * @function + * @memberOf fabric + * @param {SVGDocument} doc SVG document to parse + * @param {Function} callback Callback to call when parsing is finished; + * It's being passed an array of elements (parsed from a document). + * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created. + * @param {Object} [parsingOptions] options for parsing document + * @param {String} [parsingOptions.crossOrigin] crossOrigin settings + */ + fabric.parseSVGDocument = function(doc, callback, reviver, parsingOptions) { + if (!doc) { + return; + } + + parseUseDirectives(doc); + + var svgUid = fabric.Object.__uid++, i, len, + options = applyViewboxTransform(doc), + descendants = fabric.util.toArray(doc.getElementsByTagName('*')); + options.crossOrigin = parsingOptions && parsingOptions.crossOrigin; + options.svgUid = svgUid; + + if (descendants.length === 0 && fabric.isLikelyNode) { + // we're likely in node, where "o3-xml" library fails to gEBTN("*") + // https://github.com/ajaxorg/node-o3-xml/issues/21 + descendants = doc.selectNodes('//*[name(.)!="svg"]'); + var arr = []; + for (i = 0, len = descendants.length; i < len; i++) { + arr[i] = descendants[i]; + } + descendants = arr; + } + + var elements = descendants.filter(function(el) { + applyViewboxTransform(el); + return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', '')) && + !hasAncestorWithNodeName(el, fabric.svgInvalidAncestorsRegEx); // http://www.w3.org/TR/SVG/struct.html#DefsElement + }); + + if (!elements || (elements && !elements.length)) { + callback && callback([], {}); + return; + } + var clipPaths = { }; + descendants.filter(function(el) { + return el.nodeName.replace('svg:', '') === 'clipPath'; + }).forEach(function(el) { + var id = el.getAttribute('id'); + clipPaths[id] = fabric.util.toArray(el.getElementsByTagName('*')).filter(function(el) { + return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', '')); + }); + }); + fabric.gradientDefs[svgUid] = fabric.getGradientDefs(doc); + fabric.cssRules[svgUid] = fabric.getCSSRules(doc); + fabric.clipPaths[svgUid] = clipPaths; + // Precedence of rules: style > class > attribute + fabric.parseElements(elements, function(instances, elements) { + if (callback) { + callback(instances, options, elements, descendants); + delete fabric.gradientDefs[svgUid]; + delete fabric.cssRules[svgUid]; + delete fabric.clipPaths[svgUid]; + } + }, clone(options), reviver, parsingOptions); + }; + + function recursivelyParseGradientsXlink(doc, gradient) { + var gradientsAttrs = ['gradientTransform', 'x1', 'x2', 'y1', 'y2', 'gradientUnits', 'cx', 'cy', 'r', 'fx', 'fy'], + xlinkAttr = 'xlink:href', + xLink = gradient.getAttribute(xlinkAttr).substr(1), + referencedGradient = elementById(doc, xLink); + if (referencedGradient && referencedGradient.getAttribute(xlinkAttr)) { + recursivelyParseGradientsXlink(doc, referencedGradient); + } + gradientsAttrs.forEach(function(attr) { + if (referencedGradient && !gradient.hasAttribute(attr) && referencedGradient.hasAttribute(attr)) { + gradient.setAttribute(attr, referencedGradient.getAttribute(attr)); + } + }); + if (!gradient.children.length) { + var referenceClone = referencedGradient.cloneNode(true); + while (referenceClone.firstChild) { + gradient.appendChild(referenceClone.firstChild); + } + } + gradient.removeAttribute(xlinkAttr); + } + + var reFontDeclaration = new RegExp( + '(normal|italic)?\\s*(normal|small-caps)?\\s*' + + '(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*(' + + fabric.reNum + + '(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|' + fabric.reNum + '))?\\s+(.*)'); + + extend(fabric, { + /** + * Parses a short font declaration, building adding its properties to a style object + * @static + * @function + * @memberOf fabric + * @param {String} value font declaration + * @param {Object} oStyle definition + */ + parseFontDeclaration: function(value, oStyle) { + var match = value.match(reFontDeclaration); + + if (!match) { + return; + } + var fontStyle = match[1], + // font variant is not used + // fontVariant = match[2], + fontWeight = match[3], + fontSize = match[4], + lineHeight = match[5], + fontFamily = match[6]; + + if (fontStyle) { + oStyle.fontStyle = fontStyle; + } + if (fontWeight) { + oStyle.fontWeight = isNaN(parseFloat(fontWeight)) ? fontWeight : parseFloat(fontWeight); + } + if (fontSize) { + oStyle.fontSize = parseUnit(fontSize); + } + if (fontFamily) { + oStyle.fontFamily = fontFamily; + } + if (lineHeight) { + oStyle.lineHeight = lineHeight === 'normal' ? 1 : lineHeight; + } + }, + + /** + * Parses an SVG document, returning all of the gradient declarations found in it + * @static + * @function + * @memberOf fabric + * @param {SVGDocument} doc SVG document to parse + * @return {Object} Gradient definitions; key corresponds to element id, value -- to gradient definition element + */ + getGradientDefs: function(doc) { + var tagArray = [ + 'linearGradient', + 'radialGradient', + 'svg:linearGradient', + 'svg:radialGradient'], + elList = _getMultipleNodes(doc, tagArray), + el, j = 0, gradientDefs = { }; + j = elList.length; + while (j--) { + el = elList[j]; + if (el.getAttribute('xlink:href')) { + recursivelyParseGradientsXlink(doc, el); + } + gradientDefs[el.getAttribute('id')] = el; + } + return gradientDefs; + }, + + /** + * Returns an object of attributes' name/value, given element and an array of attribute names; + * Parses parent "g" nodes recursively upwards. + * @static + * @memberOf fabric + * @param {DOMElement} element Element to parse + * @param {Array} attributes Array of attributes to parse + * @return {Object} object containing parsed attributes' names/values + */ + parseAttributes: function(element, attributes, svgUid) { + + if (!element) { + return; + } + + var value, + parentAttributes = { }, + fontSize, parentFontSize; + + if (typeof svgUid === 'undefined') { + svgUid = element.getAttribute('svgUid'); + } + // if there's a parent container (`g` or `a` or `symbol` node), parse its attributes recursively upwards + if (element.parentNode && fabric.svgValidParentsRegEx.test(element.parentNode.nodeName)) { + parentAttributes = fabric.parseAttributes(element.parentNode, attributes, svgUid); + } + + var ownAttributes = attributes.reduce(function(memo, attr) { + value = element.getAttribute(attr); + if (value) { // eslint-disable-line + memo[attr] = value; + } + return memo; + }, { }); + // add values parsed from style, which take precedence over attributes + // (see: http://www.w3.org/TR/SVG/styling.html#UsingPresentationAttributes) + var cssAttrs = extend( + getGlobalStylesForElement(element, svgUid), + fabric.parseStyleAttribute(element) + ); + ownAttributes = extend( + ownAttributes, + cssAttrs + ); + if (cssAttrs[cPath]) { + element.setAttribute(cPath, cssAttrs[cPath]); + } + fontSize = parentFontSize = parentAttributes.fontSize || fabric.Text.DEFAULT_SVG_FONT_SIZE; + if (ownAttributes[fSize]) { + // looks like the minimum should be 9px when dealing with ems. this is what looks like in browsers. + ownAttributes[fSize] = fontSize = parseUnit(ownAttributes[fSize], parentFontSize); + } + + var normalizedAttr, normalizedValue, normalizedStyle = {}; + for (var attr in ownAttributes) { + normalizedAttr = normalizeAttr(attr); + normalizedValue = normalizeValue(normalizedAttr, ownAttributes[attr], parentAttributes, fontSize); + normalizedStyle[normalizedAttr] = normalizedValue; + } + if (normalizedStyle && normalizedStyle.font) { + fabric.parseFontDeclaration(normalizedStyle.font, normalizedStyle); + } + var mergedAttrs = extend(parentAttributes, normalizedStyle); + return fabric.svgValidParentsRegEx.test(element.nodeName) ? mergedAttrs : _setStrokeFillOpacity(mergedAttrs); + }, + + /** + * Transforms an array of svg elements to corresponding fabric.* instances + * @static + * @memberOf fabric + * @param {Array} elements Array of elements to parse + * @param {Function} callback Being passed an array of fabric instances (transformed from SVG elements) + * @param {Object} [options] Options object + * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created. + */ + parseElements: function(elements, callback, options, reviver, parsingOptions) { + new fabric.ElementsParser(elements, callback, options, reviver, parsingOptions).parse(); + }, + + /** + * Parses "style" attribute, retuning an object with values + * @static + * @memberOf fabric + * @param {SVGElement} element Element to parse + * @return {Object} Objects with values parsed from style attribute of an element + */ + parseStyleAttribute: function(element) { + var oStyle = { }, + style = element.getAttribute('style'); + + if (!style) { + return oStyle; + } + + if (typeof style === 'string') { + parseStyleString(style, oStyle); + } + else { + parseStyleObject(style, oStyle); + } + + return oStyle; + }, + + /** + * Parses "points" attribute, returning an array of values + * @static + * @memberOf fabric + * @param {String} points points attribute string + * @return {Array} array of points + */ + parsePointsAttribute: function(points) { + + // points attribute is required and must not be empty + if (!points) { + return null; + } + + // replace commas with whitespace and remove bookending whitespace + points = points.replace(/,/g, ' ').trim(); + + points = points.split(/\s+/); + var parsedPoints = [], i, len; + + for (i = 0, len = points.length; i < len; i += 2) { + parsedPoints.push({ + x: parseFloat(points[i]), + y: parseFloat(points[i + 1]) + }); + } + + // odd number of points is an error + // if (parsedPoints.length % 2 !== 0) { + // return null; + // } + + return parsedPoints; + }, + + /** + * Returns CSS rules for a given SVG document + * @static + * @function + * @memberOf fabric + * @param {SVGDocument} doc SVG document to parse + * @return {Object} CSS rules of this document + */ + getCSSRules: function(doc) { + var styles = doc.getElementsByTagName('style'), i, len, + allRules = { }, rules; + + // very crude parsing of style contents + for (i = 0, len = styles.length; i < len; i++) { + // IE9 doesn't support textContent, but provides text instead. + var styleContents = styles[i].textContent || styles[i].text; + + // remove comments + styleContents = styleContents.replace(/\/\*[\s\S]*?\*\//g, ''); + if (styleContents.trim() === '') { + continue; + } + rules = styleContents.match(/[^{]*\{[\s\S]*?\}/g); + rules = rules.map(function(rule) { return rule.trim(); }); + // eslint-disable-next-line no-loop-func + rules.forEach(function(rule) { + + var match = rule.match(/([\s\S]*?)\s*\{([^}]*)\}/), + ruleObj = { }, declaration = match[2].trim(), + propertyValuePairs = declaration.replace(/;$/, '').split(/\s*;\s*/); + + for (i = 0, len = propertyValuePairs.length; i < len; i++) { + var pair = propertyValuePairs[i].split(/\s*:\s*/), + property = pair[0], + value = pair[1]; + ruleObj[property] = value; + } + rule = match[1]; + rule.split(',').forEach(function(_rule) { + _rule = _rule.replace(/^svg/i, '').trim(); + if (_rule === '') { + return; + } + if (allRules[_rule]) { + fabric.util.object.extend(allRules[_rule], ruleObj); + } + else { + allRules[_rule] = fabric.util.object.clone(ruleObj); + } + }); + }); + } + return allRules; + }, + + /** + * Takes url corresponding to an SVG document, and parses it into a set of fabric objects. + * Note that SVG is fetched via XMLHttpRequest, so it needs to conform to SOP (Same Origin Policy) + * @memberOf fabric + * @param {String} url + * @param {Function} callback + * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created. + * @param {Object} [options] Object containing options for parsing + * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources + */ + loadSVGFromURL: function(url, callback, reviver, options) { + + url = url.replace(/^\n\s*/, '').trim(); + new fabric.util.request(url, { + method: 'get', + onComplete: onComplete + }); + + function onComplete(r) { + + var xml = r.responseXML; + if (xml && !xml.documentElement && fabric.window.ActiveXObject && r.responseText) { + xml = new ActiveXObject('Microsoft.XMLDOM'); + xml.async = 'false'; + //IE chokes on DOCTYPE + xml.loadXML(r.responseText.replace(//i, '')); + } + if (!xml || !xml.documentElement) { + callback && callback(null); + return false; + } + + fabric.parseSVGDocument(xml.documentElement, function (results, _options, elements, allElements) { + callback && callback(results, _options, elements, allElements); + }, reviver, options); + } + }, + + /** + * Takes string corresponding to an SVG document, and parses it into a set of fabric objects + * @memberOf fabric + * @param {String} string + * @param {Function} callback + * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created. + * @param {Object} [options] Object containing options for parsing + * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources + */ + loadSVGFromString: function(string, callback, reviver, options) { + string = string.trim(); + var doc; + if (typeof fabric.window.DOMParser !== 'undefined') { + var parser = new fabric.window.DOMParser(); + if (parser && parser.parseFromString) { + doc = parser.parseFromString(string, 'text/xml'); + } + } + else if (fabric.window.ActiveXObject) { + doc = new ActiveXObject('Microsoft.XMLDOM'); + doc.async = 'false'; + // IE chokes on DOCTYPE + doc.loadXML(string.replace(//i, '')); + } + + fabric.parseSVGDocument(doc.documentElement, function (results, _options, elements, allElements) { + callback(results, _options, elements, allElements); + }, reviver, options); + } + }); + +})(typeof exports !== 'undefined' ? exports : this); + + +fabric.ElementsParser = function(elements, callback, options, reviver, parsingOptions, doc) { + this.elements = elements; + this.callback = callback; + this.options = options; + this.reviver = reviver; + this.svgUid = (options && options.svgUid) || 0; + this.parsingOptions = parsingOptions; + this.regexUrl = /^url\(['"]?#([^'"]+)['"]?\)/g; + this.doc = doc; +}; + +(function(proto) { + proto.parse = function() { + this.instances = new Array(this.elements.length); + this.numElements = this.elements.length; + this.createObjects(); + }; + + proto.createObjects = function() { + var _this = this; + this.elements.forEach(function(element, i) { + element.setAttribute('svgUid', _this.svgUid); + _this.createObject(element, i); + }); + }; + + proto.findTag = function(el) { + return fabric[fabric.util.string.capitalize(el.tagName.replace('svg:', ''))]; + }; + + proto.createObject = function(el, index) { + var klass = this.findTag(el); + if (klass && klass.fromElement) { + try { + klass.fromElement(el, this.createCallback(index, el), this.options); + } + catch (err) { + fabric.log(err); + } + } + else { + this.checkIfDone(); + } + }; + + proto.createCallback = function(index, el) { + var _this = this; + return function(obj) { + var _options; + _this.resolveGradient(obj, el, 'fill'); + _this.resolveGradient(obj, el, 'stroke'); + if (obj instanceof fabric.Image && obj._originalElement) { + _options = obj.parsePreserveAspectRatioAttribute(el); + } + obj._removeTransformMatrix(_options); + _this.resolveClipPath(obj, el); + _this.reviver && _this.reviver(el, obj); + _this.instances[index] = obj; + _this.checkIfDone(); + }; + }; + + proto.extractPropertyDefinition = function(obj, property, storage) { + var value = obj[property], regex = this.regexUrl; + if (!regex.test(value)) { + return; + } + regex.lastIndex = 0; + var id = regex.exec(value)[1]; + regex.lastIndex = 0; + return fabric[storage][this.svgUid][id]; + }; + + proto.resolveGradient = function(obj, el, property) { + var gradientDef = this.extractPropertyDefinition(obj, property, 'gradientDefs'); + if (gradientDef) { + var opacityAttr = el.getAttribute(property + '-opacity'); + var gradient = fabric.Gradient.fromElement(gradientDef, obj, opacityAttr, this.options); + obj.set(property, gradient); + } + }; + + proto.createClipPathCallback = function(obj, container) { + return function(_newObj) { + _newObj._removeTransformMatrix(); + _newObj.fillRule = _newObj.clipRule; + container.push(_newObj); + }; + }; + + proto.resolveClipPath = function(obj, usingElement) { + var clipPath = this.extractPropertyDefinition(obj, 'clipPath', 'clipPaths'), + element, klass, objTransformInv, container, gTransform, options; + if (clipPath) { + container = []; + objTransformInv = fabric.util.invertTransform(obj.calcTransformMatrix()); + // move the clipPath tag as sibling to the real element that is using it + var clipPathTag = clipPath[0].parentNode; + var clipPathOwner = usingElement; + while (clipPathOwner.parentNode && clipPathOwner.getAttribute('clip-path') !== obj.clipPath) { + clipPathOwner = clipPathOwner.parentNode; + } + clipPathOwner.parentNode.appendChild(clipPathTag); + for (var i = 0; i < clipPath.length; i++) { + element = clipPath[i]; + klass = this.findTag(element); + klass.fromElement( + element, + this.createClipPathCallback(obj, container), + this.options + ); + } + if (container.length === 1) { + clipPath = container[0]; + } + else { + clipPath = new fabric.Group(container); + } + gTransform = fabric.util.multiplyTransformMatrices( + objTransformInv, + clipPath.calcTransformMatrix() + ); + if (clipPath.clipPath) { + this.resolveClipPath(clipPath, clipPathOwner); + } + var options = fabric.util.qrDecompose(gTransform); + clipPath.flipX = false; + clipPath.flipY = false; + clipPath.set('scaleX', options.scaleX); + clipPath.set('scaleY', options.scaleY); + clipPath.angle = options.angle; + clipPath.skewX = options.skewX; + clipPath.skewY = 0; + clipPath.setPositionByOrigin({ x: options.translateX, y: options.translateY }, 'center', 'center'); + obj.clipPath = clipPath; + } + }; + + proto.checkIfDone = function() { + if (--this.numElements === 0) { + this.instances = this.instances.filter(function(el) { + // eslint-disable-next-line no-eq-null, eqeqeq + return el != null; + }); + this.callback(this.instances, this.elements); + } + }; +})(fabric.ElementsParser.prototype); + + +(function(global) { + + 'use strict'; + + /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */ + + var fabric = global.fabric || (global.fabric = { }); + + if (fabric.Point) { + fabric.warn('fabric.Point is already defined'); + return; + } + + fabric.Point = Point; + + /** + * Point class + * @class fabric.Point + * @memberOf fabric + * @constructor + * @param {Number} x + * @param {Number} y + * @return {fabric.Point} thisArg + */ + function Point(x, y) { + this.x = x; + this.y = y; + } + + Point.prototype = /** @lends fabric.Point.prototype */ { + + type: 'point', + + constructor: Point, + + /** + * Adds another point to this one and returns another one + * @param {fabric.Point} that + * @return {fabric.Point} new Point instance with added values + */ + add: function (that) { + return new Point(this.x + that.x, this.y + that.y); + }, + + /** + * Adds another point to this one + * @param {fabric.Point} that + * @return {fabric.Point} thisArg + * @chainable + */ + addEquals: function (that) { + this.x += that.x; + this.y += that.y; + return this; + }, + + /** + * Adds value to this point and returns a new one + * @param {Number} scalar + * @return {fabric.Point} new Point with added value + */ + scalarAdd: function (scalar) { + return new Point(this.x + scalar, this.y + scalar); + }, + + /** + * Adds value to this point + * @param {Number} scalar + * @return {fabric.Point} thisArg + * @chainable + */ + scalarAddEquals: function (scalar) { + this.x += scalar; + this.y += scalar; + return this; + }, + + /** + * Subtracts another point from this point and returns a new one + * @param {fabric.Point} that + * @return {fabric.Point} new Point object with subtracted values + */ + subtract: function (that) { + return new Point(this.x - that.x, this.y - that.y); + }, + + /** + * Subtracts another point from this point + * @param {fabric.Point} that + * @return {fabric.Point} thisArg + * @chainable + */ + subtractEquals: function (that) { + this.x -= that.x; + this.y -= that.y; + return this; + }, + + /** + * Subtracts value from this point and returns a new one + * @param {Number} scalar + * @return {fabric.Point} + */ + scalarSubtract: function (scalar) { + return new Point(this.x - scalar, this.y - scalar); + }, + + /** + * Subtracts value from this point + * @param {Number} scalar + * @return {fabric.Point} thisArg + * @chainable + */ + scalarSubtractEquals: function (scalar) { + this.x -= scalar; + this.y -= scalar; + return this; + }, + + /** + * Multiplies this point by a value and returns a new one + * TODO: rename in scalarMultiply in 2.0 + * @param {Number} scalar + * @return {fabric.Point} + */ + multiply: function (scalar) { + return new Point(this.x * scalar, this.y * scalar); + }, + + /** + * Multiplies this point by a value + * TODO: rename in scalarMultiplyEquals in 2.0 + * @param {Number} scalar + * @return {fabric.Point} thisArg + * @chainable + */ + multiplyEquals: function (scalar) { + this.x *= scalar; + this.y *= scalar; + return this; + }, + + /** + * Divides this point by a value and returns a new one + * TODO: rename in scalarDivide in 2.0 + * @param {Number} scalar + * @return {fabric.Point} + */ + divide: function (scalar) { + return new Point(this.x / scalar, this.y / scalar); + }, + + /** + * Divides this point by a value + * TODO: rename in scalarDivideEquals in 2.0 + * @param {Number} scalar + * @return {fabric.Point} thisArg + * @chainable + */ + divideEquals: function (scalar) { + this.x /= scalar; + this.y /= scalar; + return this; + }, + + /** + * Returns true if this point is equal to another one + * @param {fabric.Point} that + * @return {Boolean} + */ + eq: function (that) { + return (this.x === that.x && this.y === that.y); + }, + + /** + * Returns true if this point is less than another one + * @param {fabric.Point} that + * @return {Boolean} + */ + lt: function (that) { + return (this.x < that.x && this.y < that.y); + }, + + /** + * Returns true if this point is less than or equal to another one + * @param {fabric.Point} that + * @return {Boolean} + */ + lte: function (that) { + return (this.x <= that.x && this.y <= that.y); + }, + + /** + + * Returns true if this point is greater another one + * @param {fabric.Point} that + * @return {Boolean} + */ + gt: function (that) { + return (this.x > that.x && this.y > that.y); + }, + + /** + * Returns true if this point is greater than or equal to another one + * @param {fabric.Point} that + * @return {Boolean} + */ + gte: function (that) { + return (this.x >= that.x && this.y >= that.y); + }, + + /** + * Returns new point which is the result of linear interpolation with this one and another one + * @param {fabric.Point} that + * @param {Number} t , position of interpolation, between 0 and 1 default 0.5 + * @return {fabric.Point} + */ + lerp: function (that, t) { + if (typeof t === 'undefined') { + t = 0.5; + } + t = Math.max(Math.min(1, t), 0); + return new Point(this.x + (that.x - this.x) * t, this.y + (that.y - this.y) * t); + }, + + /** + * Returns distance from this point and another one + * @param {fabric.Point} that + * @return {Number} + */ + distanceFrom: function (that) { + var dx = this.x - that.x, + dy = this.y - that.y; + return Math.sqrt(dx * dx + dy * dy); + }, + + /** + * Returns the point between this point and another one + * @param {fabric.Point} that + * @return {fabric.Point} + */ + midPointFrom: function (that) { + return this.lerp(that); + }, + + /** + * Returns a new point which is the min of this and another one + * @param {fabric.Point} that + * @return {fabric.Point} + */ + min: function (that) { + return new Point(Math.min(this.x, that.x), Math.min(this.y, that.y)); + }, + + /** + * Returns a new point which is the max of this and another one + * @param {fabric.Point} that + * @return {fabric.Point} + */ + max: function (that) { + return new Point(Math.max(this.x, that.x), Math.max(this.y, that.y)); + }, + + /** + * Returns string representation of this point + * @return {String} + */ + toString: function () { + return this.x + ',' + this.y; + }, + + /** + * Sets x/y of this point + * @param {Number} x + * @param {Number} y + * @chainable + */ + setXY: function (x, y) { + this.x = x; + this.y = y; + return this; + }, + + /** + * Sets x of this point + * @param {Number} x + * @chainable + */ + setX: function (x) { + this.x = x; + return this; + }, + + /** + * Sets y of this point + * @param {Number} y + * @chainable + */ + setY: function (y) { + this.y = y; + return this; + }, + + /** + * Sets x/y of this point from another point + * @param {fabric.Point} that + * @chainable + */ + setFromPoint: function (that) { + this.x = that.x; + this.y = that.y; + return this; + }, + + /** + * Swaps x/y of this point and another point + * @param {fabric.Point} that + */ + swap: function (that) { + var x = this.x, + y = this.y; + this.x = that.x; + this.y = that.y; + that.x = x; + that.y = y; + }, + + /** + * return a cloned instance of the point + * @return {fabric.Point} + */ + clone: function () { + return new Point(this.x, this.y); + } + }; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */ + var fabric = global.fabric || (global.fabric = { }); + + if (fabric.Intersection) { + fabric.warn('fabric.Intersection is already defined'); + return; + } + + /** + * Intersection class + * @class fabric.Intersection + * @memberOf fabric + * @constructor + */ + function Intersection(status) { + this.status = status; + this.points = []; + } + + fabric.Intersection = Intersection; + + fabric.Intersection.prototype = /** @lends fabric.Intersection.prototype */ { + + constructor: Intersection, + + /** + * Appends a point to intersection + * @param {fabric.Point} point + * @return {fabric.Intersection} thisArg + * @chainable + */ + appendPoint: function (point) { + this.points.push(point); + return this; + }, + + /** + * Appends points to intersection + * @param {Array} points + * @return {fabric.Intersection} thisArg + * @chainable + */ + appendPoints: function (points) { + this.points = this.points.concat(points); + return this; + } + }; + + /** + * Checks if one line intersects another + * TODO: rename in intersectSegmentSegment + * @static + * @param {fabric.Point} a1 + * @param {fabric.Point} a2 + * @param {fabric.Point} b1 + * @param {fabric.Point} b2 + * @return {fabric.Intersection} + */ + fabric.Intersection.intersectLineLine = function (a1, a2, b1, b2) { + var result, + uaT = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x), + ubT = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x), + uB = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y); + if (uB !== 0) { + var ua = uaT / uB, + ub = ubT / uB; + if (0 <= ua && ua <= 1 && 0 <= ub && ub <= 1) { + result = new Intersection('Intersection'); + result.appendPoint(new fabric.Point(a1.x + ua * (a2.x - a1.x), a1.y + ua * (a2.y - a1.y))); + } + else { + result = new Intersection(); + } + } + else { + if (uaT === 0 || ubT === 0) { + result = new Intersection('Coincident'); + } + else { + result = new Intersection('Parallel'); + } + } + return result; + }; + + /** + * Checks if line intersects polygon + * TODO: rename in intersectSegmentPolygon + * fix detection of coincident + * @static + * @param {fabric.Point} a1 + * @param {fabric.Point} a2 + * @param {Array} points + * @return {fabric.Intersection} + */ + fabric.Intersection.intersectLinePolygon = function(a1, a2, points) { + var result = new Intersection(), + length = points.length, + b1, b2, inter, i; + + for (i = 0; i < length; i++) { + b1 = points[i]; + b2 = points[(i + 1) % length]; + inter = Intersection.intersectLineLine(a1, a2, b1, b2); + + result.appendPoints(inter.points); + } + if (result.points.length > 0) { + result.status = 'Intersection'; + } + return result; + }; + + /** + * Checks if polygon intersects another polygon + * @static + * @param {Array} points1 + * @param {Array} points2 + * @return {fabric.Intersection} + */ + fabric.Intersection.intersectPolygonPolygon = function (points1, points2) { + var result = new Intersection(), + length = points1.length, i; + + for (i = 0; i < length; i++) { + var a1 = points1[i], + a2 = points1[(i + 1) % length], + inter = Intersection.intersectLinePolygon(a1, a2, points2); + + result.appendPoints(inter.points); + } + if (result.points.length > 0) { + result.status = 'Intersection'; + } + return result; + }; + + /** + * Checks if polygon intersects rectangle + * @static + * @param {Array} points + * @param {fabric.Point} r1 + * @param {fabric.Point} r2 + * @return {fabric.Intersection} + */ + fabric.Intersection.intersectPolygonRectangle = function (points, r1, r2) { + var min = r1.min(r2), + max = r1.max(r2), + topRight = new fabric.Point(max.x, min.y), + bottomLeft = new fabric.Point(min.x, max.y), + inter1 = Intersection.intersectLinePolygon(min, topRight, points), + inter2 = Intersection.intersectLinePolygon(topRight, max, points), + inter3 = Intersection.intersectLinePolygon(max, bottomLeft, points), + inter4 = Intersection.intersectLinePolygon(bottomLeft, min, points), + result = new Intersection(); + + result.appendPoints(inter1.points); + result.appendPoints(inter2.points); + result.appendPoints(inter3.points); + result.appendPoints(inter4.points); + + if (result.points.length > 0) { + result.status = 'Intersection'; + } + return result; + }; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }); + + if (fabric.Color) { + fabric.warn('fabric.Color is already defined.'); + return; + } + + /** + * Color class + * The purpose of {@link fabric.Color} is to abstract and encapsulate common color operations; + * {@link fabric.Color} is a constructor and creates instances of {@link fabric.Color} objects. + * + * @class fabric.Color + * @param {String} color optional in hex or rgb(a) or hsl format or from known color list + * @return {fabric.Color} thisArg + * @tutorial {@link http://fabricjs.com/fabric-intro-part-2/#colors} + */ + function Color(color) { + if (!color) { + this.setSource([0, 0, 0, 1]); + } + else { + this._tryParsingColor(color); + } + } + + fabric.Color = Color; + + fabric.Color.prototype = /** @lends fabric.Color.prototype */ { + + /** + * @private + * @param {String|Array} color Color value to parse + */ + _tryParsingColor: function(color) { + var source; + + if (color in Color.colorNameMap) { + color = Color.colorNameMap[color]; + } + + if (color === 'transparent') { + source = [255, 255, 255, 0]; + } + + if (!source) { + source = Color.sourceFromHex(color); + } + if (!source) { + source = Color.sourceFromRgb(color); + } + if (!source) { + source = Color.sourceFromHsl(color); + } + if (!source) { + //if color is not recognize let's make black as canvas does + source = [0, 0, 0, 1]; + } + if (source) { + this.setSource(source); + } + }, + + /** + * Adapted from https://github.com/mjijackson + * @private + * @param {Number} r Red color value + * @param {Number} g Green color value + * @param {Number} b Blue color value + * @return {Array} Hsl color + */ + _rgbToHsl: function(r, g, b) { + r /= 255; g /= 255; b /= 255; + + var h, s, l, + max = fabric.util.array.max([r, g, b]), + min = fabric.util.array.min([r, g, b]); + + l = (max + min) / 2; + + if (max === min) { + h = s = 0; // achromatic + } + else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch (max) { + case r: + h = (g - b) / d + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / d + 2; + break; + case b: + h = (r - g) / d + 4; + break; + } + h /= 6; + } + + return [ + Math.round(h * 360), + Math.round(s * 100), + Math.round(l * 100) + ]; + }, + + /** + * Returns source of this color (where source is an array representation; ex: [200, 200, 100, 1]) + * @return {Array} + */ + getSource: function() { + return this._source; + }, + + /** + * Sets source of this color (where source is an array representation; ex: [200, 200, 100, 1]) + * @param {Array} source + */ + setSource: function(source) { + this._source = source; + }, + + /** + * Returns color representation in RGB format + * @return {String} ex: rgb(0-255,0-255,0-255) + */ + toRgb: function() { + var source = this.getSource(); + return 'rgb(' + source[0] + ',' + source[1] + ',' + source[2] + ')'; + }, + + /** + * Returns color representation in RGBA format + * @return {String} ex: rgba(0-255,0-255,0-255,0-1) + */ + toRgba: function() { + var source = this.getSource(); + return 'rgba(' + source[0] + ',' + source[1] + ',' + source[2] + ',' + source[3] + ')'; + }, + + /** + * Returns color representation in HSL format + * @return {String} ex: hsl(0-360,0%-100%,0%-100%) + */ + toHsl: function() { + var source = this.getSource(), + hsl = this._rgbToHsl(source[0], source[1], source[2]); + + return 'hsl(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%)'; + }, + + /** + * Returns color representation in HSLA format + * @return {String} ex: hsla(0-360,0%-100%,0%-100%,0-1) + */ + toHsla: function() { + var source = this.getSource(), + hsl = this._rgbToHsl(source[0], source[1], source[2]); + + return 'hsla(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%,' + source[3] + ')'; + }, + + /** + * Returns color representation in HEX format + * @return {String} ex: FF5555 + */ + toHex: function() { + var source = this.getSource(), r, g, b; + + r = source[0].toString(16); + r = (r.length === 1) ? ('0' + r) : r; + + g = source[1].toString(16); + g = (g.length === 1) ? ('0' + g) : g; + + b = source[2].toString(16); + b = (b.length === 1) ? ('0' + b) : b; + + return r.toUpperCase() + g.toUpperCase() + b.toUpperCase(); + }, + + /** + * Returns color representation in HEXA format + * @return {String} ex: FF5555CC + */ + toHexa: function() { + var source = this.getSource(), a; + + a = Math.round(source[3] * 255); + a = a.toString(16); + a = (a.length === 1) ? ('0' + a) : a; + + return this.toHex() + a.toUpperCase(); + }, + + /** + * Gets value of alpha channel for this color + * @return {Number} 0-1 + */ + getAlpha: function() { + return this.getSource()[3]; + }, + + /** + * Sets value of alpha channel for this color + * @param {Number} alpha Alpha value 0-1 + * @return {fabric.Color} thisArg + */ + setAlpha: function(alpha) { + var source = this.getSource(); + source[3] = alpha; + this.setSource(source); + return this; + }, + + /** + * Transforms color to its grayscale representation + * @return {fabric.Color} thisArg + */ + toGrayscale: function() { + var source = this.getSource(), + average = parseInt((source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0), 10), + currentAlpha = source[3]; + this.setSource([average, average, average, currentAlpha]); + return this; + }, + + /** + * Transforms color to its black and white representation + * @param {Number} threshold + * @return {fabric.Color} thisArg + */ + toBlackWhite: function(threshold) { + var source = this.getSource(), + average = (source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0), + currentAlpha = source[3]; + + threshold = threshold || 127; + + average = (Number(average) < Number(threshold)) ? 0 : 255; + this.setSource([average, average, average, currentAlpha]); + return this; + }, + + /** + * Overlays color with another color + * @param {String|fabric.Color} otherColor + * @return {fabric.Color} thisArg + */ + overlayWith: function(otherColor) { + if (!(otherColor instanceof Color)) { + otherColor = new Color(otherColor); + } + + var result = [], + alpha = this.getAlpha(), + otherAlpha = 0.5, + source = this.getSource(), + otherSource = otherColor.getSource(), i; + + for (i = 0; i < 3; i++) { + result.push(Math.round((source[i] * (1 - otherAlpha)) + (otherSource[i] * otherAlpha))); + } + + result[3] = alpha; + this.setSource(result); + return this; + } + }; + + /** + * Regex matching color in RGB or RGBA formats (ex: rgb(0, 0, 0), rgba(255, 100, 10, 0.5), rgba( 255 , 100 , 10 , 0.5 ), rgb(1,1,1), rgba(100%, 60%, 10%, 0.5)) + * @static + * @field + * @memberOf fabric.Color + */ + // eslint-disable-next-line max-len + fabric.Color.reRGBa = /^rgba?\(\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*(?:\s*,\s*((?:\d*\.?\d+)?)\s*)?\)$/i; + + /** + * Regex matching color in HSL or HSLA formats (ex: hsl(200, 80%, 10%), hsla(300, 50%, 80%, 0.5), hsla( 300 , 50% , 80% , 0.5 )) + * @static + * @field + * @memberOf fabric.Color + */ + fabric.Color.reHSLa = /^hsla?\(\s*(\d{1,3})\s*,\s*(\d{1,3}\%)\s*,\s*(\d{1,3}\%)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/i; + + /** + * Regex matching color in HEX format (ex: #FF5544CC, #FF5555, 010155, aff) + * @static + * @field + * @memberOf fabric.Color + */ + fabric.Color.reHex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i; + + /** + * Map of the 148 color names with HEX code + * @static + * @field + * @memberOf fabric.Color + * @see: https://www.w3.org/TR/css3-color/#svg-color + */ + fabric.Color.colorNameMap = { + aliceblue: '#F0F8FF', + antiquewhite: '#FAEBD7', + aqua: '#00FFFF', + aquamarine: '#7FFFD4', + azure: '#F0FFFF', + beige: '#F5F5DC', + bisque: '#FFE4C4', + black: '#000000', + blanchedalmond: '#FFEBCD', + blue: '#0000FF', + blueviolet: '#8A2BE2', + brown: '#A52A2A', + burlywood: '#DEB887', + cadetblue: '#5F9EA0', + chartreuse: '#7FFF00', + chocolate: '#D2691E', + coral: '#FF7F50', + cornflowerblue: '#6495ED', + cornsilk: '#FFF8DC', + crimson: '#DC143C', + cyan: '#00FFFF', + darkblue: '#00008B', + darkcyan: '#008B8B', + darkgoldenrod: '#B8860B', + darkgray: '#A9A9A9', + darkgrey: '#A9A9A9', + darkgreen: '#006400', + darkkhaki: '#BDB76B', + darkmagenta: '#8B008B', + darkolivegreen: '#556B2F', + darkorange: '#FF8C00', + darkorchid: '#9932CC', + darkred: '#8B0000', + darksalmon: '#E9967A', + darkseagreen: '#8FBC8F', + darkslateblue: '#483D8B', + darkslategray: '#2F4F4F', + darkslategrey: '#2F4F4F', + darkturquoise: '#00CED1', + darkviolet: '#9400D3', + deeppink: '#FF1493', + deepskyblue: '#00BFFF', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1E90FF', + firebrick: '#B22222', + floralwhite: '#FFFAF0', + forestgreen: '#228B22', + fuchsia: '#FF00FF', + gainsboro: '#DCDCDC', + ghostwhite: '#F8F8FF', + gold: '#FFD700', + goldenrod: '#DAA520', + gray: '#808080', + grey: '#808080', + green: '#008000', + greenyellow: '#ADFF2F', + honeydew: '#F0FFF0', + hotpink: '#FF69B4', + indianred: '#CD5C5C', + indigo: '#4B0082', + ivory: '#FFFFF0', + khaki: '#F0E68C', + lavender: '#E6E6FA', + lavenderblush: '#FFF0F5', + lawngreen: '#7CFC00', + lemonchiffon: '#FFFACD', + lightblue: '#ADD8E6', + lightcoral: '#F08080', + lightcyan: '#E0FFFF', + lightgoldenrodyellow: '#FAFAD2', + lightgray: '#D3D3D3', + lightgrey: '#D3D3D3', + lightgreen: '#90EE90', + lightpink: '#FFB6C1', + lightsalmon: '#FFA07A', + lightseagreen: '#20B2AA', + lightskyblue: '#87CEFA', + lightslategray: '#778899', + lightslategrey: '#778899', + lightsteelblue: '#B0C4DE', + lightyellow: '#FFFFE0', + lime: '#00FF00', + limegreen: '#32CD32', + linen: '#FAF0E6', + magenta: '#FF00FF', + maroon: '#800000', + mediumaquamarine: '#66CDAA', + mediumblue: '#0000CD', + mediumorchid: '#BA55D3', + mediumpurple: '#9370DB', + mediumseagreen: '#3CB371', + mediumslateblue: '#7B68EE', + mediumspringgreen: '#00FA9A', + mediumturquoise: '#48D1CC', + mediumvioletred: '#C71585', + midnightblue: '#191970', + mintcream: '#F5FFFA', + mistyrose: '#FFE4E1', + moccasin: '#FFE4B5', + navajowhite: '#FFDEAD', + navy: '#000080', + oldlace: '#FDF5E6', + olive: '#808000', + olivedrab: '#6B8E23', + orange: '#FFA500', + orangered: '#FF4500', + orchid: '#DA70D6', + palegoldenrod: '#EEE8AA', + palegreen: '#98FB98', + paleturquoise: '#AFEEEE', + palevioletred: '#DB7093', + papayawhip: '#FFEFD5', + peachpuff: '#FFDAB9', + peru: '#CD853F', + pink: '#FFC0CB', + plum: '#DDA0DD', + powderblue: '#B0E0E6', + purple: '#800080', + rebeccapurple: '#663399', + red: '#FF0000', + rosybrown: '#BC8F8F', + royalblue: '#4169E1', + saddlebrown: '#8B4513', + salmon: '#FA8072', + sandybrown: '#F4A460', + seagreen: '#2E8B57', + seashell: '#FFF5EE', + sienna: '#A0522D', + silver: '#C0C0C0', + skyblue: '#87CEEB', + slateblue: '#6A5ACD', + slategray: '#708090', + slategrey: '#708090', + snow: '#FFFAFA', + springgreen: '#00FF7F', + steelblue: '#4682B4', + tan: '#D2B48C', + teal: '#008080', + thistle: '#D8BFD8', + tomato: '#FF6347', + turquoise: '#40E0D0', + violet: '#EE82EE', + wheat: '#F5DEB3', + white: '#FFFFFF', + whitesmoke: '#F5F5F5', + yellow: '#FFFF00', + yellowgreen: '#9ACD32' + }; + + /** + * @private + * @param {Number} p + * @param {Number} q + * @param {Number} t + * @return {Number} + */ + function hue2rgb(p, q, t) { + if (t < 0) { + t += 1; + } + if (t > 1) { + t -= 1; + } + if (t < 1 / 6) { + return p + (q - p) * 6 * t; + } + if (t < 1 / 2) { + return q; + } + if (t < 2 / 3) { + return p + (q - p) * (2 / 3 - t) * 6; + } + return p; + } + + /** + * Returns new color object, when given a color in RGB format + * @memberOf fabric.Color + * @param {String} color Color value ex: rgb(0-255,0-255,0-255) + * @return {fabric.Color} + */ + fabric.Color.fromRgb = function(color) { + return Color.fromSource(Color.sourceFromRgb(color)); + }; + + /** + * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in RGB or RGBA format + * @memberOf fabric.Color + * @param {String} color Color value ex: rgb(0-255,0-255,0-255), rgb(0%-100%,0%-100%,0%-100%) + * @return {Array} source + */ + fabric.Color.sourceFromRgb = function(color) { + var match = color.match(Color.reRGBa); + if (match) { + var r = parseInt(match[1], 10) / (/%$/.test(match[1]) ? 100 : 1) * (/%$/.test(match[1]) ? 255 : 1), + g = parseInt(match[2], 10) / (/%$/.test(match[2]) ? 100 : 1) * (/%$/.test(match[2]) ? 255 : 1), + b = parseInt(match[3], 10) / (/%$/.test(match[3]) ? 100 : 1) * (/%$/.test(match[3]) ? 255 : 1); + + return [ + parseInt(r, 10), + parseInt(g, 10), + parseInt(b, 10), + match[4] ? parseFloat(match[4]) : 1 + ]; + } + }; + + /** + * Returns new color object, when given a color in RGBA format + * @static + * @function + * @memberOf fabric.Color + * @param {String} color + * @return {fabric.Color} + */ + fabric.Color.fromRgba = Color.fromRgb; + + /** + * Returns new color object, when given a color in HSL format + * @param {String} color Color value ex: hsl(0-260,0%-100%,0%-100%) + * @memberOf fabric.Color + * @return {fabric.Color} + */ + fabric.Color.fromHsl = function(color) { + return Color.fromSource(Color.sourceFromHsl(color)); + }; + + /** + * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in HSL or HSLA format. + * Adapted from https://github.com/mjijackson + * @memberOf fabric.Color + * @param {String} color Color value ex: hsl(0-360,0%-100%,0%-100%) or hsla(0-360,0%-100%,0%-100%, 0-1) + * @return {Array} source + * @see http://http://www.w3.org/TR/css3-color/#hsl-color + */ + fabric.Color.sourceFromHsl = function(color) { + var match = color.match(Color.reHSLa); + if (!match) { + return; + } + + var h = (((parseFloat(match[1]) % 360) + 360) % 360) / 360, + s = parseFloat(match[2]) / (/%$/.test(match[2]) ? 100 : 1), + l = parseFloat(match[3]) / (/%$/.test(match[3]) ? 100 : 1), + r, g, b; + + if (s === 0) { + r = g = b = l; + } + else { + var q = l <= 0.5 ? l * (s + 1) : l + s - l * s, + p = l * 2 - q; + + r = hue2rgb(p, q, h + 1 / 3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1 / 3); + } + + return [ + Math.round(r * 255), + Math.round(g * 255), + Math.round(b * 255), + match[4] ? parseFloat(match[4]) : 1 + ]; + }; + + /** + * Returns new color object, when given a color in HSLA format + * @static + * @function + * @memberOf fabric.Color + * @param {String} color + * @return {fabric.Color} + */ + fabric.Color.fromHsla = Color.fromHsl; + + /** + * Returns new color object, when given a color in HEX format + * @static + * @memberOf fabric.Color + * @param {String} color Color value ex: FF5555 + * @return {fabric.Color} + */ + fabric.Color.fromHex = function(color) { + return Color.fromSource(Color.sourceFromHex(color)); + }; + + /** + * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in HEX format + * @static + * @memberOf fabric.Color + * @param {String} color ex: FF5555 or FF5544CC (RGBa) + * @return {Array} source + */ + fabric.Color.sourceFromHex = function(color) { + if (color.match(Color.reHex)) { + var value = color.slice(color.indexOf('#') + 1), + isShortNotation = (value.length === 3 || value.length === 4), + isRGBa = (value.length === 8 || value.length === 4), + r = isShortNotation ? (value.charAt(0) + value.charAt(0)) : value.substring(0, 2), + g = isShortNotation ? (value.charAt(1) + value.charAt(1)) : value.substring(2, 4), + b = isShortNotation ? (value.charAt(2) + value.charAt(2)) : value.substring(4, 6), + a = isRGBa ? (isShortNotation ? (value.charAt(3) + value.charAt(3)) : value.substring(6, 8)) : 'FF'; + + return [ + parseInt(r, 16), + parseInt(g, 16), + parseInt(b, 16), + parseFloat((parseInt(a, 16) / 255).toFixed(2)) + ]; + } + }; + + /** + * Returns new color object, when given color in array representation (ex: [200, 100, 100, 0.5]) + * @static + * @memberOf fabric.Color + * @param {Array} source + * @return {fabric.Color} + */ + fabric.Color.fromSource = function(source) { + var oColor = new Color(); + oColor.setSource(source); + return oColor; + }; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function() { + + /* _FROM_SVG_START_ */ + function getColorStop(el, multiplier) { + var style = el.getAttribute('style'), + offset = el.getAttribute('offset') || 0, + color, colorAlpha, opacity, i; + + // convert percents to absolute values + offset = parseFloat(offset) / (/%$/.test(offset) ? 100 : 1); + offset = offset < 0 ? 0 : offset > 1 ? 1 : offset; + if (style) { + var keyValuePairs = style.split(/\s*;\s*/); + + if (keyValuePairs[keyValuePairs.length - 1] === '') { + keyValuePairs.pop(); + } + + for (i = keyValuePairs.length; i--; ) { + + var split = keyValuePairs[i].split(/\s*:\s*/), + key = split[0].trim(), + value = split[1].trim(); + + if (key === 'stop-color') { + color = value; + } + else if (key === 'stop-opacity') { + opacity = value; + } + } + } + + if (!color) { + color = el.getAttribute('stop-color') || 'rgb(0,0,0)'; + } + if (!opacity) { + opacity = el.getAttribute('stop-opacity'); + } + + color = new fabric.Color(color); + colorAlpha = color.getAlpha(); + opacity = isNaN(parseFloat(opacity)) ? 1 : parseFloat(opacity); + opacity *= colorAlpha * multiplier; + + return { + offset: offset, + color: color.toRgb(), + opacity: opacity + }; + } + + function getLinearCoords(el) { + return { + x1: el.getAttribute('x1') || 0, + y1: el.getAttribute('y1') || 0, + x2: el.getAttribute('x2') || '100%', + y2: el.getAttribute('y2') || 0 + }; + } + + function getRadialCoords(el) { + return { + x1: el.getAttribute('fx') || el.getAttribute('cx') || '50%', + y1: el.getAttribute('fy') || el.getAttribute('cy') || '50%', + r1: 0, + x2: el.getAttribute('cx') || '50%', + y2: el.getAttribute('cy') || '50%', + r2: el.getAttribute('r') || '50%' + }; + } + /* _FROM_SVG_END_ */ + + var clone = fabric.util.object.clone; + + /** + * Gradient class + * @class fabric.Gradient + * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#gradients} + * @see {@link fabric.Gradient#initialize} for constructor definition + */ + fabric.Gradient = fabric.util.createClass(/** @lends fabric.Gradient.prototype */ { + + /** + * Horizontal offset for aligning gradients coming from SVG when outside pathgroups + * @type Number + * @default 0 + */ + offsetX: 0, + + /** + * Vertical offset for aligning gradients coming from SVG when outside pathgroups + * @type Number + * @default 0 + */ + offsetY: 0, + + /** + * A transform matrix to apply to the gradient before painting. + * Imported from svg gradients, is not applied with the current transform in the center. + * Before this transform is applied, the origin point is at the top left corner of the object + * plus the addition of offsetY and offsetX. + * @type Number[] + * @default null + */ + gradientTransform: null, + + /** + * coordinates units for coords. + * If `pixels`, the number of coords are in the same unit of width / height. + * If set as `percentage` the coords are still a number, but 1 means 100% of width + * for the X and 100% of the height for the y. It can be bigger than 1 and negative. + * allowed values pixels or percentage. + * @type String + * @default 'pixels' + */ + gradientUnits: 'pixels', + + /** + * Gradient type linear or radial + * @type String + * @default 'pixels' + */ + type: 'linear', + + /** + * Constructor + * @param {Object} options Options object with type, coords, gradientUnits and colorStops + * @param {Object} [options.type] gradient type linear or radial + * @param {Object} [options.gradientUnits] gradient units + * @param {Object} [options.offsetX] SVG import compatibility + * @param {Object} [options.offsetY] SVG import compatibility + * @param {Object[]} options.colorStops contains the colorstops. + * @param {Object} options.coords contains the coords of the gradient + * @param {Number} [options.coords.x1] X coordiante of the first point for linear or of the focal point for radial + * @param {Number} [options.coords.y1] Y coordiante of the first point for linear or of the focal point for radial + * @param {Number} [options.coords.x2] X coordiante of the second point for linear or of the center point for radial + * @param {Number} [options.coords.y2] Y coordiante of the second point for linear or of the center point for radial + * @param {Number} [options.coords.r1] only for radial gradient, radius of the inner circle + * @param {Number} [options.coords.r2] only for radial gradient, radius of the external circle + * @return {fabric.Gradient} thisArg + */ + initialize: function(options) { + options || (options = { }); + options.coords || (options.coords = { }); + + var coords, _this = this; + + // sets everything, then coords and colorstops get sets again + Object.keys(options).forEach(function(option) { + _this[option] = options[option]; + }); + + if (this.id) { + this.id += '_' + fabric.Object.__uid++; + } + else { + this.id = fabric.Object.__uid++; + } + + coords = { + x1: options.coords.x1 || 0, + y1: options.coords.y1 || 0, + x2: options.coords.x2 || 0, + y2: options.coords.y2 || 0 + }; + + if (this.type === 'radial') { + coords.r1 = options.coords.r1 || 0; + coords.r2 = options.coords.r2 || 0; + } + + this.coords = coords; + this.colorStops = options.colorStops.slice(); + }, + + /** + * Adds another colorStop + * @param {Object} colorStop Object with offset and color + * @return {fabric.Gradient} thisArg + */ + addColorStop: function(colorStops) { + for (var position in colorStops) { + var color = new fabric.Color(colorStops[position]); + this.colorStops.push({ + offset: parseFloat(position), + color: color.toRgb(), + opacity: color.getAlpha() + }); + } + return this; + }, + + /** + * Returns object representation of a gradient + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} + */ + toObject: function(propertiesToInclude) { + var object = { + type: this.type, + coords: this.coords, + colorStops: this.colorStops, + offsetX: this.offsetX, + offsetY: this.offsetY, + gradientUnits: this.gradientUnits, + gradientTransform: this.gradientTransform ? this.gradientTransform.concat() : this.gradientTransform + }; + fabric.util.populateWithProperties(this, object, propertiesToInclude); + + return object; + }, + + /* _TO_SVG_START_ */ + /** + * Returns SVG representation of an gradient + * @param {Object} object Object to create a gradient for + * @return {String} SVG representation of an gradient (linear/radial) + */ + toSVG: function(object, options) { + var coords = clone(this.coords, true), i, len, options = options || {}, + markup, commonAttributes, colorStops = clone(this.colorStops, true), + needsSwap = coords.r1 > coords.r2, + transform = this.gradientTransform ? this.gradientTransform.concat() : fabric.iMatrix.concat(), + offsetX = -this.offsetX, offsetY = -this.offsetY, + withViewport = !!options.additionalTransform, + gradientUnits = this.gradientUnits === 'pixels' ? 'userSpaceOnUse' : 'objectBoundingBox'; + // colorStops must be sorted ascending + colorStops.sort(function(a, b) { + return a.offset - b.offset; + }); + + if (gradientUnits === 'objectBoundingBox') { + offsetX /= object.width; + offsetY /= object.height; + } + else { + offsetX += object.width / 2; + offsetY += object.height / 2; + } + if (object.type === 'path') { + offsetX -= object.pathOffset.x; + offsetY -= object.pathOffset.y; + } + + + transform[4] -= offsetX; + transform[5] -= offsetY; + + commonAttributes = 'id="SVGID_' + this.id + + '" gradientUnits="' + gradientUnits + '"'; + commonAttributes += ' gradientTransform="' + (withViewport ? + options.additionalTransform + ' ' : '') + fabric.util.matrixToSVG(transform) + '" '; + + if (this.type === 'linear') { + markup = [ + '\n' + ]; + } + else if (this.type === 'radial') { + // svg radial gradient has just 1 radius. the biggest. + markup = [ + '\n' + ]; + } + + if (this.type === 'radial') { + if (needsSwap) { + // svg goes from internal to external radius. if radius are inverted, swap color stops. + colorStops = colorStops.concat(); + colorStops.reverse(); + for (i = 0, len = colorStops.length; i < len; i++) { + colorStops[i].offset = 1 - colorStops[i].offset; + } + } + var minRadius = Math.min(coords.r1, coords.r2); + if (minRadius > 0) { + // i have to shift all colorStops and add new one in 0. + var maxRadius = Math.max(coords.r1, coords.r2), + percentageShift = minRadius / maxRadius; + for (i = 0, len = colorStops.length; i < len; i++) { + colorStops[i].offset += percentageShift * (1 - colorStops[i].offset); + } + } + } + + for (i = 0, len = colorStops.length; i < len; i++) { + var colorStop = colorStops[i]; + markup.push( + '\n' + ); + } + + markup.push((this.type === 'linear' ? '\n' : '\n')); + + return markup.join(''); + }, + /* _TO_SVG_END_ */ + + /** + * Returns an instance of CanvasGradient + * @param {CanvasRenderingContext2D} ctx Context to render on + * @return {CanvasGradient} + */ + toLive: function(ctx) { + var gradient, coords = fabric.util.object.clone(this.coords), i, len; + + if (!this.type) { + return; + } + + if (this.type === 'linear') { + gradient = ctx.createLinearGradient( + coords.x1, coords.y1, coords.x2, coords.y2); + } + else if (this.type === 'radial') { + gradient = ctx.createRadialGradient( + coords.x1, coords.y1, coords.r1, coords.x2, coords.y2, coords.r2); + } + + for (i = 0, len = this.colorStops.length; i < len; i++) { + var color = this.colorStops[i].color, + opacity = this.colorStops[i].opacity, + offset = this.colorStops[i].offset; + + if (typeof opacity !== 'undefined') { + color = new fabric.Color(color).setAlpha(opacity).toRgba(); + } + gradient.addColorStop(offset, color); + } + + return gradient; + } + }); + + fabric.util.object.extend(fabric.Gradient, { + + /* _FROM_SVG_START_ */ + /** + * Returns {@link fabric.Gradient} instance from an SVG element + * @static + * @memberOf fabric.Gradient + * @param {SVGGradientElement} el SVG gradient element + * @param {fabric.Object} instance + * @param {String} opacityAttr A fill-opacity or stroke-opacity attribute to multiply to each stop's opacity. + * @param {Object} svgOptions an object containing the size of the SVG in order to parse correctly graidents + * that uses gradientUnits as 'userSpaceOnUse' and percentages. + * @param {Object.number} viewBoxWidth width part of the viewBox attribute on svg + * @param {Object.number} viewBoxHeight height part of the viewBox attribute on svg + * @param {Object.number} width width part of the svg tag if viewBox is not specified + * @param {Object.number} height height part of the svg tag if viewBox is not specified + * @return {fabric.Gradient} Gradient instance + * @see http://www.w3.org/TR/SVG/pservers.html#LinearGradientElement + * @see http://www.w3.org/TR/SVG/pservers.html#RadialGradientElement + */ + fromElement: function(el, instance, opacityAttr, svgOptions) { + /** + * @example: + * + * + * + * + * + * + * OR + * + * + * + * + * + * + * OR + * + * + * + * + * + * + * + * OR + * + * + * + * + * + * + * + */ + + var multiplier = parseFloat(opacityAttr) / (/%$/.test(opacityAttr) ? 100 : 1); + multiplier = multiplier < 0 ? 0 : multiplier > 1 ? 1 : multiplier; + if (isNaN(multiplier)) { + multiplier = 1; + } + + var colorStopEls = el.getElementsByTagName('stop'), + type, + gradientUnits = el.getAttribute('gradientUnits') === 'userSpaceOnUse' ? + 'pixels' : 'percentage', + gradientTransform = el.getAttribute('gradientTransform') || '', + colorStops = [], + coords, i, offsetX = 0, offsetY = 0, + transformMatrix; + if (el.nodeName === 'linearGradient' || el.nodeName === 'LINEARGRADIENT') { + type = 'linear'; + coords = getLinearCoords(el); + } + else { + type = 'radial'; + coords = getRadialCoords(el); + } + + for (i = colorStopEls.length; i--; ) { + colorStops.push(getColorStop(colorStopEls[i], multiplier)); + } + + transformMatrix = fabric.parseTransformAttribute(gradientTransform); + + __convertPercentUnitsToValues(instance, coords, svgOptions, gradientUnits); + + if (gradientUnits === 'pixels') { + offsetX = -instance.left; + offsetY = -instance.top; + } + + var gradient = new fabric.Gradient({ + id: el.getAttribute('id'), + type: type, + coords: coords, + colorStops: colorStops, + gradientUnits: gradientUnits, + gradientTransform: transformMatrix, + offsetX: offsetX, + offsetY: offsetY, + }); + + return gradient; + }, + /* _FROM_SVG_END_ */ + + /** + * Returns {@link fabric.Gradient} instance from its object representation + * this function is uniquely used by Object.setGradient and is deprecated with it. + * @static + * @deprecated since 3.4.0 + * @memberOf fabric.Gradient + * @param {Object} obj + * @param {Object} [options] Options object + */ + forObject: function(obj, options) { + options || (options = { }); + __convertPercentUnitsToValues(obj, options.coords, options.gradientUnits, { + // those values are to avoid errors. this function is uniquely used by + viewBoxWidth: 100, + viewBoxHeight: 100, + }); + return new fabric.Gradient(options); + } + }); + + /** + * @private + */ + function __convertPercentUnitsToValues(instance, options, svgOptions, gradientUnits) { + var propValue, finalValue; + Object.keys(options).forEach(function(prop) { + propValue = options[prop]; + if (propValue === 'Infinity') { + finalValue = 1; + } + else if (propValue === '-Infinity') { + finalValue = 0; + } + else { + finalValue = parseFloat(options[prop], 10); + if (typeof propValue === 'string' && /^(\d+\.\d+)%|(\d+)%$/.test(propValue)) { + finalValue *= 0.01; + if (gradientUnits === 'pixels') { + // then we need to fix those percentages here in svg parsing + if (prop === 'x1' || prop === 'x2' || prop === 'r2') { + finalValue *= svgOptions.viewBoxWidth || svgOptions.width; + } + if (prop === 'y1' || prop === 'y2') { + finalValue *= svgOptions.viewBoxHeight || svgOptions.height; + } + } + } + } + options[prop] = finalValue; + }); + } +})(); + + +(function() { + + 'use strict'; + + var toFixed = fabric.util.toFixed; + + /** + * Pattern class + * @class fabric.Pattern + * @see {@link http://fabricjs.com/patterns|Pattern demo} + * @see {@link http://fabricjs.com/dynamic-patterns|DynamicPattern demo} + * @see {@link fabric.Pattern#initialize} for constructor definition + */ + + + fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ { + + /** + * Repeat property of a pattern (one of repeat, repeat-x, repeat-y or no-repeat) + * @type String + * @default + */ + repeat: 'repeat', + + /** + * Pattern horizontal offset from object's left/top corner + * @type Number + * @default + */ + offsetX: 0, + + /** + * Pattern vertical offset from object's left/top corner + * @type Number + * @default + */ + offsetY: 0, + + /** + * crossOrigin value (one of "", "anonymous", "use-credentials") + * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes + * @type String + * @default + */ + crossOrigin: '', + + /** + * transform matrix to change the pattern, imported from svgs. + * @type Array + * @default + */ + patternTransform: null, + + /** + * Constructor + * @param {Object} [options] Options object + * @param {Function} [callback] function to invoke after callback init. + * @return {fabric.Pattern} thisArg + */ + initialize: function(options, callback) { + options || (options = { }); + + this.id = fabric.Object.__uid++; + this.setOptions(options); + if (!options.source || (options.source && typeof options.source !== 'string')) { + callback && callback(this); + return; + } + // function string + if (typeof fabric.util.getFunctionBody(options.source) !== 'undefined') { + this.source = new Function(fabric.util.getFunctionBody(options.source)); + callback && callback(this); + } + else { + // img src string + var _this = this; + this.source = fabric.util.createImage(); + fabric.util.loadImage(options.source, function(img) { + _this.source = img; + callback && callback(_this); + }, null, this.crossOrigin); + } + }, + + /** + * Returns object representation of a pattern + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} Object representation of a pattern instance + */ + toObject: function(propertiesToInclude) { + var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS, + source, object; + + // callback + if (typeof this.source === 'function') { + source = String(this.source); + } + // element + else if (typeof this.source.src === 'string') { + source = this.source.src; + } + // element + else if (typeof this.source === 'object' && this.source.toDataURL) { + source = this.source.toDataURL(); + } + + object = { + type: 'pattern', + source: source, + repeat: this.repeat, + crossOrigin: this.crossOrigin, + offsetX: toFixed(this.offsetX, NUM_FRACTION_DIGITS), + offsetY: toFixed(this.offsetY, NUM_FRACTION_DIGITS), + patternTransform: this.patternTransform ? this.patternTransform.concat() : null + }; + fabric.util.populateWithProperties(this, object, propertiesToInclude); + + return object; + }, + + /* _TO_SVG_START_ */ + /** + * Returns SVG representation of a pattern + * @param {fabric.Object} object + * @return {String} SVG representation of a pattern + */ + toSVG: function(object) { + var patternSource = typeof this.source === 'function' ? this.source() : this.source, + patternWidth = patternSource.width / object.width, + patternHeight = patternSource.height / object.height, + patternOffsetX = this.offsetX / object.width, + patternOffsetY = this.offsetY / object.height, + patternImgSrc = ''; + if (this.repeat === 'repeat-x' || this.repeat === 'no-repeat') { + patternHeight = 1; + if (patternOffsetY) { + patternHeight += Math.abs(patternOffsetY); + } + } + if (this.repeat === 'repeat-y' || this.repeat === 'no-repeat') { + patternWidth = 1; + if (patternOffsetX) { + patternWidth += Math.abs(patternOffsetX); + } + + } + if (patternSource.src) { + patternImgSrc = patternSource.src; + } + else if (patternSource.toDataURL) { + patternImgSrc = patternSource.toDataURL(); + } + + return '\n' + + '\n' + + '\n'; + }, + /* _TO_SVG_END_ */ + + setOptions: function(options) { + for (var prop in options) { + this[prop] = options[prop]; + } + }, + + /** + * Returns an instance of CanvasPattern + * @param {CanvasRenderingContext2D} ctx Context to create pattern + * @return {CanvasPattern} + */ + toLive: function(ctx) { + var source = typeof this.source === 'function' ? this.source() : this.source; + + // if the image failed to load, return, and allow rest to continue loading + if (!source) { + return ''; + } + + // if an image + if (typeof source.src !== 'undefined') { + if (!source.complete) { + return ''; + } + if (source.naturalWidth === 0 || source.naturalHeight === 0) { + return ''; + } + } + return ctx.createPattern(source, this.repeat); + } + }); +})(); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + toFixed = fabric.util.toFixed; + + if (fabric.Shadow) { + fabric.warn('fabric.Shadow is already defined.'); + return; + } + + /** + * Shadow class + * @class fabric.Shadow + * @see {@link http://fabricjs.com/shadows|Shadow demo} + * @see {@link fabric.Shadow#initialize} for constructor definition + */ + fabric.Shadow = fabric.util.createClass(/** @lends fabric.Shadow.prototype */ { + + /** + * Shadow color + * @type String + * @default + */ + color: 'rgb(0,0,0)', + + /** + * Shadow blur + * @type Number + */ + blur: 0, + + /** + * Shadow horizontal offset + * @type Number + * @default + */ + offsetX: 0, + + /** + * Shadow vertical offset + * @type Number + * @default + */ + offsetY: 0, + + /** + * Whether the shadow should affect stroke operations + * @type Boolean + * @default + */ + affectStroke: false, + + /** + * Indicates whether toObject should include default values + * @type Boolean + * @default + */ + includeDefaultValues: true, + + /** + * When `false`, the shadow will scale with the object. + * When `true`, the shadow's offsetX, offsetY, and blur will not be affected by the object's scale. + * default to false + * @type Boolean + * @default + */ + nonScaling: false, + + /** + * Constructor + * @param {Object|String} [options] Options object with any of color, blur, offsetX, offsetY properties or string (e.g. "rgba(0,0,0,0.2) 2px 2px 10px") + * @return {fabric.Shadow} thisArg + */ + initialize: function(options) { + + if (typeof options === 'string') { + options = this._parseShadow(options); + } + + for (var prop in options) { + this[prop] = options[prop]; + } + + this.id = fabric.Object.__uid++; + }, + + /** + * @private + * @param {String} shadow Shadow value to parse + * @return {Object} Shadow object with color, offsetX, offsetY and blur + */ + _parseShadow: function(shadow) { + var shadowStr = shadow.trim(), + offsetsAndBlur = fabric.Shadow.reOffsetsAndBlur.exec(shadowStr) || [], + color = shadowStr.replace(fabric.Shadow.reOffsetsAndBlur, '') || 'rgb(0,0,0)'; + + return { + color: color.trim(), + offsetX: parseInt(offsetsAndBlur[1], 10) || 0, + offsetY: parseInt(offsetsAndBlur[2], 10) || 0, + blur: parseInt(offsetsAndBlur[3], 10) || 0 + }; + }, + + /** + * Returns a string representation of an instance + * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow + * @return {String} Returns CSS3 text-shadow declaration + */ + toString: function() { + return [this.offsetX, this.offsetY, this.blur, this.color].join('px '); + }, + + /* _TO_SVG_START_ */ + /** + * Returns SVG representation of a shadow + * @param {fabric.Object} object + * @return {String} SVG representation of a shadow + */ + toSVG: function(object) { + var fBoxX = 40, fBoxY = 40, NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS, + offset = fabric.util.rotateVector( + { x: this.offsetX, y: this.offsetY }, + fabric.util.degreesToRadians(-object.angle)), + BLUR_BOX = 20, color = new fabric.Color(this.color); + + if (object.width && object.height) { + //http://www.w3.org/TR/SVG/filters.html#FilterEffectsRegion + // we add some extra space to filter box to contain the blur ( 20 ) + fBoxX = toFixed((Math.abs(offset.x) + this.blur) / object.width, NUM_FRACTION_DIGITS) * 100 + BLUR_BOX; + fBoxY = toFixed((Math.abs(offset.y) + this.blur) / object.height, NUM_FRACTION_DIGITS) * 100 + BLUR_BOX; + } + if (object.flipX) { + offset.x *= -1; + } + if (object.flipY) { + offset.y *= -1; + } + + return ( + '\n' + + '\t\n' + + '\t\n' + + '\t\n' + + '\t\n' + + '\t\n' + + '\t\t\n' + + '\t\t\n' + + '\t\n' + + '\n'); + }, + /* _TO_SVG_END_ */ + + /** + * Returns object representation of a shadow + * @return {Object} Object representation of a shadow instance + */ + toObject: function() { + if (this.includeDefaultValues) { + return { + color: this.color, + blur: this.blur, + offsetX: this.offsetX, + offsetY: this.offsetY, + affectStroke: this.affectStroke, + nonScaling: this.nonScaling + }; + } + var obj = { }, proto = fabric.Shadow.prototype; + + ['color', 'blur', 'offsetX', 'offsetY', 'affectStroke', 'nonScaling'].forEach(function(prop) { + if (this[prop] !== proto[prop]) { + obj[prop] = this[prop]; + } + }, this); + + return obj; + } + }); + + /** + * Regex matching shadow offsetX, offsetY and blur (ex: "2px 2px 10px rgba(0,0,0,0.2)", "rgb(0,255,0) 2px 2px") + * @static + * @field + * @memberOf fabric.Shadow + */ + // eslint-disable-next-line max-len + fabric.Shadow.reOffsetsAndBlur = /(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function () { + + 'use strict'; + + if (fabric.StaticCanvas) { + fabric.warn('fabric.StaticCanvas is already defined.'); + return; + } + + // aliases for faster resolution + var extend = fabric.util.object.extend, + getElementOffset = fabric.util.getElementOffset, + removeFromArray = fabric.util.removeFromArray, + toFixed = fabric.util.toFixed, + transformPoint = fabric.util.transformPoint, + invertTransform = fabric.util.invertTransform, + getNodeCanvas = fabric.util.getNodeCanvas, + createCanvasElement = fabric.util.createCanvasElement, + + CANVAS_INIT_ERROR = new Error('Could not initialize `canvas` element'); + + /** + * Static canvas class + * @class fabric.StaticCanvas + * @mixes fabric.Collection + * @mixes fabric.Observable + * @see {@link http://fabricjs.com/static_canvas|StaticCanvas demo} + * @see {@link fabric.StaticCanvas#initialize} for constructor definition + * @fires before:render + * @fires after:render + * @fires canvas:cleared + * @fires object:added + * @fires object:removed + */ + fabric.StaticCanvas = fabric.util.createClass(fabric.CommonMethods, /** @lends fabric.StaticCanvas.prototype */ { + + /** + * Constructor + * @param {HTMLElement | String} el <canvas> element to initialize instance on + * @param {Object} [options] Options object + * @return {Object} thisArg + */ + initialize: function(el, options) { + options || (options = { }); + this.renderAndResetBound = this.renderAndReset.bind(this); + this.requestRenderAllBound = this.requestRenderAll.bind(this); + this._initStatic(el, options); + }, + + /** + * Background color of canvas instance. + * Should be set via {@link fabric.StaticCanvas#setBackgroundColor}. + * @type {(String|fabric.Pattern)} + * @default + */ + backgroundColor: '', + + /** + * Background image of canvas instance. + * Should be set via {@link fabric.StaticCanvas#setBackgroundImage}. + * Backwards incompatibility note: The "backgroundImageOpacity" + * and "backgroundImageStretch" properties are deprecated since 1.3.9. + * Use {@link fabric.Image#opacity}, {@link fabric.Image#width} and {@link fabric.Image#height}. + * since 2.4.0 image caching is active, please when putting an image as background, add to the + * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom + * vale. As an alternative you can disable image objectCaching + * @type fabric.Image + * @default + */ + backgroundImage: null, + + /** + * Overlay color of canvas instance. + * Should be set via {@link fabric.StaticCanvas#setOverlayColor} + * @since 1.3.9 + * @type {(String|fabric.Pattern)} + * @default + */ + overlayColor: '', + + /** + * Overlay image of canvas instance. + * Should be set via {@link fabric.StaticCanvas#setOverlayImage}. + * Backwards incompatibility note: The "overlayImageLeft" + * and "overlayImageTop" properties are deprecated since 1.3.9. + * Use {@link fabric.Image#left} and {@link fabric.Image#top}. + * since 2.4.0 image caching is active, please when putting an image as overlay, add to the + * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom + * vale. As an alternative you can disable image objectCaching + * @type fabric.Image + * @default + */ + overlayImage: null, + + /** + * Indicates whether toObject/toDatalessObject should include default values + * if set to false, takes precedence over the object value. + * @type Boolean + * @default + */ + includeDefaultValues: true, + + /** + * Indicates whether objects' state should be saved + * @type Boolean + * @default + */ + stateful: false, + + /** + * Indicates whether {@link fabric.Collection.add}, {@link fabric.Collection.insertAt} and {@link fabric.Collection.remove}, + * {@link fabric.StaticCanvas.moveTo}, {@link fabric.StaticCanvas.clear} and many more, should also re-render canvas. + * Disabling this option will not give a performance boost when adding/removing a lot of objects to/from canvas at once + * since the renders are quequed and executed one per frame. + * Disabling is suggested anyway and managing the renders of the app manually is not a big effort ( canvas.requestRenderAll() ) + * Left default to true to do not break documentation and old app, fiddles. + * @type Boolean + * @default + */ + renderOnAddRemove: true, + + /** + * Function that determines clipping of entire canvas area + * Being passed context as first argument. + * If you are using code minification, ctx argument can be minified/manglied you should use + * as a workaround `var ctx = arguments[0];` in the function; + * See clipping canvas area in {@link https://github.com/kangax/fabric.js/wiki/FAQ} + * @deprecated since 2.0.0 + * @type Function + * @default + */ + clipTo: null, + + /** + * Indicates whether object controls (borders/controls) are rendered above overlay image + * @type Boolean + * @default + */ + controlsAboveOverlay: false, + + /** + * Indicates whether the browser can be scrolled when using a touchscreen and dragging on the canvas + * @type Boolean + * @default + */ + allowTouchScrolling: false, + + /** + * Indicates whether this canvas will use image smoothing, this is on by default in browsers + * @type Boolean + * @default + */ + imageSmoothingEnabled: true, + + /** + * The transformation (in the format of Canvas transform) which focuses the viewport + * @type Array + * @default + */ + viewportTransform: fabric.iMatrix.concat(), + + /** + * if set to false background image is not affected by viewport transform + * @since 1.6.3 + * @type Boolean + * @default + */ + backgroundVpt: true, + + /** + * if set to false overlya image is not affected by viewport transform + * @since 1.6.3 + * @type Boolean + * @default + */ + overlayVpt: true, + + /** + * Callback; invoked right before object is about to be scaled/rotated + * @deprecated since 2.3.0 + * Use before:transform event + */ + onBeforeScaleRotate: function () { + /* NOOP */ + }, + + /** + * When true, canvas is scaled by devicePixelRatio for better rendering on retina screens + * @type Boolean + * @default + */ + enableRetinaScaling: true, + + /** + * Describe canvas element extension over design + * properties are tl,tr,bl,br. + * if canvas is not zoomed/panned those points are the four corner of canvas + * if canvas is viewportTransformed you those points indicate the extension + * of canvas element in plain untrasformed coordinates + * The coordinates get updated with @method calcViewportBoundaries. + * @memberOf fabric.StaticCanvas.prototype + */ + vptCoords: { }, + + /** + * Based on vptCoords and object.aCoords, skip rendering of objects that + * are not included in current viewport. + * May greatly help in applications with crowded canvas and use of zoom/pan + * If One of the corner of the bounding box of the object is on the canvas + * the objects get rendered. + * @memberOf fabric.StaticCanvas.prototype + * @type Boolean + * @default + */ + skipOffscreen: true, + + /** + * a fabricObject that, without stroke define a clipping area with their shape. filled in black + * the clipPath object gets used when the canvas has rendered, and the context is placed in the + * top left corner of the canvas. + * clipPath will clip away controls, if you do not want this to happen use controlsAboveOverlay = true + * @type fabric.Object + */ + clipPath: undefined, + + /** + * @private + * @param {HTMLElement | String} el <canvas> element to initialize instance on + * @param {Object} [options] Options object + */ + _initStatic: function(el, options) { + var cb = this.requestRenderAllBound; + this._objects = []; + this._createLowerCanvas(el); + this._initOptions(options); + this._setImageSmoothing(); + // only initialize retina scaling once + if (!this.interactive) { + this._initRetinaScaling(); + } + + if (options.overlayImage) { + this.setOverlayImage(options.overlayImage, cb); + } + if (options.backgroundImage) { + this.setBackgroundImage(options.backgroundImage, cb); + } + if (options.backgroundColor) { + this.setBackgroundColor(options.backgroundColor, cb); + } + if (options.overlayColor) { + this.setOverlayColor(options.overlayColor, cb); + } + this.calcOffset(); + }, + + /** + * @private + */ + _isRetinaScaling: function() { + return (fabric.devicePixelRatio !== 1 && this.enableRetinaScaling); + }, + + /** + * @private + * @return {Number} retinaScaling if applied, otherwise 1; + */ + getRetinaScaling: function() { + return this._isRetinaScaling() ? fabric.devicePixelRatio : 1; + }, + + /** + * @private + */ + _initRetinaScaling: function() { + if (!this._isRetinaScaling()) { + return; + } + var scaleRatio = fabric.devicePixelRatio; + this.__initRetinaScaling(scaleRatio, this.lowerCanvasEl, this.contextContainer); + if (this.upperCanvasEl) { + this.__initRetinaScaling(scaleRatio, this.upperCanvasEl, this.contextTop); + } + }, + + __initRetinaScaling: function(scaleRatio, canvas, context) { + canvas.setAttribute('width', this.width * scaleRatio); + canvas.setAttribute('height', this.height * scaleRatio); + context.scale(scaleRatio, scaleRatio); + }, + + + /** + * Calculates canvas element offset relative to the document + * This method is also attached as "resize" event handler of window + * @return {fabric.Canvas} instance + * @chainable + */ + calcOffset: function () { + this._offset = getElementOffset(this.lowerCanvasEl); + return this; + }, + + /** + * Sets {@link fabric.StaticCanvas#overlayImage|overlay image} for this canvas + * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set overlay to + * @param {Function} callback callback to invoke when image is loaded and set as an overlay + * @param {Object} [options] Optional options to set for the {@link fabric.Image|overlay image}. + * @return {fabric.Canvas} thisArg + * @chainable + * @see {@link http://jsfiddle.net/fabricjs/MnzHT/|jsFiddle demo} + * @example Normal overlayImage with left/top = 0 + * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), { + * // Needed to position overlayImage at 0/0 + * originX: 'left', + * originY: 'top' + * }); + * @example overlayImage with different properties + * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), { + * opacity: 0.5, + * angle: 45, + * left: 400, + * top: 400, + * originX: 'left', + * originY: 'top' + * }); + * @example Stretched overlayImage #1 - width/height correspond to canvas width/height + * fabric.Image.fromURL('http://fabricjs.com/assets/jail_cell_bars.png', function(img) { + * img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'}); + * canvas.setOverlayImage(img, canvas.renderAll.bind(canvas)); + * }); + * @example Stretched overlayImage #2 - width/height correspond to canvas width/height + * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), { + * width: canvas.width, + * height: canvas.height, + * // Needed to position overlayImage at 0/0 + * originX: 'left', + * originY: 'top' + * }); + * @example overlayImage loaded from cross-origin + * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), { + * opacity: 0.5, + * angle: 45, + * left: 400, + * top: 400, + * originX: 'left', + * originY: 'top', + * crossOrigin: 'anonymous' + * }); + */ + setOverlayImage: function (image, callback, options) { + return this.__setBgOverlayImage('overlayImage', image, callback, options); + }, + + /** + * Sets {@link fabric.StaticCanvas#backgroundImage|background image} for this canvas + * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set background to + * @param {Function} callback Callback to invoke when image is loaded and set as background + * @param {Object} [options] Optional options to set for the {@link fabric.Image|background image}. + * @return {fabric.Canvas} thisArg + * @chainable + * @see {@link http://jsfiddle.net/djnr8o7a/28/|jsFiddle demo} + * @example Normal backgroundImage with left/top = 0 + * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), { + * // Needed to position backgroundImage at 0/0 + * originX: 'left', + * originY: 'top' + * }); + * @example backgroundImage with different properties + * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), { + * opacity: 0.5, + * angle: 45, + * left: 400, + * top: 400, + * originX: 'left', + * originY: 'top' + * }); + * @example Stretched backgroundImage #1 - width/height correspond to canvas width/height + * fabric.Image.fromURL('http://fabricjs.com/assets/honey_im_subtle.png', function(img) { + * img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'}); + * canvas.setBackgroundImage(img, canvas.renderAll.bind(canvas)); + * }); + * @example Stretched backgroundImage #2 - width/height correspond to canvas width/height + * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), { + * width: canvas.width, + * height: canvas.height, + * // Needed to position backgroundImage at 0/0 + * originX: 'left', + * originY: 'top' + * }); + * @example backgroundImage loaded from cross-origin + * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), { + * opacity: 0.5, + * angle: 45, + * left: 400, + * top: 400, + * originX: 'left', + * originY: 'top', + * crossOrigin: 'anonymous' + * }); + */ + // TODO: fix stretched examples + setBackgroundImage: function (image, callback, options) { + return this.__setBgOverlayImage('backgroundImage', image, callback, options); + }, + + /** + * Sets {@link fabric.StaticCanvas#overlayColor|foreground color} for this canvas + * @param {(String|fabric.Pattern)} overlayColor Color or pattern to set foreground color to + * @param {Function} callback Callback to invoke when foreground color is set + * @return {fabric.Canvas} thisArg + * @chainable + * @see {@link http://jsfiddle.net/fabricjs/pB55h/|jsFiddle demo} + * @example Normal overlayColor - color value + * canvas.setOverlayColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas)); + * @example fabric.Pattern used as overlayColor + * canvas.setOverlayColor({ + * source: 'http://fabricjs.com/assets/escheresque_ste.png' + * }, canvas.renderAll.bind(canvas)); + * @example fabric.Pattern used as overlayColor with repeat and offset + * canvas.setOverlayColor({ + * source: 'http://fabricjs.com/assets/escheresque_ste.png', + * repeat: 'repeat', + * offsetX: 200, + * offsetY: 100 + * }, canvas.renderAll.bind(canvas)); + */ + setOverlayColor: function(overlayColor, callback) { + return this.__setBgOverlayColor('overlayColor', overlayColor, callback); + }, + + /** + * Sets {@link fabric.StaticCanvas#backgroundColor|background color} for this canvas + * @param {(String|fabric.Pattern)} backgroundColor Color or pattern to set background color to + * @param {Function} callback Callback to invoke when background color is set + * @return {fabric.Canvas} thisArg + * @chainable + * @see {@link http://jsfiddle.net/fabricjs/hXzvk/|jsFiddle demo} + * @example Normal backgroundColor - color value + * canvas.setBackgroundColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas)); + * @example fabric.Pattern used as backgroundColor + * canvas.setBackgroundColor({ + * source: 'http://fabricjs.com/assets/escheresque_ste.png' + * }, canvas.renderAll.bind(canvas)); + * @example fabric.Pattern used as backgroundColor with repeat and offset + * canvas.setBackgroundColor({ + * source: 'http://fabricjs.com/assets/escheresque_ste.png', + * repeat: 'repeat', + * offsetX: 200, + * offsetY: 100 + * }, canvas.renderAll.bind(canvas)); + */ + setBackgroundColor: function(backgroundColor, callback) { + return this.__setBgOverlayColor('backgroundColor', backgroundColor, callback); + }, + + /** + * @private + * @see {@link http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-imagesmoothingenabled|WhatWG Canvas Standard} + */ + _setImageSmoothing: function() { + var ctx = this.getContext(); + + ctx.imageSmoothingEnabled = ctx.imageSmoothingEnabled || ctx.webkitImageSmoothingEnabled + || ctx.mozImageSmoothingEnabled || ctx.msImageSmoothingEnabled || ctx.oImageSmoothingEnabled; + ctx.imageSmoothingEnabled = this.imageSmoothingEnabled; + }, + + /** + * @private + * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundImage|backgroundImage} + * or {@link fabric.StaticCanvas#overlayImage|overlayImage}) + * @param {(fabric.Image|String|null)} image fabric.Image instance, URL of an image or null to set background or overlay to + * @param {Function} callback Callback to invoke when image is loaded and set as background or overlay + * @param {Object} [options] Optional options to set for the {@link fabric.Image|image}. + */ + __setBgOverlayImage: function(property, image, callback, options) { + if (typeof image === 'string') { + fabric.util.loadImage(image, function(img) { + if (img) { + var instance = new fabric.Image(img, options); + this[property] = instance; + instance.canvas = this; + } + callback && callback(img); + }, this, options && options.crossOrigin); + } + else { + options && image.setOptions(options); + this[property] = image; + image && (image.canvas = this); + callback && callback(image); + } + + return this; + }, + + /** + * @private + * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundColor|backgroundColor} + * or {@link fabric.StaticCanvas#overlayColor|overlayColor}) + * @param {(Object|String|null)} color Object with pattern information, color value or null + * @param {Function} [callback] Callback is invoked when color is set + */ + __setBgOverlayColor: function(property, color, callback) { + this[property] = color; + this._initGradient(color, property); + this._initPattern(color, property, callback); + return this; + }, + + /** + * @private + */ + _createCanvasElement: function() { + var element = createCanvasElement(); + if (!element) { + throw CANVAS_INIT_ERROR; + } + if (!element.style) { + element.style = { }; + } + if (typeof element.getContext === 'undefined') { + throw CANVAS_INIT_ERROR; + } + return element; + }, + + /** + * @private + * @param {Object} [options] Options object + */ + _initOptions: function (options) { + var lowerCanvasEl = this.lowerCanvasEl; + this._setOptions(options); + + this.width = this.width || parseInt(lowerCanvasEl.width, 10) || 0; + this.height = this.height || parseInt(lowerCanvasEl.height, 10) || 0; + + if (!this.lowerCanvasEl.style) { + return; + } + + lowerCanvasEl.width = this.width; + lowerCanvasEl.height = this.height; + + lowerCanvasEl.style.width = this.width + 'px'; + lowerCanvasEl.style.height = this.height + 'px'; + + this.viewportTransform = this.viewportTransform.slice(); + }, + + /** + * Creates a bottom canvas + * @private + * @param {HTMLElement} [canvasEl] + */ + _createLowerCanvas: function (canvasEl) { + // canvasEl === 'HTMLCanvasElement' does not work on jsdom/node + if (canvasEl && canvasEl.getContext) { + this.lowerCanvasEl = canvasEl; + } + else { + this.lowerCanvasEl = fabric.util.getById(canvasEl) || this._createCanvasElement(); + } + + fabric.util.addClass(this.lowerCanvasEl, 'lower-canvas'); + + if (this.interactive) { + this._applyCanvasStyle(this.lowerCanvasEl); + } + + this.contextContainer = this.lowerCanvasEl.getContext('2d'); + }, + + /** + * Returns canvas width (in px) + * @return {Number} + */ + getWidth: function () { + return this.width; + }, + + /** + * Returns canvas height (in px) + * @return {Number} + */ + getHeight: function () { + return this.height; + }, + + /** + * Sets width of this canvas instance + * @param {Number|String} value Value to set width to + * @param {Object} [options] Options object + * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions + * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions + * @return {fabric.Canvas} instance + * @chainable true + */ + setWidth: function (value, options) { + return this.setDimensions({ width: value }, options); + }, + + /** + * Sets height of this canvas instance + * @param {Number|String} value Value to set height to + * @param {Object} [options] Options object + * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions + * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions + * @return {fabric.Canvas} instance + * @chainable true + */ + setHeight: function (value, options) { + return this.setDimensions({ height: value }, options); + }, + + /** + * Sets dimensions (width, height) of this canvas instance. when options.cssOnly flag active you should also supply the unit of measure (px/%/em) + * @param {Object} dimensions Object with width/height properties + * @param {Number|String} [dimensions.width] Width of canvas element + * @param {Number|String} [dimensions.height] Height of canvas element + * @param {Object} [options] Options object + * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions + * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions + * @return {fabric.Canvas} thisArg + * @chainable + */ + setDimensions: function (dimensions, options) { + var cssValue; + + options = options || {}; + + for (var prop in dimensions) { + cssValue = dimensions[prop]; + + if (!options.cssOnly) { + this._setBackstoreDimension(prop, dimensions[prop]); + cssValue += 'px'; + this.hasLostContext = true; + } + + if (!options.backstoreOnly) { + this._setCssDimension(prop, cssValue); + } + } + if (this._isCurrentlyDrawing) { + this.freeDrawingBrush && this.freeDrawingBrush._setBrushStyles(); + } + this._initRetinaScaling(); + this._setImageSmoothing(); + this.calcOffset(); + + if (!options.cssOnly) { + this.requestRenderAll(); + } + + return this; + }, + + /** + * Helper for setting width/height + * @private + * @param {String} prop property (width|height) + * @param {Number} value value to set property to + * @return {fabric.Canvas} instance + * @chainable true + */ + _setBackstoreDimension: function (prop, value) { + this.lowerCanvasEl[prop] = value; + + if (this.upperCanvasEl) { + this.upperCanvasEl[prop] = value; + } + + if (this.cacheCanvasEl) { + this.cacheCanvasEl[prop] = value; + } + + this[prop] = value; + + return this; + }, + + /** + * Helper for setting css width/height + * @private + * @param {String} prop property (width|height) + * @param {String} value value to set property to + * @return {fabric.Canvas} instance + * @chainable true + */ + _setCssDimension: function (prop, value) { + this.lowerCanvasEl.style[prop] = value; + + if (this.upperCanvasEl) { + this.upperCanvasEl.style[prop] = value; + } + + if (this.wrapperEl) { + this.wrapperEl.style[prop] = value; + } + + return this; + }, + + /** + * Returns canvas zoom level + * @return {Number} + */ + getZoom: function () { + return this.viewportTransform[0]; + }, + + /** + * Sets viewport transform of this canvas instance + * @param {Array} vpt the transform in the form of context.transform + * @return {fabric.Canvas} instance + * @chainable true + */ + setViewportTransform: function (vpt) { + var activeObject = this._activeObject, object, ignoreVpt = false, skipAbsolute = true, i, len; + this.viewportTransform = vpt; + for (i = 0, len = this._objects.length; i < len; i++) { + object = this._objects[i]; + object.group || object.setCoords(ignoreVpt, skipAbsolute); + } + if (activeObject && activeObject.type === 'activeSelection') { + activeObject.setCoords(ignoreVpt, skipAbsolute); + } + this.calcViewportBoundaries(); + this.renderOnAddRemove && this.requestRenderAll(); + return this; + }, + + /** + * Sets zoom level of this canvas instance, zoom centered around point + * @param {fabric.Point} point to zoom with respect to + * @param {Number} value to set zoom to, less than 1 zooms out + * @return {fabric.Canvas} instance + * @chainable true + */ + zoomToPoint: function (point, value) { + // TODO: just change the scale, preserve other transformations + var before = point, vpt = this.viewportTransform.slice(0); + point = transformPoint(point, invertTransform(this.viewportTransform)); + vpt[0] = value; + vpt[3] = value; + var after = transformPoint(point, vpt); + vpt[4] += before.x - after.x; + vpt[5] += before.y - after.y; + return this.setViewportTransform(vpt); + }, + + /** + * Sets zoom level of this canvas instance + * @param {Number} value to set zoom to, less than 1 zooms out + * @return {fabric.Canvas} instance + * @chainable true + */ + setZoom: function (value) { + this.zoomToPoint(new fabric.Point(0, 0), value); + return this; + }, + + /** + * Pan viewport so as to place point at top left corner of canvas + * @param {fabric.Point} point to move to + * @return {fabric.Canvas} instance + * @chainable true + */ + absolutePan: function (point) { + var vpt = this.viewportTransform.slice(0); + vpt[4] = -point.x; + vpt[5] = -point.y; + return this.setViewportTransform(vpt); + }, + + /** + * Pans viewpoint relatively + * @param {fabric.Point} point (position vector) to move by + * @return {fabric.Canvas} instance + * @chainable true + */ + relativePan: function (point) { + return this.absolutePan(new fabric.Point( + -point.x - this.viewportTransform[4], + -point.y - this.viewportTransform[5] + )); + }, + + /** + * Returns <canvas> element corresponding to this instance + * @return {HTMLCanvasElement} + */ + getElement: function () { + return this.lowerCanvasEl; + }, + + /** + * @private + * @param {fabric.Object} obj Object that was added + */ + _onObjectAdded: function(obj) { + this.stateful && obj.setupState(); + obj._set('canvas', this); + obj.setCoords(); + this.fire('object:added', { target: obj }); + obj.fire('added'); + }, + + /** + * @private + * @param {fabric.Object} obj Object that was removed + */ + _onObjectRemoved: function(obj) { + this.fire('object:removed', { target: obj }); + obj.fire('removed'); + delete obj.canvas; + }, + + /** + * Clears specified context of canvas element + * @param {CanvasRenderingContext2D} ctx Context to clear + * @return {fabric.Canvas} thisArg + * @chainable + */ + clearContext: function(ctx) { + ctx.clearRect(0, 0, this.width, this.height); + return this; + }, + + /** + * Returns context of canvas where objects are drawn + * @return {CanvasRenderingContext2D} + */ + getContext: function () { + return this.contextContainer; + }, + + /** + * Clears all contexts (background, main, top) of an instance + * @return {fabric.Canvas} thisArg + * @chainable + */ + clear: function () { + this._objects.length = 0; + this.backgroundImage = null; + this.overlayImage = null; + this.backgroundColor = ''; + this.overlayColor = ''; + if (this._hasITextHandlers) { + this.off('mouse:up', this._mouseUpITextHandler); + this._iTextInstances = null; + this._hasITextHandlers = false; + } + this.clearContext(this.contextContainer); + this.fire('canvas:cleared'); + this.renderOnAddRemove && this.requestRenderAll(); + return this; + }, + + /** + * Renders the canvas + * @return {fabric.Canvas} instance + * @chainable + */ + renderAll: function () { + var canvasToDrawOn = this.contextContainer; + this.renderCanvas(canvasToDrawOn, this._objects); + return this; + }, + + /** + * Function created to be instance bound at initialization + * used in requestAnimationFrame rendering + * Let the fabricJS call it. If you call it manually you could have more + * animationFrame stacking on to of each other + * for an imperative rendering, use canvas.renderAll + * @private + * @return {fabric.Canvas} instance + * @chainable + */ + renderAndReset: function() { + this.isRendering = 0; + this.renderAll(); + }, + + /** + * Append a renderAll request to next animation frame. + * unless one is already in progress, in that case nothing is done + * a boolean flag will avoid appending more. + * @return {fabric.Canvas} instance + * @chainable + */ + requestRenderAll: function () { + if (!this.isRendering) { + this.isRendering = fabric.util.requestAnimFrame(this.renderAndResetBound); + } + return this; + }, + + /** + * Calculate the position of the 4 corner of canvas with current viewportTransform. + * helps to determinate when an object is in the current rendering viewport using + * object absolute coordinates ( aCoords ) + * @return {Object} points.tl + * @chainable + */ + calcViewportBoundaries: function() { + var points = { }, width = this.width, height = this.height, + iVpt = invertTransform(this.viewportTransform); + points.tl = transformPoint({ x: 0, y: 0 }, iVpt); + points.br = transformPoint({ x: width, y: height }, iVpt); + points.tr = new fabric.Point(points.br.x, points.tl.y); + points.bl = new fabric.Point(points.tl.x, points.br.y); + this.vptCoords = points; + return points; + }, + + cancelRequestedRender: function() { + if (this.isRendering) { + fabric.util.cancelAnimFrame(this.isRendering); + this.isRendering = 0; + } + }, + + /** + * Renders background, objects, overlay and controls. + * @param {CanvasRenderingContext2D} ctx + * @param {Array} objects to render + * @return {fabric.Canvas} instance + * @chainable + */ + renderCanvas: function(ctx, objects) { + var v = this.viewportTransform, path = this.clipPath; + this.cancelRequestedRender(); + this.calcViewportBoundaries(); + this.clearContext(ctx); + this.fire('before:render', { ctx: ctx, }); + if (this.clipTo) { + fabric.util.clipContext(this, ctx); + } + this._renderBackground(ctx); + + ctx.save(); + //apply viewport transform once for all rendering process + ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); + this._renderObjects(ctx, objects); + ctx.restore(); + if (!this.controlsAboveOverlay && this.interactive) { + this.drawControls(ctx); + } + if (this.clipTo) { + ctx.restore(); + } + if (path) { + path.canvas = this; + // needed to setup a couple of variables + path.shouldCache(); + path._transformDone = true; + path.renderCache({ forClipping: true }); + this.drawClipPathOnCanvas(ctx); + } + this._renderOverlay(ctx); + if (this.controlsAboveOverlay && this.interactive) { + this.drawControls(ctx); + } + this.fire('after:render', { ctx: ctx, }); + }, + + /** + * Paint the cached clipPath on the lowerCanvasEl + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + drawClipPathOnCanvas: function(ctx) { + var v = this.viewportTransform, path = this.clipPath; + ctx.save(); + ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); + // DEBUG: uncomment this line, comment the following + // ctx.globalAlpha = 0.4; + ctx.globalCompositeOperation = 'destination-in'; + path.transform(ctx); + ctx.scale(1 / path.zoomX, 1 / path.zoomY); + ctx.drawImage(path._cacheCanvas, -path.cacheTranslationX, -path.cacheTranslationY); + ctx.restore(); + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {Array} objects to render + */ + _renderObjects: function(ctx, objects) { + var i, len; + for (i = 0, len = objects.length; i < len; ++i) { + objects[i] && objects[i].render(ctx); + } + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {string} property 'background' or 'overlay' + */ + _renderBackgroundOrOverlay: function(ctx, property) { + var fill = this[property + 'Color'], object = this[property + 'Image'], + v = this.viewportTransform, needsVpt = this[property + 'Vpt']; + if (!fill && !object) { + return; + } + if (fill) { + ctx.save(); + ctx.beginPath(); + ctx.moveTo(0, 0); + ctx.lineTo(this.width, 0); + ctx.lineTo(this.width, this.height); + ctx.lineTo(0, this.height); + ctx.closePath(); + ctx.fillStyle = fill.toLive + ? fill.toLive(ctx, this) + : fill; + if (needsVpt) { + ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); + } + ctx.transform(1, 0, 0, 1, fill.offsetX || 0, fill.offsetY || 0); + var m = fill.gradientTransform || fill.patternTransform; + m && ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]); + ctx.fill(); + ctx.restore(); + } + if (object) { + ctx.save(); + if (needsVpt) { + ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); + } + object.render(ctx); + ctx.restore(); + } + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderBackground: function(ctx) { + this._renderBackgroundOrOverlay(ctx, 'background'); + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderOverlay: function(ctx) { + this._renderBackgroundOrOverlay(ctx, 'overlay'); + }, + + /** + * Returns coordinates of a center of canvas. + * Returned value is an object with top and left properties + * @return {Object} object with "top" and "left" number values + */ + getCenter: function () { + return { + top: this.height / 2, + left: this.width / 2 + }; + }, + + /** + * Centers object horizontally in the canvas + * @param {fabric.Object} object Object to center horizontally + * @return {fabric.Canvas} thisArg + */ + centerObjectH: function (object) { + return this._centerObject(object, new fabric.Point(this.getCenter().left, object.getCenterPoint().y)); + }, + + /** + * Centers object vertically in the canvas + * @param {fabric.Object} object Object to center vertically + * @return {fabric.Canvas} thisArg + * @chainable + */ + centerObjectV: function (object) { + return this._centerObject(object, new fabric.Point(object.getCenterPoint().x, this.getCenter().top)); + }, + + /** + * Centers object vertically and horizontally in the canvas + * @param {fabric.Object} object Object to center vertically and horizontally + * @return {fabric.Canvas} thisArg + * @chainable + */ + centerObject: function(object) { + var center = this.getCenter(); + + return this._centerObject(object, new fabric.Point(center.left, center.top)); + }, + + /** + * Centers object vertically and horizontally in the viewport + * @param {fabric.Object} object Object to center vertically and horizontally + * @return {fabric.Canvas} thisArg + * @chainable + */ + viewportCenterObject: function(object) { + var vpCenter = this.getVpCenter(); + + return this._centerObject(object, vpCenter); + }, + + /** + * Centers object horizontally in the viewport, object.top is unchanged + * @param {fabric.Object} object Object to center vertically and horizontally + * @return {fabric.Canvas} thisArg + * @chainable + */ + viewportCenterObjectH: function(object) { + var vpCenter = this.getVpCenter(); + this._centerObject(object, new fabric.Point(vpCenter.x, object.getCenterPoint().y)); + return this; + }, + + /** + * Centers object Vertically in the viewport, object.top is unchanged + * @param {fabric.Object} object Object to center vertically and horizontally + * @return {fabric.Canvas} thisArg + * @chainable + */ + viewportCenterObjectV: function(object) { + var vpCenter = this.getVpCenter(); + + return this._centerObject(object, new fabric.Point(object.getCenterPoint().x, vpCenter.y)); + }, + + /** + * Calculate the point in canvas that correspond to the center of actual viewport. + * @return {fabric.Point} vpCenter, viewport center + * @chainable + */ + getVpCenter: function() { + var center = this.getCenter(), + iVpt = invertTransform(this.viewportTransform); + return transformPoint({ x: center.left, y: center.top }, iVpt); + }, + + /** + * @private + * @param {fabric.Object} object Object to center + * @param {fabric.Point} center Center point + * @return {fabric.Canvas} thisArg + * @chainable + */ + _centerObject: function(object, center) { + object.setPositionByOrigin(center, 'center', 'center'); + object.setCoords(); + this.renderOnAddRemove && this.requestRenderAll(); + return this; + }, + + /** + * Returs dataless JSON representation of canvas + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {String} json string + */ + toDatalessJSON: function (propertiesToInclude) { + return this.toDatalessObject(propertiesToInclude); + }, + + /** + * Returns object representation of canvas + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject: function (propertiesToInclude) { + return this._toObjectMethod('toObject', propertiesToInclude); + }, + + /** + * Returns dataless object representation of canvas + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toDatalessObject: function (propertiesToInclude) { + return this._toObjectMethod('toDatalessObject', propertiesToInclude); + }, + + /** + * @private + */ + _toObjectMethod: function (methodName, propertiesToInclude) { + + var clipPath = this.clipPath, data = { + version: fabric.version, + objects: this._toObjects(methodName, propertiesToInclude), + }; + if (clipPath) { + data.clipPath = this._toObject(this.clipPath, methodName, propertiesToInclude); + } + extend(data, this.__serializeBgOverlay(methodName, propertiesToInclude)); + + fabric.util.populateWithProperties(this, data, propertiesToInclude); + + return data; + }, + + /** + * @private + */ + _toObjects: function(methodName, propertiesToInclude) { + return this._objects.filter(function(object) { + return !object.excludeFromExport; + }).map(function(instance) { + return this._toObject(instance, methodName, propertiesToInclude); + }, this); + }, + + /** + * @private + */ + _toObject: function(instance, methodName, propertiesToInclude) { + var originalValue; + + if (!this.includeDefaultValues) { + originalValue = instance.includeDefaultValues; + instance.includeDefaultValues = false; + } + + var object = instance[methodName](propertiesToInclude); + if (!this.includeDefaultValues) { + instance.includeDefaultValues = originalValue; + } + return object; + }, + + /** + * @private + */ + __serializeBgOverlay: function(methodName, propertiesToInclude) { + var data = { }, bgImage = this.backgroundImage, overlay = this.overlayImage; + + if (this.backgroundColor) { + data.background = this.backgroundColor.toObject + ? this.backgroundColor.toObject(propertiesToInclude) + : this.backgroundColor; + } + + if (this.overlayColor) { + data.overlay = this.overlayColor.toObject + ? this.overlayColor.toObject(propertiesToInclude) + : this.overlayColor; + } + if (bgImage && !bgImage.excludeFromExport) { + data.backgroundImage = this._toObject(bgImage, methodName, propertiesToInclude); + } + if (overlay && !overlay.excludeFromExport) { + data.overlayImage = this._toObject(overlay, methodName, propertiesToInclude); + } + + return data; + }, + + /* _TO_SVG_START_ */ + /** + * When true, getSvgTransform() will apply the StaticCanvas.viewportTransform to the SVG transformation. When true, + * a zoomed canvas will then produce zoomed SVG output. + * @type Boolean + * @default + */ + svgViewportTransformation: true, + + /** + * Returns SVG representation of canvas + * @function + * @param {Object} [options] Options object for SVG output + * @param {Boolean} [options.suppressPreamble=false] If true xml tag is not included + * @param {Object} [options.viewBox] SVG viewbox object + * @param {Number} [options.viewBox.x] x-cooridnate of viewbox + * @param {Number} [options.viewBox.y] y-coordinate of viewbox + * @param {Number} [options.viewBox.width] Width of viewbox + * @param {Number} [options.viewBox.height] Height of viewbox + * @param {String} [options.encoding=UTF-8] Encoding of SVG output + * @param {String} [options.width] desired width of svg with or without units + * @param {String} [options.height] desired height of svg with or without units + * @param {Function} [reviver] Method for further parsing of svg elements, called after each fabric object converted into svg representation. + * @return {String} SVG string + * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization} + * @see {@link http://jsfiddle.net/fabricjs/jQ3ZZ/|jsFiddle demo} + * @example Normal SVG output + * var svg = canvas.toSVG(); + * @example SVG output without preamble (without <?xml ../>) + * var svg = canvas.toSVG({suppressPreamble: true}); + * @example SVG output with viewBox attribute + * var svg = canvas.toSVG({ + * viewBox: { + * x: 100, + * y: 100, + * width: 200, + * height: 300 + * } + * }); + * @example SVG output with different encoding (default: UTF-8) + * var svg = canvas.toSVG({encoding: 'ISO-8859-1'}); + * @example Modify SVG output with reviver function + * var svg = canvas.toSVG(null, function(svg) { + * return svg.replace('stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; ', ''); + * }); + */ + toSVG: function(options, reviver) { + options || (options = { }); + options.reviver = reviver; + var markup = []; + + this._setSVGPreamble(markup, options); + this._setSVGHeader(markup, options); + if (this.clipPath) { + markup.push('\n'); + } + this._setSVGBgOverlayColor(markup, 'background'); + this._setSVGBgOverlayImage(markup, 'backgroundImage', reviver); + this._setSVGObjects(markup, reviver); + if (this.clipPath) { + markup.push('\n'); + } + this._setSVGBgOverlayColor(markup, 'overlay'); + this._setSVGBgOverlayImage(markup, 'overlayImage', reviver); + + markup.push(''); + + return markup.join(''); + }, + + /** + * @private + */ + _setSVGPreamble: function(markup, options) { + if (options.suppressPreamble) { + return; + } + markup.push( + '\n', + '\n' + ); + }, + + /** + * @private + */ + _setSVGHeader: function(markup, options) { + var width = options.width || this.width, + height = options.height || this.height, + vpt, viewBox = 'viewBox="0 0 ' + this.width + ' ' + this.height + '" ', + NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS; + + if (options.viewBox) { + viewBox = 'viewBox="' + + options.viewBox.x + ' ' + + options.viewBox.y + ' ' + + options.viewBox.width + ' ' + + options.viewBox.height + '" '; + } + else { + if (this.svgViewportTransformation) { + vpt = this.viewportTransform; + viewBox = 'viewBox="' + + toFixed(-vpt[4] / vpt[0], NUM_FRACTION_DIGITS) + ' ' + + toFixed(-vpt[5] / vpt[3], NUM_FRACTION_DIGITS) + ' ' + + toFixed(this.width / vpt[0], NUM_FRACTION_DIGITS) + ' ' + + toFixed(this.height / vpt[3], NUM_FRACTION_DIGITS) + '" '; + } + } + + markup.push( + '\n', + 'Created with Fabric.js ', fabric.version, '\n', + '\n', + this.createSVGFontFacesMarkup(), + this.createSVGRefElementsMarkup(), + this.createSVGClipPathMarkup(options), + '\n' + ); + }, + + createSVGClipPathMarkup: function(options) { + var clipPath = this.clipPath; + if (clipPath) { + clipPath.clipPathId = 'CLIPPATH_' + fabric.Object.__uid++; + return '\n' + + this.clipPath.toClipPathSVG(options.reviver) + + '\n'; + } + return ''; + }, + + /** + * Creates markup containing SVG referenced elements like patterns, gradients etc. + * @return {String} + */ + createSVGRefElementsMarkup: function() { + var _this = this, + markup = ['background', 'overlay'].map(function(prop) { + var fill = _this[prop + 'Color']; + if (fill && fill.toLive) { + var shouldTransform = _this[prop + 'Vpt'], vpt = _this.viewportTransform, + object = { + width: _this.width / (shouldTransform ? vpt[0] : 1), + height: _this.height / (shouldTransform ? vpt[3] : 1) + }; + return fill.toSVG( + object, + { additionalTransform: shouldTransform ? fabric.util.matrixToSVG(vpt) : '' } + ); + } + }); + return markup.join(''); + }, + + /** + * Creates markup containing SVG font faces, + * font URLs for font faces must be collected by developers + * and are not extracted from the DOM by fabricjs + * @param {Array} objects Array of fabric objects + * @return {String} + */ + createSVGFontFacesMarkup: function() { + var markup = '', fontList = { }, obj, fontFamily, + style, row, rowIndex, _char, charIndex, i, len, + fontPaths = fabric.fontPaths, objects = this._objects; + + for (i = 0, len = objects.length; i < len; i++) { + obj = objects[i]; + fontFamily = obj.fontFamily; + if (obj.type.indexOf('text') === -1 || fontList[fontFamily] || !fontPaths[fontFamily]) { + continue; + } + fontList[fontFamily] = true; + if (!obj.styles) { + continue; + } + style = obj.styles; + for (rowIndex in style) { + row = style[rowIndex]; + for (charIndex in row) { + _char = row[charIndex]; + fontFamily = _char.fontFamily; + if (!fontList[fontFamily] && fontPaths[fontFamily]) { + fontList[fontFamily] = true; + } + } + } + } + + for (var j in fontList) { + markup += [ + '\t\t@font-face {\n', + '\t\t\tfont-family: \'', j, '\';\n', + '\t\t\tsrc: url(\'', fontPaths[j], '\');\n', + '\t\t}\n' + ].join(''); + } + + if (markup) { + markup = [ + '\t\n' + ].join(''); + } + + return markup; + }, + + /** + * @private + */ + _setSVGObjects: function(markup, reviver) { + var instance, i, len, objects = this._objects; + for (i = 0, len = objects.length; i < len; i++) { + instance = objects[i]; + if (instance.excludeFromExport) { + continue; + } + this._setSVGObject(markup, instance, reviver); + } + }, + + /** + * @private + */ + _setSVGObject: function(markup, instance, reviver) { + markup.push(instance.toSVG(reviver)); + }, + + /** + * @private + */ + _setSVGBgOverlayImage: function(markup, property, reviver) { + if (this[property] && !this[property].excludeFromExport && this[property].toSVG) { + markup.push(this[property].toSVG(reviver)); + } + }, + + /** + * @private + */ + _setSVGBgOverlayColor: function(markup, property) { + var filler = this[property + 'Color'], vpt = this.viewportTransform, finalWidth = this.width, + finalHeight = this.height; + if (!filler) { + return; + } + if (filler.toLive) { + var repeat = filler.repeat, iVpt = fabric.util.invertTransform(vpt), shouldInvert = this[property + 'Vpt'], + additionalTransform = shouldInvert ? fabric.util.matrixToSVG(iVpt) : ''; + markup.push( + '\n' + ); + } + else { + markup.push( + '\n' + ); + } + }, + /* _TO_SVG_END_ */ + + /** + * Moves an object or the objects of a multiple selection + * to the bottom of the stack of drawn objects + * @param {fabric.Object} object Object to send to back + * @return {fabric.Canvas} thisArg + * @chainable + */ + sendToBack: function (object) { + if (!object) { + return this; + } + var activeSelection = this._activeObject, + i, obj, objs; + if (object === activeSelection && object.type === 'activeSelection') { + objs = activeSelection._objects; + for (i = objs.length; i--;) { + obj = objs[i]; + removeFromArray(this._objects, obj); + this._objects.unshift(obj); + } + } + else { + removeFromArray(this._objects, object); + this._objects.unshift(object); + } + this.renderOnAddRemove && this.requestRenderAll(); + return this; + }, + + /** + * Moves an object or the objects of a multiple selection + * to the top of the stack of drawn objects + * @param {fabric.Object} object Object to send + * @return {fabric.Canvas} thisArg + * @chainable + */ + bringToFront: function (object) { + if (!object) { + return this; + } + var activeSelection = this._activeObject, + i, obj, objs; + if (object === activeSelection && object.type === 'activeSelection') { + objs = activeSelection._objects; + for (i = 0; i < objs.length; i++) { + obj = objs[i]; + removeFromArray(this._objects, obj); + this._objects.push(obj); + } + } + else { + removeFromArray(this._objects, object); + this._objects.push(object); + } + this.renderOnAddRemove && this.requestRenderAll(); + return this; + }, + + /** + * Moves an object or a selection down in stack of drawn objects + * An optional paramter, intersecting allowes to move the object in behind + * the first intersecting object. Where intersection is calculated with + * bounding box. If no intersection is found, there will not be change in the + * stack. + * @param {fabric.Object} object Object to send + * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object + * @return {fabric.Canvas} thisArg + * @chainable + */ + sendBackwards: function (object, intersecting) { + if (!object) { + return this; + } + var activeSelection = this._activeObject, + i, obj, idx, newIdx, objs, objsMoved = 0; + + if (object === activeSelection && object.type === 'activeSelection') { + objs = activeSelection._objects; + for (i = 0; i < objs.length; i++) { + obj = objs[i]; + idx = this._objects.indexOf(obj); + if (idx > 0 + objsMoved) { + newIdx = idx - 1; + removeFromArray(this._objects, obj); + this._objects.splice(newIdx, 0, obj); + } + objsMoved++; + } + } + else { + idx = this._objects.indexOf(object); + if (idx !== 0) { + // if object is not on the bottom of stack + newIdx = this._findNewLowerIndex(object, idx, intersecting); + removeFromArray(this._objects, object); + this._objects.splice(newIdx, 0, object); + } + } + this.renderOnAddRemove && this.requestRenderAll(); + return this; + }, + + /** + * @private + */ + _findNewLowerIndex: function(object, idx, intersecting) { + var newIdx, i; + + if (intersecting) { + newIdx = idx; + + // traverse down the stack looking for the nearest intersecting object + for (i = idx - 1; i >= 0; --i) { + + var isIntersecting = object.intersectsWithObject(this._objects[i]) || + object.isContainedWithinObject(this._objects[i]) || + this._objects[i].isContainedWithinObject(object); + + if (isIntersecting) { + newIdx = i; + break; + } + } + } + else { + newIdx = idx - 1; + } + + return newIdx; + }, + + /** + * Moves an object or a selection up in stack of drawn objects + * An optional paramter, intersecting allowes to move the object in front + * of the first intersecting object. Where intersection is calculated with + * bounding box. If no intersection is found, there will not be change in the + * stack. + * @param {fabric.Object} object Object to send + * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object + * @return {fabric.Canvas} thisArg + * @chainable + */ + bringForward: function (object, intersecting) { + if (!object) { + return this; + } + var activeSelection = this._activeObject, + i, obj, idx, newIdx, objs, objsMoved = 0; + + if (object === activeSelection && object.type === 'activeSelection') { + objs = activeSelection._objects; + for (i = objs.length; i--;) { + obj = objs[i]; + idx = this._objects.indexOf(obj); + if (idx < this._objects.length - 1 - objsMoved) { + newIdx = idx + 1; + removeFromArray(this._objects, obj); + this._objects.splice(newIdx, 0, obj); + } + objsMoved++; + } + } + else { + idx = this._objects.indexOf(object); + if (idx !== this._objects.length - 1) { + // if object is not on top of stack (last item in an array) + newIdx = this._findNewUpperIndex(object, idx, intersecting); + removeFromArray(this._objects, object); + this._objects.splice(newIdx, 0, object); + } + } + this.renderOnAddRemove && this.requestRenderAll(); + return this; + }, + + /** + * @private + */ + _findNewUpperIndex: function(object, idx, intersecting) { + var newIdx, i, len; + + if (intersecting) { + newIdx = idx; + + // traverse up the stack looking for the nearest intersecting object + for (i = idx + 1, len = this._objects.length; i < len; ++i) { + + var isIntersecting = object.intersectsWithObject(this._objects[i]) || + object.isContainedWithinObject(this._objects[i]) || + this._objects[i].isContainedWithinObject(object); + + if (isIntersecting) { + newIdx = i; + break; + } + } + } + else { + newIdx = idx + 1; + } + + return newIdx; + }, + + /** + * Moves an object to specified level in stack of drawn objects + * @param {fabric.Object} object Object to send + * @param {Number} index Position to move to + * @return {fabric.Canvas} thisArg + * @chainable + */ + moveTo: function (object, index) { + removeFromArray(this._objects, object); + this._objects.splice(index, 0, object); + return this.renderOnAddRemove && this.requestRenderAll(); + }, + + /** + * Clears a canvas element and dispose objects + * @return {fabric.Canvas} thisArg + * @chainable + */ + dispose: function () { + // cancel eventually ongoing renders + if (this.isRendering) { + fabric.util.cancelAnimFrame(this.isRendering); + this.isRendering = 0; + } + this.forEachObject(function(object) { + object.dispose && object.dispose(); + }); + this._objects = []; + if (this.backgroundImage && this.backgroundImage.dispose) { + this.backgroundImage.dispose(); + } + this.backgroundImage = null; + if (this.overlayImage && this.overlayImage.dispose) { + this.overlayImage.dispose(); + } + this.overlayImage = null; + this._iTextInstances = null; + this.contextContainer = null; + fabric.util.cleanUpJsdomNode(this.lowerCanvasEl); + this.lowerCanvasEl = undefined; + return this; + }, + + /** + * Returns a string representation of an instance + * @return {String} string representation of an instance + */ + toString: function () { + return '#'; + } + }); + + extend(fabric.StaticCanvas.prototype, fabric.Observable); + extend(fabric.StaticCanvas.prototype, fabric.Collection); + extend(fabric.StaticCanvas.prototype, fabric.DataURLExporter); + + extend(fabric.StaticCanvas, /** @lends fabric.StaticCanvas */ { + + /** + * @static + * @type String + * @default + */ + EMPTY_JSON: '{"objects": [], "background": "white"}', + + /** + * Provides a way to check support of some of the canvas methods + * (either those of HTMLCanvasElement itself, or rendering context) + * + * @param {String} methodName Method to check support for; + * Could be one of "setLineDash" + * @return {Boolean | null} `true` if method is supported (or at least exists), + * `null` if canvas element or context can not be initialized + */ + supports: function (methodName) { + var el = createCanvasElement(); + + if (!el || !el.getContext) { + return null; + } + + var ctx = el.getContext('2d'); + if (!ctx) { + return null; + } + + switch (methodName) { + + case 'setLineDash': + return typeof ctx.setLineDash !== 'undefined'; + + default: + return null; + } + } + }); + + /** + * Returns JSON representation of canvas + * @function + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {String} JSON string + * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization} + * @see {@link http://jsfiddle.net/fabricjs/pec86/|jsFiddle demo} + * @example JSON without additional properties + * var json = canvas.toJSON(); + * @example JSON with additional properties included + * var json = canvas.toJSON(['lockMovementX', 'lockMovementY', 'lockRotation', 'lockScalingX', 'lockScalingY', 'lockUniScaling']); + * @example JSON without default values + * canvas.includeDefaultValues = false; + * var json = canvas.toJSON(); + */ + fabric.StaticCanvas.prototype.toJSON = fabric.StaticCanvas.prototype.toObject; + + if (fabric.isLikelyNode) { + fabric.StaticCanvas.prototype.createPNGStream = function() { + var impl = getNodeCanvas(this.lowerCanvasEl); + return impl && impl.createPNGStream(); + }; + fabric.StaticCanvas.prototype.createJPEGStream = function(opts) { + var impl = getNodeCanvas(this.lowerCanvasEl); + return impl && impl.createJPEGStream(opts); + }; + } +})(); + + +/** + * BaseBrush class + * @class fabric.BaseBrush + * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo} + */ +fabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype */ { + + /** + * Color of a brush + * @type String + * @default + */ + color: 'rgb(0, 0, 0)', + + /** + * Width of a brush, has to be a Number, no string literals + * @type Number + * @default + */ + width: 1, + + /** + * Shadow object representing shadow of this shape. + * Backwards incompatibility note: This property replaces "shadowColor" (String), "shadowOffsetX" (Number), + * "shadowOffsetY" (Number) and "shadowBlur" (Number) since v1.2.12 + * @type fabric.Shadow + * @default + */ + shadow: null, + + /** + * Line endings style of a brush (one of "butt", "round", "square") + * @type String + * @default + */ + strokeLineCap: 'round', + + /** + * Corner style of a brush (one of "bevel", "round", "miter") + * @type String + * @default + */ + strokeLineJoin: 'round', + + /** + * Maximum miter length (used for strokeLineJoin = "miter") of a brush's + * @type Number + * @default + */ + strokeMiterLimit: 10, + + /** + * Stroke Dash Array. + * @type Array + * @default + */ + strokeDashArray: null, + + /** + * Sets shadow of an object + * @param {Object|String} [options] Options object or string (e.g. "2px 2px 10px rgba(0,0,0,0.2)") + * @return {fabric.Object} thisArg + * @chainable + */ + setShadow: function(options) { + this.shadow = new fabric.Shadow(options); + return this; + }, + + /** + * Sets brush styles + * @private + */ + _setBrushStyles: function() { + var ctx = this.canvas.contextTop; + ctx.strokeStyle = this.color; + ctx.lineWidth = this.width; + ctx.lineCap = this.strokeLineCap; + ctx.miterLimit = this.strokeMiterLimit; + ctx.lineJoin = this.strokeLineJoin; + if (fabric.StaticCanvas.supports('setLineDash')) { + ctx.setLineDash(this.strokeDashArray || []); + } + }, + + /** + * Sets the transformation on given context + * @param {RenderingContext2d} ctx context to render on + * @private + */ + _saveAndTransform: function(ctx) { + var v = this.canvas.viewportTransform; + ctx.save(); + ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); + }, + + /** + * Sets brush shadow styles + * @private + */ + _setShadow: function() { + if (!this.shadow) { + return; + } + + var canvas = this.canvas, + shadow = this.shadow, + ctx = canvas.contextTop, + zoom = canvas.getZoom(); + if (canvas && canvas._isRetinaScaling()) { + zoom *= fabric.devicePixelRatio; + } + + ctx.shadowColor = shadow.color; + ctx.shadowBlur = shadow.blur * zoom; + ctx.shadowOffsetX = shadow.offsetX * zoom; + ctx.shadowOffsetY = shadow.offsetY * zoom; + }, + + needsFullRender: function() { + var color = new fabric.Color(this.color); + return color.getAlpha() < 1 || !!this.shadow; + }, + + /** + * Removes brush shadow styles + * @private + */ + _resetShadow: function() { + var ctx = this.canvas.contextTop; + + ctx.shadowColor = ''; + ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0; + } +}); + + +(function() { + /** + * PencilBrush class + * @class fabric.PencilBrush + * @extends fabric.BaseBrush + */ + fabric.PencilBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.PencilBrush.prototype */ { + + /** + * Discard points that are less than `decimate` pixel distant from each other + * @type Number + * @default 0.4 + */ + decimate: 0.4, + + /** + * Constructor + * @param {fabric.Canvas} canvas + * @return {fabric.PencilBrush} Instance of a pencil brush + */ + initialize: function(canvas) { + this.canvas = canvas; + this._points = []; + }, + + /** + * Invoked inside on mouse down and mouse move + * @param {Object} pointer + */ + _drawSegment: function (ctx, p1, p2) { + var midPoint = p1.midPointFrom(p2); + ctx.quadraticCurveTo(p1.x, p1.y, midPoint.x, midPoint.y); + return midPoint; + }, + + /** + * Inovoked on mouse down + * @param {Object} pointer + */ + onMouseDown: function(pointer, options) { + if (!this.canvas._isMainEvent(options.e)) { + return; + } + this._prepareForDrawing(pointer); + // capture coordinates immediately + // this allows to draw dots (when movement never occurs) + this._captureDrawingPath(pointer); + this._render(); + }, + + /** + * Inovoked on mouse move + * @param {Object} pointer + */ + onMouseMove: function(pointer, options) { + if (!this.canvas._isMainEvent(options.e)) { + return; + } + if (this._captureDrawingPath(pointer) && this._points.length > 1) { + if (this.needsFullRender()) { + // redraw curve + // clear top canvas + this.canvas.clearContext(this.canvas.contextTop); + this._render(); + } + else { + var points = this._points, length = points.length, ctx = this.canvas.contextTop; + // draw the curve update + this._saveAndTransform(ctx); + if (this.oldEnd) { + ctx.beginPath(); + ctx.moveTo(this.oldEnd.x, this.oldEnd.y); + } + this.oldEnd = this._drawSegment(ctx, points[length - 2], points[length - 1], true); + ctx.stroke(); + ctx.restore(); + } + } + }, + + /** + * Invoked on mouse up + */ + onMouseUp: function(options) { + if (!this.canvas._isMainEvent(options.e)) { + return true; + } + this.oldEnd = undefined; + this._finalizeAndAddPath(); + return false; + }, + + /** + * @private + * @param {Object} pointer Actual mouse position related to the canvas. + */ + _prepareForDrawing: function(pointer) { + + var p = new fabric.Point(pointer.x, pointer.y); + + this._reset(); + this._addPoint(p); + this.canvas.contextTop.moveTo(p.x, p.y); + }, + + /** + * @private + * @param {fabric.Point} point Point to be added to points array + */ + _addPoint: function(point) { + if (this._points.length > 1 && point.eq(this._points[this._points.length - 1])) { + return false; + } + this._points.push(point); + return true; + }, + + /** + * Clear points array and set contextTop canvas style. + * @private + */ + _reset: function() { + this._points = []; + this._setBrushStyles(); + this._setShadow(); + }, + + /** + * @private + * @param {Object} pointer Actual mouse position related to the canvas. + */ + _captureDrawingPath: function(pointer) { + var pointerPoint = new fabric.Point(pointer.x, pointer.y); + return this._addPoint(pointerPoint); + }, + + /** + * Draw a smooth path on the topCanvas using quadraticCurveTo + * @private + */ + _render: function() { + var ctx = this.canvas.contextTop, i, len, + p1 = this._points[0], + p2 = this._points[1]; + + this._saveAndTransform(ctx); + ctx.beginPath(); + //if we only have 2 points in the path and they are the same + //it means that the user only clicked the canvas without moving the mouse + //then we should be drawing a dot. A path isn't drawn between two identical dots + //that's why we set them apart a bit + if (this._points.length === 2 && p1.x === p2.x && p1.y === p2.y) { + var width = this.width / 1000; + p1 = new fabric.Point(p1.x, p1.y); + p2 = new fabric.Point(p2.x, p2.y); + p1.x -= width; + p2.x += width; + } + ctx.moveTo(p1.x, p1.y); + + for (i = 1, len = this._points.length; i < len; i++) { + // we pick the point between pi + 1 & pi + 2 as the + // end point and p1 as our control point. + this._drawSegment(ctx, p1, p2); + p1 = this._points[i]; + p2 = this._points[i + 1]; + } + // Draw last line as a straight line while + // we wait for the next point to be able to calculate + // the bezier control point + ctx.lineTo(p1.x, p1.y); + ctx.stroke(); + ctx.restore(); + }, + + /** + * Converts points to SVG path + * @param {Array} points Array of points + * @return {String} SVG path + */ + convertPointsToSVGPath: function(points) { + var path = [], i, width = this.width / 1000, + p1 = new fabric.Point(points[0].x, points[0].y), + p2 = new fabric.Point(points[1].x, points[1].y), + len = points.length, multSignX = 1, multSignY = 0, manyPoints = len > 2; + + if (manyPoints) { + multSignX = points[2].x < p2.x ? -1 : points[2].x === p2.x ? 0 : 1; + multSignY = points[2].y < p2.y ? -1 : points[2].y === p2.y ? 0 : 1; + } + path.push('M ', p1.x - multSignX * width, ' ', p1.y - multSignY * width, ' '); + for (i = 1; i < len; i++) { + if (!p1.eq(p2)) { + var midPoint = p1.midPointFrom(p2); + // p1 is our bezier control point + // midpoint is our endpoint + // start point is p(i-1) value. + path.push('Q ', p1.x, ' ', p1.y, ' ', midPoint.x, ' ', midPoint.y, ' '); + } + p1 = points[i]; + if ((i + 1) < points.length) { + p2 = points[i + 1]; + } + } + if (manyPoints) { + multSignX = p1.x > points[i - 2].x ? 1 : p1.x === points[i - 2].x ? 0 : -1; + multSignY = p1.y > points[i - 2].y ? 1 : p1.y === points[i - 2].y ? 0 : -1; + } + path.push('L ', p1.x + multSignX * width, ' ', p1.y + multSignY * width); + return path; + }, + + /** + * Creates fabric.Path object to add on canvas + * @param {String} pathData Path data + * @return {fabric.Path} Path to add on canvas + */ + createPath: function(pathData) { + var path = new fabric.Path(pathData, { + fill: null, + stroke: this.color, + strokeWidth: this.width, + strokeLineCap: this.strokeLineCap, + strokeMiterLimit: this.strokeMiterLimit, + strokeLineJoin: this.strokeLineJoin, + strokeDashArray: this.strokeDashArray, + }); + if (this.shadow) { + this.shadow.affectStroke = true; + path.setShadow(this.shadow); + } + + return path; + }, + + /** + * Decimate poins array with the decimate value + */ + decimatePoints: function(points, distance) { + if (points.length <= 2) { + return points; + } + var zoom = this.canvas.getZoom(), adjustedDistance = Math.pow(distance / zoom, 2), + i, l = points.length - 1, lastPoint = points[0], newPoints = [lastPoint], + cDistance; + for (i = 1; i < l; i++) { + cDistance = Math.pow(lastPoint.x - points[i].x, 2) + Math.pow(lastPoint.y - points[i].y, 2); + if (cDistance >= adjustedDistance) { + lastPoint = points[i]; + newPoints.push(lastPoint); + } + } + if (newPoints.length === 1) { + newPoints.push(new fabric.Point(newPoints[0].x, newPoints[0].y)); + } + return newPoints; + }, + + /** + * On mouseup after drawing the path on contextTop canvas + * we use the points captured to create an new fabric path object + * and add it to the fabric canvas. + */ + _finalizeAndAddPath: function() { + var ctx = this.canvas.contextTop; + ctx.closePath(); + if (this.decimate) { + this._points = this.decimatePoints(this._points, this.decimate); + } + var pathData = this.convertPointsToSVGPath(this._points).join(''); + if (pathData === 'M 0 0 Q 0 0 0 0 L 0 0') { + // do not create 0 width/height paths, as they are + // rendered inconsistently across browsers + // Firefox 4, for example, renders a dot, + // whereas Chrome 10 renders nothing + this.canvas.requestRenderAll(); + return; + } + + var path = this.createPath(pathData); + this.canvas.clearContext(this.canvas.contextTop); + this.canvas.add(path); + this.canvas.requestRenderAll(); + path.setCoords(); + this._resetShadow(); + + + // fire event 'path' created + this.canvas.fire('path:created', { path: path }); + } + }); +})(); + + +/** + * CircleBrush class + * @class fabric.CircleBrush + */ +fabric.CircleBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.CircleBrush.prototype */ { + + /** + * Width of a brush + * @type Number + * @default + */ + width: 10, + + /** + * Constructor + * @param {fabric.Canvas} canvas + * @return {fabric.CircleBrush} Instance of a circle brush + */ + initialize: function(canvas) { + this.canvas = canvas; + this.points = []; + }, + + /** + * Invoked inside on mouse down and mouse move + * @param {Object} pointer + */ + drawDot: function(pointer) { + var point = this.addPoint(pointer), + ctx = this.canvas.contextTop; + this._saveAndTransform(ctx); + this.dot(ctx, point); + ctx.restore(); + }, + + dot: function(ctx, point) { + ctx.fillStyle = point.fill; + ctx.beginPath(); + ctx.arc(point.x, point.y, point.radius, 0, Math.PI * 2, false); + ctx.closePath(); + ctx.fill(); + }, + + /** + * Invoked on mouse down + */ + onMouseDown: function(pointer) { + this.points.length = 0; + this.canvas.clearContext(this.canvas.contextTop); + this._setShadow(); + this.drawDot(pointer); + }, + + /** + * Render the full state of the brush + * @private + */ + _render: function() { + var ctx = this.canvas.contextTop, i, len, + points = this.points; + this._saveAndTransform(ctx); + for (i = 0, len = points.length; i < len; i++) { + this.dot(ctx, points[i]); + } + ctx.restore(); + }, + + /** + * Invoked on mouse move + * @param {Object} pointer + */ + onMouseMove: function(pointer) { + if (this.needsFullRender()) { + this.canvas.clearContext(this.canvas.contextTop); + this.addPoint(pointer); + this._render(); + } + else { + this.drawDot(pointer); + } + }, + + /** + * Invoked on mouse up + */ + onMouseUp: function() { + var originalRenderOnAddRemove = this.canvas.renderOnAddRemove, i, len; + this.canvas.renderOnAddRemove = false; + + var circles = []; + + for (i = 0, len = this.points.length; i < len; i++) { + var point = this.points[i], + circle = new fabric.Circle({ + radius: point.radius, + left: point.x, + top: point.y, + originX: 'center', + originY: 'center', + fill: point.fill + }); + + this.shadow && circle.setShadow(this.shadow); + + circles.push(circle); + } + var group = new fabric.Group(circles); + group.canvas = this.canvas; + + this.canvas.add(group); + this.canvas.fire('path:created', { path: group }); + + this.canvas.clearContext(this.canvas.contextTop); + this._resetShadow(); + this.canvas.renderOnAddRemove = originalRenderOnAddRemove; + this.canvas.requestRenderAll(); + }, + + /** + * @param {Object} pointer + * @return {fabric.Point} Just added pointer point + */ + addPoint: function(pointer) { + var pointerPoint = new fabric.Point(pointer.x, pointer.y), + + circleRadius = fabric.util.getRandomInt( + Math.max(0, this.width - 20), this.width + 20) / 2, + + circleColor = new fabric.Color(this.color) + .setAlpha(fabric.util.getRandomInt(0, 100) / 100) + .toRgba(); + + pointerPoint.radius = circleRadius; + pointerPoint.fill = circleColor; + + this.points.push(pointerPoint); + + return pointerPoint; + } +}); + + +/** + * SprayBrush class + * @class fabric.SprayBrush + */ +fabric.SprayBrush = fabric.util.createClass( fabric.BaseBrush, /** @lends fabric.SprayBrush.prototype */ { + + /** + * Width of a spray + * @type Number + * @default + */ + width: 10, + + /** + * Density of a spray (number of dots per chunk) + * @type Number + * @default + */ + density: 20, + + /** + * Width of spray dots + * @type Number + * @default + */ + dotWidth: 1, + + /** + * Width variance of spray dots + * @type Number + * @default + */ + dotWidthVariance: 1, + + /** + * Whether opacity of a dot should be random + * @type Boolean + * @default + */ + randomOpacity: false, + + /** + * Whether overlapping dots (rectangles) should be removed (for performance reasons) + * @type Boolean + * @default + */ + optimizeOverlapping: true, + + /** + * Constructor + * @param {fabric.Canvas} canvas + * @return {fabric.SprayBrush} Instance of a spray brush + */ + initialize: function(canvas) { + this.canvas = canvas; + this.sprayChunks = []; + }, + + /** + * Invoked on mouse down + * @param {Object} pointer + */ + onMouseDown: function(pointer) { + this.sprayChunks.length = 0; + this.canvas.clearContext(this.canvas.contextTop); + this._setShadow(); + + this.addSprayChunk(pointer); + this.render(this.sprayChunkPoints); + }, + + /** + * Invoked on mouse move + * @param {Object} pointer + */ + onMouseMove: function(pointer) { + this.addSprayChunk(pointer); + this.render(this.sprayChunkPoints); + }, + + /** + * Invoked on mouse up + */ + onMouseUp: function() { + var originalRenderOnAddRemove = this.canvas.renderOnAddRemove; + this.canvas.renderOnAddRemove = false; + + var rects = []; + + for (var i = 0, ilen = this.sprayChunks.length; i < ilen; i++) { + var sprayChunk = this.sprayChunks[i]; + + for (var j = 0, jlen = sprayChunk.length; j < jlen; j++) { + + var rect = new fabric.Rect({ + width: sprayChunk[j].width, + height: sprayChunk[j].width, + left: sprayChunk[j].x + 1, + top: sprayChunk[j].y + 1, + originX: 'center', + originY: 'center', + fill: this.color + }); + rects.push(rect); + } + } + + if (this.optimizeOverlapping) { + rects = this._getOptimizedRects(rects); + } + + var group = new fabric.Group(rects); + this.shadow && group.setShadow(this.shadow); + this.canvas.add(group); + this.canvas.fire('path:created', { path: group }); + + this.canvas.clearContext(this.canvas.contextTop); + this._resetShadow(); + this.canvas.renderOnAddRemove = originalRenderOnAddRemove; + this.canvas.requestRenderAll(); + }, + + /** + * @private + * @param {Array} rects + */ + _getOptimizedRects: function(rects) { + + // avoid creating duplicate rects at the same coordinates + var uniqueRects = { }, key, i, len; + + for (i = 0, len = rects.length; i < len; i++) { + key = rects[i].left + '' + rects[i].top; + if (!uniqueRects[key]) { + uniqueRects[key] = rects[i]; + } + } + var uniqueRectsArray = []; + for (key in uniqueRects) { + uniqueRectsArray.push(uniqueRects[key]); + } + + return uniqueRectsArray; + }, + + /** + * Render new chunk of spray brush + */ + render: function(sprayChunk) { + var ctx = this.canvas.contextTop, i, len; + ctx.fillStyle = this.color; + + this._saveAndTransform(ctx); + + for (i = 0, len = sprayChunk.length; i < len; i++) { + var point = sprayChunk[i]; + if (typeof point.opacity !== 'undefined') { + ctx.globalAlpha = point.opacity; + } + ctx.fillRect(point.x, point.y, point.width, point.width); + } + ctx.restore(); + }, + + /** + * Render all spray chunks + */ + _render: function() { + var ctx = this.canvas.contextTop, i, ilen; + ctx.fillStyle = this.color; + + this._saveAndTransform(ctx); + + for (i = 0, ilen = this.sprayChunks.length; i < ilen; i++) { + this.render(this.sprayChunks[i]); + } + ctx.restore(); + }, + + /** + * @param {Object} pointer + */ + addSprayChunk: function(pointer) { + this.sprayChunkPoints = []; + + var x, y, width, radius = this.width / 2, i; + + for (i = 0; i < this.density; i++) { + + x = fabric.util.getRandomInt(pointer.x - radius, pointer.x + radius); + y = fabric.util.getRandomInt(pointer.y - radius, pointer.y + radius); + + if (this.dotWidthVariance) { + width = fabric.util.getRandomInt( + // bottom clamp width to 1 + Math.max(1, this.dotWidth - this.dotWidthVariance), + this.dotWidth + this.dotWidthVariance); + } + else { + width = this.dotWidth; + } + + var point = new fabric.Point(x, y); + point.width = width; + + if (this.randomOpacity) { + point.opacity = fabric.util.getRandomInt(0, 100) / 100; + } + + this.sprayChunkPoints.push(point); + } + + this.sprayChunks.push(this.sprayChunkPoints); + } +}); + + +/** + * PatternBrush class + * @class fabric.PatternBrush + * @extends fabric.BaseBrush + */ +fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fabric.PatternBrush.prototype */ { + + getPatternSrc: function() { + + var dotWidth = 20, + dotDistance = 5, + patternCanvas = fabric.util.createCanvasElement(), + patternCtx = patternCanvas.getContext('2d'); + + patternCanvas.width = patternCanvas.height = dotWidth + dotDistance; + + patternCtx.fillStyle = this.color; + patternCtx.beginPath(); + patternCtx.arc(dotWidth / 2, dotWidth / 2, dotWidth / 2, 0, Math.PI * 2, false); + patternCtx.closePath(); + patternCtx.fill(); + + return patternCanvas; + }, + + getPatternSrcFunction: function() { + return String(this.getPatternSrc).replace('this.color', '"' + this.color + '"'); + }, + + /** + * Creates "pattern" instance property + */ + getPattern: function() { + return this.canvas.contextTop.createPattern(this.source || this.getPatternSrc(), 'repeat'); + }, + + /** + * Sets brush styles + */ + _setBrushStyles: function() { + this.callSuper('_setBrushStyles'); + this.canvas.contextTop.strokeStyle = this.getPattern(); + }, + + /** + * Creates path + */ + createPath: function(pathData) { + var path = this.callSuper('createPath', pathData), + topLeft = path._getLeftTopCoords().scalarAdd(path.strokeWidth / 2); + + path.stroke = new fabric.Pattern({ + source: this.source || this.getPatternSrcFunction(), + offsetX: -topLeft.x, + offsetY: -topLeft.y + }); + return path; + } +}); + + +(function() { + + var getPointer = fabric.util.getPointer, + degreesToRadians = fabric.util.degreesToRadians, + radiansToDegrees = fabric.util.radiansToDegrees, + atan2 = Math.atan2, + abs = Math.abs, + supportLineDash = fabric.StaticCanvas.supports('setLineDash'), + + STROKE_OFFSET = 0.5; + + /** + * Canvas class + * @class fabric.Canvas + * @extends fabric.StaticCanvas + * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#canvas} + * @see {@link fabric.Canvas#initialize} for constructor definition + * + * @fires object:modified + * @fires object:rotated + * @fires object:scaled + * @fires object:moved + * @fires object:skewed + * @fires object:rotating + * @fires object:scaling + * @fires object:moving + * @fires object:skewing + * @fires object:selected this event is deprecated. use selection:created + * + * @fires before:transform + * @fires before:selection:cleared + * @fires selection:cleared + * @fires selection:updated + * @fires selection:created + * + * @fires path:created + * @fires mouse:down + * @fires mouse:move + * @fires mouse:up + * @fires mouse:down:before + * @fires mouse:move:before + * @fires mouse:up:before + * @fires mouse:over + * @fires mouse:out + * @fires mouse:dblclick + * + * @fires dragover + * @fires dragenter + * @fires dragleave + * @fires drop + * + */ + fabric.Canvas = fabric.util.createClass(fabric.StaticCanvas, /** @lends fabric.Canvas.prototype */ { + + /** + * Constructor + * @param {HTMLElement | String} el <canvas> element to initialize instance on + * @param {Object} [options] Options object + * @return {Object} thisArg + */ + initialize: function(el, options) { + options || (options = { }); + this.renderAndResetBound = this.renderAndReset.bind(this); + this.requestRenderAllBound = this.requestRenderAll.bind(this); + this._initStatic(el, options); + this._initInteractive(); + this._createCacheCanvas(); + }, + + /** + * When true, objects can be transformed by one side (unproportionally) + * @type Boolean + * @default + */ + uniScaleTransform: false, + + /** + * Indicates which key enable unproportional scaling + * values: 'altKey', 'shiftKey', 'ctrlKey'. + * If `null` or 'none' or any other string that is not a modifier key + * feature is disabled feature disabled. + * @since 1.6.2 + * @type String + * @default + */ + uniScaleKey: 'shiftKey', + + /** + * When true, objects use center point as the origin of scale transformation. + * Backwards incompatibility note: This property replaces "centerTransform" (Boolean). + * @since 1.3.4 + * @type Boolean + * @default + */ + centeredScaling: false, + + /** + * When true, objects use center point as the origin of rotate transformation. + * Backwards incompatibility note: This property replaces "centerTransform" (Boolean). + * @since 1.3.4 + * @type Boolean + * @default + */ + centeredRotation: false, + + /** + * Indicates which key enable centered Transform + * values: 'altKey', 'shiftKey', 'ctrlKey'. + * If `null` or 'none' or any other string that is not a modifier key + * feature is disabled feature disabled. + * @since 1.6.2 + * @type String + * @default + */ + centeredKey: 'altKey', + + /** + * Indicates which key enable alternate action on corner + * values: 'altKey', 'shiftKey', 'ctrlKey'. + * If `null` or 'none' or any other string that is not a modifier key + * feature is disabled feature disabled. + * @since 1.6.2 + * @type String + * @default + */ + altActionKey: 'shiftKey', + + /** + * Indicates that canvas is interactive. This property should not be changed. + * @type Boolean + * @default + */ + interactive: true, + + /** + * Indicates whether group selection should be enabled + * @type Boolean + * @default + */ + selection: true, + + /** + * Indicates which key or keys enable multiple click selection + * Pass value as a string or array of strings + * values: 'altKey', 'shiftKey', 'ctrlKey'. + * If `null` or empty or containing any other string that is not a modifier key + * feature is disabled. + * @since 1.6.2 + * @type String|Array + * @default + */ + selectionKey: 'shiftKey', + + /** + * Indicates which key enable alternative selection + * in case of target overlapping with active object + * values: 'altKey', 'shiftKey', 'ctrlKey'. + * For a series of reason that come from the general expectations on how + * things should work, this feature works only for preserveObjectStacking true. + * If `null` or 'none' or any other string that is not a modifier key + * feature is disabled. + * @since 1.6.5 + * @type null|String + * @default + */ + altSelectionKey: null, + + /** + * Color of selection + * @type String + * @default + */ + selectionColor: 'rgba(100, 100, 255, 0.3)', // blue + + /** + * Default dash array pattern + * If not empty the selection border is dashed + * @type Array + */ + selectionDashArray: [], + + /** + * Color of the border of selection (usually slightly darker than color of selection itself) + * @type String + * @default + */ + selectionBorderColor: 'rgba(255, 255, 255, 0.3)', + + /** + * Width of a line used in object/group selection + * @type Number + * @default + */ + selectionLineWidth: 1, + + /** + * Select only shapes that are fully contained in the dragged selection rectangle. + * @type Boolean + * @default + */ + selectionFullyContained: false, + + /** + * Default cursor value used when hovering over an object on canvas + * @type String + * @default + */ + hoverCursor: 'move', + + /** + * Default cursor value used when moving an object on canvas + * @type String + * @default + */ + moveCursor: 'move', + + /** + * Default cursor value used for the entire canvas + * @type String + * @default + */ + defaultCursor: 'default', + + /** + * Cursor value used during free drawing + * @type String + * @default + */ + freeDrawingCursor: 'crosshair', + + /** + * Cursor value used for rotation point + * @type String + * @default + */ + rotationCursor: 'crosshair', + + /** + * Cursor value used for disabled elements ( corners with disabled action ) + * @type String + * @since 2.0.0 + * @default + */ + notAllowedCursor: 'not-allowed', + + /** + * Default element class that's given to wrapper (div) element of canvas + * @type String + * @default + */ + containerClass: 'canvas-container', + + /** + * When true, object detection happens on per-pixel basis rather than on per-bounding-box + * @type Boolean + * @default + */ + perPixelTargetFind: false, + + /** + * Number of pixels around target pixel to tolerate (consider active) during object detection + * @type Number + * @default + */ + targetFindTolerance: 0, + + /** + * When true, target detection is skipped when hovering over canvas. This can be used to improve performance. + * @type Boolean + * @default + */ + skipTargetFind: false, + + /** + * When true, mouse events on canvas (mousedown/mousemove/mouseup) result in free drawing. + * After mousedown, mousemove creates a shape, + * and then mouseup finalizes it and adds an instance of `fabric.Path` onto canvas. + * @tutorial {@link http://fabricjs.com/fabric-intro-part-4#free_drawing} + * @type Boolean + * @default + */ + isDrawingMode: false, + + /** + * Indicates whether objects should remain in current stack position when selected. + * When false objects are brought to top and rendered as part of the selection group + * @type Boolean + * @default + */ + preserveObjectStacking: false, + + /** + * Indicates the angle that an object will lock to while rotating. + * @type Number + * @since 1.6.7 + * @default + */ + snapAngle: 0, + + /** + * Indicates the distance from the snapAngle the rotation will lock to the snapAngle. + * When `null`, the snapThreshold will default to the snapAngle. + * @type null|Number + * @since 1.6.7 + * @default + */ + snapThreshold: null, + + /** + * Indicates if the right click on canvas can output the context menu or not + * @type Boolean + * @since 1.6.5 + * @default + */ + stopContextMenu: false, + + /** + * Indicates if the canvas can fire right click events + * @type Boolean + * @since 1.6.5 + * @default + */ + fireRightClick: false, + + /** + * Indicates if the canvas can fire middle click events + * @type Boolean + * @since 1.7.8 + * @default + */ + fireMiddleClick: false, + + /** + * Keep track of the subTargets for Mouse Events + * @type fabric.Object[] + */ + targets: [], + + /** + * Keep track of the hovered target + * @type fabric.Object + * @private + */ + _hoveredTarget: null, + + /** + * hold the list of nested targets hovered + * @type fabric.Object[] + * @private + */ + _hoveredTargets: [], + + /** + * @private + */ + _initInteractive: function() { + this._currentTransform = null; + this._groupSelector = null; + this._initWrapperElement(); + this._createUpperCanvas(); + this._initEventListeners(); + + this._initRetinaScaling(); + + this.freeDrawingBrush = fabric.PencilBrush && new fabric.PencilBrush(this); + + this.calcOffset(); + }, + + /** + * Divides objects in two groups, one to render immediately + * and one to render as activeGroup. + * @return {Array} objects to render immediately and pushes the other in the activeGroup. + */ + _chooseObjectsToRender: function() { + var activeObjects = this.getActiveObjects(), + object, objsToRender, activeGroupObjects; + + if (activeObjects.length > 0 && !this.preserveObjectStacking) { + objsToRender = []; + activeGroupObjects = []; + for (var i = 0, length = this._objects.length; i < length; i++) { + object = this._objects[i]; + if (activeObjects.indexOf(object) === -1 ) { + objsToRender.push(object); + } + else { + activeGroupObjects.push(object); + } + } + if (activeObjects.length > 1) { + this._activeObject._objects = activeGroupObjects; + } + objsToRender.push.apply(objsToRender, activeGroupObjects); + } + else { + objsToRender = this._objects; + } + return objsToRender; + }, + + /** + * Renders both the top canvas and the secondary container canvas. + * @return {fabric.Canvas} instance + * @chainable + */ + renderAll: function () { + if (this.contextTopDirty && !this._groupSelector && !this.isDrawingMode) { + this.clearContext(this.contextTop); + this.contextTopDirty = false; + } + if (this.hasLostContext) { + this.renderTopLayer(this.contextTop); + } + var canvasToDrawOn = this.contextContainer; + this.renderCanvas(canvasToDrawOn, this._chooseObjectsToRender()); + return this; + }, + + renderTopLayer: function(ctx) { + ctx.save(); + if (this.isDrawingMode && this._isCurrentlyDrawing) { + this.freeDrawingBrush && this.freeDrawingBrush._render(); + this.contextTopDirty = true; + } + // we render the top context - last object + if (this.selection && this._groupSelector) { + this._drawSelection(ctx); + this.contextTopDirty = true; + } + ctx.restore(); + }, + + /** + * Method to render only the top canvas. + * Also used to render the group selection box. + * @return {fabric.Canvas} thisArg + * @chainable + */ + renderTop: function () { + var ctx = this.contextTop; + this.clearContext(ctx); + this.renderTopLayer(ctx); + this.fire('after:render'); + return this; + }, + + /** + * Resets the current transform to its original values and chooses the type of resizing based on the event + * @private + */ + _resetCurrentTransform: function() { + var t = this._currentTransform; + + t.target.set({ + scaleX: t.original.scaleX, + scaleY: t.original.scaleY, + skewX: t.original.skewX, + skewY: t.original.skewY, + left: t.original.left, + top: t.original.top + }); + + if (this._shouldCenterTransform(t.target)) { + if (t.originX !== 'center') { + if (t.originX === 'right') { + t.mouseXSign = -1; + } + else { + t.mouseXSign = 1; + } + } + if (t.originY !== 'center') { + if (t.originY === 'bottom') { + t.mouseYSign = -1; + } + else { + t.mouseYSign = 1; + } + } + + t.originX = 'center'; + t.originY = 'center'; + } + else { + t.originX = t.original.originX; + t.originY = t.original.originY; + } + }, + + /** + * Checks if point is contained within an area of given object + * @param {Event} e Event object + * @param {fabric.Object} target Object to test against + * @param {Object} [point] x,y object of point coordinates we want to check. + * @return {Boolean} true if point is contained within an area of given object + */ + containsPoint: function (e, target, point) { + var ignoreZoom = true, + pointer = point || this.getPointer(e, ignoreZoom), + xy; + + if (target.group && target.group === this._activeObject && target.group.type === 'activeSelection') { + xy = this._normalizePointer(target.group, pointer); + } + else { + xy = { x: pointer.x, y: pointer.y }; + } + // http://www.geog.ubc.ca/courses/klink/gis.notes/ncgia/u32.html + // http://idav.ucdavis.edu/~okreylos/TAship/Spring2000/PointInPolygon.html + return (target.containsPoint(xy) || target._findTargetCorner(pointer)); + }, + + /** + * @private + */ + _normalizePointer: function (object, pointer) { + var m = object.calcTransformMatrix(), + invertedM = fabric.util.invertTransform(m), + vptPointer = this.restorePointerVpt(pointer); + return fabric.util.transformPoint(vptPointer, invertedM); + }, + + /** + * Returns true if object is transparent at a certain location + * @param {fabric.Object} target Object to check + * @param {Number} x Left coordinate + * @param {Number} y Top coordinate + * @return {Boolean} + */ + isTargetTransparent: function (target, x, y) { + // in case the target is the activeObject, we cannot execute this optimization + // because we need to draw controls too. + if (target.shouldCache() && target._cacheCanvas && target !== this._activeObject) { + var normalizedPointer = this._normalizePointer(target, {x: x, y: y}), + targetRelativeX = Math.max(target.cacheTranslationX + (normalizedPointer.x * target.zoomX), 0), + targetRelativeY = Math.max(target.cacheTranslationY + (normalizedPointer.y * target.zoomY), 0); + + var isTransparent = fabric.util.isTransparent( + target._cacheContext, Math.round(targetRelativeX), Math.round(targetRelativeY), this.targetFindTolerance); + + return isTransparent; + } + + var ctx = this.contextCache, + originalColor = target.selectionBackgroundColor, v = this.viewportTransform; + + target.selectionBackgroundColor = ''; + + this.clearContext(ctx); + + ctx.save(); + ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); + target.render(ctx); + ctx.restore(); + + target === this._activeObject && target._renderControls(ctx, { + hasBorders: false, + transparentCorners: false + }, { + hasBorders: false, + }); + + target.selectionBackgroundColor = originalColor; + + var isTransparent = fabric.util.isTransparent( + ctx, x, y, this.targetFindTolerance); + + return isTransparent; + }, + + /** + * takes an event and determins if selection key has been pressed + * @private + * @param {Event} e Event object + */ + _isSelectionKeyPressed: function(e) { + var selectionKeyPressed = false; + + if (Object.prototype.toString.call(this.selectionKey) === '[object Array]') { + selectionKeyPressed = !!this.selectionKey.find(function(key) { return e[key] === true; }); + } + else { + selectionKeyPressed = e[this.selectionKey]; + } + + return selectionKeyPressed; + }, + + /** + * @private + * @param {Event} e Event object + * @param {fabric.Object} target + */ + _shouldClearSelection: function (e, target) { + var activeObjects = this.getActiveObjects(), + activeObject = this._activeObject; + + return ( + !target + || + (target && + activeObject && + activeObjects.length > 1 && + activeObjects.indexOf(target) === -1 && + activeObject !== target && + !this._isSelectionKeyPressed(e)) + || + (target && !target.evented) + || + (target && + !target.selectable && + activeObject && + activeObject !== target) + ); + }, + + /** + * centeredScaling from object can't override centeredScaling from canvas. + * this should be fixed, since object setting should take precedence over canvas. + * @private + * @param {fabric.Object} target + */ + _shouldCenterTransform: function (target) { + if (!target) { + return; + } + + var t = this._currentTransform, + centerTransform; + + if (t.action === 'scale' || t.action === 'scaleX' || t.action === 'scaleY') { + centerTransform = this.centeredScaling || target.centeredScaling; + } + else if (t.action === 'rotate') { + centerTransform = this.centeredRotation || target.centeredRotation; + } + + return centerTransform ? !t.altKey : t.altKey; + }, + + /** + * @private + */ + _getOriginFromCorner: function(target, corner) { + var origin = { + x: target.originX, + y: target.originY + }; + + if (corner === 'ml' || corner === 'tl' || corner === 'bl') { + origin.x = 'right'; + } + else if (corner === 'mr' || corner === 'tr' || corner === 'br') { + origin.x = 'left'; + } + + if (corner === 'tl' || corner === 'mt' || corner === 'tr') { + origin.y = 'bottom'; + } + else if (corner === 'bl' || corner === 'mb' || corner === 'br') { + origin.y = 'top'; + } + + return origin; + }, + + /** + * @private + * @param {Boolean} alreadySelected true if target is already selected + * @param {String} corner a string representing the corner ml, mr, tl ... + * @param {Event} e Event object + * @param {fabric.Object} [target] inserted back to help overriding. Unused + */ + _getActionFromCorner: function(alreadySelected, corner, e /* target */) { + if (!corner || !alreadySelected) { + return 'drag'; + } + + switch (corner) { + case 'mtr': + return 'rotate'; + case 'ml': + case 'mr': + return e[this.altActionKey] ? 'skewY' : 'scaleX'; + case 'mt': + case 'mb': + return e[this.altActionKey] ? 'skewX' : 'scaleY'; + default: + return 'scale'; + } + }, + + /** + * @private + * @param {Event} e Event object + * @param {fabric.Object} target + */ + _setupCurrentTransform: function (e, target, alreadySelected) { + if (!target) { + return; + } + + var pointer = this.getPointer(e), + corner = target._findTargetCorner(this.getPointer(e, true)), + action = this._getActionFromCorner(alreadySelected, corner, e, target), + origin = this._getOriginFromCorner(target, corner); + + this._currentTransform = { + target: target, + action: action, + corner: corner, + scaleX: target.scaleX, + scaleY: target.scaleY, + skewX: target.skewX, + skewY: target.skewY, + // used by transation + offsetX: pointer.x - target.left, + offsetY: pointer.y - target.top, + originX: origin.x, + originY: origin.y, + ex: pointer.x, + ey: pointer.y, + lastX: pointer.x, + lastY: pointer.y, + // unsure they are usefull anymore. + // left: target.left, + // top: target.top, + theta: degreesToRadians(target.angle), + // end of unsure + width: target.width * target.scaleX, + mouseXSign: 1, + mouseYSign: 1, + shiftKey: e.shiftKey, + altKey: e[this.centeredKey], + original: fabric.util.saveObjectTransform(target), + }; + + this._currentTransform.original.originX = origin.x; + this._currentTransform.original.originY = origin.y; + + this._resetCurrentTransform(); + this._beforeTransform(e); + }, + + /** + * Translates object by "setting" its left/top + * @private + * @param {Number} x pointer's x coordinate + * @param {Number} y pointer's y coordinate + * @return {Boolean} true if the translation occurred + */ + _translateObject: function (x, y) { + var transform = this._currentTransform, + target = transform.target, + newLeft = x - transform.offsetX, + newTop = y - transform.offsetY, + moveX = !target.get('lockMovementX') && target.left !== newLeft, + moveY = !target.get('lockMovementY') && target.top !== newTop; + + moveX && target.set('left', newLeft); + moveY && target.set('top', newTop); + return moveX || moveY; + }, + + /** + * Check if we are increasing a positive skew or lower it, + * checking mouse direction and pressed corner. + * @private + */ + _changeSkewTransformOrigin: function(mouseMove, t, by) { + var property = 'originX', origins = { 0: 'center' }, + skew = t.target.skewX, originA = 'left', originB = 'right', + corner = t.corner === 'mt' || t.corner === 'ml' ? 1 : -1, + flipSign = 1; + + mouseMove = mouseMove > 0 ? 1 : -1; + if (by === 'y') { + skew = t.target.skewY; + originA = 'top'; + originB = 'bottom'; + property = 'originY'; + } + origins[-1] = originA; + origins[1] = originB; + + t.target.flipX && (flipSign *= -1); + t.target.flipY && (flipSign *= -1); + + if (skew === 0) { + t.skewSign = -corner * mouseMove * flipSign; + t[property] = origins[-mouseMove]; + } + else { + skew = skew > 0 ? 1 : -1; + t.skewSign = skew; + t[property] = origins[skew * corner * flipSign]; + } + }, + + /** + * Skew object by mouse events + * @private + * @param {Number} x pointer's x coordinate + * @param {Number} y pointer's y coordinate + * @param {String} by Either 'x' or 'y' + * @return {Boolean} true if the skewing occurred + */ + _skewObject: function (x, y, by) { + var t = this._currentTransform, + target = t.target, skewed = false, + lockSkewingX = target.get('lockSkewingX'), + lockSkewingY = target.get('lockSkewingY'); + + if ((lockSkewingX && by === 'x') || (lockSkewingY && by === 'y')) { + return false; + } + + // Get the constraint point + var center = target.getCenterPoint(), + actualMouseByCenter = target.toLocalPoint(new fabric.Point(x, y), 'center', 'center')[by], + lastMouseByCenter = target.toLocalPoint(new fabric.Point(t.lastX, t.lastY), 'center', 'center')[by], + actualMouseByOrigin, constraintPosition, dim = target._getTransformedDimensions(); + + this._changeSkewTransformOrigin(actualMouseByCenter - lastMouseByCenter, t, by); + actualMouseByOrigin = target.toLocalPoint(new fabric.Point(x, y), t.originX, t.originY)[by]; + constraintPosition = target.translateToOriginPoint(center, t.originX, t.originY); + // Actually skew the object + skewed = this._setObjectSkew(actualMouseByOrigin, t, by, dim); + t.lastX = x; + t.lastY = y; + // Make sure the constraints apply + target.setPositionByOrigin(constraintPosition, t.originX, t.originY); + return skewed; + }, + + /** + * Set object skew + * @private + * @return {Boolean} true if the skewing occurred + */ + _setObjectSkew: function(localMouse, transform, by, _dim) { + var target = transform.target, newValue, skewed = false, + skewSign = transform.skewSign, newDim, dimNoSkew, + otherBy, _otherBy, _by, newDimMouse, skewX, skewY; + + if (by === 'x') { + otherBy = 'y'; + _otherBy = 'Y'; + _by = 'X'; + skewX = 0; + skewY = target.skewY; + } + else { + otherBy = 'x'; + _otherBy = 'X'; + _by = 'Y'; + skewX = target.skewX; + skewY = 0; + } + + dimNoSkew = target._getTransformedDimensions(skewX, skewY); + newDimMouse = 2 * Math.abs(localMouse) - dimNoSkew[by]; + if (newDimMouse <= 2) { + newValue = 0; + } + else { + newValue = skewSign * Math.atan((newDimMouse / target['scale' + _by]) / + (dimNoSkew[otherBy] / target['scale' + _otherBy])); + newValue = fabric.util.radiansToDegrees(newValue); + } + skewed = target['skew' + _by] !== newValue; + target.set('skew' + _by, newValue); + if (target['skew' + _otherBy] !== 0) { + newDim = target._getTransformedDimensions(); + newValue = (_dim[otherBy] / newDim[otherBy]) * target['scale' + _otherBy]; + target.set('scale' + _otherBy, newValue); + } + return skewed; + }, + + /** + * Scales object by invoking its scaleX/scaleY methods + * @private + * @param {Number} x pointer's x coordinate + * @param {Number} y pointer's y coordinate + * @param {String} by Either 'x' or 'y' - specifies dimension constraint by which to scale an object. + * When not provided, an object is scaled by both dimensions equally + * @return {Boolean} true if the scaling occurred + */ + _scaleObject: function (x, y, by) { + var t = this._currentTransform, + target = t.target, + lockScalingX = target.lockScalingX, + lockScalingY = target.lockScalingY, + lockScalingFlip = target.lockScalingFlip; + + if (lockScalingX && lockScalingY) { + return false; + } + + // Get the constraint point + var constraintPosition = target.translateToOriginPoint(target.getCenterPoint(), t.originX, t.originY), + localMouse = target.toLocalPoint(new fabric.Point(x, y), t.originX, t.originY), + dim = target._getTransformedDimensions(), scaled = false; + + this._setLocalMouse(localMouse, t); + + // Actually scale the object + scaled = this._setObjectScale(localMouse, t, lockScalingX, lockScalingY, by, lockScalingFlip, dim); + + // Make sure the constraints apply + target.setPositionByOrigin(constraintPosition, t.originX, t.originY); + return scaled; + }, + + /** + * @private + * @return {Boolean} true if the scaling occurred + */ + _setObjectScale: function(localMouse, transform, lockScalingX, lockScalingY, by, lockScalingFlip, _dim) { + var target = transform.target, forbidScalingX = false, forbidScalingY = false, scaled = false, + scaleX = localMouse.x * target.scaleX / _dim.x, + scaleY = localMouse.y * target.scaleY / _dim.y, + changeX = target.scaleX !== scaleX, + changeY = target.scaleY !== scaleY; + + transform.newScaleX = scaleX; + transform.newScaleY = scaleY; + if (fabric.Textbox && by === 'x' && target instanceof fabric.Textbox) { + var w = target.width * (localMouse.x / _dim.x); + if (w >= target.getMinWidth()) { + scaled = w !== target.width; + target.set('width', w); + return scaled; + } + return false; + } + + if (lockScalingFlip && scaleX <= 0 && scaleX < target.scaleX) { + forbidScalingX = true; + localMouse.x = 0; + } + + if (lockScalingFlip && scaleY <= 0 && scaleY < target.scaleY) { + forbidScalingY = true; + localMouse.y = 0; + } + + if (by === 'equally' && !lockScalingX && !lockScalingY) { + scaled = this._scaleObjectEqually(localMouse, target, transform, _dim); + } + else if (!by) { + forbidScalingX || lockScalingX || (target.set('scaleX', scaleX) && (scaled = scaled || changeX)); + forbidScalingY || lockScalingY || (target.set('scaleY', scaleY) && (scaled = scaled || changeY)); + } + else if (by === 'x' && !target.get('lockUniScaling')) { + forbidScalingX || lockScalingX || (target.set('scaleX', scaleX) && (scaled = changeX)); + } + else if (by === 'y' && !target.get('lockUniScaling')) { + forbidScalingY || lockScalingY || (target.set('scaleY', scaleY) && (scaled = changeY)); + } + forbidScalingX || forbidScalingY || this._flipObject(transform, by); + return scaled; + }, + + /** + * @private + * @return {Boolean} true if the scaling occurred + */ + _scaleObjectEqually: function(localMouse, target, transform, _dim) { + + var dist = localMouse.y + localMouse.x, + lastDist = _dim.y * transform.original.scaleY / target.scaleY + + _dim.x * transform.original.scaleX / target.scaleX, + scaled, signX = localMouse.x < 0 ? -1 : 1, + signY = localMouse.y < 0 ? -1 : 1, newScaleX, newScaleY; + + // We use transform.scaleX/Y instead of target.scaleX/Y + // because the object may have a min scale and we'll loose the proportions + newScaleX = signX * Math.abs(transform.original.scaleX * dist / lastDist); + newScaleY = signY * Math.abs(transform.original.scaleY * dist / lastDist); + scaled = newScaleX !== target.scaleX || newScaleY !== target.scaleY; + target.set('scaleX', newScaleX); + target.set('scaleY', newScaleY); + return scaled; + }, + + /** + * @private + */ + _flipObject: function(transform, by) { + if (transform.newScaleX < 0 && by !== 'y') { + if (transform.originX === 'left') { + transform.originX = 'right'; + } + else if (transform.originX === 'right') { + transform.originX = 'left'; + } + } + + if (transform.newScaleY < 0 && by !== 'x') { + if (transform.originY === 'top') { + transform.originY = 'bottom'; + } + else if (transform.originY === 'bottom') { + transform.originY = 'top'; + } + } + }, + + /** + * @private + */ + _setLocalMouse: function(localMouse, t) { + var target = t.target, zoom = this.getZoom(), + padding = target.padding / zoom; + + if (t.originX === 'right') { + localMouse.x *= -1; + } + else if (t.originX === 'center') { + localMouse.x *= t.mouseXSign * 2; + if (localMouse.x < 0) { + t.mouseXSign = -t.mouseXSign; + } + } + + if (t.originY === 'bottom') { + localMouse.y *= -1; + } + else if (t.originY === 'center') { + localMouse.y *= t.mouseYSign * 2; + if (localMouse.y < 0) { + t.mouseYSign = -t.mouseYSign; + } + } + + // adjust the mouse coordinates when dealing with padding + if (abs(localMouse.x) > padding) { + if (localMouse.x < 0) { + localMouse.x += padding; + } + else { + localMouse.x -= padding; + } + } + else { // mouse is within the padding, set to 0 + localMouse.x = 0; + } + + if (abs(localMouse.y) > padding) { + if (localMouse.y < 0) { + localMouse.y += padding; + } + else { + localMouse.y -= padding; + } + } + else { + localMouse.y = 0; + } + }, + + /** + * Rotates object by invoking its rotate method + * @private + * @param {Number} x pointer's x coordinate + * @param {Number} y pointer's y coordinate + * @return {Boolean} true if the rotation occurred + */ + _rotateObject: function (x, y) { + + var t = this._currentTransform, + target = t.target, constraintPosition, + constraintPosition = target.translateToOriginPoint(target.getCenterPoint(), t.originX, t.originY); + + if (target.lockRotation) { + return false; + } + + var lastAngle = atan2(t.ey - constraintPosition.y, t.ex - constraintPosition.x), + curAngle = atan2(y - constraintPosition.y, x - constraintPosition.x), + angle = radiansToDegrees(curAngle - lastAngle + t.theta), + hasRotated = true; + + if (target.snapAngle > 0) { + var snapAngle = target.snapAngle, + snapThreshold = target.snapThreshold || snapAngle, + rightAngleLocked = Math.ceil(angle / snapAngle) * snapAngle, + leftAngleLocked = Math.floor(angle / snapAngle) * snapAngle; + + if (Math.abs(angle - leftAngleLocked) < snapThreshold) { + angle = leftAngleLocked; + } + else if (Math.abs(angle - rightAngleLocked) < snapThreshold) { + angle = rightAngleLocked; + } + } + + // normalize angle to positive value + if (angle < 0) { + angle = 360 + angle; + } + angle %= 360; + + if (target.angle === angle) { + hasRotated = false; + } + else { + // rotation only happen here + target.angle = angle; + // Make sure the constraints apply + target.setPositionByOrigin(constraintPosition, t.originX, t.originY); + } + + return hasRotated; + }, + + /** + * Set the cursor type of the canvas element + * @param {String} value Cursor type of the canvas element. + * @see http://www.w3.org/TR/css3-ui/#cursor + */ + setCursor: function (value) { + this.upperCanvasEl.style.cursor = value; + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx to draw the selection on + */ + _drawSelection: function (ctx) { + var groupSelector = this._groupSelector, + left = groupSelector.left, + top = groupSelector.top, + aleft = abs(left), + atop = abs(top); + + if (this.selectionColor) { + ctx.fillStyle = this.selectionColor; + + ctx.fillRect( + groupSelector.ex - ((left > 0) ? 0 : -left), + groupSelector.ey - ((top > 0) ? 0 : -top), + aleft, + atop + ); + } + + if (!this.selectionLineWidth || !this.selectionBorderColor) { + return; + } + ctx.lineWidth = this.selectionLineWidth; + ctx.strokeStyle = this.selectionBorderColor; + + // selection border + if (this.selectionDashArray.length > 1 && !supportLineDash) { + + var px = groupSelector.ex + STROKE_OFFSET - ((left > 0) ? 0 : aleft), + py = groupSelector.ey + STROKE_OFFSET - ((top > 0) ? 0 : atop); + + ctx.beginPath(); + + fabric.util.drawDashedLine(ctx, px, py, px + aleft, py, this.selectionDashArray); + fabric.util.drawDashedLine(ctx, px, py + atop - 1, px + aleft, py + atop - 1, this.selectionDashArray); + fabric.util.drawDashedLine(ctx, px, py, px, py + atop, this.selectionDashArray); + fabric.util.drawDashedLine(ctx, px + aleft - 1, py, px + aleft - 1, py + atop, this.selectionDashArray); + + ctx.closePath(); + ctx.stroke(); + } + else { + fabric.Object.prototype._setLineDash.call(this, ctx, this.selectionDashArray); + ctx.strokeRect( + groupSelector.ex + STROKE_OFFSET - ((left > 0) ? 0 : aleft), + groupSelector.ey + STROKE_OFFSET - ((top > 0) ? 0 : atop), + aleft, + atop + ); + } + }, + + /** + * Method that determines what object we are clicking on + * the skipGroup parameter is for internal use, is needed for shift+click action + * 11/09/2018 TODO: would be cool if findTarget could discern between being a full target + * or the outside part of the corner. + * @param {Event} e mouse event + * @param {Boolean} skipGroup when true, activeGroup is skipped and only objects are traversed through + * @return {fabric.Object} the target found + */ + findTarget: function (e, skipGroup) { + if (this.skipTargetFind) { + return; + } + + var ignoreZoom = true, + pointer = this.getPointer(e, ignoreZoom), + activeObject = this._activeObject, + aObjects = this.getActiveObjects(), + activeTarget, activeTargetSubs; + + // first check current group (if one exists) + // active group does not check sub targets like normal groups. + // if active group just exits. + this.targets = []; + + if (aObjects.length > 1 && !skipGroup && activeObject === this._searchPossibleTargets([activeObject], pointer)) { + return activeObject; + } + // if we hit the corner of an activeObject, let's return that. + if (aObjects.length === 1 && activeObject._findTargetCorner(pointer)) { + return activeObject; + } + if (aObjects.length === 1 && + activeObject === this._searchPossibleTargets([activeObject], pointer)) { + if (!this.preserveObjectStacking) { + return activeObject; + } + else { + activeTarget = activeObject; + activeTargetSubs = this.targets; + this.targets = []; + } + } + var target = this._searchPossibleTargets(this._objects, pointer); + if (e[this.altSelectionKey] && target && activeTarget && target !== activeTarget) { + target = activeTarget; + this.targets = activeTargetSubs; + } + return target; + }, + + /** + * Checks point is inside the object. + * @param {Object} [pointer] x,y object of point coordinates we want to check. + * @param {fabric.Object} obj Object to test against + * @param {Object} [globalPointer] x,y object of point coordinates relative to canvas used to search per pixel target. + * @return {Boolean} true if point is contained within an area of given object + * @private + */ + _checkTarget: function(pointer, obj, globalPointer) { + if (obj && + obj.visible && + obj.evented && + this.containsPoint(null, obj, pointer)){ + if ((this.perPixelTargetFind || obj.perPixelTargetFind) && !obj.isEditing) { + var isTransparent = this.isTargetTransparent(obj, globalPointer.x, globalPointer.y); + if (!isTransparent) { + return true; + } + } + else { + return true; + } + } + }, + + /** + * Function used to search inside objects an object that contains pointer in bounding box or that contains pointerOnCanvas when painted + * @param {Array} [objects] objects array to look into + * @param {Object} [pointer] x,y object of point coordinates we want to check. + * @return {fabric.Object} object that contains pointer + * @private + */ + _searchPossibleTargets: function(objects, pointer) { + // Cache all targets where their bounding box contains point. + var target, i = objects.length, subTarget; + // Do not check for currently grouped objects, since we check the parent group itself. + // until we call this function specifically to search inside the activeGroup + while (i--) { + var objToCheck = objects[i]; + var pointerToUse = objToCheck.group && objToCheck.group.type !== 'activeSelection' ? + this._normalizePointer(objToCheck.group, pointer) : pointer; + if (this._checkTarget(pointerToUse, objToCheck, pointer)) { + target = objects[i]; + if (target.subTargetCheck && target instanceof fabric.Group) { + subTarget = this._searchPossibleTargets(target._objects, pointer); + subTarget && this.targets.push(subTarget); + } + break; + } + } + return target; + }, + + /** + * Returns pointer coordinates without the effect of the viewport + * @param {Object} pointer with "x" and "y" number values + * @return {Object} object with "x" and "y" number values + */ + restorePointerVpt: function(pointer) { + return fabric.util.transformPoint( + pointer, + fabric.util.invertTransform(this.viewportTransform) + ); + }, + + /** + * Returns pointer coordinates relative to canvas. + * Can return coordinates with or without viewportTransform. + * ignoreZoom false gives back coordinates that represent + * the point clicked on canvas element. + * ignoreZoom true gives back coordinates after being processed + * by the viewportTransform ( sort of coordinates of what is displayed + * on the canvas where you are clicking. + * ignoreZoom true = HTMLElement coordinates relative to top,left + * ignoreZoom false, default = fabric space coordinates, the same used for shape position + * To interact with your shapes top and left you want to use ignoreZoom true + * most of the time, while ignoreZoom false will give you coordinates + * compatible with the object.oCoords system. + * of the time. + * @param {Event} e + * @param {Boolean} ignoreZoom + * @return {Object} object with "x" and "y" number values + */ + getPointer: function (e, ignoreZoom) { + // return cached values if we are in the event processing chain + if (this._absolutePointer && !ignoreZoom) { + return this._absolutePointer; + } + if (this._pointer && ignoreZoom) { + return this._pointer; + } + + var pointer = getPointer(e), + upperCanvasEl = this.upperCanvasEl, + bounds = upperCanvasEl.getBoundingClientRect(), + boundsWidth = bounds.width || 0, + boundsHeight = bounds.height || 0, + cssScale; + + if (!boundsWidth || !boundsHeight ) { + if ('top' in bounds && 'bottom' in bounds) { + boundsHeight = Math.abs( bounds.top - bounds.bottom ); + } + if ('right' in bounds && 'left' in bounds) { + boundsWidth = Math.abs( bounds.right - bounds.left ); + } + } + + this.calcOffset(); + pointer.x = pointer.x - this._offset.left; + pointer.y = pointer.y - this._offset.top; + if (!ignoreZoom) { + pointer = this.restorePointerVpt(pointer); + } + + var retinaScaling = this.getRetinaScaling(); + if (retinaScaling !== 1) { + pointer.x /= retinaScaling; + pointer.y /= retinaScaling; + } + + if (boundsWidth === 0 || boundsHeight === 0) { + // If bounds are not available (i.e. not visible), do not apply scale. + cssScale = { width: 1, height: 1 }; + } + else { + cssScale = { + width: upperCanvasEl.width / boundsWidth, + height: upperCanvasEl.height / boundsHeight + }; + } + + return { + x: pointer.x * cssScale.width, + y: pointer.y * cssScale.height + }; + }, + + /** + * @private + * @throws {CANVAS_INIT_ERROR} If canvas can not be initialized + */ + _createUpperCanvas: function () { + var lowerCanvasClass = this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/, ''), + lowerCanvasEl = this.lowerCanvasEl, upperCanvasEl = this.upperCanvasEl; + + // there is no need to create a new upperCanvas element if we have already one. + if (upperCanvasEl) { + upperCanvasEl.className = ''; + } + else { + upperCanvasEl = this._createCanvasElement(); + this.upperCanvasEl = upperCanvasEl; + } + fabric.util.addClass(upperCanvasEl, 'upper-canvas ' + lowerCanvasClass); + + this.wrapperEl.appendChild(upperCanvasEl); + + this._copyCanvasStyle(lowerCanvasEl, upperCanvasEl); + this._applyCanvasStyle(upperCanvasEl); + this.contextTop = upperCanvasEl.getContext('2d'); + }, + + /** + * @private + */ + _createCacheCanvas: function () { + this.cacheCanvasEl = this._createCanvasElement(); + this.cacheCanvasEl.setAttribute('width', this.width); + this.cacheCanvasEl.setAttribute('height', this.height); + this.contextCache = this.cacheCanvasEl.getContext('2d'); + }, + + /** + * @private + */ + _initWrapperElement: function () { + this.wrapperEl = fabric.util.wrapElement(this.lowerCanvasEl, 'div', { + 'class': this.containerClass + }); + fabric.util.setStyle(this.wrapperEl, { + width: this.width + 'px', + height: this.height + 'px', + position: 'relative' + }); + fabric.util.makeElementUnselectable(this.wrapperEl); + }, + + /** + * @private + * @param {HTMLElement} element canvas element to apply styles on + */ + _applyCanvasStyle: function (element) { + var width = this.width || element.width, + height = this.height || element.height; + + fabric.util.setStyle(element, { + position: 'absolute', + width: width + 'px', + height: height + 'px', + left: 0, + top: 0, + 'touch-action': this.allowTouchScrolling ? 'manipulation' : 'none', + '-ms-touch-action': this.allowTouchScrolling ? 'manipulation' : 'none' + }); + element.width = width; + element.height = height; + fabric.util.makeElementUnselectable(element); + }, + + /** + * Copy the entire inline style from one element (fromEl) to another (toEl) + * @private + * @param {Element} fromEl Element style is copied from + * @param {Element} toEl Element copied style is applied to + */ + _copyCanvasStyle: function (fromEl, toEl) { + toEl.style.cssText = fromEl.style.cssText; + }, + + /** + * Returns context of canvas where object selection is drawn + * @return {CanvasRenderingContext2D} + */ + getSelectionContext: function() { + return this.contextTop; + }, + + /** + * Returns <canvas> element on which object selection is drawn + * @return {HTMLCanvasElement} + */ + getSelectionElement: function () { + return this.upperCanvasEl; + }, + + /** + * Returns currently active object + * @return {fabric.Object} active object + */ + getActiveObject: function () { + return this._activeObject; + }, + + /** + * Returns an array with the current selected objects + * @return {fabric.Object} active object + */ + getActiveObjects: function () { + var active = this._activeObject; + if (active) { + if (active.type === 'activeSelection' && active._objects) { + return active._objects.slice(0); + } + else { + return [active]; + } + } + return []; + }, + + /** + * @private + * @param {fabric.Object} obj Object that was removed + */ + _onObjectRemoved: function(obj) { + // removing active object should fire "selection:cleared" events + if (obj === this._activeObject) { + this.fire('before:selection:cleared', { target: obj }); + this._discardActiveObject(); + this.fire('selection:cleared', { target: obj }); + obj.fire('deselected'); + } + if (obj === this._hoveredTarget){ + this._hoveredTarget = null; + this._hoveredTargets = []; + } + this.callSuper('_onObjectRemoved', obj); + }, + + /** + * @private + * Compares the old activeObject with the current one and fires correct events + * @param {fabric.Object} obj old activeObject + */ + _fireSelectionEvents: function(oldObjects, e) { + var somethingChanged = false, objects = this.getActiveObjects(), + added = [], removed = [], opt = { e: e }; + oldObjects.forEach(function(oldObject) { + if (objects.indexOf(oldObject) === -1) { + somethingChanged = true; + oldObject.fire('deselected', opt); + removed.push(oldObject); + } + }); + objects.forEach(function(object) { + if (oldObjects.indexOf(object) === -1) { + somethingChanged = true; + object.fire('selected', opt); + added.push(object); + } + }); + if (oldObjects.length > 0 && objects.length > 0) { + opt.selected = added; + opt.deselected = removed; + // added for backward compatibility + opt.updated = added[0] || removed[0]; + opt.target = this._activeObject; + somethingChanged && this.fire('selection:updated', opt); + } + else if (objects.length > 0) { + // deprecated event + if (objects.length === 1) { + opt.target = added[0]; + this.fire('object:selected', opt); + } + opt.selected = added; + // added for backward compatibility + opt.target = this._activeObject; + this.fire('selection:created', opt); + } + else if (oldObjects.length > 0) { + opt.deselected = removed; + this.fire('selection:cleared', opt); + } + }, + + /** + * Sets given object as the only active object on canvas + * @param {fabric.Object} object Object to set as an active one + * @param {Event} [e] Event (passed along when firing "object:selected") + * @return {fabric.Canvas} thisArg + * @chainable + */ + setActiveObject: function (object, e) { + var currentActives = this.getActiveObjects(); + this._setActiveObject(object, e); + this._fireSelectionEvents(currentActives, e); + return this; + }, + + /** + * @private + * @param {Object} object to set as active + * @param {Event} [e] Event (passed along when firing "object:selected") + * @return {Boolean} true if the selection happened + */ + _setActiveObject: function(object, e) { + if (this._activeObject === object) { + return false; + } + if (!this._discardActiveObject(e, object)) { + return false; + } + if (object.onSelect({ e: e })) { + return false; + } + this._activeObject = object; + return true; + }, + + /** + * @private + */ + _discardActiveObject: function(e, object) { + var obj = this._activeObject; + if (obj) { + // onDeselect return TRUE to cancel selection; + if (obj.onDeselect({ e: e, object: object })) { + return false; + } + this._activeObject = null; + } + return true; + }, + + /** + * Discards currently active object and fire events. If the function is called by fabric + * as a consequence of a mouse event, the event is passed as a parameter and + * sent to the fire function for the custom events. When used as a method the + * e param does not have any application. + * @param {event} e + * @return {fabric.Canvas} thisArg + * @chainable + */ + discardActiveObject: function (e) { + var currentActives = this.getActiveObjects(), activeObject = this.getActiveObject(); + if (currentActives.length) { + this.fire('before:selection:cleared', { target: activeObject, e: e }); + } + this._discardActiveObject(e); + this._fireSelectionEvents(currentActives, e); + return this; + }, + + /** + * Clears a canvas element and removes all event listeners + * @return {fabric.Canvas} thisArg + * @chainable + */ + dispose: function () { + var wrapper = this.wrapperEl; + this.removeListeners(); + wrapper.removeChild(this.upperCanvasEl); + wrapper.removeChild(this.lowerCanvasEl); + this.contextCache = null; + this.contextTop = null; + ['upperCanvasEl', 'cacheCanvasEl'].forEach((function(element) { + fabric.util.cleanUpJsdomNode(this[element]); + this[element] = undefined; + }).bind(this)); + if (wrapper.parentNode) { + wrapper.parentNode.replaceChild(this.lowerCanvasEl, this.wrapperEl); + } + delete this.wrapperEl; + fabric.StaticCanvas.prototype.dispose.call(this); + return this; + }, + + /** + * Clears all contexts (background, main, top) of an instance + * @return {fabric.Canvas} thisArg + * @chainable + */ + clear: function () { + // this.discardActiveGroup(); + this.discardActiveObject(); + this.clearContext(this.contextTop); + return this.callSuper('clear'); + }, + + /** + * Draws objects' controls (borders/controls) + * @param {CanvasRenderingContext2D} ctx Context to render controls on + */ + drawControls: function(ctx) { + var activeObject = this._activeObject; + + if (activeObject) { + activeObject._renderControls(ctx); + } + }, + + /** + * @private + */ + _toObject: function(instance, methodName, propertiesToInclude) { + //If the object is part of the current selection group, it should + //be transformed appropriately + //i.e. it should be serialised as it would appear if the selection group + //were to be destroyed. + var originalProperties = this._realizeGroupTransformOnObject(instance), + object = this.callSuper('_toObject', instance, methodName, propertiesToInclude); + //Undo the damage we did by changing all of its properties + this._unwindGroupTransformOnObject(instance, originalProperties); + return object; + }, + + /** + * Realises an object's group transformation on it + * @private + * @param {fabric.Object} [instance] the object to transform (gets mutated) + * @returns the original values of instance which were changed + */ + _realizeGroupTransformOnObject: function(instance) { + if (instance.group && instance.group.type === 'activeSelection' && this._activeObject === instance.group) { + var layoutProps = ['angle', 'flipX', 'flipY', 'left', 'scaleX', 'scaleY', 'skewX', 'skewY', 'top']; + //Copy all the positionally relevant properties across now + var originalValues = {}; + layoutProps.forEach(function(prop) { + originalValues[prop] = instance[prop]; + }); + this._activeObject.realizeTransform(instance); + return originalValues; + } + else { + return null; + } + }, + + /** + * Restores the changed properties of instance + * @private + * @param {fabric.Object} [instance] the object to un-transform (gets mutated) + * @param {Object} [originalValues] the original values of instance, as returned by _realizeGroupTransformOnObject + */ + _unwindGroupTransformOnObject: function(instance, originalValues) { + if (originalValues) { + instance.set(originalValues); + } + }, + + /** + * @private + */ + _setSVGObject: function(markup, instance, reviver) { + //If the object is in a selection group, simulate what would happen to that + //object when the group is deselected + var originalProperties = this._realizeGroupTransformOnObject(instance); + this.callSuper('_setSVGObject', markup, instance, reviver); + this._unwindGroupTransformOnObject(instance, originalProperties); + }, + + setViewportTransform: function (vpt) { + if (this.renderOnAddRemove && this._activeObject && this._activeObject.isEditing) { + this._activeObject.clearContextTop(); + } + fabric.StaticCanvas.prototype.setViewportTransform.call(this, vpt); + } + }); + + // copying static properties manually to work around Opera's bug, + // where "prototype" property is enumerable and overrides existing prototype + for (var prop in fabric.StaticCanvas) { + if (prop !== 'prototype') { + fabric.Canvas[prop] = fabric.StaticCanvas[prop]; + } + } +})(); + + +(function() { + + var cursorOffset = { + mt: 0, // n + tr: 1, // ne + mr: 2, // e + br: 3, // se + mb: 4, // s + bl: 5, // sw + ml: 6, // w + tl: 7 // nw + }, + addListener = fabric.util.addListener, + removeListener = fabric.util.removeListener, + RIGHT_CLICK = 3, MIDDLE_CLICK = 2, LEFT_CLICK = 1, + addEventOptions = { passive: false }; + + function checkClick(e, value) { + return e.button && (e.button === value - 1); + } + + fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ { + + /** + * Map of cursor style values for each of the object controls + * @private + */ + cursorMap: [ + 'n-resize', + 'ne-resize', + 'e-resize', + 'se-resize', + 's-resize', + 'sw-resize', + 'w-resize', + 'nw-resize' + ], + + /** + * Contains the id of the touch event that owns the fabric transform + * @type Number + * @private + */ + mainTouchId: null, + + /** + * Adds mouse listeners to canvas + * @private + */ + _initEventListeners: function () { + // in case we initialized the class twice. This should not happen normally + // but in some kind of applications where the canvas element may be changed + // this is a workaround to having double listeners. + this.removeListeners(); + this._bindEvents(); + this.addOrRemove(addListener, 'add'); + }, + + /** + * return an event prefix pointer or mouse. + * @private + */ + _getEventPrefix: function () { + return this.enablePointerEvents ? 'pointer' : 'mouse'; + }, + + addOrRemove: function(functor, eventjsFunctor) { + var canvasElement = this.upperCanvasEl, + eventTypePrefix = this._getEventPrefix(); + functor(fabric.window, 'resize', this._onResize); + functor(canvasElement, eventTypePrefix + 'down', this._onMouseDown); + functor(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions); + functor(canvasElement, eventTypePrefix + 'out', this._onMouseOut); + functor(canvasElement, eventTypePrefix + 'enter', this._onMouseEnter); + functor(canvasElement, 'wheel', this._onMouseWheel); + functor(canvasElement, 'contextmenu', this._onContextMenu); + functor(canvasElement, 'dblclick', this._onDoubleClick); + functor(canvasElement, 'dragover', this._onDragOver); + functor(canvasElement, 'dragenter', this._onDragEnter); + functor(canvasElement, 'dragleave', this._onDragLeave); + functor(canvasElement, 'drop', this._onDrop); + if (!this.enablePointerEvents) { + functor(canvasElement, 'touchstart', this._onTouchStart, addEventOptions); + } + if (typeof eventjs !== 'undefined' && eventjsFunctor in eventjs) { + eventjs[eventjsFunctor](canvasElement, 'gesture', this._onGesture); + eventjs[eventjsFunctor](canvasElement, 'drag', this._onDrag); + eventjs[eventjsFunctor](canvasElement, 'orientation', this._onOrientationChange); + eventjs[eventjsFunctor](canvasElement, 'shake', this._onShake); + eventjs[eventjsFunctor](canvasElement, 'longpress', this._onLongPress); + } + }, + + /** + * Removes all event listeners + */ + removeListeners: function() { + this.addOrRemove(removeListener, 'remove'); + // if you dispose on a mouseDown, before mouse up, you need to clean document to... + var eventTypePrefix = this._getEventPrefix(); + removeListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp); + removeListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions); + removeListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions); + removeListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions); + }, + + /** + * @private + */ + _bindEvents: function() { + if (this.eventsBound) { + // for any reason we pass here twice we do not want to bind events twice. + return; + } + this._onMouseDown = this._onMouseDown.bind(this); + this._onTouchStart = this._onTouchStart.bind(this); + this._onMouseMove = this._onMouseMove.bind(this); + this._onMouseUp = this._onMouseUp.bind(this); + this._onTouchEnd = this._onTouchEnd.bind(this); + this._onResize = this._onResize.bind(this); + this._onGesture = this._onGesture.bind(this); + this._onDrag = this._onDrag.bind(this); + this._onShake = this._onShake.bind(this); + this._onLongPress = this._onLongPress.bind(this); + this._onOrientationChange = this._onOrientationChange.bind(this); + this._onMouseWheel = this._onMouseWheel.bind(this); + this._onMouseOut = this._onMouseOut.bind(this); + this._onMouseEnter = this._onMouseEnter.bind(this); + this._onContextMenu = this._onContextMenu.bind(this); + this._onDoubleClick = this._onDoubleClick.bind(this); + this._onDragOver = this._onDragOver.bind(this); + this._onDragEnter = this._simpleEventHandler.bind(this, 'dragenter'); + this._onDragLeave = this._simpleEventHandler.bind(this, 'dragleave'); + this._onDrop = this._simpleEventHandler.bind(this, 'drop'); + this.eventsBound = true; + }, + + /** + * @private + * @param {Event} [e] Event object fired on Event.js gesture + * @param {Event} [self] Inner Event object + */ + _onGesture: function(e, self) { + this.__onTransformGesture && this.__onTransformGesture(e, self); + }, + + /** + * @private + * @param {Event} [e] Event object fired on Event.js drag + * @param {Event} [self] Inner Event object + */ + _onDrag: function(e, self) { + this.__onDrag && this.__onDrag(e, self); + }, + + /** + * @private + * @param {Event} [e] Event object fired on wheel event + */ + _onMouseWheel: function(e) { + this.__onMouseWheel(e); + }, + + /** + * @private + * @param {Event} e Event object fired on mousedown + */ + _onMouseOut: function(e) { + var target = this._hoveredTarget; + this.fire('mouse:out', { target: target, e: e }); + this._hoveredTarget = null; + target && target.fire('mouseout', { e: e }); + + var _this = this; + this._hoveredTargets.forEach(function(_target){ + _this.fire('mouse:out', { target: target, e: e }); + _target && target.fire('mouseout', { e: e }); + }); + this._hoveredTargets = []; + + if (this._iTextInstances) { + this._iTextInstances.forEach(function(obj) { + if (obj.isEditing) { + obj.hiddenTextarea.focus(); + } + }); + } + }, + + /** + * @private + * @param {Event} e Event object fired on mouseenter + */ + _onMouseEnter: function(e) { + // This find target and consequent 'mouse:over' is used to + // clear old instances on hovered target. + // calling findTarget has the side effect of killing target.__corner. + // as a short term fix we are not firing this if we are currently transforming. + // as a long term fix we need to separate the action of finding a target with the + // side effects we added to it. + if (!this.currentTransform && !this.findTarget(e)) { + this.fire('mouse:over', { target: null, e: e }); + this._hoveredTarget = null; + this._hoveredTargets = []; + } + }, + + /** + * @private + * @param {Event} [e] Event object fired on Event.js orientation change + * @param {Event} [self] Inner Event object + */ + _onOrientationChange: function(e, self) { + this.__onOrientationChange && this.__onOrientationChange(e, self); + }, + + /** + * @private + * @param {Event} [e] Event object fired on Event.js shake + * @param {Event} [self] Inner Event object + */ + _onShake: function(e, self) { + this.__onShake && this.__onShake(e, self); + }, + + /** + * @private + * @param {Event} [e] Event object fired on Event.js shake + * @param {Event} [self] Inner Event object + */ + _onLongPress: function(e, self) { + this.__onLongPress && this.__onLongPress(e, self); + }, + + /** + * prevent default to allow drop event to be fired + * @private + * @param {Event} [e] Event object fired on Event.js shake + */ + _onDragOver: function(e) { + e.preventDefault(); + var target = this._simpleEventHandler('dragover', e); + this._fireEnterLeaveEvents(target, e); + }, + + /** + * @private + * @param {Event} e Event object fired on mousedown + */ + _onContextMenu: function (e) { + if (this.stopContextMenu) { + e.stopPropagation(); + e.preventDefault(); + } + return false; + }, + + /** + * @private + * @param {Event} e Event object fired on mousedown + */ + _onDoubleClick: function (e) { + this._cacheTransformEventData(e); + this._handleEvent(e, 'dblclick'); + this._resetTransformEventData(e); + }, + + /** + * Return a the id of an event. + * returns either the pointerId or the identifier or 0 for the mouse event + * @private + * @param {Event} evt Event object + */ + getPointerId: function(evt) { + var changedTouches = evt.changedTouches; + + if (changedTouches) { + return changedTouches[0] && changedTouches[0].identifier; + } + + if (this.enablePointerEvents) { + return evt.pointerId; + } + + return -1; + }, + + /** + * Determines if an event has the id of the event that is considered main + * @private + * @param {evt} event Event object + */ + _isMainEvent: function(evt) { + if (evt.isPrimary === true) { + return true; + } + if (evt.isPrimary === false) { + return false; + } + if (evt.type === 'touchend' && evt.touches.length === 0) { + return true; + } + if (evt.changedTouches) { + return evt.changedTouches[0].identifier === this.mainTouchId; + } + return true; + }, + + /** + * @private + * @param {Event} e Event object fired on mousedown + */ + _onTouchStart: function(e) { + e.preventDefault(); + if (this.mainTouchId === null) { + this.mainTouchId = this.getPointerId(e); + } + this.__onMouseDown(e); + this._resetTransformEventData(); + var canvasElement = this.upperCanvasEl, + eventTypePrefix = this._getEventPrefix(); + addListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions); + addListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions); + // Unbind mousedown to prevent double triggers from touch devices + removeListener(canvasElement, eventTypePrefix + 'down', this._onMouseDown); + }, + + /** + * @private + * @param {Event} e Event object fired on mousedown + */ + _onMouseDown: function (e) { + this.__onMouseDown(e); + this._resetTransformEventData(); + var canvasElement = this.upperCanvasEl, + eventTypePrefix = this._getEventPrefix(); + removeListener(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions); + addListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp); + addListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions); + }, + + /** + * @private + * @param {Event} e Event object fired on mousedown + */ + _onTouchEnd: function(e) { + if (e.touches.length > 0) { + // if there are still touches stop here + return; + } + this.__onMouseUp(e); + this._resetTransformEventData(); + this.mainTouchId = null; + var eventTypePrefix = this._getEventPrefix(); + removeListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions); + removeListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions); + var _this = this; + if (this._willAddMouseDown) { + clearTimeout(this._willAddMouseDown); + } + this._willAddMouseDown = setTimeout(function() { + // Wait 400ms before rebinding mousedown to prevent double triggers + // from touch devices + addListener(_this.upperCanvasEl, eventTypePrefix + 'down', _this._onMouseDown); + _this._willAddMouseDown = 0; + }, 400); + }, + + /** + * @private + * @param {Event} e Event object fired on mouseup + */ + _onMouseUp: function (e) { + this.__onMouseUp(e); + this._resetTransformEventData(); + var canvasElement = this.upperCanvasEl, + eventTypePrefix = this._getEventPrefix(); + if (this._isMainEvent(e)) { + removeListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp); + removeListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions); + addListener(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions); + } + }, + + /** + * @private + * @param {Event} e Event object fired on mousemove + */ + _onMouseMove: function (e) { + !this.allowTouchScrolling && e.preventDefault && e.preventDefault(); + this.__onMouseMove(e); + }, + + /** + * @private + */ + _onResize: function () { + this.calcOffset(); + }, + + /** + * Decides whether the canvas should be redrawn in mouseup and mousedown events. + * @private + * @param {Object} target + */ + _shouldRender: function(target) { + var activeObject = this._activeObject; + + if ( + !!activeObject !== !!target || + (activeObject && target && (activeObject !== target)) + ) { + // this covers: switch of target, from target to no target, selection of target + // multiSelection with key and mouse + return true; + } + else if (activeObject && activeObject.isEditing) { + // if we mouse up/down over a editing textbox a cursor change, + // there is no need to re render + return false; + } + return false; + }, + + /** + * Method that defines the actions when mouse is released on canvas. + * The method resets the currentTransform parameters, store the image corner + * position in the image object and render the canvas on top. + * @private + * @param {Event} e Event object fired on mouseup + */ + __onMouseUp: function (e) { + var target, transform = this._currentTransform, + groupSelector = this._groupSelector, shouldRender = false, + isClick = (!groupSelector || (groupSelector.left === 0 && groupSelector.top === 0)); + this._cacheTransformEventData(e); + target = this._target; + this._handleEvent(e, 'up:before'); + // if right/middle click just fire events and return + // target undefined will make the _handleEvent search the target + if (checkClick(e, RIGHT_CLICK)) { + if (this.fireRightClick) { + this._handleEvent(e, 'up', RIGHT_CLICK, isClick); + } + return; + } + + if (checkClick(e, MIDDLE_CLICK)) { + if (this.fireMiddleClick) { + this._handleEvent(e, 'up', MIDDLE_CLICK, isClick); + } + this._resetTransformEventData(); + return; + } + + if (this.isDrawingMode && this._isCurrentlyDrawing) { + this._onMouseUpInDrawingMode(e); + return; + } + + if (!this._isMainEvent(e)) { + return; + } + if (transform) { + this._finalizeCurrentTransform(e); + shouldRender = transform.actionPerformed; + } + + if (!isClick) { + this._maybeGroupObjects(e); + shouldRender || (shouldRender = this._shouldRender(target)); + } + if (target) { + target.isMoving = false; + } + this._setCursorFromEvent(e, target); + this._handleEvent(e, 'up', LEFT_CLICK, isClick); + this._groupSelector = null; + this._currentTransform = null; + // reset the target information about which corner is selected + target && (target.__corner = 0); + if (shouldRender) { + this.requestRenderAll(); + } + else if (!isClick) { + this.renderTop(); + } + }, + + /** + * @private + * Handle event firing for target and subtargets + * @param {Event} e event from mouse + * @param {String} eventType event to fire (up, down or move) + * @return {Fabric.Object} target return the the target found, for internal reasons. + */ + _simpleEventHandler: function(eventType, e) { + var target = this.findTarget(e), + targets = this.targets, + options = { + e: e, + target: target, + subTargets: targets, + }; + this.fire(eventType, options); + target && target.fire(eventType, options); + if (!targets) { + return target; + } + for (var i = 0; i < targets.length; i++) { + targets[i].fire(eventType, options); + } + return target; + }, + + /** + * @private + * Handle event firing for target and subtargets + * @param {Event} e event from mouse + * @param {String} eventType event to fire (up, down or move) + * @param {fabric.Object} targetObj receiving event + * @param {Number} [button] button used in the event 1 = left, 2 = middle, 3 = right + * @param {Boolean} isClick for left button only, indicates that the mouse up happened without move. + */ + _handleEvent: function(e, eventType, button, isClick) { + var target = this._target, + targets = this.targets || [], + options = { + e: e, + target: target, + subTargets: targets, + button: button || LEFT_CLICK, + isClick: isClick || false, + pointer: this._pointer, + absolutePointer: this._absolutePointer, + transform: this._currentTransform + }; + this.fire('mouse:' + eventType, options); + target && target.fire('mouse' + eventType, options); + for (var i = 0; i < targets.length; i++) { + targets[i].fire('mouse' + eventType, options); + } + }, + + /** + * @private + * @param {Event} e send the mouse event that generate the finalize down, so it can be used in the event + */ + _finalizeCurrentTransform: function(e) { + + var transform = this._currentTransform, + target = transform.target, + eventName, + options = { + e: e, + target: target, + transform: transform, + }; + + if (target._scaling) { + target._scaling = false; + } + + target.setCoords(); + + if (transform.actionPerformed || (this.stateful && target.hasStateChanged())) { + if (transform.actionPerformed) { + eventName = this._addEventOptions(options, transform); + this._fire(eventName, options); + } + this._fire('modified', options); + } + }, + + /** + * Mutate option object in order to add by property and give back the event name. + * @private + * @param {Object} options to mutate + * @param {Object} transform to inspect action from + */ + _addEventOptions: function(options, transform) { + // we can probably add more details at low cost + // scale change, rotation changes, translation changes + var eventName, by; + switch (transform.action) { + case 'scaleX': + eventName = 'scaled'; + by = 'x'; + break; + case 'scaleY': + eventName = 'scaled'; + by = 'y'; + break; + case 'skewX': + eventName = 'skewed'; + by = 'x'; + break; + case 'skewY': + eventName = 'skewed'; + by = 'y'; + break; + case 'scale': + eventName = 'scaled'; + by = 'equally'; + break; + case 'rotate': + eventName = 'rotated'; + break; + case 'drag': + eventName = 'moved'; + break; + } + options.by = by; + return eventName; + }, + + /** + * @private + * @param {Event} e Event object fired on mousedown + */ + _onMouseDownInDrawingMode: function(e) { + this._isCurrentlyDrawing = true; + if (this.getActiveObject()) { + this.discardActiveObject(e).requestRenderAll(); + } + if (this.clipTo) { + fabric.util.clipContext(this, this.contextTop); + } + var pointer = this.getPointer(e); + this.freeDrawingBrush.onMouseDown(pointer, { e: e, pointer: pointer }); + this._handleEvent(e, 'down'); + }, + + /** + * @private + * @param {Event} e Event object fired on mousemove + */ + _onMouseMoveInDrawingMode: function(e) { + if (this._isCurrentlyDrawing) { + var pointer = this.getPointer(e); + this.freeDrawingBrush.onMouseMove(pointer, { e: e, pointer: pointer }); + } + this.setCursor(this.freeDrawingCursor); + this._handleEvent(e, 'move'); + }, + + /** + * @private + * @param {Event} e Event object fired on mouseup + */ + _onMouseUpInDrawingMode: function(e) { + if (this.clipTo) { + this.contextTop.restore(); + } + var pointer = this.getPointer(e); + this._isCurrentlyDrawing = this.freeDrawingBrush.onMouseUp({ e: e, pointer: pointer }); + this._handleEvent(e, 'up'); + }, + + /** + * Method that defines the actions when mouse is clicked on canvas. + * The method inits the currentTransform parameters and renders all the + * canvas so the current image can be placed on the top canvas and the rest + * in on the container one. + * @private + * @param {Event} e Event object fired on mousedown + */ + __onMouseDown: function (e) { + this._cacheTransformEventData(e); + this._handleEvent(e, 'down:before'); + var target = this._target; + // if right click just fire events + if (checkClick(e, RIGHT_CLICK)) { + if (this.fireRightClick) { + this._handleEvent(e, 'down', RIGHT_CLICK); + } + return; + } + + if (checkClick(e, MIDDLE_CLICK)) { + if (this.fireMiddleClick) { + this._handleEvent(e, 'down', MIDDLE_CLICK); + } + return; + } + + if (this.isDrawingMode) { + this._onMouseDownInDrawingMode(e); + return; + } + + if (!this._isMainEvent(e)) { + return; + } + + // ignore if some object is being transformed at this moment + if (this._currentTransform) { + return; + } + + var pointer = this._pointer; + // save pointer for check in __onMouseUp event + this._previousPointer = pointer; + var shouldRender = this._shouldRender(target), + shouldGroup = this._shouldGroup(e, target); + if (this._shouldClearSelection(e, target)) { + this.discardActiveObject(e); + } + else if (shouldGroup) { + this._handleGrouping(e, target); + target = this._activeObject; + } + + if (this.selection && (!target || + (!target.selectable && !target.isEditing && target !== this._activeObject))) { + this._groupSelector = { + ex: pointer.x, + ey: pointer.y, + top: 0, + left: 0 + }; + } + + if (target) { + var alreadySelected = target === this._activeObject; + if (target.selectable) { + this.setActiveObject(target, e); + } + if (target === this._activeObject && (target.__corner || !shouldGroup)) { + this._setupCurrentTransform(e, target, alreadySelected); + } + } + this._handleEvent(e, 'down'); + // we must renderAll so that we update the visuals + (shouldRender || shouldGroup) && this.requestRenderAll(); + }, + + /** + * reset cache form common information needed during event processing + * @private + */ + _resetTransformEventData: function() { + this._target = null; + this._pointer = null; + this._absolutePointer = null; + }, + + /** + * Cache common information needed during event processing + * @private + * @param {Event} e Event object fired on event + */ + _cacheTransformEventData: function(e) { + // reset in order to avoid stale caching + this._resetTransformEventData(); + this._pointer = this.getPointer(e, true); + this._absolutePointer = this.restorePointerVpt(this._pointer); + this._target = this._currentTransform ? this._currentTransform.target : this.findTarget(e) || null; + }, + + /** + * @private + */ + _beforeTransform: function(e) { + var t = this._currentTransform; + this.stateful && t.target.saveState(); + this.fire('before:transform', { + e: e, + transform: t, + }); + // determine if it's a drag or rotate case + if (t.corner) { + this.onBeforeScaleRotate(t.target); + } + }, + + /** + * Method that defines the actions when mouse is hovering the canvas. + * The currentTransform parameter will define whether the user is rotating/scaling/translating + * an image or neither of them (only hovering). A group selection is also possible and would cancel + * all any other type of action. + * In case of an image transformation only the top canvas will be rendered. + * @private + * @param {Event} e Event object fired on mousemove + */ + __onMouseMove: function (e) { + this._handleEvent(e, 'move:before'); + this._cacheTransformEventData(e); + var target, pointer; + + if (this.isDrawingMode) { + this._onMouseMoveInDrawingMode(e); + return; + } + + if (!this._isMainEvent(e)) { + return; + } + + var groupSelector = this._groupSelector; + + // We initially clicked in an empty area, so we draw a box for multiple selection + if (groupSelector) { + pointer = this._pointer; + + groupSelector.left = pointer.x - groupSelector.ex; + groupSelector.top = pointer.y - groupSelector.ey; + + this.renderTop(); + } + else if (!this._currentTransform) { + target = this.findTarget(e) || null; + this._setCursorFromEvent(e, target); + this._fireOverOutEvents(target, e); + } + else { + this._transformObject(e); + } + this._handleEvent(e, 'move'); + this._resetTransformEventData(); + }, + + /** + * Manage the mouseout, mouseover events for the fabric object on the canvas + * @param {Fabric.Object} target the target where the target from the mousemove event + * @param {Event} e Event object fired on mousemove + * @private + */ + _fireOverOutEvents: function(target, e) { + var _hoveredTarget = this._hoveredTarget, + _hoveredTargets = this._hoveredTargets, targets = this.targets, + length = Math.max(_hoveredTargets.length, targets.length); + + this.fireSyntheticInOutEvents(target, e, { + oldTarget: _hoveredTarget, + evtOut: 'mouseout', + canvasEvtOut: 'mouse:out', + evtIn: 'mouseover', + canvasEvtIn: 'mouse:over', + }); + for (var i = 0; i < length; i++){ + this.fireSyntheticInOutEvents(targets[i], e, { + oldTarget: _hoveredTargets[i], + evtOut: 'mouseout', + evtIn: 'mouseover', + }); + } + this._hoveredTarget = target; + this._hoveredTargets = this.targets.concat(); + }, + + /** + * Manage the dragEnter, dragLeave events for the fabric objects on the canvas + * @param {Fabric.Object} target the target where the target from the onDrag event + * @param {Event} e Event object fired on ondrag + * @private + */ + _fireEnterLeaveEvents: function(target, e) { + var _draggedoverTarget = this._draggedoverTarget, + _hoveredTargets = this._hoveredTargets, targets = this.targets, + length = Math.max(_hoveredTargets.length, targets.length); + + this.fireSyntheticInOutEvents(target, e, { + oldTarget: _draggedoverTarget, + evtOut: 'dragleave', + evtIn: 'dragenter', + }); + for (var i = 0; i < length; i++) { + this.fireSyntheticInOutEvents(targets[i], e, { + oldTarget: _hoveredTargets[i], + evtOut: 'dragleave', + evtIn: 'dragenter', + }); + } + this._draggedoverTarget = target; + }, + + /** + * Manage the synthetic in/out events for the fabric objects on the canvas + * @param {Fabric.Object} target the target where the target from the supported events + * @param {Event} e Event object fired + * @param {Object} config configuration for the function to work + * @param {String} config.targetName property on the canvas where the old target is stored + * @param {String} [config.canvasEvtOut] name of the event to fire at canvas level for out + * @param {String} config.evtOut name of the event to fire for out + * @param {String} [config.canvasEvtIn] name of the event to fire at canvas level for in + * @param {String} config.evtIn name of the event to fire for in + * @private + */ + fireSyntheticInOutEvents: function(target, e, config) { + var inOpt, outOpt, oldTarget = config.oldTarget, outFires, inFires, + targetChanged = oldTarget !== target, canvasEvtIn = config.canvasEvtIn, canvasEvtOut = config.canvasEvtOut; + if (targetChanged) { + inOpt = { e: e, target: target, previousTarget: oldTarget }; + outOpt = { e: e, target: oldTarget, nextTarget: target }; + } + inFires = target && targetChanged; + outFires = oldTarget && targetChanged; + if (outFires) { + canvasEvtOut && this.fire(canvasEvtOut, outOpt); + oldTarget.fire(config.evtOut, outOpt); + } + if (inFires) { + canvasEvtIn && this.fire(canvasEvtIn, inOpt); + target.fire(config.evtIn, inOpt); + } + }, + + /** + * Method that defines actions when an Event Mouse Wheel + * @param {Event} e Event object fired on mouseup + */ + __onMouseWheel: function(e) { + this._cacheTransformEventData(e); + this._handleEvent(e, 'wheel'); + this._resetTransformEventData(); + }, + + /** + * @private + * @param {Event} e Event fired on mousemove + */ + _transformObject: function(e) { + var pointer = this.getPointer(e), + transform = this._currentTransform; + + transform.reset = false; + transform.target.isMoving = true; + transform.shiftKey = e.shiftKey; + transform.altKey = e[this.centeredKey]; + + this._beforeScaleTransform(e, transform); + this._performTransformAction(e, transform, pointer); + + transform.actionPerformed && this.requestRenderAll(); + }, + + /** + * @private + */ + _performTransformAction: function(e, transform, pointer) { + var x = pointer.x, + y = pointer.y, + action = transform.action, + actionPerformed = false, + options = { + target: transform.target, + e: e, + transform: transform, + pointer: pointer + }; + + if (action === 'rotate') { + (actionPerformed = this._rotateObject(x, y)) && this._fire('rotating', options); + } + else if (action === 'scale') { + (actionPerformed = this._onScale(e, transform, x, y)) && this._fire('scaling', options); + } + else if (action === 'scaleX') { + (actionPerformed = this._scaleObject(x, y, 'x')) && this._fire('scaling', options); + } + else if (action === 'scaleY') { + (actionPerformed = this._scaleObject(x, y, 'y')) && this._fire('scaling', options); + } + else if (action === 'skewX') { + (actionPerformed = this._skewObject(x, y, 'x')) && this._fire('skewing', options); + } + else if (action === 'skewY') { + (actionPerformed = this._skewObject(x, y, 'y')) && this._fire('skewing', options); + } + else { + actionPerformed = this._translateObject(x, y); + if (actionPerformed) { + this._fire('moving', options); + this.setCursor(options.target.moveCursor || this.moveCursor); + } + } + transform.actionPerformed = transform.actionPerformed || actionPerformed; + }, + + /** + * @private + */ + _fire: function(eventName, options) { + this.fire('object:' + eventName, options); + options.target.fire(eventName, options); + }, + + /** + * @private + */ + _beforeScaleTransform: function(e, transform) { + if (transform.action === 'scale' || transform.action === 'scaleX' || transform.action === 'scaleY') { + var centerTransform = this._shouldCenterTransform(transform.target); + + // Switch from a normal resize to center-based + if ((centerTransform && (transform.originX !== 'center' || transform.originY !== 'center')) || + // Switch from center-based resize to normal one + (!centerTransform && transform.originX === 'center' && transform.originY === 'center') + ) { + this._resetCurrentTransform(); + transform.reset = true; + } + } + }, + + /** + * @private + * @param {Event} e Event object + * @param {Object} transform current transform + * @param {Number} x mouse position x from origin + * @param {Number} y mouse position y from origin + * @return {Boolean} true if the scaling occurred + */ + _onScale: function(e, transform, x, y) { + if (this._isUniscalePossible(e, transform.target)) { + transform.currentAction = 'scale'; + return this._scaleObject(x, y); + } + else { + // Switch from a normal resize to proportional + if (!transform.reset && transform.currentAction === 'scale') { + this._resetCurrentTransform(); + } + + transform.currentAction = 'scaleEqually'; + return this._scaleObject(x, y, 'equally'); + } + }, + + /** + * @private + * @param {Event} e Event object + * @param {fabric.Object} target current target + * @return {Boolean} true if unproportional scaling is possible + */ + _isUniscalePossible: function(e, target) { + return (e[this.uniScaleKey] || this.uniScaleTransform) && !target.get('lockUniScaling'); + }, + + /** + * Sets the cursor depending on where the canvas is being hovered. + * Note: very buggy in Opera + * @param {Event} e Event object + * @param {Object} target Object that the mouse is hovering, if so. + */ + _setCursorFromEvent: function (e, target) { + if (!target) { + this.setCursor(this.defaultCursor); + return false; + } + var hoverCursor = target.hoverCursor || this.hoverCursor, + activeSelection = this._activeObject && this._activeObject.type === 'activeSelection' ? + this._activeObject : null, + // only show proper corner when group selection is not active + corner = (!activeSelection || !activeSelection.contains(target)) + && target._findTargetCorner(this.getPointer(e, true)); + + if (!corner) { + if (target.subTargetCheck){ + // hoverCursor should come from top-most subTarget, + // so we walk the array backwards + this.targets.concat().reverse().map(function(_target){ + hoverCursor = _target.hoverCursor || hoverCursor; + }); + } + this.setCursor(hoverCursor); + } + else { + this.setCursor(this.getCornerCursor(corner, target, e)); + } + }, + + /** + * @private + */ + getCornerCursor: function(corner, target, e) { + if (this.actionIsDisabled(corner, target, e)) { + return this.notAllowedCursor; + } + else if (corner in cursorOffset) { + return this._getRotatedCornerCursor(corner, target, e); + } + else if (corner === 'mtr' && target.hasRotatingPoint) { + return this.rotationCursor; + } + else { + return this.defaultCursor; + } + }, + + actionIsDisabled: function(corner, target, e) { + if (corner === 'mt' || corner === 'mb') { + return e[this.altActionKey] ? target.lockSkewingX : target.lockScalingY; + } + else if (corner === 'ml' || corner === 'mr') { + return e[this.altActionKey] ? target.lockSkewingY : target.lockScalingX; + } + else if (corner === 'mtr') { + return target.lockRotation; + } + else { + return this._isUniscalePossible(e, target) ? + target.lockScalingX && target.lockScalingY : target.lockScalingX || target.lockScalingY; + } + }, + + /** + * @private + */ + _getRotatedCornerCursor: function(corner, target, e) { + var n = Math.round((target.angle % 360) / 45); + + if (n < 0) { + n += 8; // full circle ahead + } + n += cursorOffset[corner]; + if (e[this.altActionKey] && cursorOffset[corner] % 2 === 0) { + //if we are holding shift and we are on a mx corner... + n += 2; + } + // normalize n to be from 0 to 7 + n %= 8; + + return this.cursorMap[n]; + } + }); +})(); + + +(function() { + + var min = Math.min, + max = Math.max; + + fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ { + + /** + * @private + * @param {Event} e Event object + * @param {fabric.Object} target + * @return {Boolean} + */ + _shouldGroup: function(e, target) { + var activeObject = this._activeObject; + return activeObject && this._isSelectionKeyPressed(e) && target && target.selectable && this.selection && + (activeObject !== target || activeObject.type === 'activeSelection') && !target.onSelect({ e: e }); + }, + + /** + * @private + * @param {Event} e Event object + * @param {fabric.Object} target + */ + _handleGrouping: function (e, target) { + var activeObject = this._activeObject; + // avoid multi select when shift click on a corner + if (activeObject.__corner) { + return; + } + if (target === activeObject) { + // if it's a group, find target again, using activeGroup objects + target = this.findTarget(e, true); + // if even object is not found or we are on activeObjectCorner, bail out + if (!target || !target.selectable) { + return; + } + } + if (activeObject && activeObject.type === 'activeSelection') { + this._updateActiveSelection(target, e); + } + else { + this._createActiveSelection(target, e); + } + }, + + /** + * @private + */ + _updateActiveSelection: function(target, e) { + var activeSelection = this._activeObject, + currentActiveObjects = activeSelection._objects.slice(0); + if (activeSelection.contains(target)) { + activeSelection.removeWithUpdate(target); + this._hoveredTarget = target; + this._hoveredTargets = this.targets.concat(); + if (activeSelection.size() === 1) { + // activate last remaining object + this._setActiveObject(activeSelection.item(0), e); + } + } + else { + activeSelection.addWithUpdate(target); + this._hoveredTarget = activeSelection; + this._hoveredTargets = this.targets.concat(); + } + this._fireSelectionEvents(currentActiveObjects, e); + }, + + /** + * @private + */ + _createActiveSelection: function(target, e) { + var currentActives = this.getActiveObjects(), group = this._createGroup(target); + this._hoveredTarget = group; + // ISSUE 4115: should we consider subTargets here? + // this._hoveredTargets = []; + // this._hoveredTargets = this.targets.concat(); + this._setActiveObject(group, e); + this._fireSelectionEvents(currentActives, e); + }, + + /** + * @private + * @param {Object} target + */ + _createGroup: function(target) { + var objects = this._objects, + isActiveLower = objects.indexOf(this._activeObject) < objects.indexOf(target), + groupObjects = isActiveLower + ? [this._activeObject, target] + : [target, this._activeObject]; + this._activeObject.isEditing && this._activeObject.exitEditing(); + return new fabric.ActiveSelection(groupObjects, { + canvas: this + }); + }, + + /** + * @private + * @param {Event} e mouse event + */ + _groupSelectedObjects: function (e) { + + var group = this._collectObjects(e), + aGroup; + + // do not create group for 1 element only + if (group.length === 1) { + this.setActiveObject(group[0], e); + } + else if (group.length > 1) { + aGroup = new fabric.ActiveSelection(group.reverse(), { + canvas: this + }); + this.setActiveObject(aGroup, e); + } + }, + + /** + * @private + */ + _collectObjects: function(e) { + var group = [], + currentObject, + x1 = this._groupSelector.ex, + y1 = this._groupSelector.ey, + x2 = x1 + this._groupSelector.left, + y2 = y1 + this._groupSelector.top, + selectionX1Y1 = new fabric.Point(min(x1, x2), min(y1, y2)), + selectionX2Y2 = new fabric.Point(max(x1, x2), max(y1, y2)), + allowIntersect = !this.selectionFullyContained, + isClick = x1 === x2 && y1 === y2; + // we iterate reverse order to collect top first in case of click. + for (var i = this._objects.length; i--; ) { + currentObject = this._objects[i]; + + if (!currentObject || !currentObject.selectable || !currentObject.visible) { + continue; + } + + if ((allowIntersect && currentObject.intersectsWithRect(selectionX1Y1, selectionX2Y2)) || + currentObject.isContainedWithinRect(selectionX1Y1, selectionX2Y2) || + (allowIntersect && currentObject.containsPoint(selectionX1Y1)) || + (allowIntersect && currentObject.containsPoint(selectionX2Y2)) + ) { + group.push(currentObject); + // only add one object if it's a click + if (isClick) { + break; + } + } + } + + if (group.length > 1) { + group = group.filter(function(object) { + return !object.onSelect({ e: e }); + }); + } + + return group; + }, + + /** + * @private + */ + _maybeGroupObjects: function(e) { + if (this.selection && this._groupSelector) { + this._groupSelectedObjects(e); + } + this.setCursor(this.defaultCursor); + // clear selection and current transformation + this._groupSelector = null; + } + }); + +})(); + + +(function () { + fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ { + + /** + * Exports canvas element to a dataurl image. Note that when multiplier is used, cropping is scaled appropriately + * @param {Object} [options] Options object + * @param {String} [options.format=png] The format of the output image. Either "jpeg" or "png" + * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg. + * @param {Number} [options.multiplier=1] Multiplier to scale by, to have consistent + * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14 + * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14 + * @param {Number} [options.width] Cropping width. Introduced in v1.2.14 + * @param {Number} [options.height] Cropping height. Introduced in v1.2.14 + * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 2.0.0 + * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format + * @see {@link http://jsfiddle.net/fabricjs/NfZVb/|jsFiddle demo} + * @example Generate jpeg dataURL with lower quality + * var dataURL = canvas.toDataURL({ + * format: 'jpeg', + * quality: 0.8 + * }); + * @example Generate cropped png dataURL (clipping of canvas) + * var dataURL = canvas.toDataURL({ + * format: 'png', + * left: 100, + * top: 100, + * width: 200, + * height: 200 + * }); + * @example Generate double scaled png dataURL + * var dataURL = canvas.toDataURL({ + * format: 'png', + * multiplier: 2 + * }); + */ + toDataURL: function (options) { + options || (options = { }); + + var format = options.format || 'png', + quality = options.quality || 1, + multiplier = (options.multiplier || 1) * (options.enableRetinaScaling ? this.getRetinaScaling() : 1), + canvasEl = this.toCanvasElement(multiplier, options); + return fabric.util.toDataURL(canvasEl, format, quality); + }, + + /** + * Create a new HTMLCanvas element painted with the current canvas content. + * No need to resize the actual one or repaint it. + * Will transfer object ownership to a new canvas, paint it, and set everything back. + * This is an intermediary step used to get to a dataUrl but also it is useful to + * create quick image copies of a canvas without passing for the dataUrl string + * @param {Number} [multiplier] a zoom factor. + * @param {Object} [cropping] Cropping informations + * @param {Number} [cropping.left] Cropping left offset. + * @param {Number} [cropping.top] Cropping top offset. + * @param {Number} [cropping.width] Cropping width. + * @param {Number} [cropping.height] Cropping height. + */ + toCanvasElement: function(multiplier, cropping) { + multiplier = multiplier || 1; + cropping = cropping || { }; + var scaledWidth = (cropping.width || this.width) * multiplier, + scaledHeight = (cropping.height || this.height) * multiplier, + zoom = this.getZoom(), + originalWidth = this.width, + originalHeight = this.height, + newZoom = zoom * multiplier, + vp = this.viewportTransform, + translateX = (vp[4] - (cropping.left || 0)) * multiplier, + translateY = (vp[5] - (cropping.top || 0)) * multiplier, + originalInteractive = this.interactive, + newVp = [newZoom, 0, 0, newZoom, translateX, translateY], + originalRetina = this.enableRetinaScaling, + canvasEl = fabric.util.createCanvasElement(), + originalContextTop = this.contextTop; + canvasEl.width = scaledWidth; + canvasEl.height = scaledHeight; + this.contextTop = null; + this.enableRetinaScaling = false; + this.interactive = false; + this.viewportTransform = newVp; + this.width = scaledWidth; + this.height = scaledHeight; + this.calcViewportBoundaries(); + this.renderCanvas(canvasEl.getContext('2d'), this._objects); + this.viewportTransform = vp; + this.width = originalWidth; + this.height = originalHeight; + this.calcViewportBoundaries(); + this.interactive = originalInteractive; + this.enableRetinaScaling = originalRetina; + this.contextTop = originalContextTop; + return canvasEl; + }, + }); + +})(); + + +fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ { + + /** + * Populates canvas with data from the specified dataless JSON. + * JSON format must conform to the one of {@link fabric.Canvas#toDatalessJSON} + * @deprecated since 1.2.2 + * @param {String|Object} json JSON string or object + * @param {Function} callback Callback, invoked when json is parsed + * and corresponding objects (e.g: {@link fabric.Image}) + * are initialized + * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created. + * @return {fabric.Canvas} instance + * @chainable + * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#deserialization} + */ + loadFromDatalessJSON: function (json, callback, reviver) { + return this.loadFromJSON(json, callback, reviver); + }, + + /** + * Populates canvas with data from the specified JSON. + * JSON format must conform to the one of {@link fabric.Canvas#toJSON} + * @param {String|Object} json JSON string or object + * @param {Function} callback Callback, invoked when json is parsed + * and corresponding objects (e.g: {@link fabric.Image}) + * are initialized + * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created. + * @return {fabric.Canvas} instance + * @chainable + * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#deserialization} + * @see {@link http://jsfiddle.net/fabricjs/fmgXt/|jsFiddle demo} + * @example loadFromJSON + * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas)); + * @example loadFromJSON with reviver + * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas), function(o, object) { + * // `o` = json object + * // `object` = fabric.Object instance + * // ... do some stuff ... + * }); + */ + loadFromJSON: function (json, callback, reviver) { + if (!json) { + return; + } + + // serialize if it wasn't already + var serialized = (typeof json === 'string') + ? JSON.parse(json) + : fabric.util.object.clone(json); + + var _this = this, + clipPath = serialized.clipPath, + renderOnAddRemove = this.renderOnAddRemove; + + this.renderOnAddRemove = false; + + delete serialized.clipPath; + + this._enlivenObjects(serialized.objects, function (enlivenedObjects) { + _this.clear(); + _this._setBgOverlay(serialized, function () { + if (clipPath) { + _this._enlivenObjects([clipPath], function (enlivenedCanvasClip) { + _this.clipPath = enlivenedCanvasClip[0]; + _this.__setupCanvas.call(_this, serialized, enlivenedObjects, renderOnAddRemove, callback); + }); + } + else { + _this.__setupCanvas.call(_this, serialized, enlivenedObjects, renderOnAddRemove, callback); + } + }); + }, reviver); + return this; + }, + + /** + * @private + * @param {Object} serialized Object with background and overlay information + * @param {Array} restored canvas objects + * @param {Function} cached renderOnAddRemove callback + * @param {Function} callback Invoked after all background and overlay images/patterns loaded + */ + __setupCanvas: function(serialized, enlivenedObjects, renderOnAddRemove, callback) { + var _this = this; + enlivenedObjects.forEach(function(obj, index) { + // we splice the array just in case some custom classes restored from JSON + // will add more object to canvas at canvas init. + _this.insertAt(obj, index); + }); + this.renderOnAddRemove = renderOnAddRemove; + // remove parts i cannot set as options + delete serialized.objects; + delete serialized.backgroundImage; + delete serialized.overlayImage; + delete serialized.background; + delete serialized.overlay; + // this._initOptions does too many things to just + // call it. Normally loading an Object from JSON + // create the Object instance. Here the Canvas is + // already an instance and we are just loading things over it + this._setOptions(serialized); + this.renderAll(); + callback && callback(); + }, + + /** + * @private + * @param {Object} serialized Object with background and overlay information + * @param {Function} callback Invoked after all background and overlay images/patterns loaded + */ + _setBgOverlay: function(serialized, callback) { + var loaded = { + backgroundColor: false, + overlayColor: false, + backgroundImage: false, + overlayImage: false + }; + + if (!serialized.backgroundImage && !serialized.overlayImage && !serialized.background && !serialized.overlay) { + callback && callback(); + return; + } + + var cbIfLoaded = function () { + if (loaded.backgroundImage && loaded.overlayImage && loaded.backgroundColor && loaded.overlayColor) { + callback && callback(); + } + }; + + this.__setBgOverlay('backgroundImage', serialized.backgroundImage, loaded, cbIfLoaded); + this.__setBgOverlay('overlayImage', serialized.overlayImage, loaded, cbIfLoaded); + this.__setBgOverlay('backgroundColor', serialized.background, loaded, cbIfLoaded); + this.__setBgOverlay('overlayColor', serialized.overlay, loaded, cbIfLoaded); + }, + + /** + * @private + * @param {String} property Property to set (backgroundImage, overlayImage, backgroundColor, overlayColor) + * @param {(Object|String)} value Value to set + * @param {Object} loaded Set loaded property to true if property is set + * @param {Object} callback Callback function to invoke after property is set + */ + __setBgOverlay: function(property, value, loaded, callback) { + var _this = this; + + if (!value) { + loaded[property] = true; + callback && callback(); + return; + } + + if (property === 'backgroundImage' || property === 'overlayImage') { + fabric.util.enlivenObjects([value], function(enlivedObject){ + _this[property] = enlivedObject[0]; + loaded[property] = true; + callback && callback(); + }); + } + else { + this['set' + fabric.util.string.capitalize(property, true)](value, function() { + loaded[property] = true; + callback && callback(); + }); + } + }, + + /** + * @private + * @param {Array} objects + * @param {Function} callback + * @param {Function} [reviver] + */ + _enlivenObjects: function (objects, callback, reviver) { + if (!objects || objects.length === 0) { + callback && callback([]); + return; + } + + fabric.util.enlivenObjects(objects, function(enlivenedObjects) { + callback && callback(enlivenedObjects); + }, null, reviver); + }, + + /** + * @private + * @param {String} format + * @param {Function} callback + */ + _toDataURL: function (format, callback) { + this.clone(function (clone) { + callback(clone.toDataURL(format)); + }); + }, + + /** + * @private + * @param {String} format + * @param {Number} multiplier + * @param {Function} callback + */ + _toDataURLWithMultiplier: function (format, multiplier, callback) { + this.clone(function (clone) { + callback(clone.toDataURLWithMultiplier(format, multiplier)); + }); + }, + + /** + * Clones canvas instance + * @param {Object} [callback] Receives cloned instance as a first argument + * @param {Array} [properties] Array of properties to include in the cloned canvas and children + */ + clone: function (callback, properties) { + var data = JSON.stringify(this.toJSON(properties)); + this.cloneWithoutData(function(clone) { + clone.loadFromJSON(data, function() { + callback && callback(clone); + }); + }); + }, + + /** + * Clones canvas instance without cloning existing data. + * This essentially copies canvas dimensions, clipping properties, etc. + * but leaves data empty (so that you can populate it with your own) + * @param {Object} [callback] Receives cloned instance as a first argument + */ + cloneWithoutData: function(callback) { + var el = fabric.util.createCanvasElement(); + + el.width = this.width; + el.height = this.height; + + var clone = new fabric.Canvas(el); + clone.clipTo = this.clipTo; + if (this.backgroundImage) { + clone.setBackgroundImage(this.backgroundImage.src, function() { + clone.renderAll(); + callback && callback(clone); + }); + clone.backgroundImageOpacity = this.backgroundImageOpacity; + clone.backgroundImageStretch = this.backgroundImageStretch; + } + else { + callback && callback(clone); + } + } +}); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + extend = fabric.util.object.extend, + clone = fabric.util.object.clone, + toFixed = fabric.util.toFixed, + capitalize = fabric.util.string.capitalize, + degreesToRadians = fabric.util.degreesToRadians, + supportsLineDash = fabric.StaticCanvas.supports('setLineDash'), + objectCaching = !fabric.isLikelyNode, + ALIASING_LIMIT = 2; + + if (fabric.Object) { + return; + } + + /** + * Root object class from which all 2d shape classes inherit from + * @class fabric.Object + * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#objects} + * @see {@link fabric.Object#initialize} for constructor definition + * + * @fires added + * @fires removed + * + * @fires selected + * @fires deselected + * @fires modified + * @fires modified + * @fires moved + * @fires scaled + * @fires rotated + * @fires skewed + * + * @fires rotating + * @fires scaling + * @fires moving + * @fires skewing + * + * @fires mousedown + * @fires mouseup + * @fires mouseover + * @fires mouseout + * @fires mousewheel + * @fires mousedblclick + * + * @fires dragover + * @fires dragenter + * @fires dragleave + * @fires drop + */ + fabric.Object = fabric.util.createClass(fabric.CommonMethods, /** @lends fabric.Object.prototype */ { + + /** + * Type of an object (rect, circle, path, etc.). + * Note that this property is meant to be read-only and not meant to be modified. + * If you modify, certain parts of Fabric (such as JSON loading) won't work correctly. + * @type String + * @default + */ + type: 'object', + + /** + * Horizontal origin of transformation of an object (one of "left", "right", "center") + * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups + * @type String + * @default + */ + originX: 'left', + + /** + * Vertical origin of transformation of an object (one of "top", "bottom", "center") + * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups + * @type String + * @default + */ + originY: 'top', + + /** + * Top position of an object. Note that by default it's relative to object top. You can change this by setting originY={top/center/bottom} + * @type Number + * @default + */ + top: 0, + + /** + * Left position of an object. Note that by default it's relative to object left. You can change this by setting originX={left/center/right} + * @type Number + * @default + */ + left: 0, + + /** + * Object width + * @type Number + * @default + */ + width: 0, + + /** + * Object height + * @type Number + * @default + */ + height: 0, + + /** + * Object scale factor (horizontal) + * @type Number + * @default + */ + scaleX: 1, + + /** + * Object scale factor (vertical) + * @type Number + * @default + */ + scaleY: 1, + + /** + * When true, an object is rendered as flipped horizontally + * @type Boolean + * @default + */ + flipX: false, + + /** + * When true, an object is rendered as flipped vertically + * @type Boolean + * @default + */ + flipY: false, + + /** + * Opacity of an object + * @type Number + * @default + */ + opacity: 1, + + /** + * Angle of rotation of an object (in degrees) + * @type Number + * @default + */ + angle: 0, + + /** + * Angle of skew on x axes of an object (in degrees) + * @type Number + * @default + */ + skewX: 0, + + /** + * Angle of skew on y axes of an object (in degrees) + * @type Number + * @default + */ + skewY: 0, + + /** + * Size of object's controlling corners (in pixels) + * @type Number + * @default + */ + cornerSize: 13, + + /** + * When true, object's controlling corners are rendered as transparent inside (i.e. stroke instead of fill) + * @type Boolean + * @default + */ + transparentCorners: true, + + /** + * Default cursor value used when hovering over this object on canvas + * @type String + * @default + */ + hoverCursor: null, + + /** + * Default cursor value used when moving this object on canvas + * @type String + * @default + */ + moveCursor: null, + + /** + * Padding between object and its controlling borders (in pixels) + * @type Number + * @default + */ + padding: 0, + + /** + * Color of controlling borders of an object (when it's active) + * @type String + * @default + */ + borderColor: 'rgba(102,153,255,0.75)', + + /** + * Array specifying dash pattern of an object's borders (hasBorder must be true) + * @since 1.6.2 + * @type Array + */ + borderDashArray: null, + + /** + * Color of controlling corners of an object (when it's active) + * @type String + * @default + */ + cornerColor: 'rgba(102,153,255,0.5)', + + /** + * Color of controlling corners of an object (when it's active and transparentCorners false) + * @since 1.6.2 + * @type String + * @default + */ + cornerStrokeColor: null, + + /** + * Specify style of control, 'rect' or 'circle' + * @since 1.6.2 + * @type String + */ + cornerStyle: 'rect', + + /** + * Array specifying dash pattern of an object's control (hasBorder must be true) + * @since 1.6.2 + * @type Array + */ + cornerDashArray: null, + + /** + * When true, this object will use center point as the origin of transformation + * when being scaled via the controls. + * Backwards incompatibility note: This property replaces "centerTransform" (Boolean). + * @since 1.3.4 + * @type Boolean + * @default + */ + centeredScaling: false, + + /** + * When true, this object will use center point as the origin of transformation + * when being rotated via the controls. + * Backwards incompatibility note: This property replaces "centerTransform" (Boolean). + * @since 1.3.4 + * @type Boolean + * @default + */ + centeredRotation: true, + + /** + * Color of object's fill + * takes css colors https://www.w3.org/TR/css-color-3/ + * @type String + * @default + */ + fill: 'rgb(0,0,0)', + + /** + * Fill rule used to fill an object + * accepted values are nonzero, evenodd + * Backwards incompatibility note: This property was used for setting globalCompositeOperation until v1.4.12 (use `fabric.Object#globalCompositeOperation` instead) + * @type String + * @default + */ + fillRule: 'nonzero', + + /** + * Composite rule used for canvas globalCompositeOperation + * @type String + * @default + */ + globalCompositeOperation: 'source-over', + + /** + * Background color of an object. + * takes css colors https://www.w3.org/TR/css-color-3/ + * @type String + * @default + */ + backgroundColor: '', + + /** + * Selection Background color of an object. colored layer behind the object when it is active. + * does not mix good with globalCompositeOperation methods. + * @type String + * @default + */ + selectionBackgroundColor: '', + + /** + * When defined, an object is rendered via stroke and this property specifies its color + * takes css colors https://www.w3.org/TR/css-color-3/ + * @type String + * @default + */ + stroke: null, + + /** + * Width of a stroke used to render this object + * @type Number + * @default + */ + strokeWidth: 1, + + /** + * Array specifying dash pattern of an object's stroke (stroke must be defined) + * @type Array + */ + strokeDashArray: null, + + /** + * Line offset of an object's stroke + * @type Number + * @default + */ + strokeDashOffset: 0, + + /** + * Line endings style of an object's stroke (one of "butt", "round", "square") + * @type String + * @default + */ + strokeLineCap: 'butt', + + /** + * Corner style of an object's stroke (one of "bevil", "round", "miter") + * @type String + * @default + */ + strokeLineJoin: 'miter', + + /** + * Maximum miter length (used for strokeLineJoin = "miter") of an object's stroke + * @type Number + * @default + */ + strokeMiterLimit: 4, + + /** + * Shadow object representing shadow of this shape + * @type fabric.Shadow + * @default + */ + shadow: null, + + /** + * Opacity of object's controlling borders when object is active and moving + * @type Number + * @default + */ + borderOpacityWhenMoving: 0.4, + + /** + * Scale factor of object's controlling borders + * @type Number + * @default + */ + borderScaleFactor: 1, + + /** + * Transform matrix (similar to SVG's transform matrix) + * This property has been depreacted. Since caching and and qrDecompose this + * property can be handled with the standard top,left,scaleX,scaleY,angle and skewX. + * A documentation example on how to parse and merge a transformMatrix will be provided before + * completely removing it in fabric 4.0 + * If you are starting a project now, DO NOT use it. + * @deprecated since 3.2.0 + * @type Array + */ + transformMatrix: null, + + /** + * Minimum allowed scale value of an object + * @type Number + * @default + */ + minScaleLimit: 0, + + /** + * When set to `false`, an object can not be selected for modification (using either point-click-based or group-based selection). + * But events still fire on it. + * @type Boolean + * @default + */ + selectable: true, + + /** + * When set to `false`, an object can not be a target of events. All events propagate through it. Introduced in v1.3.4 + * @type Boolean + * @default + */ + evented: true, + + /** + * When set to `false`, an object is not rendered on canvas + * @type Boolean + * @default + */ + visible: true, + + /** + * When set to `false`, object's controls are not displayed and can not be used to manipulate object + * @type Boolean + * @default + */ + hasControls: true, + + /** + * When set to `false`, object's controlling borders are not rendered + * @type Boolean + * @default + */ + hasBorders: true, + + /** + * When set to `false`, object's controlling rotating point will not be visible or selectable + * @type Boolean + * @default + */ + hasRotatingPoint: true, + + /** + * Offset for object's controlling rotating point (when enabled via `hasRotatingPoint`) + * @type Number + * @default + */ + rotatingPointOffset: 40, + + /** + * When set to `true`, objects are "found" on canvas on per-pixel basis rather than according to bounding box + * @type Boolean + * @default + */ + perPixelTargetFind: false, + + /** + * When `false`, default object's values are not included in its serialization + * @type Boolean + * @default + */ + includeDefaultValues: true, + + /** + * Function that determines clipping of an object (context is passed as a first argument). + * If you are using code minification, ctx argument can be minified/manglied you should use + * as a workaround `var ctx = arguments[0];` in the function; + * Note that context origin is at the object's center point (not left/top corner) + * @deprecated since 2.0.0 + * @type Function + */ + clipTo: null, + + /** + * When `true`, object horizontal movement is locked + * @type Boolean + * @default + */ + lockMovementX: false, + + /** + * When `true`, object vertical movement is locked + * @type Boolean + * @default + */ + lockMovementY: false, + + /** + * When `true`, object rotation is locked + * @type Boolean + * @default + */ + lockRotation: false, + + /** + * When `true`, object horizontal scaling is locked + * @type Boolean + * @default + */ + lockScalingX: false, + + /** + * When `true`, object vertical scaling is locked + * @type Boolean + * @default + */ + lockScalingY: false, + + /** + * When `true`, object non-uniform scaling is locked + * @type Boolean + * @default + */ + lockUniScaling: false, + + /** + * When `true`, object horizontal skewing is locked + * @type Boolean + * @default + */ + lockSkewingX: false, + + /** + * When `true`, object vertical skewing is locked + * @type Boolean + * @default + */ + lockSkewingY: false, + + /** + * When `true`, object cannot be flipped by scaling into negative values + * @type Boolean + * @default + */ + lockScalingFlip: false, + + /** + * When `true`, object is not exported in OBJECT/JSON + * @since 1.6.3 + * @type Boolean + * @default + */ + excludeFromExport: false, + + /** + * When `true`, object is cached on an additional canvas. + * When `false`, object is not cached unless necessary ( clipPath ) + * default to true + * @since 1.7.0 + * @type Boolean + * @default true + */ + objectCaching: objectCaching, + + /** + * When `true`, object properties are checked for cache invalidation. In some particular + * situation you may want this to be disabled ( spray brush, very big, groups) + * or if your application does not allow you to modify properties for groups child you want + * to disable it for groups. + * default to false + * since 1.7.0 + * @type Boolean + * @default false + */ + statefullCache: false, + + /** + * When `true`, cache does not get updated during scaling. The picture will get blocky if scaled + * too much and will be redrawn with correct details at the end of scaling. + * this setting is performance and application dependant. + * default to true + * since 1.7.0 + * @type Boolean + * @default true + */ + noScaleCache: true, + + /** + * When `false`, the stoke width will scale with the object. + * When `true`, the stroke will always match the exact pixel size entered for stroke width. + * default to false + * @since 2.6.0 + * @type Boolean + * @default false + * @type Boolean + * @default false + */ + strokeUniform: false, + + /** + * When set to `true`, object's cache will be rerendered next render call. + * since 1.7.0 + * @type Boolean + * @default true + */ + dirty: true, + + /** + * keeps the value of the last hovered corner during mouse move. + * 0 is no corner, or 'mt', 'ml', 'mtr' etc.. + * It should be private, but there is no harm in using it as + * a read-only property. + * @type number|string|any + * @default 0 + */ + __corner: 0, + + /** + * Determines if the fill or the stroke is drawn first (one of "fill" or "stroke") + * @type String + * @default + */ + paintFirst: 'fill', + + /** + * List of properties to consider when checking if state + * of an object is changed (fabric.Object#hasStateChanged) + * as well as for history (undo/redo) purposes + * @type Array + */ + stateProperties: ( + 'top left width height scaleX scaleY flipX flipY originX originY transformMatrix ' + + 'stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit ' + + 'angle opacity fill globalCompositeOperation shadow clipTo visible backgroundColor ' + + 'skewX skewY fillRule paintFirst clipPath strokeUniform' + ).split(' '), + + /** + * List of properties to consider when checking if cache needs refresh + * Those properties are checked by statefullCache ON ( or lazy mode if we want ) or from single + * calls to Object.set(key, value). If the key is in this list, the object is marked as dirty + * and refreshed at the next render + * @type Array + */ + cacheProperties: ( + 'fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform' + + ' strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath' + ).split(' '), + + /** + * a fabricObject that, without stroke define a clipping area with their shape. filled in black + * the clipPath object gets used when the object has rendered, and the context is placed in the center + * of the object cacheCanvas. + * If you want 0,0 of a clipPath to align with an object center, use clipPath.originX/Y to 'center' + * @type fabric.Object + */ + clipPath: undefined, + + /** + * Meaningful ONLY when the object is used as clipPath. + * if true, the clipPath will make the object clip to the outside of the clipPath + * since 2.4.0 + * @type boolean + * @default false + */ + inverted: false, + + /** + * Meaningful ONLY when the object is used as clipPath. + * if true, the clipPath will have its top and left relative to canvas, and will + * not be influenced by the object transform. This will make the clipPath relative + * to the canvas, but clipping just a particular object. + * WARNING this is beta, this feature may change or be renamed. + * since 2.4.0 + * @type boolean + * @default false + */ + absolutePositioned: false, + + /** + * Constructor + * @param {Object} [options] Options object + */ + initialize: function(options) { + if (options) { + this.setOptions(options); + } + }, + + /** + * Create a the canvas used to keep the cached copy of the object + * @private + */ + _createCacheCanvas: function() { + this._cacheProperties = {}; + this._cacheCanvas = fabric.util.createCanvasElement(); + this._cacheContext = this._cacheCanvas.getContext('2d'); + this._updateCacheCanvas(); + // if canvas gets created, is empty, so dirty. + this.dirty = true; + }, + + /** + * Limit the cache dimensions so that X * Y do not cross fabric.perfLimitSizeTotal + * and each side do not cross fabric.cacheSideLimit + * those numbers are configurable so that you can get as much detail as you want + * making bargain with performances. + * @param {Object} dims + * @param {Object} dims.width width of canvas + * @param {Object} dims.height height of canvas + * @param {Object} dims.zoomX zoomX zoom value to unscale the canvas before drawing cache + * @param {Object} dims.zoomY zoomY zoom value to unscale the canvas before drawing cache + * @return {Object}.width width of canvas + * @return {Object}.height height of canvas + * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache + * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache + */ + _limitCacheSize: function(dims) { + var perfLimitSizeTotal = fabric.perfLimitSizeTotal, + width = dims.width, height = dims.height, + max = fabric.maxCacheSideLimit, min = fabric.minCacheSideLimit; + if (width <= max && height <= max && width * height <= perfLimitSizeTotal) { + if (width < min) { + dims.width = min; + } + if (height < min) { + dims.height = min; + } + return dims; + } + var ar = width / height, limitedDims = fabric.util.limitDimsByArea(ar, perfLimitSizeTotal), + capValue = fabric.util.capValue, + x = capValue(min, limitedDims.x, max), + y = capValue(min, limitedDims.y, max); + if (width > x) { + dims.zoomX /= width / x; + dims.width = x; + dims.capped = true; + } + if (height > y) { + dims.zoomY /= height / y; + dims.height = y; + dims.capped = true; + } + return dims; + }, + + /** + * Return the dimension and the zoom level needed to create a cache canvas + * big enough to host the object to be cached. + * @private + * @return {Object}.x width of object to be cached + * @return {Object}.y height of object to be cached + * @return {Object}.width width of canvas + * @return {Object}.height height of canvas + * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache + * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache + */ + _getCacheCanvasDimensions: function() { + var objectScale = this.getTotalObjectScaling(), + // caculate dimensions without skewing + dim = this._getTransformedDimensions(0, 0), + neededX = dim.x * objectScale.scaleX / this.scaleX, + neededY = dim.y * objectScale.scaleY / this.scaleY; + return { + // for sure this ALIASING_LIMIT is slightly creating problem + // in situation in which the cache canvas gets an upper limit + // also objectScale contains already scaleX and scaleY + width: neededX + ALIASING_LIMIT, + height: neededY + ALIASING_LIMIT, + zoomX: objectScale.scaleX, + zoomY: objectScale.scaleY, + x: neededX, + y: neededY + }; + }, + + /** + * Update width and height of the canvas for cache + * returns true or false if canvas needed resize. + * @private + * @return {Boolean} true if the canvas has been resized + */ + _updateCacheCanvas: function() { + var targetCanvas = this.canvas; + if (this.noScaleCache && targetCanvas && targetCanvas._currentTransform) { + var target = targetCanvas._currentTransform.target, + action = targetCanvas._currentTransform.action; + if (this === target && action.slice && action.slice(0, 5) === 'scale') { + return false; + } + } + var canvas = this._cacheCanvas, + dims = this._limitCacheSize(this._getCacheCanvasDimensions()), + minCacheSize = fabric.minCacheSideLimit, + width = dims.width, height = dims.height, drawingWidth, drawingHeight, + zoomX = dims.zoomX, zoomY = dims.zoomY, + dimensionsChanged = width !== this.cacheWidth || height !== this.cacheHeight, + zoomChanged = this.zoomX !== zoomX || this.zoomY !== zoomY, + shouldRedraw = dimensionsChanged || zoomChanged, + additionalWidth = 0, additionalHeight = 0, shouldResizeCanvas = false; + if (dimensionsChanged) { + var canvasWidth = this._cacheCanvas.width, + canvasHeight = this._cacheCanvas.height, + sizeGrowing = width > canvasWidth || height > canvasHeight, + sizeShrinking = (width < canvasWidth * 0.9 || height < canvasHeight * 0.9) && + canvasWidth > minCacheSize && canvasHeight > minCacheSize; + shouldResizeCanvas = sizeGrowing || sizeShrinking; + if (sizeGrowing && !dims.capped && (width > minCacheSize || height > minCacheSize)) { + additionalWidth = width * 0.1; + additionalHeight = height * 0.1; + } + } + if (shouldRedraw) { + if (shouldResizeCanvas) { + canvas.width = Math.ceil(width + additionalWidth); + canvas.height = Math.ceil(height + additionalHeight); + } + else { + this._cacheContext.setTransform(1, 0, 0, 1, 0, 0); + this._cacheContext.clearRect(0, 0, canvas.width, canvas.height); + } + drawingWidth = dims.x / 2; + drawingHeight = dims.y / 2; + this.cacheTranslationX = Math.round(canvas.width / 2 - drawingWidth) + drawingWidth; + this.cacheTranslationY = Math.round(canvas.height / 2 - drawingHeight) + drawingHeight; + this.cacheWidth = width; + this.cacheHeight = height; + this._cacheContext.translate(this.cacheTranslationX, this.cacheTranslationY); + this._cacheContext.scale(zoomX, zoomY); + this.zoomX = zoomX; + this.zoomY = zoomY; + return true; + } + return false; + }, + + /** + * Sets object's properties from options + * @param {Object} [options] Options object + */ + setOptions: function(options) { + this._setOptions(options); + this._initGradient(options.fill, 'fill'); + this._initGradient(options.stroke, 'stroke'); + this._initClipping(options); + this._initPattern(options.fill, 'fill'); + this._initPattern(options.stroke, 'stroke'); + }, + + /** + * Transforms context when rendering an object + * @param {CanvasRenderingContext2D} ctx Context + */ + transform: function(ctx) { + var m; + if (this.group && !this.group._transformDone) { + m = this.calcTransformMatrix(); + } + else { + m = this.calcOwnMatrix(); + } + ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]); + }, + + /** + * Returns an object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} Object representation of an instance + */ + toObject: function(propertiesToInclude) { + var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS, + + object = { + type: this.type, + version: fabric.version, + originX: this.originX, + originY: this.originY, + left: toFixed(this.left, NUM_FRACTION_DIGITS), + top: toFixed(this.top, NUM_FRACTION_DIGITS), + width: toFixed(this.width, NUM_FRACTION_DIGITS), + height: toFixed(this.height, NUM_FRACTION_DIGITS), + fill: (this.fill && this.fill.toObject) ? this.fill.toObject() : this.fill, + stroke: (this.stroke && this.stroke.toObject) ? this.stroke.toObject() : this.stroke, + strokeWidth: toFixed(this.strokeWidth, NUM_FRACTION_DIGITS), + strokeDashArray: this.strokeDashArray ? this.strokeDashArray.concat() : this.strokeDashArray, + strokeLineCap: this.strokeLineCap, + strokeDashOffset: this.strokeDashOffset, + strokeLineJoin: this.strokeLineJoin, + strokeMiterLimit: toFixed(this.strokeMiterLimit, NUM_FRACTION_DIGITS), + scaleX: toFixed(this.scaleX, NUM_FRACTION_DIGITS), + scaleY: toFixed(this.scaleY, NUM_FRACTION_DIGITS), + angle: toFixed(this.angle, NUM_FRACTION_DIGITS), + flipX: this.flipX, + flipY: this.flipY, + opacity: toFixed(this.opacity, NUM_FRACTION_DIGITS), + shadow: (this.shadow && this.shadow.toObject) ? this.shadow.toObject() : this.shadow, + visible: this.visible, + clipTo: this.clipTo && String(this.clipTo), + backgroundColor: this.backgroundColor, + fillRule: this.fillRule, + paintFirst: this.paintFirst, + globalCompositeOperation: this.globalCompositeOperation, + transformMatrix: this.transformMatrix ? this.transformMatrix.concat() : null, + skewX: toFixed(this.skewX, NUM_FRACTION_DIGITS), + skewY: toFixed(this.skewY, NUM_FRACTION_DIGITS), + }; + + if (this.clipPath) { + object.clipPath = this.clipPath.toObject(propertiesToInclude); + object.clipPath.inverted = this.clipPath.inverted; + object.clipPath.absolutePositioned = this.clipPath.absolutePositioned; + } + + fabric.util.populateWithProperties(this, object, propertiesToInclude); + if (!this.includeDefaultValues) { + object = this._removeDefaultValues(object); + } + + return object; + }, + + /** + * Returns (dataless) object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} Object representation of an instance + */ + toDatalessObject: function(propertiesToInclude) { + // will be overwritten by subclasses + return this.toObject(propertiesToInclude); + }, + + /** + * @private + * @param {Object} object + */ + _removeDefaultValues: function(object) { + var prototype = fabric.util.getKlass(object.type).prototype, + stateProperties = prototype.stateProperties; + stateProperties.forEach(function(prop) { + if (prop === 'left' || prop === 'top') { + return; + } + if (object[prop] === prototype[prop]) { + delete object[prop]; + } + var isArray = Object.prototype.toString.call(object[prop]) === '[object Array]' && + Object.prototype.toString.call(prototype[prop]) === '[object Array]'; + + // basically a check for [] === [] + if (isArray && object[prop].length === 0 && prototype[prop].length === 0) { + delete object[prop]; + } + }); + + return object; + }, + + /** + * Returns a string representation of an instance + * @return {String} + */ + toString: function() { + return '#'; + }, + + /** + * Return the object scale factor counting also the group scaling + * @return {Object} object with scaleX and scaleY properties + */ + getObjectScaling: function() { + var scaleX = this.scaleX, scaleY = this.scaleY; + if (this.group) { + var scaling = this.group.getObjectScaling(); + scaleX *= scaling.scaleX; + scaleY *= scaling.scaleY; + } + return { scaleX: scaleX, scaleY: scaleY }; + }, + + /** + * Return the object scale factor counting also the group scaling, zoom and retina + * @return {Object} object with scaleX and scaleY properties + */ + getTotalObjectScaling: function() { + var scale = this.getObjectScaling(), scaleX = scale.scaleX, scaleY = scale.scaleY; + if (this.canvas) { + var zoom = this.canvas.getZoom(); + var retina = this.canvas.getRetinaScaling(); + scaleX *= zoom * retina; + scaleY *= zoom * retina; + } + return { scaleX: scaleX, scaleY: scaleY }; + }, + + /** + * Return the object opacity counting also the group property + * @return {Number} + */ + getObjectOpacity: function() { + var opacity = this.opacity; + if (this.group) { + opacity *= this.group.getObjectOpacity(); + } + return opacity; + }, + + /** + * @private + * @param {String} key + * @param {*} value + * @return {fabric.Object} thisArg + */ + _set: function(key, value) { + var shouldConstrainValue = (key === 'scaleX' || key === 'scaleY'), + isChanged = this[key] !== value, groupNeedsUpdate = false; + + if (shouldConstrainValue) { + value = this._constrainScale(value); + } + if (key === 'scaleX' && value < 0) { + this.flipX = !this.flipX; + value *= -1; + } + else if (key === 'scaleY' && value < 0) { + this.flipY = !this.flipY; + value *= -1; + } + else if (key === 'shadow' && value && !(value instanceof fabric.Shadow)) { + value = new fabric.Shadow(value); + } + else if (key === 'dirty' && this.group) { + this.group.set('dirty', value); + } + + this[key] = value; + + if (isChanged) { + groupNeedsUpdate = this.group && this.group.isOnACache(); + if (this.cacheProperties.indexOf(key) > -1) { + this.dirty = true; + groupNeedsUpdate && this.group.set('dirty', true); + } + else if (groupNeedsUpdate && this.stateProperties.indexOf(key) > -1) { + this.group.set('dirty', true); + } + } + + return this; + }, + + /** + * This callback function is called by the parent group of an object every + * time a non-delegated property changes on the group. It is passed the key + * and value as parameters. Not adding in this function's signature to avoid + * Travis build error about unused variables. + */ + setOnGroup: function() { + // implemented by sub-classes, as needed. + }, + + /** + * Retrieves viewportTransform from Object's canvas if possible + * @method getViewportTransform + * @memberOf fabric.Object.prototype + * @return {Array} + */ + getViewportTransform: function() { + if (this.canvas && this.canvas.viewportTransform) { + return this.canvas.viewportTransform; + } + return fabric.iMatrix.concat(); + }, + + /* + * @private + * return if the object would be visible in rendering + * @memberOf fabric.Object.prototype + * @return {Boolean} + */ + isNotVisible: function() { + return this.opacity === 0 || + (this.width === 0 && this.height === 0 && this.strokeWidth === 0) || + !this.visible; + }, + + /** + * Renders an object on a specified context + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + render: function(ctx) { + // do not render if width/height are zeros or object is not visible + if (this.isNotVisible()) { + return; + } + if (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen()) { + return; + } + ctx.save(); + this._setupCompositeOperation(ctx); + this.drawSelectionBackground(ctx); + this.transform(ctx); + this._setOpacity(ctx); + this._setShadow(ctx, this); + if (this.transformMatrix) { + ctx.transform.apply(ctx, this.transformMatrix); + } + this.clipTo && fabric.util.clipContext(this, ctx); + if (this.shouldCache()) { + this.renderCache(); + this.drawCacheOnCanvas(ctx); + } + else { + this._removeCacheCanvas(); + this.dirty = false; + this.drawObject(ctx); + if (this.objectCaching && this.statefullCache) { + this.saveState({ propertySet: 'cacheProperties' }); + } + } + this.clipTo && ctx.restore(); + ctx.restore(); + }, + + renderCache: function(options) { + options = options || {}; + if (!this._cacheCanvas) { + this._createCacheCanvas(); + } + if (this.isCacheDirty()) { + this.statefullCache && this.saveState({ propertySet: 'cacheProperties' }); + this.drawObject(this._cacheContext, options.forClipping); + this.dirty = false; + } + }, + + /** + * Remove cacheCanvas and its dimensions from the objects + */ + _removeCacheCanvas: function() { + this._cacheCanvas = null; + this.cacheWidth = 0; + this.cacheHeight = 0; + }, + + /** + * return true if the object will draw a stroke + * Does not consider text styles. This is just a shortcut used at rendering time + * We want it to be an aproximation and be fast. + * wrote to avoid extra caching, it has to return true when stroke happens, + * can guess when it will not happen at 100% chance, does not matter if it misses + * some use case where the stroke is invisible. + * @since 3.0.0 + * @returns Boolean + */ + hasStroke: function() { + return this.stroke && this.stroke !== 'transparent' && this.strokeWidth !== 0; + }, + + /** + * return true if the object will draw a fill + * Does not consider text styles. This is just a shortcut used at rendering time + * We want it to be an aproximation and be fast. + * wrote to avoid extra caching, it has to return true when fill happens, + * can guess when it will not happen at 100% chance, does not matter if it misses + * some use case where the fill is invisible. + * @since 3.0.0 + * @returns Boolean + */ + hasFill: function() { + return this.fill && this.fill !== 'transparent'; + }, + + /** + * When set to `true`, force the object to have its own cache, even if it is inside a group + * it may be needed when your object behave in a particular way on the cache and always needs + * its own isolated canvas to render correctly. + * Created to be overridden + * since 1.7.12 + * @returns Boolean + */ + needsItsOwnCache: function() { + if (this.paintFirst === 'stroke' && + this.hasFill() && this.hasStroke() && typeof this.shadow === 'object') { + return true; + } + if (this.clipPath) { + return true; + } + return false; + }, + + /** + * Decide if the object should cache or not. Create its own cache level + * objectCaching is a global flag, wins over everything + * needsItsOwnCache should be used when the object drawing method requires + * a cache step. None of the fabric classes requires it. + * Generally you do not cache objects in groups because the group outside is cached. + * Read as: cache if is needed, or if the feature is enabled but we are not already caching. + * @return {Boolean} + */ + shouldCache: function() { + this.ownCaching = this.needsItsOwnCache() || ( + this.objectCaching && + (!this.group || !this.group.isOnACache()) + ); + return this.ownCaching; + }, + + /** + * Check if this object or a child object will cast a shadow + * used by Group.shouldCache to know if child has a shadow recursively + * @return {Boolean} + */ + willDrawShadow: function() { + return !!this.shadow && (this.shadow.offsetX !== 0 || this.shadow.offsetY !== 0); + }, + + /** + * Execute the drawing operation for an object clipPath + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + drawClipPathOnCache: function(ctx) { + var path = this.clipPath; + ctx.save(); + // DEBUG: uncomment this line, comment the following + // ctx.globalAlpha = 0.4 + if (path.inverted) { + ctx.globalCompositeOperation = 'destination-out'; + } + else { + ctx.globalCompositeOperation = 'destination-in'; + } + //ctx.scale(1 / 2, 1 / 2); + if (path.absolutePositioned) { + var m = fabric.util.invertTransform(this.calcTransformMatrix()); + ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]); + } + path.transform(ctx); + ctx.scale(1 / path.zoomX, 1 / path.zoomY); + ctx.drawImage(path._cacheCanvas, -path.cacheTranslationX, -path.cacheTranslationY); + ctx.restore(); + }, + + /** + * Execute the drawing operation for an object on a specified context + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + drawObject: function(ctx, forClipping) { + var originalFill = this.fill, originalStroke = this.stroke; + if (forClipping) { + this.fill = 'black'; + this.stroke = ''; + this._setClippingProperties(ctx); + } + else { + this._renderBackground(ctx); + this._setStrokeStyles(ctx, this); + this._setFillStyles(ctx, this); + } + this._render(ctx); + this._drawClipPath(ctx); + this.fill = originalFill; + this.stroke = originalStroke; + }, + + _drawClipPath: function(ctx) { + var path = this.clipPath; + if (!path) { return; } + // needed to setup a couple of variables + // path canvas gets overridden with this one. + // TODO find a better solution? + path.canvas = this.canvas; + path.shouldCache(); + path._transformDone = true; + path.renderCache({ forClipping: true }); + this.drawClipPathOnCache(ctx); + }, + + /** + * Paint the cached copy of the object on the target context. + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + drawCacheOnCanvas: function(ctx) { + ctx.scale(1 / this.zoomX, 1 / this.zoomY); + ctx.drawImage(this._cacheCanvas, -this.cacheTranslationX, -this.cacheTranslationY); + }, + + /** + * Check if cache is dirty + * @param {Boolean} skipCanvas skip canvas checks because this object is painted + * on parent canvas. + */ + isCacheDirty: function(skipCanvas) { + if (this.isNotVisible()) { + return false; + } + if (this._cacheCanvas && !skipCanvas && this._updateCacheCanvas()) { + // in this case the context is already cleared. + return true; + } + else { + if (this.dirty || + (this.clipPath && this.clipPath.absolutePositioned) || + (this.statefullCache && this.hasStateChanged('cacheProperties')) + ) { + if (this._cacheCanvas && !skipCanvas) { + var width = this.cacheWidth / this.zoomX; + var height = this.cacheHeight / this.zoomY; + this._cacheContext.clearRect(-width / 2, -height / 2, width, height); + } + return true; + } + } + return false; + }, + + /** + * Draws a background for the object big as its untransformed dimensions + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderBackground: function(ctx) { + if (!this.backgroundColor) { + return; + } + var dim = this._getNonTransformedDimensions(); + ctx.fillStyle = this.backgroundColor; + + ctx.fillRect( + -dim.x / 2, + -dim.y / 2, + dim.x, + dim.y + ); + // if there is background color no other shadows + // should be casted + this._removeShadow(ctx); + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _setOpacity: function(ctx) { + if (this.group && !this.group._transformDone) { + ctx.globalAlpha = this.getObjectOpacity(); + } + else { + ctx.globalAlpha *= this.opacity; + } + }, + + _setStrokeStyles: function(ctx, decl) { + if (decl.stroke) { + ctx.lineWidth = decl.strokeWidth; + ctx.lineCap = decl.strokeLineCap; + ctx.lineDashOffset = decl.strokeDashOffset; + ctx.lineJoin = decl.strokeLineJoin; + ctx.miterLimit = decl.strokeMiterLimit; + ctx.strokeStyle = decl.stroke.toLive + ? decl.stroke.toLive(ctx, this) + : decl.stroke; + } + }, + + _setFillStyles: function(ctx, decl) { + if (decl.fill) { + ctx.fillStyle = decl.fill.toLive + ? decl.fill.toLive(ctx, this) + : decl.fill; + } + }, + + _setClippingProperties: function(ctx) { + ctx.globalAlpha = 1; + ctx.strokeStyle = 'transparent'; + ctx.fillStyle = '#000000'; + }, + + /** + * @private + * Sets line dash + * @param {CanvasRenderingContext2D} ctx Context to set the dash line on + * @param {Array} dashArray array representing dashes + * @param {Function} alternative function to call if browser does not support lineDash + */ + _setLineDash: function(ctx, dashArray, alternative) { + if (!dashArray || dashArray.length === 0) { + return; + } + // Spec requires the concatenation of two copies the dash list when the number of elements is odd + if (1 & dashArray.length) { + dashArray.push.apply(dashArray, dashArray); + } + if (supportsLineDash) { + ctx.setLineDash(dashArray); + } + else { + alternative && alternative(ctx); + } + }, + + /** + * Renders controls and borders for the object + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {Object} [styleOverride] properties to override the object style + */ + _renderControls: function(ctx, styleOverride) { + var vpt = this.getViewportTransform(), + matrix = this.calcTransformMatrix(), + options, drawBorders, drawControls; + styleOverride = styleOverride || { }; + drawBorders = typeof styleOverride.hasBorders !== 'undefined' ? styleOverride.hasBorders : this.hasBorders; + drawControls = typeof styleOverride.hasControls !== 'undefined' ? styleOverride.hasControls : this.hasControls; + matrix = fabric.util.multiplyTransformMatrices(vpt, matrix); + options = fabric.util.qrDecompose(matrix); + ctx.save(); + ctx.translate(options.translateX, options.translateY); + ctx.lineWidth = 1 * this.borderScaleFactor; + if (!this.group) { + ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1; + } + if (styleOverride.forActiveSelection) { + ctx.rotate(degreesToRadians(options.angle)); + drawBorders && this.drawBordersInGroup(ctx, options, styleOverride); + } + else { + ctx.rotate(degreesToRadians(this.angle)); + drawBorders && this.drawBorders(ctx, styleOverride); + } + drawControls && this.drawControls(ctx, styleOverride); + ctx.restore(); + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _setShadow: function(ctx) { + if (!this.shadow) { + return; + } + + var shadow = this.shadow, canvas = this.canvas, scaling, + multX = (canvas && canvas.viewportTransform[0]) || 1, + multY = (canvas && canvas.viewportTransform[3]) || 1; + if (shadow.nonScaling) { + scaling = { scaleX: 1, scaleY: 1 }; + } + else { + scaling = this.getObjectScaling(); + } + if (canvas && canvas._isRetinaScaling()) { + multX *= fabric.devicePixelRatio; + multY *= fabric.devicePixelRatio; + } + ctx.shadowColor = shadow.color; + ctx.shadowBlur = shadow.blur * fabric.browserShadowBlurConstant * + (multX + multY) * (scaling.scaleX + scaling.scaleY) / 4; + ctx.shadowOffsetX = shadow.offsetX * multX * scaling.scaleX; + ctx.shadowOffsetY = shadow.offsetY * multY * scaling.scaleY; + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _removeShadow: function(ctx) { + if (!this.shadow) { + return; + } + + ctx.shadowColor = ''; + ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0; + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {Object} filler fabric.Pattern or fabric.Gradient + * @return {Object} offset.offsetX offset for text rendering + * @return {Object} offset.offsetY offset for text rendering + */ + _applyPatternGradientTransform: function(ctx, filler) { + if (!filler || !filler.toLive) { + return { offsetX: 0, offsetY: 0 }; + } + var t = filler.gradientTransform || filler.patternTransform; + var offsetX = -this.width / 2 + filler.offsetX || 0, + offsetY = -this.height / 2 + filler.offsetY || 0; + + if (filler.gradientUnits === 'percentage') { + ctx.transform(this.width, 0, 0, this.height, offsetX, offsetY); + } + else { + ctx.transform(1, 0, 0, 1, offsetX, offsetY); + } + if (t) { + ctx.transform(t[0], t[1], t[2], t[3], t[4], t[5]); + } + return { offsetX: offsetX, offsetY: offsetY }; + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderPaintInOrder: function(ctx) { + if (this.paintFirst === 'stroke') { + this._renderStroke(ctx); + this._renderFill(ctx); + } + else { + this._renderFill(ctx); + this._renderStroke(ctx); + } + }, + + /** + * @private + * function that actually render something on the context. + * empty here to allow Obects to work on tests to benchmark fabric functionalites + * not related to rendering + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(/* ctx */) { + + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderFill: function(ctx) { + if (!this.fill) { + return; + } + + ctx.save(); + this._applyPatternGradientTransform(ctx, this.fill); + if (this.fillRule === 'evenodd') { + ctx.fill('evenodd'); + } + else { + ctx.fill(); + } + ctx.restore(); + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderStroke: function(ctx) { + if (!this.stroke || this.strokeWidth === 0) { + return; + } + + if (this.shadow && !this.shadow.affectStroke) { + this._removeShadow(ctx); + } + + ctx.save(); + if (this.strokeUniform) { + ctx.scale(1 / this.scaleX, 1 / this.scaleY); + } + this._setLineDash(ctx, this.strokeDashArray, this._renderDashedStroke); + if (this.stroke.toLive && this.stroke.gradientUnits === 'percentage') { + // need to transform gradient in a pattern. + // this is a slow process. If you are hitting this codepath, and the object + // is not using caching, you should consider switching it on. + // we need a canvas as big as the current object caching canvas. + this._applyPatternForTransformedGradient(ctx, this.stroke); + } + else { + this._applyPatternGradientTransform(ctx, this.stroke); + } + ctx.stroke(); + ctx.restore(); + }, + + /** + * This function try to patch the missing gradientTransform on canvas gradients. + * transforming a context to transform the gradient, is going to transform the stroke too. + * we want to transform the gradient but not the stroke operation, so we create + * a transformed gradient on a pattern and then we use the pattern instead of the gradient. + * this method has drwabacks: is slow, is in low resolution, needs a patch for when the size + * is limited. + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {fabric.Gradient} filler a fabric gradient instance + */ + _applyPatternForTransformedGradient: function(ctx, filler) { + var dims = this._limitCacheSize(this._getCacheCanvasDimensions()), + pCanvas = fabric.util.createCanvasElement(), pCtx, retinaScaling = this.canvas.getRetinaScaling(), + width = dims.x / this.scaleX / retinaScaling, height = dims.y / this.scaleY / retinaScaling; + pCanvas.width = width; + pCanvas.height = height; + pCtx = pCanvas.getContext('2d'); + pCtx.beginPath(); pCtx.moveTo(0, 0); pCtx.lineTo(width, 0); pCtx.lineTo(width, height); + pCtx.lineTo(0, height); pCtx.closePath(); + pCtx.translate(width / 2, height / 2); + pCtx.scale( + dims.zoomX / this.scaleX / retinaScaling, + dims.zoomY / this.scaleY / retinaScaling + ); + this._applyPatternGradientTransform(pCtx, filler); + pCtx.fillStyle = filler.toLive(ctx); + pCtx.fill(); + ctx.translate(-this.width / 2 - this.strokeWidth / 2, -this.height / 2 - this.strokeWidth / 2); + ctx.scale( + retinaScaling * this.scaleX / dims.zoomX, + retinaScaling * this.scaleY / dims.zoomY + ); + ctx.strokeStyle = pCtx.createPattern(pCanvas, 'no-repeat'); + }, + + /** + * This function is an helper for svg import. it returns the center of the object in the svg + * untransformed coordinates + * @private + * @return {Object} center point from element coordinates + */ + _findCenterFromElement: function() { + return { x: this.left + this.width / 2, y: this.top + this.height / 2 }; + }, + + /** + * This function is an helper for svg import. it decompose the transformMatrix + * and assign properties to object. + * untransformed coordinates + * @private + * @chainable + */ + _assignTransformMatrixProps: function() { + if (this.transformMatrix) { + var options = fabric.util.qrDecompose(this.transformMatrix); + this.flipX = false; + this.flipY = false; + this.set('scaleX', options.scaleX); + this.set('scaleY', options.scaleY); + this.angle = options.angle; + this.skewX = options.skewX; + this.skewY = 0; + } + }, + + /** + * This function is an helper for svg import. it removes the transform matrix + * and set to object properties that fabricjs can handle + * @private + * @param {Object} preserveAspectRatioOptions + * @return {thisArg} + */ + _removeTransformMatrix: function(preserveAspectRatioOptions) { + var center = this._findCenterFromElement(); + if (this.transformMatrix) { + this._assignTransformMatrixProps(); + center = fabric.util.transformPoint(center, this.transformMatrix); + } + this.transformMatrix = null; + if (preserveAspectRatioOptions) { + this.scaleX *= preserveAspectRatioOptions.scaleX; + this.scaleY *= preserveAspectRatioOptions.scaleY; + this.cropX = preserveAspectRatioOptions.cropX; + this.cropY = preserveAspectRatioOptions.cropY; + center.x += preserveAspectRatioOptions.offsetLeft; + center.y += preserveAspectRatioOptions.offsetTop; + this.width = preserveAspectRatioOptions.width; + this.height = preserveAspectRatioOptions.height; + } + this.setPositionByOrigin(center, 'center', 'center'); + }, + + /** + * Clones an instance, using a callback method will work for every object. + * @param {Function} callback Callback is invoked with a clone as a first argument + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + */ + clone: function(callback, propertiesToInclude) { + var objectForm = this.toObject(propertiesToInclude); + if (this.constructor.fromObject) { + this.constructor.fromObject(objectForm, callback); + } + else { + fabric.Object._fromObject('Object', objectForm, callback); + } + }, + + /** + * Creates an instance of fabric.Image out of an object + * could make use of both toDataUrl or toCanvasElement. + * @param {Function} callback callback, invoked with an instance as a first argument + * @param {Object} [options] for clone as image, passed to toDataURL + * @param {String} [options.format=png] The format of the output image. Either "jpeg" or "png" + * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg. + * @param {Number} [options.multiplier=1] Multiplier to scale by + * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14 + * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14 + * @param {Number} [options.width] Cropping width. Introduced in v1.2.14 + * @param {Number} [options.height] Cropping height. Introduced in v1.2.14 + * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4 + * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4 + * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2 + * @return {fabric.Object} thisArg + */ + cloneAsImage: function(callback, options) { + var canvasEl = this.toCanvasElement(options); + if (callback) { + callback(new fabric.Image(canvasEl)); + } + return this; + }, + + /** + * Converts an object into a HTMLCanvas element + * @param {Object} options Options object + * @param {Number} [options.multiplier=1] Multiplier to scale by + * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14 + * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14 + * @param {Number} [options.width] Cropping width. Introduced in v1.2.14 + * @param {Number} [options.height] Cropping height. Introduced in v1.2.14 + * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4 + * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4 + * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2 + * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format + */ + toCanvasElement: function(options) { + options || (options = { }); + + var utils = fabric.util, origParams = utils.saveObjectTransform(this), + originalGroup = this.group, + originalShadow = this.shadow, abs = Math.abs, + multiplier = (options.multiplier || 1) * (options.enableRetinaScaling ? fabric.devicePixelRatio : 1); + delete this.group; + if (options.withoutTransform) { + utils.resetObjectTransform(this); + } + if (options.withoutShadow) { + this.shadow = null; + } + + var el = fabric.util.createCanvasElement(), + // skip canvas zoom and calculate with setCoords now. + boundingRect = this.getBoundingRect(true, true), + shadow = this.shadow, scaling, + shadowOffset = { x: 0, y: 0 }, shadowBlur; + + if (shadow) { + shadowBlur = shadow.blur; + if (shadow.nonScaling) { + scaling = { scaleX: 1, scaleY: 1 }; + } + else { + scaling = this.getObjectScaling(); + } + // consider non scaling shadow. + shadowOffset.x = 2 * Math.round(abs(shadow.offsetX) + shadowBlur) * (abs(scaling.scaleX)); + shadowOffset.y = 2 * Math.round(abs(shadow.offsetY) + shadowBlur) * (abs(scaling.scaleY)); + } + el.width = boundingRect.width + shadowOffset.x; + el.height = boundingRect.height + shadowOffset.y; + el.width += el.width % 2 ? 2 - el.width % 2 : 0; + el.height += el.height % 2 ? 2 - el.height % 2 : 0; + var canvas = new fabric.StaticCanvas(el, { + enableRetinaScaling: false, + renderOnAddRemove: false, + skipOffscreen: false, + }); + if (options.format === 'jpeg') { + canvas.backgroundColor = '#fff'; + } + this.setPositionByOrigin(new fabric.Point(canvas.width / 2, canvas.height / 2), 'center', 'center'); + + var originalCanvas = this.canvas; + canvas.add(this); + var canvasEl = canvas.toCanvasElement(multiplier || 1, options); + this.shadow = originalShadow; + this.canvas = originalCanvas; + if (originalGroup) { + this.group = originalGroup; + } + this.set(origParams).setCoords(); + // canvas.dispose will call image.dispose that will nullify the elements + // since this canvas is a simple element for the process, we remove references + // to objects in this way in order to avoid object trashing. + canvas._objects = []; + canvas.dispose(); + canvas = null; + + return canvasEl; + }, + + /** + * Converts an object into a data-url-like string + * @param {Object} options Options object + * @param {String} [options.format=png] The format of the output image. Either "jpeg" or "png" + * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg. + * @param {Number} [options.multiplier=1] Multiplier to scale by + * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14 + * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14 + * @param {Number} [options.width] Cropping width. Introduced in v1.2.14 + * @param {Number} [options.height] Cropping height. Introduced in v1.2.14 + * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4 + * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4 + * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2 + * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format + */ + toDataURL: function(options) { + options || (options = { }); + return fabric.util.toDataURL(this.toCanvasElement(options), options.format || 'png', options.quality || 1); + }, + + /** + * Returns true if specified type is identical to the type of an instance + * @param {String} type Type to check against + * @return {Boolean} + */ + isType: function(type) { + return this.type === type; + }, + + /** + * Returns complexity of an instance + * @return {Number} complexity of this instance (is 1 unless subclassed) + */ + complexity: function() { + return 1; + }, + + /** + * Returns a JSON representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} JSON + */ + toJSON: function(propertiesToInclude) { + // delegate, not alias + return this.toObject(propertiesToInclude); + }, + + /** + * Sets gradient (fill or stroke) of an object + * percentages for x1,x2,y1,y2,r1,r2 together with gradientUnits 'pixels', are not supported. + * Backwards incompatibility note: This method was named "setGradientFill" until v1.1.0 + * @param {String} property Property name 'stroke' or 'fill' + * @param {Object} [options] Options object + * @param {String} [options.type] Type of gradient 'radial' or 'linear' + * @param {Number} [options.x1=0] x-coordinate of start point + * @param {Number} [options.y1=0] y-coordinate of start point + * @param {Number} [options.x2=0] x-coordinate of end point + * @param {Number} [options.y2=0] y-coordinate of end point + * @param {Number} [options.r1=0] Radius of start point (only for radial gradients) + * @param {Number} [options.r2=0] Radius of end point (only for radial gradients) + * @param {Object} [options.colorStops] Color stops object eg. {0: 'ff0000', 1: '000000'} + * @param {Object} [options.gradientTransform] transformMatrix for gradient + * @return {fabric.Object} thisArg + * @chainable + * @deprecated since 3.4.0 + * @see {@link http://jsfiddle.net/fabricjs/58y8b/|jsFiddle demo} + * @example Set linear gradient + * object.setGradient('fill', { + * type: 'linear', + * x1: -object.width / 2, + * y1: 0, + * x2: object.width / 2, + * y2: 0, + * colorStops: { + * 0: 'red', + * 0.5: '#005555', + * 1: 'rgba(0,0,255,0.5)' + * } + * }); + * canvas.renderAll(); + * @example Set radial gradient + * object.setGradient('fill', { + * type: 'radial', + * x1: 0, + * y1: 0, + * x2: 0, + * y2: 0, + * r1: object.width / 2, + * r2: 10, + * colorStops: { + * 0: 'red', + * 0.5: '#005555', + * 1: 'rgba(0,0,255,0.5)' + * } + * }); + * canvas.renderAll(); + */ + setGradient: function(property, options) { + options || (options = { }); + + var gradient = { colorStops: [] }; + + gradient.type = options.type || (options.r1 || options.r2 ? 'radial' : 'linear'); + gradient.coords = { + x1: options.x1, + y1: options.y1, + x2: options.x2, + y2: options.y2 + }; + gradient.gradientUnits = options.gradientUnits || 'pixels'; + if (options.r1 || options.r2) { + gradient.coords.r1 = options.r1; + gradient.coords.r2 = options.r2; + } + + gradient.gradientTransform = options.gradientTransform; + fabric.Gradient.prototype.addColorStop.call(gradient, options.colorStops); + + return this.set(property, fabric.Gradient.forObject(this, gradient)); + }, + + /** + * Sets pattern fill of an object + * @param {Object} options Options object + * @param {(String|HTMLImageElement)} options.source Pattern source + * @param {String} [options.repeat=repeat] Repeat property of a pattern (one of repeat, repeat-x, repeat-y or no-repeat) + * @param {Number} [options.offsetX=0] Pattern horizontal offset from object's left/top corner + * @param {Number} [options.offsetY=0] Pattern vertical offset from object's left/top corner + * @param {Function} [callback] Callback to invoke when image set as a pattern + * @return {fabric.Object} thisArg + * @chainable + * @deprecated since 3.5.0 + * @see {@link http://jsfiddle.net/fabricjs/QT3pa/|jsFiddle demo} + * @example Set pattern + * object.setPatternFill({ + * source: 'http://fabricjs.com/assets/escheresque_ste.png', + * repeat: 'repeat' + * },canvas.renderAll.bind(canvas)); + */ + setPatternFill: function(options, callback) { + return this.set('fill', new fabric.Pattern(options, callback)); + }, + + /** + * Sets {@link fabric.Object#shadow|shadow} of an object + * @param {Object|String} [options] Options object or string (e.g. "2px 2px 10px rgba(0,0,0,0.2)") + * @param {String} [options.color=rgb(0,0,0)] Shadow color + * @param {Number} [options.blur=0] Shadow blur + * @param {Number} [options.offsetX=0] Shadow horizontal offset + * @param {Number} [options.offsetY=0] Shadow vertical offset + * @return {fabric.Object} thisArg + * @chainable + * @deprecated since 3.5.0 + * @see {@link http://jsfiddle.net/fabricjs/7gvJG/|jsFiddle demo} + * @example Set shadow with string notation + * object.setShadow('2px 2px 10px rgba(0,0,0,0.2)'); + * canvas.renderAll(); + * @example Set shadow with object notation + * object.setShadow({ + * color: 'red', + * blur: 10, + * offsetX: 20, + * offsetY: 20 + * }); + * canvas.renderAll(); + */ + setShadow: function(options) { + return this.set('shadow', options ? new fabric.Shadow(options) : null); + }, + + /** + * Sets "color" of an instance (alias of `set('fill', …)`) + * @param {String} color Color value + * @return {fabric.Object} thisArg + * @deprecated since 3.5.0 + * @chainable + */ + setColor: function(color) { + this.set('fill', color); + return this; + }, + + /** + * Sets "angle" of an instance with centered rotation + * @param {Number} angle Angle value (in degrees) + * @return {fabric.Object} thisArg + * @chainable + */ + rotate: function(angle) { + var shouldCenterOrigin = (this.originX !== 'center' || this.originY !== 'center') && this.centeredRotation; + + if (shouldCenterOrigin) { + this._setOriginToCenter(); + } + + this.set('angle', angle); + + if (shouldCenterOrigin) { + this._resetOrigin(); + } + + return this; + }, + + /** + * Centers object horizontally on canvas to which it was added last. + * You might need to call `setCoords` on an object after centering, to update controls area. + * @return {fabric.Object} thisArg + * @chainable + */ + centerH: function () { + this.canvas && this.canvas.centerObjectH(this); + return this; + }, + + /** + * Centers object horizontally on current viewport of canvas to which it was added last. + * You might need to call `setCoords` on an object after centering, to update controls area. + * @return {fabric.Object} thisArg + * @chainable + */ + viewportCenterH: function () { + this.canvas && this.canvas.viewportCenterObjectH(this); + return this; + }, + + /** + * Centers object vertically on canvas to which it was added last. + * You might need to call `setCoords` on an object after centering, to update controls area. + * @return {fabric.Object} thisArg + * @chainable + */ + centerV: function () { + this.canvas && this.canvas.centerObjectV(this); + return this; + }, + + /** + * Centers object vertically on current viewport of canvas to which it was added last. + * You might need to call `setCoords` on an object after centering, to update controls area. + * @return {fabric.Object} thisArg + * @chainable + */ + viewportCenterV: function () { + this.canvas && this.canvas.viewportCenterObjectV(this); + return this; + }, + + /** + * Centers object vertically and horizontally on canvas to which is was added last + * You might need to call `setCoords` on an object after centering, to update controls area. + * @return {fabric.Object} thisArg + * @chainable + */ + center: function () { + this.canvas && this.canvas.centerObject(this); + return this; + }, + + /** + * Centers object on current viewport of canvas to which it was added last. + * You might need to call `setCoords` on an object after centering, to update controls area. + * @return {fabric.Object} thisArg + * @chainable + */ + viewportCenter: function () { + this.canvas && this.canvas.viewportCenterObject(this); + return this; + }, + + /** + * Returns coordinates of a pointer relative to an object + * @param {Event} e Event to operate upon + * @param {Object} [pointer] Pointer to operate upon (instead of event) + * @return {Object} Coordinates of a pointer (x, y) + */ + getLocalPointer: function(e, pointer) { + pointer = pointer || this.canvas.getPointer(e); + var pClicked = new fabric.Point(pointer.x, pointer.y), + objectLeftTop = this._getLeftTopCoords(); + if (this.angle) { + pClicked = fabric.util.rotatePoint( + pClicked, objectLeftTop, degreesToRadians(-this.angle)); + } + return { + x: pClicked.x - objectLeftTop.x, + y: pClicked.y - objectLeftTop.y + }; + }, + + /** + * Sets canvas globalCompositeOperation for specific object + * custom composition operation for the particular object can be specified using globalCompositeOperation property + * @param {CanvasRenderingContext2D} ctx Rendering canvas context + */ + _setupCompositeOperation: function (ctx) { + if (this.globalCompositeOperation) { + ctx.globalCompositeOperation = this.globalCompositeOperation; + } + } + }); + + fabric.util.createAccessors && fabric.util.createAccessors(fabric.Object); + + extend(fabric.Object.prototype, fabric.Observable); + + /** + * Defines the number of fraction digits to use when serializing object values. + * You can use it to increase/decrease precision of such values like left, top, scaleX, scaleY, etc. + * @static + * @memberOf fabric.Object + * @constant + * @type Number + */ + fabric.Object.NUM_FRACTION_DIGITS = 2; + + fabric.Object._fromObject = function(className, object, callback, extraParam) { + var klass = fabric[className]; + object = clone(object, true); + fabric.util.enlivenPatterns([object.fill, object.stroke], function(patterns) { + if (typeof patterns[0] !== 'undefined') { + object.fill = patterns[0]; + } + if (typeof patterns[1] !== 'undefined') { + object.stroke = patterns[1]; + } + fabric.util.enlivenObjects([object.clipPath], function(enlivedProps) { + object.clipPath = enlivedProps[0]; + var instance = extraParam ? new klass(object[extraParam], object) : new klass(object); + callback && callback(instance); + }); + }); + }; + + /** + * Unique id used internally when creating SVG elements + * @static + * @memberOf fabric.Object + * @type Number + */ + fabric.Object.__uid = 0; +})(typeof exports !== 'undefined' ? exports : this); + + +(function() { + + var degreesToRadians = fabric.util.degreesToRadians, + originXOffset = { + left: -0.5, + center: 0, + right: 0.5 + }, + originYOffset = { + top: -0.5, + center: 0, + bottom: 0.5 + }; + + fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { + + /** + * Translates the coordinates from a set of origin to another (based on the object's dimensions) + * @param {fabric.Point} point The point which corresponds to the originX and originY params + * @param {String} fromOriginX Horizontal origin: 'left', 'center' or 'right' + * @param {String} fromOriginY Vertical origin: 'top', 'center' or 'bottom' + * @param {String} toOriginX Horizontal origin: 'left', 'center' or 'right' + * @param {String} toOriginY Vertical origin: 'top', 'center' or 'bottom' + * @return {fabric.Point} + */ + translateToGivenOrigin: function(point, fromOriginX, fromOriginY, toOriginX, toOriginY) { + var x = point.x, + y = point.y, + offsetX, offsetY, dim; + + if (typeof fromOriginX === 'string') { + fromOriginX = originXOffset[fromOriginX]; + } + else { + fromOriginX -= 0.5; + } + + if (typeof toOriginX === 'string') { + toOriginX = originXOffset[toOriginX]; + } + else { + toOriginX -= 0.5; + } + + offsetX = toOriginX - fromOriginX; + + if (typeof fromOriginY === 'string') { + fromOriginY = originYOffset[fromOriginY]; + } + else { + fromOriginY -= 0.5; + } + + if (typeof toOriginY === 'string') { + toOriginY = originYOffset[toOriginY]; + } + else { + toOriginY -= 0.5; + } + + offsetY = toOriginY - fromOriginY; + + if (offsetX || offsetY) { + dim = this._getTransformedDimensions(); + x = point.x + offsetX * dim.x; + y = point.y + offsetY * dim.y; + } + + return new fabric.Point(x, y); + }, + + /** + * Translates the coordinates from origin to center coordinates (based on the object's dimensions) + * @param {fabric.Point} point The point which corresponds to the originX and originY params + * @param {String} originX Horizontal origin: 'left', 'center' or 'right' + * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' + * @return {fabric.Point} + */ + translateToCenterPoint: function(point, originX, originY) { + var p = this.translateToGivenOrigin(point, originX, originY, 'center', 'center'); + if (this.angle) { + return fabric.util.rotatePoint(p, point, degreesToRadians(this.angle)); + } + return p; + }, + + /** + * Translates the coordinates from center to origin coordinates (based on the object's dimensions) + * @param {fabric.Point} center The point which corresponds to center of the object + * @param {String} originX Horizontal origin: 'left', 'center' or 'right' + * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' + * @return {fabric.Point} + */ + translateToOriginPoint: function(center, originX, originY) { + var p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY); + if (this.angle) { + return fabric.util.rotatePoint(p, center, degreesToRadians(this.angle)); + } + return p; + }, + + /** + * Returns the real center coordinates of the object + * @return {fabric.Point} + */ + getCenterPoint: function() { + var leftTop = new fabric.Point(this.left, this.top); + return this.translateToCenterPoint(leftTop, this.originX, this.originY); + }, + + /** + * Returns the coordinates of the object based on center coordinates + * @param {fabric.Point} point The point which corresponds to the originX and originY params + * @return {fabric.Point} + */ + // getOriginPoint: function(center) { + // return this.translateToOriginPoint(center, this.originX, this.originY); + // }, + + /** + * Returns the coordinates of the object as if it has a different origin + * @param {String} originX Horizontal origin: 'left', 'center' or 'right' + * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' + * @return {fabric.Point} + */ + getPointByOrigin: function(originX, originY) { + var center = this.getCenterPoint(); + return this.translateToOriginPoint(center, originX, originY); + }, + + /** + * Returns the point in local coordinates + * @param {fabric.Point} point The point relative to the global coordinate system + * @param {String} originX Horizontal origin: 'left', 'center' or 'right' + * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' + * @return {fabric.Point} + */ + toLocalPoint: function(point, originX, originY) { + var center = this.getCenterPoint(), + p, p2; + + if (typeof originX !== 'undefined' && typeof originY !== 'undefined' ) { + p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY); + } + else { + p = new fabric.Point(this.left, this.top); + } + + p2 = new fabric.Point(point.x, point.y); + if (this.angle) { + p2 = fabric.util.rotatePoint(p2, center, -degreesToRadians(this.angle)); + } + return p2.subtractEquals(p); + }, + + /** + * Returns the point in global coordinates + * @param {fabric.Point} The point relative to the local coordinate system + * @return {fabric.Point} + */ + // toGlobalPoint: function(point) { + // return fabric.util.rotatePoint(point, this.getCenterPoint(), degreesToRadians(this.angle)).addEquals(new fabric.Point(this.left, this.top)); + // }, + + /** + * Sets the position of the object taking into consideration the object's origin + * @param {fabric.Point} pos The new position of the object + * @param {String} originX Horizontal origin: 'left', 'center' or 'right' + * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' + * @return {void} + */ + setPositionByOrigin: function(pos, originX, originY) { + var center = this.translateToCenterPoint(pos, originX, originY), + position = this.translateToOriginPoint(center, this.originX, this.originY); + this.set('left', position.x); + this.set('top', position.y); + }, + + /** + * @param {String} to One of 'left', 'center', 'right' + */ + adjustPosition: function(to) { + var angle = degreesToRadians(this.angle), + hypotFull = this.getScaledWidth(), + xFull = fabric.util.cos(angle) * hypotFull, + yFull = fabric.util.sin(angle) * hypotFull, + offsetFrom, offsetTo; + + //TODO: this function does not consider mixed situation like top, center. + if (typeof this.originX === 'string') { + offsetFrom = originXOffset[this.originX]; + } + else { + offsetFrom = this.originX - 0.5; + } + if (typeof to === 'string') { + offsetTo = originXOffset[to]; + } + else { + offsetTo = to - 0.5; + } + this.left += xFull * (offsetTo - offsetFrom); + this.top += yFull * (offsetTo - offsetFrom); + this.setCoords(); + this.originX = to; + }, + + /** + * Sets the origin/position of the object to it's center point + * @private + * @return {void} + */ + _setOriginToCenter: function() { + this._originalOriginX = this.originX; + this._originalOriginY = this.originY; + + var center = this.getCenterPoint(); + + this.originX = 'center'; + this.originY = 'center'; + + this.left = center.x; + this.top = center.y; + }, + + /** + * Resets the origin/position of the object to it's original origin + * @private + * @return {void} + */ + _resetOrigin: function() { + var originPoint = this.translateToOriginPoint( + this.getCenterPoint(), + this._originalOriginX, + this._originalOriginY); + + this.originX = this._originalOriginX; + this.originY = this._originalOriginY; + + this.left = originPoint.x; + this.top = originPoint.y; + + this._originalOriginX = null; + this._originalOriginY = null; + }, + + /** + * @private + */ + _getLeftTopCoords: function() { + return this.translateToOriginPoint(this.getCenterPoint(), 'left', 'top'); + }, + }); + +})(); + + +(function() { + + function getCoords(coords) { + return [ + new fabric.Point(coords.tl.x, coords.tl.y), + new fabric.Point(coords.tr.x, coords.tr.y), + new fabric.Point(coords.br.x, coords.br.y), + new fabric.Point(coords.bl.x, coords.bl.y) + ]; + } + + var degreesToRadians = fabric.util.degreesToRadians, + multiplyMatrices = fabric.util.multiplyTransformMatrices, + transformPoint = fabric.util.transformPoint; + + fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { + + /** + * Describe object's corner position in canvas element coordinates. + * properties are tl,mt,tr,ml,mr,bl,mb,br,mtr for the main controls. + * each property is an object with x, y and corner. + * The `corner` property contains in a similar manner the 4 points of the + * interactive area of the corner. + * The coordinates depends from this properties: width, height, scaleX, scaleY + * skewX, skewY, angle, strokeWidth, viewportTransform, top, left, padding. + * The coordinates get updated with @method setCoords. + * You can calculate them without updating with @method calcCoords; + * @memberOf fabric.Object.prototype + */ + oCoords: null, + + /** + * Describe object's corner position in canvas object absolute coordinates + * properties are tl,tr,bl,br and describe the four main corner. + * each property is an object with x, y, instance of Fabric.Point. + * The coordinates depends from this properties: width, height, scaleX, scaleY + * skewX, skewY, angle, strokeWidth, top, left. + * Those coordinates are useful to understand where an object is. They get updated + * with oCoords but they do not need to be updated when zoom or panning change. + * The coordinates get updated with @method setCoords. + * You can calculate them without updating with @method calcCoords(true); + * @memberOf fabric.Object.prototype + */ + aCoords: null, + + /** + * storage for object transform matrix + */ + ownMatrixCache: null, + + /** + * storage for object full transform matrix + */ + matrixCache: null, + + /** + * return correct set of coordinates for intersection + */ + getCoords: function(absolute, calculate) { + if (!this.oCoords) { + this.setCoords(); + } + var coords = absolute ? this.aCoords : this.oCoords; + return getCoords(calculate ? this.calcCoords(absolute) : coords); + }, + + /** + * Checks if object intersects with an area formed by 2 points + * @param {Object} pointTL top-left point of area + * @param {Object} pointBR bottom-right point of area + * @param {Boolean} [absolute] use coordinates without viewportTransform + * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords + * @return {Boolean} true if object intersects with an area formed by 2 points + */ + intersectsWithRect: function(pointTL, pointBR, absolute, calculate) { + var coords = this.getCoords(absolute, calculate), + intersection = fabric.Intersection.intersectPolygonRectangle( + coords, + pointTL, + pointBR + ); + return intersection.status === 'Intersection'; + }, + + /** + * Checks if object intersects with another object + * @param {Object} other Object to test + * @param {Boolean} [absolute] use coordinates without viewportTransform + * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords + * @return {Boolean} true if object intersects with another object + */ + intersectsWithObject: function(other, absolute, calculate) { + var intersection = fabric.Intersection.intersectPolygonPolygon( + this.getCoords(absolute, calculate), + other.getCoords(absolute, calculate) + ); + + return intersection.status === 'Intersection' + || other.isContainedWithinObject(this, absolute, calculate) + || this.isContainedWithinObject(other, absolute, calculate); + }, + + /** + * Checks if object is fully contained within area of another object + * @param {Object} other Object to test + * @param {Boolean} [absolute] use coordinates without viewportTransform + * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords + * @return {Boolean} true if object is fully contained within area of another object + */ + isContainedWithinObject: function(other, absolute, calculate) { + var points = this.getCoords(absolute, calculate), + i = 0, lines = other._getImageLines( + calculate ? other.calcCoords(absolute) : absolute ? other.aCoords : other.oCoords + ); + for (; i < 4; i++) { + if (!other.containsPoint(points[i], lines)) { + return false; + } + } + return true; + }, + + /** + * Checks if object is fully contained within area formed by 2 points + * @param {Object} pointTL top-left point of area + * @param {Object} pointBR bottom-right point of area + * @param {Boolean} [absolute] use coordinates without viewportTransform + * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords + * @return {Boolean} true if object is fully contained within area formed by 2 points + */ + isContainedWithinRect: function(pointTL, pointBR, absolute, calculate) { + var boundingRect = this.getBoundingRect(absolute, calculate); + + return ( + boundingRect.left >= pointTL.x && + boundingRect.left + boundingRect.width <= pointBR.x && + boundingRect.top >= pointTL.y && + boundingRect.top + boundingRect.height <= pointBR.y + ); + }, + + /** + * Checks if point is inside the object + * @param {fabric.Point} point Point to check against + * @param {Object} [lines] object returned from @method _getImageLines + * @param {Boolean} [absolute] use coordinates without viewportTransform + * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords + * @return {Boolean} true if point is inside the object + */ + containsPoint: function(point, lines, absolute, calculate) { + var lines = lines || this._getImageLines( + calculate ? this.calcCoords(absolute) : absolute ? this.aCoords : this.oCoords + ), + xPoints = this._findCrossPoints(point, lines); + + // if xPoints is odd then point is inside the object + return (xPoints !== 0 && xPoints % 2 === 1); + }, + + /** + * Checks if object is contained within the canvas with current viewportTransform + * the check is done stopping at first point that appears on screen + * @param {Boolean} [calculate] use coordinates of current position instead of .aCoords + * @return {Boolean} true if object is fully or partially contained within canvas + */ + isOnScreen: function(calculate) { + if (!this.canvas) { + return false; + } + var pointTL = this.canvas.vptCoords.tl, pointBR = this.canvas.vptCoords.br; + var points = this.getCoords(true, calculate), point; + for (var i = 0; i < 4; i++) { + point = points[i]; + if (point.x <= pointBR.x && point.x >= pointTL.x && point.y <= pointBR.y && point.y >= pointTL.y) { + return true; + } + } + // no points on screen, check intersection with absolute coordinates + if (this.intersectsWithRect(pointTL, pointBR, true, calculate)) { + return true; + } + return this._containsCenterOfCanvas(pointTL, pointBR, calculate); + }, + + /** + * Checks if the object contains the midpoint between canvas extremities + * Does not make sense outside the context of isOnScreen and isPartiallyOnScreen + * @private + * @param {Fabric.Point} pointTL Top Left point + * @param {Fabric.Point} pointBR Top Right point + * @param {Boolean} calculate use coordinates of current position instead of .oCoords + * @return {Boolean} true if the object contains the point + */ + _containsCenterOfCanvas: function(pointTL, pointBR, calculate) { + // worst case scenario the object is so big that contains the screen + var centerPoint = { x: (pointTL.x + pointBR.x) / 2, y: (pointTL.y + pointBR.y) / 2 }; + if (this.containsPoint(centerPoint, null, true, calculate)) { + return true; + } + return false; + }, + + /** + * Checks if object is partially contained within the canvas with current viewportTransform + * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords + * @return {Boolean} true if object is partially contained within canvas + */ + isPartiallyOnScreen: function(calculate) { + if (!this.canvas) { + return false; + } + var pointTL = this.canvas.vptCoords.tl, pointBR = this.canvas.vptCoords.br; + if (this.intersectsWithRect(pointTL, pointBR, true, calculate)) { + return true; + } + return this._containsCenterOfCanvas(pointTL, pointBR, calculate); + }, + + /** + * Method that returns an object with the object edges in it, given the coordinates of the corners + * @private + * @param {Object} oCoords Coordinates of the object corners + */ + _getImageLines: function(oCoords) { + return { + topline: { + o: oCoords.tl, + d: oCoords.tr + }, + rightline: { + o: oCoords.tr, + d: oCoords.br + }, + bottomline: { + o: oCoords.br, + d: oCoords.bl + }, + leftline: { + o: oCoords.bl, + d: oCoords.tl + } + }; + }, + + /** + * Helper method to determine how many cross points are between the 4 object edges + * and the horizontal line determined by a point on canvas + * @private + * @param {fabric.Point} point Point to check + * @param {Object} lines Coordinates of the object being evaluated + */ + // remove yi, not used but left code here just in case. + _findCrossPoints: function(point, lines) { + var b1, b2, a1, a2, xi, // yi, + xcount = 0, + iLine; + + for (var lineKey in lines) { + iLine = lines[lineKey]; + // optimisation 1: line below point. no cross + if ((iLine.o.y < point.y) && (iLine.d.y < point.y)) { + continue; + } + // optimisation 2: line above point. no cross + if ((iLine.o.y >= point.y) && (iLine.d.y >= point.y)) { + continue; + } + // optimisation 3: vertical line case + if ((iLine.o.x === iLine.d.x) && (iLine.o.x >= point.x)) { + xi = iLine.o.x; + // yi = point.y; + } + // calculate the intersection point + else { + b1 = 0; + b2 = (iLine.d.y - iLine.o.y) / (iLine.d.x - iLine.o.x); + a1 = point.y - b1 * point.x; + a2 = iLine.o.y - b2 * iLine.o.x; + + xi = -(a1 - a2) / (b1 - b2); + // yi = a1 + b1 * xi; + } + // dont count xi < point.x cases + if (xi >= point.x) { + xcount += 1; + } + // optimisation 4: specific for square images + if (xcount === 2) { + break; + } + } + return xcount; + }, + + /** + * Returns coordinates of object's bounding rectangle (left, top, width, height) + * the box is intended as aligned to axis of canvas. + * @param {Boolean} [absolute] use coordinates without viewportTransform + * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords / .aCoords + * @return {Object} Object with left, top, width, height properties + */ + getBoundingRect: function(absolute, calculate) { + var coords = this.getCoords(absolute, calculate); + return fabric.util.makeBoundingBoxFromPoints(coords); + }, + + /** + * Returns width of an object's bounding box counting transformations + * before 2.0 it was named getWidth(); + * @return {Number} width value + */ + getScaledWidth: function() { + return this._getTransformedDimensions().x; + }, + + /** + * Returns height of an object bounding box counting transformations + * before 2.0 it was named getHeight(); + * @return {Number} height value + */ + getScaledHeight: function() { + return this._getTransformedDimensions().y; + }, + + /** + * Makes sure the scale is valid and modifies it if necessary + * @private + * @param {Number} value + * @return {Number} + */ + _constrainScale: function(value) { + if (Math.abs(value) < this.minScaleLimit) { + if (value < 0) { + return -this.minScaleLimit; + } + else { + return this.minScaleLimit; + } + } + else if (value === 0) { + return 0.0001; + } + return value; + }, + + /** + * Scales an object (equally by x and y) + * @param {Number} value Scale factor + * @return {fabric.Object} thisArg + * @chainable + */ + scale: function(value) { + this._set('scaleX', value); + this._set('scaleY', value); + return this.setCoords(); + }, + + /** + * Scales an object to a given width, with respect to bounding box (scaling by x/y equally) + * @param {Number} value New width value + * @param {Boolean} absolute ignore viewport + * @return {fabric.Object} thisArg + * @chainable + */ + scaleToWidth: function(value, absolute) { + // adjust to bounding rect factor so that rotated shapes would fit as well + var boundingRectFactor = this.getBoundingRect(absolute).width / this.getScaledWidth(); + return this.scale(value / this.width / boundingRectFactor); + }, + + /** + * Scales an object to a given height, with respect to bounding box (scaling by x/y equally) + * @param {Number} value New height value + * @param {Boolean} absolute ignore viewport + * @return {fabric.Object} thisArg + * @chainable + */ + scaleToHeight: function(value, absolute) { + // adjust to bounding rect factor so that rotated shapes would fit as well + var boundingRectFactor = this.getBoundingRect(absolute).height / this.getScaledHeight(); + return this.scale(value / this.height / boundingRectFactor); + }, + + /** + * Calculates and returns the .coords of an object. + * @return {Object} Object with tl, tr, br, bl .... + * @chainable + */ + calcCoords: function(absolute) { + var rotateMatrix = this._calcRotateMatrix(), + translateMatrix = this._calcTranslateMatrix(), + startMatrix = multiplyMatrices(translateMatrix, rotateMatrix), + vpt = this.getViewportTransform(), + finalMatrix = absolute ? startMatrix : multiplyMatrices(vpt, startMatrix), + dim = this._getTransformedDimensions(), + w = dim.x / 2, h = dim.y / 2, + tl = transformPoint({ x: -w, y: -h }, finalMatrix), + tr = transformPoint({ x: w, y: -h }, finalMatrix), + bl = transformPoint({ x: -w, y: h }, finalMatrix), + br = transformPoint({ x: w, y: h }, finalMatrix); + if (!absolute) { + var padding = this.padding, angle = degreesToRadians(this.angle), + cos = fabric.util.cos(angle), sin = fabric.util.sin(angle), + cosP = cos * padding, sinP = sin * padding, cosPSinP = cosP + sinP, + cosPMinusSinP = cosP - sinP; + if (padding) { + tl.x -= cosPMinusSinP; + tl.y -= cosPSinP; + tr.x += cosPSinP; + tr.y -= cosPMinusSinP; + bl.x -= cosPSinP; + bl.y += cosPMinusSinP; + br.x += cosPMinusSinP; + br.y += cosPSinP; + } + var ml = new fabric.Point((tl.x + bl.x) / 2, (tl.y + bl.y) / 2), + mt = new fabric.Point((tr.x + tl.x) / 2, (tr.y + tl.y) / 2), + mr = new fabric.Point((br.x + tr.x) / 2, (br.y + tr.y) / 2), + mb = new fabric.Point((br.x + bl.x) / 2, (br.y + bl.y) / 2), + mtr = new fabric.Point(mt.x + sin * this.rotatingPointOffset, mt.y - cos * this.rotatingPointOffset); + } + + // if (!absolute) { + // var canvas = this.canvas; + // setTimeout(function() { + // canvas.contextTop.clearRect(0, 0, 700, 700); + // canvas.contextTop.fillStyle = 'green'; + // canvas.contextTop.fillRect(mb.x, mb.y, 3, 3); + // canvas.contextTop.fillRect(bl.x, bl.y, 3, 3); + // canvas.contextTop.fillRect(br.x, br.y, 3, 3); + // canvas.contextTop.fillRect(tl.x, tl.y, 3, 3); + // canvas.contextTop.fillRect(tr.x, tr.y, 3, 3); + // canvas.contextTop.fillRect(ml.x, ml.y, 3, 3); + // canvas.contextTop.fillRect(mr.x, mr.y, 3, 3); + // canvas.contextTop.fillRect(mt.x, mt.y, 3, 3); + // canvas.contextTop.fillRect(mtr.x, mtr.y, 3, 3); + // }, 50); + // } + + var coords = { + // corners + tl: tl, tr: tr, br: br, bl: bl, + }; + if (!absolute) { + // middle + coords.ml = ml; + coords.mt = mt; + coords.mr = mr; + coords.mb = mb; + // rotating point + coords.mtr = mtr; + } + return coords; + }, + + /** + * Sets corner position coordinates based on current angle, width and height. + * See {@link https://github.com/kangax/fabric.js/wiki/When-to-call-setCoords|When-to-call-setCoords} + * @param {Boolean} [ignoreZoom] set oCoords with or without the viewport transform. + * @param {Boolean} [skipAbsolute] skip calculation of aCoords, useful in setViewportTransform + * @return {fabric.Object} thisArg + * @chainable + */ + setCoords: function(ignoreZoom, skipAbsolute) { + this.oCoords = this.calcCoords(ignoreZoom); + if (!skipAbsolute) { + this.aCoords = this.calcCoords(true); + } + + // set coordinates of the draggable boxes in the corners used to scale/rotate the image + ignoreZoom || (this._setCornerCoords && this._setCornerCoords()); + + return this; + }, + + /** + * calculate rotation matrix of an object + * @return {Array} rotation matrix for the object + */ + _calcRotateMatrix: function() { + return fabric.util.calcRotateMatrix(this); + }, + + /** + * calculate the translation matrix for an object transform + * @return {Array} rotation matrix for the object + */ + _calcTranslateMatrix: function() { + var center = this.getCenterPoint(); + return [1, 0, 0, 1, center.x, center.y]; + }, + + transformMatrixKey: function(skipGroup) { + var sep = '_', prefix = ''; + if (!skipGroup && this.group) { + prefix = this.group.transformMatrixKey(skipGroup) + sep; + }; + return prefix + this.top + sep + this.left + sep + this.scaleX + sep + this.scaleY + + sep + this.skewX + sep + this.skewY + sep + this.angle + sep + this.originX + sep + this.originY + + sep + this.width + sep + this.height + sep + this.strokeWidth + this.flipX + this.flipY; + }, + + /** + * calculate transform matrix that represents the current transformations from the + * object's properties. + * @param {Boolean} [skipGroup] return transform matrix for object not counting parent transformations + * @return {Array} transform matrix for the object + */ + calcTransformMatrix: function(skipGroup) { + if (skipGroup) { + return this.calcOwnMatrix(); + } + var key = this.transformMatrixKey(), cache = this.matrixCache || (this.matrixCache = {}); + if (cache.key === key) { + return cache.value; + } + var matrix = this.calcOwnMatrix(); + if (this.group) { + matrix = multiplyMatrices(this.group.calcTransformMatrix(), matrix); + } + cache.key = key; + cache.value = matrix; + return matrix; + }, + + /** + * calculate transform matrix that represents the current transformations from the + * object's properties, this matrix does not include the group transformation + * @return {Array} transform matrix for the object + */ + calcOwnMatrix: function() { + var key = this.transformMatrixKey(true), cache = this.ownMatrixCache || (this.ownMatrixCache = {}); + if (cache.key === key) { + return cache.value; + } + var tMatrix = this._calcTranslateMatrix(); + this.translateX = tMatrix[4]; + this.translateY = tMatrix[5]; + cache.key = key; + cache.value = fabric.util.composeMatrix(this); + return cache.value; + }, + + /* + * Calculate object dimensions from its properties + * @private + * @deprecated since 3.4.0, please use fabric.util._calcDimensionsTransformMatrix + * not including or including flipX, flipY to emulate the flipping boolean + * @return {Object} .x width dimension + * @return {Object} .y height dimension + */ + _calcDimensionsTransformMatrix: function(skewX, skewY, flipping) { + return fabric.util.calcDimensionsMatrix({ + skewX: skewX, + skewY: skewY, + scaleX: this.scaleX * (flipping && this.flipX ? -1 : 1), + scaleY: this.scaleY * (flipping && this.flipY ? -1 : 1) + }); + }, + + /* + * Calculate object dimensions from its properties + * @private + * @return {Object} .x width dimension + * @return {Object} .y height dimension + */ + _getNonTransformedDimensions: function() { + var strokeWidth = this.strokeWidth, + w = this.width + strokeWidth, + h = this.height + strokeWidth; + return { x: w, y: h }; + }, + + /* + * Calculate object bounding box dimensions from its properties scale, skew. + * @param {Number} skewX, a value to override current skewX + * @param {Number} skewY, a value to override current skewY + * @private + * @return {Object} .x width dimension + * @return {Object} .y height dimension + */ + _getTransformedDimensions: function(skewX, skewY) { + if (typeof skewX === 'undefined') { + skewX = this.skewX; + } + if (typeof skewY === 'undefined') { + skewY = this.skewY; + } + var dimensions = this._getNonTransformedDimensions(), dimX, dimY, + noSkew = skewX === 0 && skewY === 0; + + if (this.strokeUniform) { + dimX = this.width; + dimY = this.height; + } + else { + dimX = dimensions.x; + dimY = dimensions.y; + } + if (noSkew) { + return this._finalizeDimensions(dimX * this.scaleX, dimY * this.scaleY); + } + else { + dimX /= 2; + dimY /= 2; + } + var points = [ + { + x: -dimX, + y: -dimY + }, + { + x: dimX, + y: -dimY + }, + { + x: -dimX, + y: dimY + }, + { + x: dimX, + y: dimY + }], + transformMatrix = fabric.util.calcDimensionsMatrix({ + scaleX: this.scaleX, + scaleY: this.scaleY, + skewX: this.skewX, + skewY: this.skewY, + }), + bbox = fabric.util.makeBoundingBoxFromPoints(points, transformMatrix); + return this._finalizeDimensions(bbox.width, bbox.height); + }, + + /* + * Calculate object bounding box dimensions from its properties scale, skew. + * @param Number width width of the bbox + * @param Number height height of the bbox + * @private + * @return {Object} .x finalized width dimension + * @return {Object} .y finalized height dimension + */ + _finalizeDimensions: function(width, height) { + return this.strokeUniform ? + { x: width + this.strokeWidth, y: height + this.strokeWidth } + : + { x: width, y: height }; + }, + /* + * Calculate object dimensions for controls, including padding and canvas zoom. + * private + */ + _calculateCurrentDimensions: function() { + var vpt = this.getViewportTransform(), + dim = this._getTransformedDimensions(), + p = fabric.util.transformPoint(dim, vpt, true); + + return p.scalarAdd(2 * this.padding); + }, + }); +})(); + + +fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { + + /** + * Moves an object to the bottom of the stack of drawn objects + * @return {fabric.Object} thisArg + * @chainable + */ + sendToBack: function() { + if (this.group) { + fabric.StaticCanvas.prototype.sendToBack.call(this.group, this); + } + else { + this.canvas.sendToBack(this); + } + return this; + }, + + /** + * Moves an object to the top of the stack of drawn objects + * @return {fabric.Object} thisArg + * @chainable + */ + bringToFront: function() { + if (this.group) { + fabric.StaticCanvas.prototype.bringToFront.call(this.group, this); + } + else { + this.canvas.bringToFront(this); + } + return this; + }, + + /** + * Moves an object down in stack of drawn objects + * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object + * @return {fabric.Object} thisArg + * @chainable + */ + sendBackwards: function(intersecting) { + if (this.group) { + fabric.StaticCanvas.prototype.sendBackwards.call(this.group, this, intersecting); + } + else { + this.canvas.sendBackwards(this, intersecting); + } + return this; + }, + + /** + * Moves an object up in stack of drawn objects + * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object + * @return {fabric.Object} thisArg + * @chainable + */ + bringForward: function(intersecting) { + if (this.group) { + fabric.StaticCanvas.prototype.bringForward.call(this.group, this, intersecting); + } + else { + this.canvas.bringForward(this, intersecting); + } + return this; + }, + + /** + * Moves an object to specified level in stack of drawn objects + * @param {Number} index New position of object + * @return {fabric.Object} thisArg + * @chainable + */ + moveTo: function(index) { + if (this.group && this.group.type !== 'activeSelection') { + fabric.StaticCanvas.prototype.moveTo.call(this.group, this, index); + } + else { + this.canvas.moveTo(this, index); + } + return this; + } +}); + + +/* _TO_SVG_START_ */ +(function() { + function getSvgColorString(prop, value) { + if (!value) { + return prop + ': none; '; + } + else if (value.toLive) { + return prop + ': url(#SVGID_' + value.id + '); '; + } + else { + var color = new fabric.Color(value), + str = prop + ': ' + color.toRgb() + '; ', + opacity = color.getAlpha(); + if (opacity !== 1) { + //change the color in rgb + opacity + str += prop + '-opacity: ' + opacity.toString() + '; '; + } + return str; + } + } + + var toFixed = fabric.util.toFixed; + + fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { + /** + * Returns styles-string for svg-export + * @param {Boolean} skipShadow a boolean to skip shadow filter output + * @return {String} + */ + getSvgStyles: function(skipShadow) { + + var fillRule = this.fillRule ? this.fillRule : 'nonzero', + strokeWidth = this.strokeWidth ? this.strokeWidth : '0', + strokeDashArray = this.strokeDashArray ? this.strokeDashArray.join(' ') : 'none', + strokeDashOffset = this.strokeDashOffset ? this.strokeDashOffset : '0', + strokeLineCap = this.strokeLineCap ? this.strokeLineCap : 'butt', + strokeLineJoin = this.strokeLineJoin ? this.strokeLineJoin : 'miter', + strokeMiterLimit = this.strokeMiterLimit ? this.strokeMiterLimit : '4', + opacity = typeof this.opacity !== 'undefined' ? this.opacity : '1', + visibility = this.visible ? '' : ' visibility: hidden;', + filter = skipShadow ? '' : this.getSvgFilter(), + fill = getSvgColorString('fill', this.fill), + stroke = getSvgColorString('stroke', this.stroke); + + return [ + stroke, + 'stroke-width: ', strokeWidth, '; ', + 'stroke-dasharray: ', strokeDashArray, '; ', + 'stroke-linecap: ', strokeLineCap, '; ', + 'stroke-dashoffset: ', strokeDashOffset, '; ', + 'stroke-linejoin: ', strokeLineJoin, '; ', + 'stroke-miterlimit: ', strokeMiterLimit, '; ', + fill, + 'fill-rule: ', fillRule, '; ', + 'opacity: ', opacity, ';', + filter, + visibility + ].join(''); + }, + + /** + * Returns styles-string for svg-export + * @param {Object} style the object from which to retrieve style properties + * @param {Boolean} useWhiteSpace a boolean to include an additional attribute in the style. + * @return {String} + */ + getSvgSpanStyles: function(style, useWhiteSpace) { + var term = '; '; + var fontFamily = style.fontFamily ? + 'font-family: ' + (((style.fontFamily.indexOf('\'') === -1 && style.fontFamily.indexOf('"') === -1) ? + '\'' + style.fontFamily + '\'' : style.fontFamily)) + term : ''; + var strokeWidth = style.strokeWidth ? 'stroke-width: ' + style.strokeWidth + term : '', + fontFamily = fontFamily, + fontSize = style.fontSize ? 'font-size: ' + style.fontSize + 'px' + term : '', + fontStyle = style.fontStyle ? 'font-style: ' + style.fontStyle + term : '', + fontWeight = style.fontWeight ? 'font-weight: ' + style.fontWeight + term : '', + fill = style.fill ? getSvgColorString('fill', style.fill) : '', + stroke = style.stroke ? getSvgColorString('stroke', style.stroke) : '', + textDecoration = this.getSvgTextDecoration(style), + deltaY = style.deltaY ? 'baseline-shift: ' + (-style.deltaY) + '; ' : ''; + if (textDecoration) { + textDecoration = 'text-decoration: ' + textDecoration + term; + } + + return [ + stroke, + strokeWidth, + fontFamily, + fontSize, + fontStyle, + fontWeight, + textDecoration, + fill, + deltaY, + useWhiteSpace ? 'white-space: pre; ' : '' + ].join(''); + }, + + /** + * Returns text-decoration property for svg-export + * @param {Object} style the object from which to retrieve style properties + * @return {String} + */ + getSvgTextDecoration: function(style) { + if ('overline' in style || 'underline' in style || 'linethrough' in style) { + return (style.overline ? 'overline ' : '') + + (style.underline ? 'underline ' : '') + (style.linethrough ? 'line-through ' : ''); + } + return ''; + }, + + /** + * Returns filter for svg shadow + * @return {String} + */ + getSvgFilter: function() { + return this.shadow ? 'filter: url(#SVGID_' + this.shadow.id + ');' : ''; + }, + + /** + * Returns id attribute for svg output + * @return {String} + */ + getSvgCommons: function() { + return [ + this.id ? 'id="' + this.id + '" ' : '', + this.clipPath ? 'clip-path="url(#' + this.clipPath.clipPathId + ')" ' : '', + ].join(''); + }, + + /** + * Returns transform-string for svg-export + * @param {Boolean} use the full transform or the single object one. + * @return {String} + */ + getSvgTransform: function(full, additionalTransform) { + var transform = full ? this.calcTransformMatrix() : this.calcOwnMatrix(), + svgTransform = 'transform="' + fabric.util.matrixToSVG(transform); + return svgTransform + + (additionalTransform || '') + this.getSvgTransformMatrix() + '" '; + }, + + /** + * Returns transform-string for svg-export from the transform matrix of single elements + * @return {String} + */ + getSvgTransformMatrix: function() { + return this.transformMatrix ? ' ' + fabric.util.matrixToSVG(this.transformMatrix) : ''; + }, + + _setSVGBg: function(textBgRects) { + if (this.backgroundColor) { + var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS; + textBgRects.push( + '\t\t\n'); + } + }, + + /** + * Returns svg representation of an instance + * @param {Function} [reviver] Method for further parsing of svg representation. + * @return {String} svg representation of an instance + */ + toSVG: function(reviver) { + return this._createBaseSVGMarkup(this._toSVG(reviver), { reviver: reviver }); + }, + + /** + * Returns svg clipPath representation of an instance + * @param {Function} [reviver] Method for further parsing of svg representation. + * @return {String} svg representation of an instance + */ + toClipPathSVG: function(reviver) { + return '\t' + this._createBaseClipPathSVGMarkup(this._toSVG(reviver), { reviver: reviver }); + }, + + /** + * @private + */ + _createBaseClipPathSVGMarkup: function(objectMarkup, options) { + options = options || {}; + var reviver = options.reviver, + additionalTransform = options.additionalTransform || '', + commonPieces = [ + this.getSvgTransform(true, additionalTransform), + this.getSvgCommons(), + ].join(''), + // insert commons in the markup, style and svgCommons + index = objectMarkup.indexOf('COMMON_PARTS'); + objectMarkup[index] = commonPieces; + return reviver ? reviver(objectMarkup.join('')) : objectMarkup.join(''); + }, + + /** + * @private + */ + _createBaseSVGMarkup: function(objectMarkup, options) { + options = options || {}; + var noStyle = options.noStyle, + reviver = options.reviver, + styleInfo = noStyle ? '' : 'style="' + this.getSvgStyles() + '" ', + shadowInfo = options.withShadow ? 'style="' + this.getSvgFilter() + '" ' : '', + clipPath = this.clipPath, + vectorEffect = this.strokeUniform ? 'vector-effect="non-scaling-stroke" ' : '', + absoluteClipPath = clipPath && clipPath.absolutePositioned, + stroke = this.stroke, fill = this.fill, shadow = this.shadow, + commonPieces, markup = [], clipPathMarkup, + // insert commons in the markup, style and svgCommons + index = objectMarkup.indexOf('COMMON_PARTS'), + additionalTransform = options.additionalTransform; + if (clipPath) { + clipPath.clipPathId = 'CLIPPATH_' + fabric.Object.__uid++; + clipPathMarkup = '\n' + + clipPath.toClipPathSVG(reviver) + + '\n'; + } + if (absoluteClipPath) { + markup.push( + '\n' + ); + } + markup.push( + '\n' + ); + commonPieces = [ + styleInfo, + vectorEffect, + noStyle ? '' : this.addPaintOrder(), ' ', + additionalTransform ? 'transform="' + additionalTransform + '" ' : '', + ].join(''); + objectMarkup[index] = commonPieces; + if (fill && fill.toLive) { + markup.push(fill.toSVG(this)); + } + if (stroke && stroke.toLive) { + markup.push(stroke.toSVG(this)); + } + if (shadow) { + markup.push(shadow.toSVG(this)); + } + if (clipPath) { + markup.push(clipPathMarkup); + } + markup.push(objectMarkup.join('')); + markup.push('\n'); + absoluteClipPath && markup.push('\n'); + return reviver ? reviver(markup.join('')) : markup.join(''); + }, + + addPaintOrder: function() { + return this.paintFirst !== 'fill' ? ' paint-order="' + this.paintFirst + '" ' : ''; + } + }); +})(); +/* _TO_SVG_END_ */ + + +(function() { + + var extend = fabric.util.object.extend, + originalSet = 'stateProperties'; + + /* + Depends on `stateProperties` + */ + function saveProps(origin, destination, props) { + var tmpObj = { }, deep = true; + props.forEach(function(prop) { + tmpObj[prop] = origin[prop]; + }); + extend(origin[destination], tmpObj, deep); + } + + function _isEqual(origValue, currentValue, firstPass) { + if (origValue === currentValue) { + // if the objects are identical, return + return true; + } + else if (Array.isArray(origValue)) { + if (!Array.isArray(currentValue) || origValue.length !== currentValue.length) { + return false; + } + for (var i = 0, len = origValue.length; i < len; i++) { + if (!_isEqual(origValue[i], currentValue[i])) { + return false; + } + } + return true; + } + else if (origValue && typeof origValue === 'object') { + var keys = Object.keys(origValue), key; + if (!currentValue || + typeof currentValue !== 'object' || + (!firstPass && keys.length !== Object.keys(currentValue).length) + ) { + return false; + } + for (var i = 0, len = keys.length; i < len; i++) { + key = keys[i]; + // since clipPath is in the statefull cache list and the clipPath objects + // would be iterated as an object, this would lead to possible infinite recursion + if (key === 'canvas') { + continue; + } + if (!_isEqual(origValue[key], currentValue[key])) { + return false; + } + } + return true; + } + } + + + fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { + + /** + * Returns true if object state (one of its state properties) was changed + * @param {String} [propertySet] optional name for the set of property we want to save + * @return {Boolean} true if instance' state has changed since `{@link fabric.Object#saveState}` was called + */ + hasStateChanged: function(propertySet) { + propertySet = propertySet || originalSet; + var dashedPropertySet = '_' + propertySet; + if (Object.keys(this[dashedPropertySet]).length < this[propertySet].length) { + return true; + } + return !_isEqual(this[dashedPropertySet], this, true); + }, + + /** + * Saves state of an object + * @param {Object} [options] Object with additional `stateProperties` array to include when saving state + * @return {fabric.Object} thisArg + */ + saveState: function(options) { + var propertySet = options && options.propertySet || originalSet, + destination = '_' + propertySet; + if (!this[destination]) { + return this.setupState(options); + } + saveProps(this, destination, this[propertySet]); + if (options && options.stateProperties) { + saveProps(this, destination, options.stateProperties); + } + return this; + }, + + /** + * Setups state of an object + * @param {Object} [options] Object with additional `stateProperties` array to include when saving state + * @return {fabric.Object} thisArg + */ + setupState: function(options) { + options = options || { }; + var propertySet = options.propertySet || originalSet; + options.propertySet = propertySet; + this['_' + propertySet] = { }; + this.saveState(options); + return this; + } + }); +})(); + + +(function() { + + var degreesToRadians = fabric.util.degreesToRadians; + + fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { + + /** + * The object interactivity controls. + * @private + */ + _controlsVisibility: null, + + /** + * Determines which corner has been clicked + * @private + * @param {Object} pointer The pointer indicating the mouse position + * @return {String|Boolean} corner code (tl, tr, bl, br, etc.), or false if nothing is found + */ + _findTargetCorner: function(pointer) { + // objects in group, anykind, are not self modificable, + // must not return an hovered corner. + if (!this.hasControls || this.group || (!this.canvas || this.canvas._activeObject !== this)) { + return false; + } + + var ex = pointer.x, + ey = pointer.y, + xPoints, + lines; + this.__corner = 0; + for (var i in this.oCoords) { + + if (!this.isControlVisible(i)) { + continue; + } + + if (i === 'mtr' && !this.hasRotatingPoint) { + continue; + } + + if (this.get('lockUniScaling') && + (i === 'mt' || i === 'mr' || i === 'mb' || i === 'ml')) { + continue; + } + + lines = this._getImageLines(this.oCoords[i].corner); + + // debugging + + // canvas.contextTop.fillRect(lines.bottomline.d.x, lines.bottomline.d.y, 2, 2); + // canvas.contextTop.fillRect(lines.bottomline.o.x, lines.bottomline.o.y, 2, 2); + + // canvas.contextTop.fillRect(lines.leftline.d.x, lines.leftline.d.y, 2, 2); + // canvas.contextTop.fillRect(lines.leftline.o.x, lines.leftline.o.y, 2, 2); + + // canvas.contextTop.fillRect(lines.topline.d.x, lines.topline.d.y, 2, 2); + // canvas.contextTop.fillRect(lines.topline.o.x, lines.topline.o.y, 2, 2); + + // canvas.contextTop.fillRect(lines.rightline.d.x, lines.rightline.d.y, 2, 2); + // canvas.contextTop.fillRect(lines.rightline.o.x, lines.rightline.o.y, 2, 2); + + xPoints = this._findCrossPoints({ x: ex, y: ey }, lines); + if (xPoints !== 0 && xPoints % 2 === 1) { + this.__corner = i; + return i; + } + } + return false; + }, + + /** + * Sets the coordinates of the draggable boxes in the corners of + * the image used to scale/rotate it. + * @private + */ + _setCornerCoords: function() { + var coords = this.oCoords, + newTheta = degreesToRadians(45 - this.angle), + /* Math.sqrt(2 * Math.pow(this.cornerSize, 2)) / 2, */ + /* 0.707106 stands for sqrt(2)/2 */ + cornerHypotenuse = this.cornerSize * 0.707106, + cosHalfOffset = cornerHypotenuse * fabric.util.cos(newTheta), + sinHalfOffset = cornerHypotenuse * fabric.util.sin(newTheta), + x, y; + + for (var point in coords) { + x = coords[point].x; + y = coords[point].y; + coords[point].corner = { + tl: { + x: x - sinHalfOffset, + y: y - cosHalfOffset + }, + tr: { + x: x + cosHalfOffset, + y: y - sinHalfOffset + }, + bl: { + x: x - cosHalfOffset, + y: y + sinHalfOffset + }, + br: { + x: x + sinHalfOffset, + y: y + cosHalfOffset + } + }; + } + }, + + /** + * Draws a colored layer behind the object, inside its selection borders. + * Requires public options: padding, selectionBackgroundColor + * this function is called when the context is transformed + * has checks to be skipped when the object is on a staticCanvas + * @param {CanvasRenderingContext2D} ctx Context to draw on + * @return {fabric.Object} thisArg + * @chainable + */ + drawSelectionBackground: function(ctx) { + if (!this.selectionBackgroundColor || + (this.canvas && !this.canvas.interactive) || + (this.canvas && this.canvas._activeObject !== this) + ) { + return this; + } + ctx.save(); + var center = this.getCenterPoint(), wh = this._calculateCurrentDimensions(), + vpt = this.canvas.viewportTransform; + ctx.translate(center.x, center.y); + ctx.scale(1 / vpt[0], 1 / vpt[3]); + ctx.rotate(degreesToRadians(this.angle)); + ctx.fillStyle = this.selectionBackgroundColor; + ctx.fillRect(-wh.x / 2, -wh.y / 2, wh.x, wh.y); + ctx.restore(); + return this; + }, + + /** + * Draws borders of an object's bounding box. + * Requires public properties: width, height + * Requires public options: padding, borderColor + * @param {CanvasRenderingContext2D} ctx Context to draw on + * @param {Object} styleOverride object to override the object style + * @return {fabric.Object} thisArg + * @chainable + */ + drawBorders: function(ctx, styleOverride) { + styleOverride = styleOverride || {}; + var wh = this._calculateCurrentDimensions(), + strokeWidth = 1 / this.borderScaleFactor, + width = wh.x + strokeWidth, + height = wh.y + strokeWidth, + drawRotatingPoint = typeof styleOverride.hasRotatingPoint !== 'undefined' ? + styleOverride.hasRotatingPoint : this.hasRotatingPoint, + hasControls = typeof styleOverride.hasControls !== 'undefined' ? + styleOverride.hasControls : this.hasControls, + rotatingPointOffset = typeof styleOverride.rotatingPointOffset !== 'undefined' ? + styleOverride.rotatingPointOffset : this.rotatingPointOffset; + + ctx.save(); + ctx.strokeStyle = styleOverride.borderColor || this.borderColor; + this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray, null); + + ctx.strokeRect( + -width / 2, + -height / 2, + width, + height + ); + + if (drawRotatingPoint && this.isControlVisible('mtr') && hasControls) { + + var rotateHeight = -height / 2; + + ctx.beginPath(); + ctx.moveTo(0, rotateHeight); + ctx.lineTo(0, rotateHeight - rotatingPointOffset); + ctx.stroke(); + } + + ctx.restore(); + return this; + }, + + /** + * Draws borders of an object's bounding box when it is inside a group. + * Requires public properties: width, height + * Requires public options: padding, borderColor + * @param {CanvasRenderingContext2D} ctx Context to draw on + * @param {object} options object representing current object parameters + * @param {Object} styleOverride object to override the object style + * @return {fabric.Object} thisArg + * @chainable + */ + drawBordersInGroup: function(ctx, options, styleOverride) { + styleOverride = styleOverride || {}; + var p = this._getNonTransformedDimensions(), + matrix = fabric.util.composeMatrix({ + scaleX: options.scaleX, + scaleY: options.scaleY, + skewX: options.skewX + }), + wh = fabric.util.transformPoint(p, matrix), + strokeWidth = 1 / this.borderScaleFactor, + width = wh.x + strokeWidth, + height = wh.y + strokeWidth; + + ctx.save(); + this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray, null); + ctx.strokeStyle = styleOverride.borderColor || this.borderColor; + + ctx.strokeRect( + -width / 2, + -height / 2, + width, + height + ); + + ctx.restore(); + return this; + }, + + /** + * Draws corners of an object's bounding box. + * Requires public properties: width, height + * Requires public options: cornerSize, padding + * @param {CanvasRenderingContext2D} ctx Context to draw on + * @param {Object} styleOverride object to override the object style + * @return {fabric.Object} thisArg + * @chainable + */ + drawControls: function(ctx, styleOverride) { + styleOverride = styleOverride || {}; + var wh = this._calculateCurrentDimensions(), + width = wh.x, + height = wh.y, + scaleOffset = styleOverride.cornerSize || this.cornerSize, + left = -(width + scaleOffset) / 2, + top = -(height + scaleOffset) / 2, + transparentCorners = typeof styleOverride.transparentCorners !== 'undefined' ? + styleOverride.transparentCorners : this.transparentCorners, + hasRotatingPoint = typeof styleOverride.hasRotatingPoint !== 'undefined' ? + styleOverride.hasRotatingPoint : this.hasRotatingPoint, + methodName = transparentCorners ? 'stroke' : 'fill'; + + ctx.save(); + ctx.strokeStyle = ctx.fillStyle = styleOverride.cornerColor || this.cornerColor; + if (!this.transparentCorners) { + ctx.strokeStyle = styleOverride.cornerStrokeColor || this.cornerStrokeColor; + } + this._setLineDash(ctx, styleOverride.cornerDashArray || this.cornerDashArray, null); + + // top-left + this._drawControl('tl', ctx, methodName, + left, + top, styleOverride); + + // top-right + this._drawControl('tr', ctx, methodName, + left + width, + top, styleOverride); + + // bottom-left + this._drawControl('bl', ctx, methodName, + left, + top + height, styleOverride); + + // bottom-right + this._drawControl('br', ctx, methodName, + left + width, + top + height, styleOverride); + + if (!this.get('lockUniScaling')) { + + // middle-top + this._drawControl('mt', ctx, methodName, + left + width / 2, + top, styleOverride); + + // middle-bottom + this._drawControl('mb', ctx, methodName, + left + width / 2, + top + height, styleOverride); + + // middle-right + this._drawControl('mr', ctx, methodName, + left + width, + top + height / 2, styleOverride); + + // middle-left + this._drawControl('ml', ctx, methodName, + left, + top + height / 2, styleOverride); + } + + // middle-top-rotate + if (hasRotatingPoint) { + this._drawControl('mtr', ctx, methodName, + left + width / 2, + top - this.rotatingPointOffset, styleOverride); + } + + ctx.restore(); + + return this; + }, + + /** + * @private + */ + _drawControl: function(control, ctx, methodName, left, top, styleOverride) { + styleOverride = styleOverride || {}; + if (!this.isControlVisible(control)) { + return; + } + var size = this.cornerSize, stroke = !this.transparentCorners && this.cornerStrokeColor; + switch (styleOverride.cornerStyle || this.cornerStyle) { + case 'circle': + ctx.beginPath(); + ctx.arc(left + size / 2, top + size / 2, size / 2, 0, 2 * Math.PI, false); + ctx[methodName](); + if (stroke) { + ctx.stroke(); + } + break; + default: + this.transparentCorners || ctx.clearRect(left, top, size, size); + ctx[methodName + 'Rect'](left, top, size, size); + if (stroke) { + ctx.strokeRect(left, top, size, size); + } + } + }, + + /** + * Returns true if the specified control is visible, false otherwise. + * @param {String} controlName The name of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'. + * @returns {Boolean} true if the specified control is visible, false otherwise + */ + isControlVisible: function(controlName) { + return this._getControlsVisibility()[controlName]; + }, + + /** + * Sets the visibility of the specified control. + * @param {String} controlName The name of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'. + * @param {Boolean} visible true to set the specified control visible, false otherwise + * @return {fabric.Object} thisArg + * @chainable + */ + setControlVisible: function(controlName, visible) { + this._getControlsVisibility()[controlName] = visible; + return this; + }, + + /** + * Sets the visibility state of object controls. + * @param {Object} [options] Options object + * @param {Boolean} [options.bl] true to enable the bottom-left control, false to disable it + * @param {Boolean} [options.br] true to enable the bottom-right control, false to disable it + * @param {Boolean} [options.mb] true to enable the middle-bottom control, false to disable it + * @param {Boolean} [options.ml] true to enable the middle-left control, false to disable it + * @param {Boolean} [options.mr] true to enable the middle-right control, false to disable it + * @param {Boolean} [options.mt] true to enable the middle-top control, false to disable it + * @param {Boolean} [options.tl] true to enable the top-left control, false to disable it + * @param {Boolean} [options.tr] true to enable the top-right control, false to disable it + * @param {Boolean} [options.mtr] true to enable the middle-top-rotate control, false to disable it + * @return {fabric.Object} thisArg + * @chainable + */ + setControlsVisibility: function(options) { + options || (options = { }); + + for (var p in options) { + this.setControlVisible(p, options[p]); + } + return this; + }, + + /** + * Returns the instance of the control visibility set for this object. + * @private + * @returns {Object} + */ + _getControlsVisibility: function() { + if (!this._controlsVisibility) { + this._controlsVisibility = { + tl: true, + tr: true, + br: true, + bl: true, + ml: true, + mt: true, + mr: true, + mb: true, + mtr: true + }; + } + return this._controlsVisibility; + }, + + /** + * This callback function is called every time _discardActiveObject or _setActiveObject + * try to to deselect this object. If the function returns true, the process is cancelled + * @param {Object} [options] options sent from the upper functions + * @param {Event} [options.e] event if the process is generated by an event + */ + onDeselect: function() { + // implemented by sub-classes, as needed. + }, + + + /** + * This callback function is called every time _discardActiveObject or _setActiveObject + * try to to select this object. If the function returns true, the process is cancelled + * @param {Object} [options] options sent from the upper functions + * @param {Event} [options.e] event if the process is generated by an event + */ + onSelect: function() { + // implemented by sub-classes, as needed. + } + }); +})(); + + +fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ { + + /** + * Animation duration (in ms) for fx* methods + * @type Number + * @default + */ + FX_DURATION: 500, + + /** + * Centers object horizontally with animation. + * @param {fabric.Object} object Object to center + * @param {Object} [callbacks] Callbacks object with optional "onComplete" and/or "onChange" properties + * @param {Function} [callbacks.onComplete] Invoked on completion + * @param {Function} [callbacks.onChange] Invoked on every step of animation + * @return {fabric.Canvas} thisArg + * @chainable + */ + fxCenterObjectH: function (object, callbacks) { + callbacks = callbacks || { }; + + var empty = function() { }, + onComplete = callbacks.onComplete || empty, + onChange = callbacks.onChange || empty, + _this = this; + + fabric.util.animate({ + startValue: object.left, + endValue: this.getCenter().left, + duration: this.FX_DURATION, + onChange: function(value) { + object.set('left', value); + _this.requestRenderAll(); + onChange(); + }, + onComplete: function() { + object.setCoords(); + onComplete(); + } + }); + + return this; + }, + + /** + * Centers object vertically with animation. + * @param {fabric.Object} object Object to center + * @param {Object} [callbacks] Callbacks object with optional "onComplete" and/or "onChange" properties + * @param {Function} [callbacks.onComplete] Invoked on completion + * @param {Function} [callbacks.onChange] Invoked on every step of animation + * @return {fabric.Canvas} thisArg + * @chainable + */ + fxCenterObjectV: function (object, callbacks) { + callbacks = callbacks || { }; + + var empty = function() { }, + onComplete = callbacks.onComplete || empty, + onChange = callbacks.onChange || empty, + _this = this; + + fabric.util.animate({ + startValue: object.top, + endValue: this.getCenter().top, + duration: this.FX_DURATION, + onChange: function(value) { + object.set('top', value); + _this.requestRenderAll(); + onChange(); + }, + onComplete: function() { + object.setCoords(); + onComplete(); + } + }); + + return this; + }, + + /** + * Same as `fabric.Canvas#remove` but animated + * @param {fabric.Object} object Object to remove + * @param {Object} [callbacks] Callbacks object with optional "onComplete" and/or "onChange" properties + * @param {Function} [callbacks.onComplete] Invoked on completion + * @param {Function} [callbacks.onChange] Invoked on every step of animation + * @return {fabric.Canvas} thisArg + * @chainable + */ + fxRemove: function (object, callbacks) { + callbacks = callbacks || { }; + + var empty = function() { }, + onComplete = callbacks.onComplete || empty, + onChange = callbacks.onChange || empty, + _this = this; + + fabric.util.animate({ + startValue: object.opacity, + endValue: 0, + duration: this.FX_DURATION, + onChange: function(value) { + object.set('opacity', value); + _this.requestRenderAll(); + onChange(); + }, + onComplete: function () { + _this.remove(object); + onComplete(); + } + }); + + return this; + } +}); + +fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { + /** + * Animates object's properties + * @param {String|Object} property Property to animate (if string) or properties to animate (if object) + * @param {Number|Object} value Value to animate property to (if string was given first) or options object + * @return {fabric.Object} thisArg + * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#animation} + * @chainable + * + * As object — multiple properties + * + * object.animate({ left: ..., top: ... }); + * object.animate({ left: ..., top: ... }, { duration: ... }); + * + * As string — one property + * + * object.animate('left', ...); + * object.animate('left', { duration: ... }); + * + */ + animate: function() { + if (arguments[0] && typeof arguments[0] === 'object') { + var propsToAnimate = [], prop, skipCallbacks; + for (prop in arguments[0]) { + propsToAnimate.push(prop); + } + for (var i = 0, len = propsToAnimate.length; i < len; i++) { + prop = propsToAnimate[i]; + skipCallbacks = i !== len - 1; + this._animate(prop, arguments[0][prop], arguments[1], skipCallbacks); + } + } + else { + this._animate.apply(this, arguments); + } + return this; + }, + + /** + * @private + * @param {String} property Property to animate + * @param {String} to Value to animate to + * @param {Object} [options] Options object + * @param {Boolean} [skipCallbacks] When true, callbacks like onchange and oncomplete are not invoked + */ + _animate: function(property, to, options, skipCallbacks) { + var _this = this, propPair; + + to = to.toString(); + + if (!options) { + options = { }; + } + else { + options = fabric.util.object.clone(options); + } + + if (~property.indexOf('.')) { + propPair = property.split('.'); + } + + var currentValue = propPair + ? this.get(propPair[0])[propPair[1]] + : this.get(property); + + if (!('from' in options)) { + options.from = currentValue; + } + + if (~to.indexOf('=')) { + to = currentValue + parseFloat(to.replace('=', '')); + } + else { + to = parseFloat(to); + } + + fabric.util.animate({ + startValue: options.from, + endValue: to, + byValue: options.by, + easing: options.easing, + duration: options.duration, + abort: options.abort && function() { + return options.abort.call(_this); + }, + onChange: function(value, valueProgress, timeProgress) { + if (propPair) { + _this[propPair[0]][propPair[1]] = value; + } + else { + _this.set(property, value); + } + if (skipCallbacks) { + return; + } + options.onChange && options.onChange(value, valueProgress, timeProgress); + }, + onComplete: function(value, valueProgress, timeProgress) { + if (skipCallbacks) { + return; + } + + _this.setCoords(); + options.onComplete && options.onComplete(value, valueProgress, timeProgress); + } + }); + } +}); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + extend = fabric.util.object.extend, + clone = fabric.util.object.clone, + coordProps = { x1: 1, x2: 1, y1: 1, y2: 1 }, + supportsLineDash = fabric.StaticCanvas.supports('setLineDash'); + + if (fabric.Line) { + fabric.warn('fabric.Line is already defined'); + return; + } + + /** + * Line class + * @class fabric.Line + * @extends fabric.Object + * @see {@link fabric.Line#initialize} for constructor definition + */ + fabric.Line = fabric.util.createClass(fabric.Object, /** @lends fabric.Line.prototype */ { + + /** + * Type of an object + * @type String + * @default + */ + type: 'line', + + /** + * x value or first line edge + * @type Number + * @default + */ + x1: 0, + + /** + * y value or first line edge + * @type Number + * @default + */ + y1: 0, + + /** + * x value or second line edge + * @type Number + * @default + */ + x2: 0, + + /** + * y value or second line edge + * @type Number + * @default + */ + y2: 0, + + cacheProperties: fabric.Object.prototype.cacheProperties.concat('x1', 'x2', 'y1', 'y2'), + + /** + * Constructor + * @param {Array} [points] Array of points + * @param {Object} [options] Options object + * @return {fabric.Line} thisArg + */ + initialize: function(points, options) { + if (!points) { + points = [0, 0, 0, 0]; + } + + this.callSuper('initialize', options); + + this.set('x1', points[0]); + this.set('y1', points[1]); + this.set('x2', points[2]); + this.set('y2', points[3]); + + this._setWidthHeight(options); + }, + + /** + * @private + * @param {Object} [options] Options + */ + _setWidthHeight: function(options) { + options || (options = { }); + + this.width = Math.abs(this.x2 - this.x1); + this.height = Math.abs(this.y2 - this.y1); + + this.left = 'left' in options + ? options.left + : this._getLeftToOriginX(); + + this.top = 'top' in options + ? options.top + : this._getTopToOriginY(); + }, + + /** + * @private + * @param {String} key + * @param {*} value + */ + _set: function(key, value) { + this.callSuper('_set', key, value); + if (typeof coordProps[key] !== 'undefined') { + this._setWidthHeight(); + } + return this; + }, + + /** + * @private + * @return {Number} leftToOriginX Distance from left edge of canvas to originX of Line. + */ + _getLeftToOriginX: makeEdgeToOriginGetter( + { // property names + origin: 'originX', + axis1: 'x1', + axis2: 'x2', + dimension: 'width' + }, + { // possible values of origin + nearest: 'left', + center: 'center', + farthest: 'right' + } + ), + + /** + * @private + * @return {Number} topToOriginY Distance from top edge of canvas to originY of Line. + */ + _getTopToOriginY: makeEdgeToOriginGetter( + { // property names + origin: 'originY', + axis1: 'y1', + axis2: 'y2', + dimension: 'height' + }, + { // possible values of origin + nearest: 'top', + center: 'center', + farthest: 'bottom' + } + ), + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(ctx) { + ctx.beginPath(); + + if (!this.strokeDashArray || this.strokeDashArray && supportsLineDash) { + // move from center (of virtual box) to its left/top corner + // we can't assume x1, y1 is top left and x2, y2 is bottom right + var p = this.calcLinePoints(); + ctx.moveTo(p.x1, p.y1); + ctx.lineTo(p.x2, p.y2); + } + + ctx.lineWidth = this.strokeWidth; + + // TODO: test this + // make sure setting "fill" changes color of a line + // (by copying fillStyle to strokeStyle, since line is stroked, not filled) + var origStrokeStyle = ctx.strokeStyle; + ctx.strokeStyle = this.stroke || ctx.fillStyle; + this.stroke && this._renderStroke(ctx); + ctx.strokeStyle = origStrokeStyle; + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderDashedStroke: function(ctx) { + var p = this.calcLinePoints(); + + ctx.beginPath(); + fabric.util.drawDashedLine(ctx, p.x1, p.y1, p.x2, p.y2, this.strokeDashArray); + ctx.closePath(); + }, + + /** + * This function is an helper for svg import. it returns the center of the object in the svg + * untransformed coordinates + * @private + * @return {Object} center point from element coordinates + */ + _findCenterFromElement: function() { + return { + x: (this.x1 + this.x2) / 2, + y: (this.y1 + this.y2) / 2, + }; + }, + + /** + * Returns object representation of an instance + * @methd toObject + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject: function(propertiesToInclude) { + return extend(this.callSuper('toObject', propertiesToInclude), this.calcLinePoints()); + }, + + /* + * Calculate object dimensions from its properties + * @private + */ + _getNonTransformedDimensions: function() { + var dim = this.callSuper('_getNonTransformedDimensions'); + if (this.strokeLineCap === 'butt') { + if (this.width === 0) { + dim.y -= this.strokeWidth; + } + if (this.height === 0) { + dim.x -= this.strokeWidth; + } + } + return dim; + }, + + /** + * Recalculates line points given width and height + * @private + */ + calcLinePoints: function() { + var xMult = this.x1 <= this.x2 ? -1 : 1, + yMult = this.y1 <= this.y2 ? -1 : 1, + x1 = (xMult * this.width * 0.5), + y1 = (yMult * this.height * 0.5), + x2 = (xMult * this.width * -0.5), + y2 = (yMult * this.height * -0.5); + + return { + x1: x1, + x2: x2, + y1: y1, + y2: y2 + }; + }, + + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG: function() { + var p = this.calcLinePoints(); + return [ + '\n' + ]; + }, + /* _TO_SVG_END_ */ + }); + + /* _FROM_SVG_START_ */ + /** + * List of attribute names to account for when parsing SVG element (used by {@link fabric.Line.fromElement}) + * @static + * @memberOf fabric.Line + * @see http://www.w3.org/TR/SVG/shapes.html#LineElement + */ + fabric.Line.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x1 y1 x2 y2'.split(' ')); + + /** + * Returns fabric.Line instance from an SVG element + * @static + * @memberOf fabric.Line + * @param {SVGElement} element Element to parse + * @param {Object} [options] Options object + * @param {Function} [callback] callback function invoked after parsing + */ + fabric.Line.fromElement = function(element, callback, options) { + options = options || { }; + var parsedAttributes = fabric.parseAttributes(element, fabric.Line.ATTRIBUTE_NAMES), + points = [ + parsedAttributes.x1 || 0, + parsedAttributes.y1 || 0, + parsedAttributes.x2 || 0, + parsedAttributes.y2 || 0 + ]; + callback(new fabric.Line(points, extend(parsedAttributes, options))); + }; + /* _FROM_SVG_END_ */ + + /** + * Returns fabric.Line instance from an object representation + * @static + * @memberOf fabric.Line + * @param {Object} object Object to create an instance from + * @param {function} [callback] invoked with new instance as first argument + */ + fabric.Line.fromObject = function(object, callback) { + function _callback(instance) { + delete instance.points; + callback && callback(instance); + }; + var options = clone(object, true); + options.points = [object.x1, object.y1, object.x2, object.y2]; + fabric.Object._fromObject('Line', options, _callback, 'points'); + }; + + /** + * Produces a function that calculates distance from canvas edge to Line origin. + */ + function makeEdgeToOriginGetter(propertyNames, originValues) { + var origin = propertyNames.origin, + axis1 = propertyNames.axis1, + axis2 = propertyNames.axis2, + dimension = propertyNames.dimension, + nearest = originValues.nearest, + center = originValues.center, + farthest = originValues.farthest; + + return function() { + switch (this.get(origin)) { + case nearest: + return Math.min(this.get(axis1), this.get(axis2)); + case center: + return Math.min(this.get(axis1), this.get(axis2)) + (0.5 * this.get(dimension)); + case farthest: + return Math.max(this.get(axis1), this.get(axis2)); + } + }; + + } + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + pi = Math.PI; + + if (fabric.Circle) { + fabric.warn('fabric.Circle is already defined.'); + return; + } + + /** + * Circle class + * @class fabric.Circle + * @extends fabric.Object + * @see {@link fabric.Circle#initialize} for constructor definition + */ + fabric.Circle = fabric.util.createClass(fabric.Object, /** @lends fabric.Circle.prototype */ { + + /** + * Type of an object + * @type String + * @default + */ + type: 'circle', + + /** + * Radius of this circle + * @type Number + * @default + */ + radius: 0, + + /** + * Start angle of the circle, moving clockwise + * deprectated type, this should be in degree, this was an oversight. + * probably will change to degrees in next major version + * @type Number + * @default 0 + */ + startAngle: 0, + + /** + * End angle of the circle + * deprectated type, this should be in degree, this was an oversight. + * probably will change to degrees in next major version + * @type Number + * @default 2Pi + */ + endAngle: pi * 2, + + cacheProperties: fabric.Object.prototype.cacheProperties.concat('radius', 'startAngle', 'endAngle'), + + /** + * @private + * @param {String} key + * @param {*} value + * @return {fabric.Circle} thisArg + */ + _set: function(key, value) { + this.callSuper('_set', key, value); + + if (key === 'radius') { + this.setRadius(value); + } + + return this; + }, + + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject: function(propertiesToInclude) { + return this.callSuper('toObject', ['radius', 'startAngle', 'endAngle'].concat(propertiesToInclude)); + }, + + /* _TO_SVG_START_ */ + + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG: function() { + var svgString, x = 0, y = 0, + angle = (this.endAngle - this.startAngle) % ( 2 * pi); + + if (angle === 0) { + svgString = [ + '\n' + ]; + } + else { + var startX = fabric.util.cos(this.startAngle) * this.radius, + startY = fabric.util.sin(this.startAngle) * this.radius, + endX = fabric.util.cos(this.endAngle) * this.radius, + endY = fabric.util.sin(this.endAngle) * this.radius, + largeFlag = angle > pi ? '1' : '0'; + svgString = [ + '\n' + ]; + } + return svgString; + }, + /* _TO_SVG_END_ */ + + /** + * @private + * @param {CanvasRenderingContext2D} ctx context to render on + */ + _render: function(ctx) { + ctx.beginPath(); + ctx.arc( + 0, + 0, + this.radius, + this.startAngle, + this.endAngle, false); + this._renderPaintInOrder(ctx); + }, + + /** + * Returns horizontal radius of an object (according to how an object is scaled) + * @return {Number} + */ + getRadiusX: function() { + return this.get('radius') * this.get('scaleX'); + }, + + /** + * Returns vertical radius of an object (according to how an object is scaled) + * @return {Number} + */ + getRadiusY: function() { + return this.get('radius') * this.get('scaleY'); + }, + + /** + * Sets radius of an object (and updates width accordingly) + * @return {fabric.Circle} thisArg + */ + setRadius: function(value) { + this.radius = value; + return this.set('width', value * 2).set('height', value * 2); + }, + }); + + /* _FROM_SVG_START_ */ + /** + * List of attribute names to account for when parsing SVG element (used by {@link fabric.Circle.fromElement}) + * @static + * @memberOf fabric.Circle + * @see: http://www.w3.org/TR/SVG/shapes.html#CircleElement + */ + fabric.Circle.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy r'.split(' ')); + + /** + * Returns {@link fabric.Circle} instance from an SVG element + * @static + * @memberOf fabric.Circle + * @param {SVGElement} element Element to parse + * @param {Function} [callback] Options callback invoked after parsing is finished + * @param {Object} [options] Options object + * @throws {Error} If value of `r` attribute is missing or invalid + */ + fabric.Circle.fromElement = function(element, callback) { + var parsedAttributes = fabric.parseAttributes(element, fabric.Circle.ATTRIBUTE_NAMES); + + if (!isValidRadius(parsedAttributes)) { + throw new Error('value of `r` attribute is required and can not be negative'); + } + + parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.radius; + parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.radius; + callback(new fabric.Circle(parsedAttributes)); + }; + + /** + * @private + */ + function isValidRadius(attributes) { + return (('radius' in attributes) && (attributes.radius >= 0)); + } + /* _FROM_SVG_END_ */ + + /** + * Returns {@link fabric.Circle} instance from an object representation + * @static + * @memberOf fabric.Circle + * @param {Object} object Object to create an instance from + * @param {function} [callback] invoked with new instance as first argument + * @return {Object} Instance of fabric.Circle + */ + fabric.Circle.fromObject = function(object, callback) { + return fabric.Object._fromObject('Circle', object, callback); + }; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }); + + if (fabric.Triangle) { + fabric.warn('fabric.Triangle is already defined'); + return; + } + + /** + * Triangle class + * @class fabric.Triangle + * @extends fabric.Object + * @return {fabric.Triangle} thisArg + * @see {@link fabric.Triangle#initialize} for constructor definition + */ + fabric.Triangle = fabric.util.createClass(fabric.Object, /** @lends fabric.Triangle.prototype */ { + + /** + * Type of an object + * @type String + * @default + */ + type: 'triangle', + + /** + * Width is set to 100 to compensate the old initialize code that was setting it to 100 + * @type Number + * @default + */ + width: 100, + + /** + * Height is set to 100 to compensate the old initialize code that was setting it to 100 + * @type Number + * @default + */ + height: 100, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(ctx) { + var widthBy2 = this.width / 2, + heightBy2 = this.height / 2; + + ctx.beginPath(); + ctx.moveTo(-widthBy2, heightBy2); + ctx.lineTo(0, -heightBy2); + ctx.lineTo(widthBy2, heightBy2); + ctx.closePath(); + + this._renderPaintInOrder(ctx); + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderDashedStroke: function(ctx) { + var widthBy2 = this.width / 2, + heightBy2 = this.height / 2; + + ctx.beginPath(); + fabric.util.drawDashedLine(ctx, -widthBy2, heightBy2, 0, -heightBy2, this.strokeDashArray); + fabric.util.drawDashedLine(ctx, 0, -heightBy2, widthBy2, heightBy2, this.strokeDashArray); + fabric.util.drawDashedLine(ctx, widthBy2, heightBy2, -widthBy2, heightBy2, this.strokeDashArray); + ctx.closePath(); + }, + + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG: function() { + var widthBy2 = this.width / 2, + heightBy2 = this.height / 2, + points = [ + -widthBy2 + ' ' + heightBy2, + '0 ' + -heightBy2, + widthBy2 + ' ' + heightBy2 + ].join(','); + return [ + '' + ]; + }, + /* _TO_SVG_END_ */ + }); + + /** + * Returns {@link fabric.Triangle} instance from an object representation + * @static + * @memberOf fabric.Triangle + * @param {Object} object Object to create an instance from + * @param {function} [callback] invoked with new instance as first argument + */ + fabric.Triangle.fromObject = function(object, callback) { + return fabric.Object._fromObject('Triangle', object, callback); + }; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + piBy2 = Math.PI * 2; + + if (fabric.Ellipse) { + fabric.warn('fabric.Ellipse is already defined.'); + return; + } + + /** + * Ellipse class + * @class fabric.Ellipse + * @extends fabric.Object + * @return {fabric.Ellipse} thisArg + * @see {@link fabric.Ellipse#initialize} for constructor definition + */ + fabric.Ellipse = fabric.util.createClass(fabric.Object, /** @lends fabric.Ellipse.prototype */ { + + /** + * Type of an object + * @type String + * @default + */ + type: 'ellipse', + + /** + * Horizontal radius + * @type Number + * @default + */ + rx: 0, + + /** + * Vertical radius + * @type Number + * @default + */ + ry: 0, + + cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'), + + /** + * Constructor + * @param {Object} [options] Options object + * @return {fabric.Ellipse} thisArg + */ + initialize: function(options) { + this.callSuper('initialize', options); + this.set('rx', options && options.rx || 0); + this.set('ry', options && options.ry || 0); + }, + + /** + * @private + * @param {String} key + * @param {*} value + * @return {fabric.Ellipse} thisArg + */ + _set: function(key, value) { + this.callSuper('_set', key, value); + switch (key) { + + case 'rx': + this.rx = value; + this.set('width', value * 2); + break; + + case 'ry': + this.ry = value; + this.set('height', value * 2); + break; + + } + return this; + }, + + /** + * Returns horizontal radius of an object (according to how an object is scaled) + * @return {Number} + */ + getRx: function() { + return this.get('rx') * this.get('scaleX'); + }, + + /** + * Returns Vertical radius of an object (according to how an object is scaled) + * @return {Number} + */ + getRy: function() { + return this.get('ry') * this.get('scaleY'); + }, + + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject: function(propertiesToInclude) { + return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude)); + }, + + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG: function() { + return [ + '\n' + ]; + }, + /* _TO_SVG_END_ */ + + /** + * @private + * @param {CanvasRenderingContext2D} ctx context to render on + */ + _render: function(ctx) { + ctx.beginPath(); + ctx.save(); + ctx.transform(1, 0, 0, this.ry / this.rx, 0, 0); + ctx.arc( + 0, + 0, + this.rx, + 0, + piBy2, + false); + ctx.restore(); + this._renderPaintInOrder(ctx); + }, + }); + + /* _FROM_SVG_START_ */ + /** + * List of attribute names to account for when parsing SVG element (used by {@link fabric.Ellipse.fromElement}) + * @static + * @memberOf fabric.Ellipse + * @see http://www.w3.org/TR/SVG/shapes.html#EllipseElement + */ + fabric.Ellipse.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy rx ry'.split(' ')); + + /** + * Returns {@link fabric.Ellipse} instance from an SVG element + * @static + * @memberOf fabric.Ellipse + * @param {SVGElement} element Element to parse + * @param {Function} [callback] Options callback invoked after parsing is finished + * @return {fabric.Ellipse} + */ + fabric.Ellipse.fromElement = function(element, callback) { + + var parsedAttributes = fabric.parseAttributes(element, fabric.Ellipse.ATTRIBUTE_NAMES); + + parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.rx; + parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.ry; + callback(new fabric.Ellipse(parsedAttributes)); + }; + /* _FROM_SVG_END_ */ + + /** + * Returns {@link fabric.Ellipse} instance from an object representation + * @static + * @memberOf fabric.Ellipse + * @param {Object} object Object to create an instance from + * @param {function} [callback] invoked with new instance as first argument + * @return {fabric.Ellipse} + */ + fabric.Ellipse.fromObject = function(object, callback) { + return fabric.Object._fromObject('Ellipse', object, callback); + }; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + extend = fabric.util.object.extend; + + if (fabric.Rect) { + fabric.warn('fabric.Rect is already defined'); + return; + } + + /** + * Rectangle class + * @class fabric.Rect + * @extends fabric.Object + * @return {fabric.Rect} thisArg + * @see {@link fabric.Rect#initialize} for constructor definition + */ + fabric.Rect = fabric.util.createClass(fabric.Object, /** @lends fabric.Rect.prototype */ { + + /** + * List of properties to consider when checking if state of an object is changed ({@link fabric.Object#hasStateChanged}) + * as well as for history (undo/redo) purposes + * @type Array + */ + stateProperties: fabric.Object.prototype.stateProperties.concat('rx', 'ry'), + + /** + * Type of an object + * @type String + * @default + */ + type: 'rect', + + /** + * Horizontal border radius + * @type Number + * @default + */ + rx: 0, + + /** + * Vertical border radius + * @type Number + * @default + */ + ry: 0, + + cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'), + + /** + * Constructor + * @param {Object} [options] Options object + * @return {Object} thisArg + */ + initialize: function(options) { + this.callSuper('initialize', options); + this._initRxRy(); + }, + + /** + * Initializes rx/ry attributes + * @private + */ + _initRxRy: function() { + if (this.rx && !this.ry) { + this.ry = this.rx; + } + else if (this.ry && !this.rx) { + this.rx = this.ry; + } + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(ctx) { + + // 1x1 case (used in spray brush) optimization was removed because + // with caching and higher zoom level this makes more damage than help + + var rx = this.rx ? Math.min(this.rx, this.width / 2) : 0, + ry = this.ry ? Math.min(this.ry, this.height / 2) : 0, + w = this.width, + h = this.height, + x = -this.width / 2, + y = -this.height / 2, + isRounded = rx !== 0 || ry !== 0, + /* "magic number" for bezier approximations of arcs (http://itc.ktu.lt/itc354/Riskus354.pdf) */ + k = 1 - 0.5522847498; + ctx.beginPath(); + + ctx.moveTo(x + rx, y); + + ctx.lineTo(x + w - rx, y); + isRounded && ctx.bezierCurveTo(x + w - k * rx, y, x + w, y + k * ry, x + w, y + ry); + + ctx.lineTo(x + w, y + h - ry); + isRounded && ctx.bezierCurveTo(x + w, y + h - k * ry, x + w - k * rx, y + h, x + w - rx, y + h); + + ctx.lineTo(x + rx, y + h); + isRounded && ctx.bezierCurveTo(x + k * rx, y + h, x, y + h - k * ry, x, y + h - ry); + + ctx.lineTo(x, y + ry); + isRounded && ctx.bezierCurveTo(x, y + k * ry, x + k * rx, y, x + rx, y); + + ctx.closePath(); + + this._renderPaintInOrder(ctx); + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderDashedStroke: function(ctx) { + var x = -this.width / 2, + y = -this.height / 2, + w = this.width, + h = this.height; + + ctx.beginPath(); + fabric.util.drawDashedLine(ctx, x, y, x + w, y, this.strokeDashArray); + fabric.util.drawDashedLine(ctx, x + w, y, x + w, y + h, this.strokeDashArray); + fabric.util.drawDashedLine(ctx, x + w, y + h, x, y + h, this.strokeDashArray); + fabric.util.drawDashedLine(ctx, x, y + h, x, y, this.strokeDashArray); + ctx.closePath(); + }, + + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject: function(propertiesToInclude) { + return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude)); + }, + + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG: function() { + var x = -this.width / 2, y = -this.height / 2; + return [ + '\n' + ]; + }, + /* _TO_SVG_END_ */ + }); + + /* _FROM_SVG_START_ */ + /** + * List of attribute names to account for when parsing SVG element (used by `fabric.Rect.fromElement`) + * @static + * @memberOf fabric.Rect + * @see: http://www.w3.org/TR/SVG/shapes.html#RectElement + */ + fabric.Rect.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x y rx ry width height'.split(' ')); + + /** + * Returns {@link fabric.Rect} instance from an SVG element + * @static + * @memberOf fabric.Rect + * @param {SVGElement} element Element to parse + * @param {Function} callback callback function invoked after parsing + * @param {Object} [options] Options object + */ + fabric.Rect.fromElement = function(element, callback, options) { + if (!element) { + return callback(null); + } + options = options || { }; + + var parsedAttributes = fabric.parseAttributes(element, fabric.Rect.ATTRIBUTE_NAMES); + + parsedAttributes.left = parsedAttributes.left || 0; + parsedAttributes.top = parsedAttributes.top || 0; + parsedAttributes.height = parsedAttributes.height || 0; + parsedAttributes.width = parsedAttributes.width || 0; + var rect = new fabric.Rect(extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes)); + rect.visible = rect.visible && rect.width > 0 && rect.height > 0; + callback(rect); + }; + /* _FROM_SVG_END_ */ + + /** + * Returns {@link fabric.Rect} instance from an object representation + * @static + * @memberOf fabric.Rect + * @param {Object} object Object to create an instance from + * @param {Function} [callback] Callback to invoke when an fabric.Rect instance is created + */ + fabric.Rect.fromObject = function(object, callback) { + return fabric.Object._fromObject('Rect', object, callback); + }; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + extend = fabric.util.object.extend, + min = fabric.util.array.min, + max = fabric.util.array.max, + toFixed = fabric.util.toFixed; + + if (fabric.Polyline) { + fabric.warn('fabric.Polyline is already defined'); + return; + } + + /** + * Polyline class + * @class fabric.Polyline + * @extends fabric.Object + * @see {@link fabric.Polyline#initialize} for constructor definition + */ + fabric.Polyline = fabric.util.createClass(fabric.Object, /** @lends fabric.Polyline.prototype */ { + + /** + * Type of an object + * @type String + * @default + */ + type: 'polyline', + + /** + * Points array + * @type Array + * @default + */ + points: null, + + cacheProperties: fabric.Object.prototype.cacheProperties.concat('points'), + + /** + * Constructor + * @param {Array} points Array of points (where each point is an object with x and y) + * @param {Object} [options] Options object + * @return {fabric.Polyline} thisArg + * @example + * var poly = new fabric.Polyline([ + * { x: 10, y: 10 }, + * { x: 50, y: 30 }, + * { x: 40, y: 70 }, + * { x: 60, y: 50 }, + * { x: 100, y: 150 }, + * { x: 40, y: 100 } + * ], { + * stroke: 'red', + * left: 100, + * top: 100 + * }); + */ + initialize: function(points, options) { + options = options || {}; + this.points = points || []; + this.callSuper('initialize', options); + this._setPositionDimensions(options); + }, + + _setPositionDimensions: function(options) { + var calcDim = this._calcDimensions(options), correctLeftTop; + this.width = calcDim.width; + this.height = calcDim.height; + if (!options.fromSVG) { + correctLeftTop = this.translateToGivenOrigin( + { x: calcDim.left - this.strokeWidth / 2, y: calcDim.top - this.strokeWidth / 2 }, + 'left', + 'top', + this.originX, + this.originY + ); + } + if (typeof options.left === 'undefined') { + this.left = options.fromSVG ? calcDim.left : correctLeftTop.x; + } + if (typeof options.top === 'undefined') { + this.top = options.fromSVG ? calcDim.top : correctLeftTop.y; + } + this.pathOffset = { + x: calcDim.left + this.width / 2, + y: calcDim.top + this.height / 2 + }; + }, + + /** + * Calculate the polygon min and max point from points array, + * returning an object with left, top, widht, height to measure the + * polygon size + * @return {Object} object.left X coordinate of the polygon leftmost point + * @return {Object} object.top Y coordinate of the polygon topmost point + * @return {Object} object.width distance between X coordinates of the polygon leftmost and rightmost point + * @return {Object} object.height distance between Y coordinates of the polygon topmost and bottommost point + * @private + */ + _calcDimensions: function() { + + var points = this.points, + minX = min(points, 'x') || 0, + minY = min(points, 'y') || 0, + maxX = max(points, 'x') || 0, + maxY = max(points, 'y') || 0, + width = (maxX - minX), + height = (maxY - minY); + + return { + left: minX, + top: minY, + width: width, + height: height + }; + }, + + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} Object representation of an instance + */ + toObject: function(propertiesToInclude) { + return extend(this.callSuper('toObject', propertiesToInclude), { + points: this.points.concat() + }); + }, + + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG: function() { + var points = [], diffX = this.pathOffset.x, diffY = this.pathOffset.y, + NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS; + + for (var i = 0, len = this.points.length; i < len; i++) { + points.push( + toFixed(this.points[i].x - diffX, NUM_FRACTION_DIGITS), ',', + toFixed(this.points[i].y - diffY, NUM_FRACTION_DIGITS), ' ' + ); + } + return [ + '<' + this.type + ' ', 'COMMON_PARTS', + 'points="', points.join(''), + '" />\n' + ]; + }, + /* _TO_SVG_END_ */ + + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + commonRender: function(ctx) { + var point, len = this.points.length, + x = this.pathOffset.x, + y = this.pathOffset.y; + + if (!len || isNaN(this.points[len - 1].y)) { + // do not draw if no points or odd points + // NaN comes from parseFloat of a empty string in parser + return false; + } + ctx.beginPath(); + ctx.moveTo(this.points[0].x - x, this.points[0].y - y); + for (var i = 0; i < len; i++) { + point = this.points[i]; + ctx.lineTo(point.x - x, point.y - y); + } + return true; + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(ctx) { + if (!this.commonRender(ctx)) { + return; + } + this._renderPaintInOrder(ctx); + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderDashedStroke: function(ctx) { + var p1, p2; + + ctx.beginPath(); + for (var i = 0, len = this.points.length; i < len; i++) { + p1 = this.points[i]; + p2 = this.points[i + 1] || p1; + fabric.util.drawDashedLine(ctx, p1.x, p1.y, p2.x, p2.y, this.strokeDashArray); + } + }, + + /** + * Returns complexity of an instance + * @return {Number} complexity of this instance + */ + complexity: function() { + return this.get('points').length; + } + }); + + /* _FROM_SVG_START_ */ + /** + * List of attribute names to account for when parsing SVG element (used by {@link fabric.Polyline.fromElement}) + * @static + * @memberOf fabric.Polyline + * @see: http://www.w3.org/TR/SVG/shapes.html#PolylineElement + */ + fabric.Polyline.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(); + + /** + * Returns fabric.Polyline instance from an SVG element + * @static + * @memberOf fabric.Polyline + * @param {SVGElement} element Element to parser + * @param {Function} callback callback function invoked after parsing + * @param {Object} [options] Options object + */ + fabric.Polyline.fromElementGenerator = function(_class) { + return function(element, callback, options) { + if (!element) { + return callback(null); + } + options || (options = { }); + + var points = fabric.parsePointsAttribute(element.getAttribute('points')), + parsedAttributes = fabric.parseAttributes(element, fabric[_class].ATTRIBUTE_NAMES); + parsedAttributes.fromSVG = true; + callback(new fabric[_class](points, extend(parsedAttributes, options))); + }; + }; + + fabric.Polyline.fromElement = fabric.Polyline.fromElementGenerator('Polyline'); + + /* _FROM_SVG_END_ */ + + /** + * Returns fabric.Polyline instance from an object representation + * @static + * @memberOf fabric.Polyline + * @param {Object} object Object to create an instance from + * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created + */ + fabric.Polyline.fromObject = function(object, callback) { + return fabric.Object._fromObject('Polyline', object, callback, 'points'); + }; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }); + + if (fabric.Polygon) { + fabric.warn('fabric.Polygon is already defined'); + return; + } + + /** + * Polygon class + * @class fabric.Polygon + * @extends fabric.Polyline + * @see {@link fabric.Polygon#initialize} for constructor definition + */ + fabric.Polygon = fabric.util.createClass(fabric.Polyline, /** @lends fabric.Polygon.prototype */ { + + /** + * Type of an object + * @type String + * @default + */ + type: 'polygon', + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(ctx) { + if (!this.commonRender(ctx)) { + return; + } + ctx.closePath(); + this._renderPaintInOrder(ctx); + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderDashedStroke: function(ctx) { + this.callSuper('_renderDashedStroke', ctx); + ctx.closePath(); + }, + }); + + /* _FROM_SVG_START_ */ + /** + * List of attribute names to account for when parsing SVG element (used by `fabric.Polygon.fromElement`) + * @static + * @memberOf fabric.Polygon + * @see: http://www.w3.org/TR/SVG/shapes.html#PolygonElement + */ + fabric.Polygon.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(); + + /** + * Returns {@link fabric.Polygon} instance from an SVG element + * @static + * @memberOf fabric.Polygon + * @param {SVGElement} element Element to parse + * @param {Function} callback callback function invoked after parsing + * @param {Object} [options] Options object + */ + fabric.Polygon.fromElement = fabric.Polyline.fromElementGenerator('Polygon'); + /* _FROM_SVG_END_ */ + + /** + * Returns fabric.Polygon instance from an object representation + * @static + * @memberOf fabric.Polygon + * @param {Object} object Object to create an instance from + * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created + */ + fabric.Polygon.fromObject = function(object, callback) { + return fabric.Object._fromObject('Polygon', object, callback, 'points'); + }; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + min = fabric.util.array.min, + max = fabric.util.array.max, + extend = fabric.util.object.extend, + _toString = Object.prototype.toString, + drawArc = fabric.util.drawArc, + toFixed = fabric.util.toFixed, + commandLengths = { + m: 2, + l: 2, + h: 1, + v: 1, + c: 6, + s: 4, + q: 4, + t: 2, + a: 7 + }, + repeatedCommands = { + m: 'l', + M: 'L' + }; + + if (fabric.Path) { + fabric.warn('fabric.Path is already defined'); + return; + } + + /** + * Path class + * @class fabric.Path + * @extends fabric.Object + * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#path_and_pathgroup} + * @see {@link fabric.Path#initialize} for constructor definition + */ + fabric.Path = fabric.util.createClass(fabric.Object, /** @lends fabric.Path.prototype */ { + + /** + * Type of an object + * @type String + * @default + */ + type: 'path', + + /** + * Array of path points + * @type Array + * @default + */ + path: null, + + cacheProperties: fabric.Object.prototype.cacheProperties.concat('path', 'fillRule'), + + stateProperties: fabric.Object.prototype.stateProperties.concat('path'), + + /** + * Constructor + * @param {Array|String} path Path data (sequence of coordinates and corresponding "command" tokens) + * @param {Object} [options] Options object + * @return {fabric.Path} thisArg + */ + initialize: function(path, options) { + options = options || { }; + this.callSuper('initialize', options); + + if (!path) { + path = []; + } + + var fromArray = _toString.call(path) === '[object Array]'; + + this.path = fromArray + ? path + // one of commands (m,M,l,L,q,Q,c,C,etc.) followed by non-command characters (i.e. command values) + : path.match && path.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi); + + if (!this.path) { + return; + } + + if (!fromArray) { + this.path = this._parsePath(); + } + + fabric.Polyline.prototype._setPositionDimensions.call(this, options); + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx context to render path on + */ + _renderPathCommands: function(ctx) { + var current, // current instruction + previous = null, + subpathStartX = 0, + subpathStartY = 0, + x = 0, // current x + y = 0, // current y + controlX = 0, // current control point x + controlY = 0, // current control point y + tempX, + tempY, + l = -this.pathOffset.x, + t = -this.pathOffset.y; + + ctx.beginPath(); + + for (var i = 0, len = this.path.length; i < len; ++i) { + + current = this.path[i]; + + switch (current[0]) { // first letter + + case 'l': // lineto, relative + x += current[1]; + y += current[2]; + ctx.lineTo(x + l, y + t); + break; + + case 'L': // lineto, absolute + x = current[1]; + y = current[2]; + ctx.lineTo(x + l, y + t); + break; + + case 'h': // horizontal lineto, relative + x += current[1]; + ctx.lineTo(x + l, y + t); + break; + + case 'H': // horizontal lineto, absolute + x = current[1]; + ctx.lineTo(x + l, y + t); + break; + + case 'v': // vertical lineto, relative + y += current[1]; + ctx.lineTo(x + l, y + t); + break; + + case 'V': // verical lineto, absolute + y = current[1]; + ctx.lineTo(x + l, y + t); + break; + + case 'm': // moveTo, relative + x += current[1]; + y += current[2]; + subpathStartX = x; + subpathStartY = y; + ctx.moveTo(x + l, y + t); + break; + + case 'M': // moveTo, absolute + x = current[1]; + y = current[2]; + subpathStartX = x; + subpathStartY = y; + ctx.moveTo(x + l, y + t); + break; + + case 'c': // bezierCurveTo, relative + tempX = x + current[5]; + tempY = y + current[6]; + controlX = x + current[3]; + controlY = y + current[4]; + ctx.bezierCurveTo( + x + current[1] + l, // x1 + y + current[2] + t, // y1 + controlX + l, // x2 + controlY + t, // y2 + tempX + l, + tempY + t + ); + x = tempX; + y = tempY; + break; + + case 'C': // bezierCurveTo, absolute + x = current[5]; + y = current[6]; + controlX = current[3]; + controlY = current[4]; + ctx.bezierCurveTo( + current[1] + l, + current[2] + t, + controlX + l, + controlY + t, + x + l, + y + t + ); + break; + + case 's': // shorthand cubic bezierCurveTo, relative + + // transform to absolute x,y + tempX = x + current[3]; + tempY = y + current[4]; + + if (previous[0].match(/[CcSs]/) === null) { + // If there is no previous command or if the previous command was not a C, c, S, or s, + // the control point is coincident with the current point + controlX = x; + controlY = y; + } + else { + // calculate reflection of previous control points + controlX = 2 * x - controlX; + controlY = 2 * y - controlY; + } + + ctx.bezierCurveTo( + controlX + l, + controlY + t, + x + current[1] + l, + y + current[2] + t, + tempX + l, + tempY + t + ); + // set control point to 2nd one of this command + // "... the first control point is assumed to be + // the reflection of the second control point on + // the previous command relative to the current point." + controlX = x + current[1]; + controlY = y + current[2]; + + x = tempX; + y = tempY; + break; + + case 'S': // shorthand cubic bezierCurveTo, absolute + tempX = current[3]; + tempY = current[4]; + if (previous[0].match(/[CcSs]/) === null) { + // If there is no previous command or if the previous command was not a C, c, S, or s, + // the control point is coincident with the current point + controlX = x; + controlY = y; + } + else { + // calculate reflection of previous control points + controlX = 2 * x - controlX; + controlY = 2 * y - controlY; + } + ctx.bezierCurveTo( + controlX + l, + controlY + t, + current[1] + l, + current[2] + t, + tempX + l, + tempY + t + ); + x = tempX; + y = tempY; + + // set control point to 2nd one of this command + // "... the first control point is assumed to be + // the reflection of the second control point on + // the previous command relative to the current point." + controlX = current[1]; + controlY = current[2]; + + break; + + case 'q': // quadraticCurveTo, relative + // transform to absolute x,y + tempX = x + current[3]; + tempY = y + current[4]; + + controlX = x + current[1]; + controlY = y + current[2]; + + ctx.quadraticCurveTo( + controlX + l, + controlY + t, + tempX + l, + tempY + t + ); + x = tempX; + y = tempY; + break; + + case 'Q': // quadraticCurveTo, absolute + tempX = current[3]; + tempY = current[4]; + + ctx.quadraticCurveTo( + current[1] + l, + current[2] + t, + tempX + l, + tempY + t + ); + x = tempX; + y = tempY; + controlX = current[1]; + controlY = current[2]; + break; + + case 't': // shorthand quadraticCurveTo, relative + + // transform to absolute x,y + tempX = x + current[1]; + tempY = y + current[2]; + + if (previous[0].match(/[QqTt]/) === null) { + // If there is no previous command or if the previous command was not a Q, q, T or t, + // assume the control point is coincident with the current point + controlX = x; + controlY = y; + } + else { + // calculate reflection of previous control point + controlX = 2 * x - controlX; + controlY = 2 * y - controlY; + } + + ctx.quadraticCurveTo( + controlX + l, + controlY + t, + tempX + l, + tempY + t + ); + x = tempX; + y = tempY; + + break; + + case 'T': + tempX = current[1]; + tempY = current[2]; + + if (previous[0].match(/[QqTt]/) === null) { + // If there is no previous command or if the previous command was not a Q, q, T or t, + // assume the control point is coincident with the current point + controlX = x; + controlY = y; + } + else { + // calculate reflection of previous control point + controlX = 2 * x - controlX; + controlY = 2 * y - controlY; + } + ctx.quadraticCurveTo( + controlX + l, + controlY + t, + tempX + l, + tempY + t + ); + x = tempX; + y = tempY; + break; + + case 'a': + // TODO: optimize this + drawArc(ctx, x + l, y + t, [ + current[1], + current[2], + current[3], + current[4], + current[5], + current[6] + x + l, + current[7] + y + t + ]); + x += current[6]; + y += current[7]; + break; + + case 'A': + // TODO: optimize this + drawArc(ctx, x + l, y + t, [ + current[1], + current[2], + current[3], + current[4], + current[5], + current[6] + l, + current[7] + t + ]); + x = current[6]; + y = current[7]; + break; + + case 'z': + case 'Z': + x = subpathStartX; + y = subpathStartY; + ctx.closePath(); + break; + } + previous = current; + } + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx context to render path on + */ + _render: function(ctx) { + this._renderPathCommands(ctx); + this._renderPaintInOrder(ctx); + }, + + /** + * Returns string representation of an instance + * @return {String} string representation of an instance + */ + toString: function() { + return '#'; + }, + + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject: function(propertiesToInclude) { + return extend(this.callSuper('toObject', propertiesToInclude), { + path: this.path.map(function(item) { return item.slice(); }), + }); + }, + + /** + * Returns dataless object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toDatalessObject: function(propertiesToInclude) { + var o = this.toObject(['sourcePath'].concat(propertiesToInclude)); + if (o.sourcePath) { + delete o.path; + } + return o; + }, + + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG: function() { + var path = this.path.map(function(path) { + return path.join(' '); + }).join(' '); + return [ + '\n' + ]; + }, + + _getOffsetTransform: function() { + var digits = fabric.Object.NUM_FRACTION_DIGITS; + return ' translate(' + toFixed(-this.pathOffset.x, digits) + ', ' + + toFixed(-this.pathOffset.y, digits) + ')'; + }, + + /** + * Returns svg clipPath representation of an instance + * @param {Function} [reviver] Method for further parsing of svg representation. + * @return {String} svg representation of an instance + */ + toClipPathSVG: function(reviver) { + var additionalTransform = this._getOffsetTransform(); + return '\t' + this._createBaseClipPathSVGMarkup( + this._toSVG(), { reviver: reviver, additionalTransform: additionalTransform } + ); + }, + + /** + * Returns svg representation of an instance + * @param {Function} [reviver] Method for further parsing of svg representation. + * @return {String} svg representation of an instance + */ + toSVG: function(reviver) { + var additionalTransform = this._getOffsetTransform(); + return this._createBaseSVGMarkup(this._toSVG(), { reviver: reviver, additionalTransform: additionalTransform }); + }, + /* _TO_SVG_END_ */ + + /** + * Returns number representation of an instance complexity + * @return {Number} complexity of this instance + */ + complexity: function() { + return this.path.length; + }, + + /** + * @private + */ + _parsePath: function() { + var result = [], + coords = [], + currentPath, + parsed, + re = fabric.rePathCommand, + match, + coordsStr; + + for (var i = 0, coordsParsed, len = this.path.length; i < len; i++) { + currentPath = this.path[i]; + + coordsStr = currentPath.slice(1).trim(); + coords.length = 0; + + while ((match = re.exec(coordsStr))) { + coords.push(match[0]); + } + + coordsParsed = [currentPath.charAt(0)]; + + for (var j = 0, jlen = coords.length; j < jlen; j++) { + parsed = parseFloat(coords[j]); + if (!isNaN(parsed)) { + coordsParsed.push(parsed); + } + } + + var command = coordsParsed[0], + commandLength = commandLengths[command.toLowerCase()], + repeatedCommand = repeatedCommands[command] || command; + + if (coordsParsed.length - 1 > commandLength) { + for (var k = 1, klen = coordsParsed.length; k < klen; k += commandLength) { + result.push([command].concat(coordsParsed.slice(k, k + commandLength))); + command = repeatedCommand; + } + } + else { + result.push(coordsParsed); + } + } + + return result; + }, + + /** + * @private + */ + _calcDimensions: function() { + + var aX = [], + aY = [], + current, // current instruction + previous = null, + subpathStartX = 0, + subpathStartY = 0, + x = 0, // current x + y = 0, // current y + controlX = 0, // current control point x + controlY = 0, // current control point y + tempX, + tempY, + bounds; + + for (var i = 0, len = this.path.length; i < len; ++i) { + + current = this.path[i]; + + switch (current[0]) { // first letter + + case 'l': // lineto, relative + x += current[1]; + y += current[2]; + bounds = []; + break; + + case 'L': // lineto, absolute + x = current[1]; + y = current[2]; + bounds = []; + break; + + case 'h': // horizontal lineto, relative + x += current[1]; + bounds = []; + break; + + case 'H': // horizontal lineto, absolute + x = current[1]; + bounds = []; + break; + + case 'v': // vertical lineto, relative + y += current[1]; + bounds = []; + break; + + case 'V': // verical lineto, absolute + y = current[1]; + bounds = []; + break; + + case 'm': // moveTo, relative + x += current[1]; + y += current[2]; + subpathStartX = x; + subpathStartY = y; + bounds = []; + break; + + case 'M': // moveTo, absolute + x = current[1]; + y = current[2]; + subpathStartX = x; + subpathStartY = y; + bounds = []; + break; + + case 'c': // bezierCurveTo, relative + tempX = x + current[5]; + tempY = y + current[6]; + controlX = x + current[3]; + controlY = y + current[4]; + bounds = fabric.util.getBoundsOfCurve(x, y, + x + current[1], // x1 + y + current[2], // y1 + controlX, // x2 + controlY, // y2 + tempX, + tempY + ); + x = tempX; + y = tempY; + break; + + case 'C': // bezierCurveTo, absolute + controlX = current[3]; + controlY = current[4]; + bounds = fabric.util.getBoundsOfCurve(x, y, + current[1], + current[2], + controlX, + controlY, + current[5], + current[6] + ); + x = current[5]; + y = current[6]; + break; + + case 's': // shorthand cubic bezierCurveTo, relative + + // transform to absolute x,y + tempX = x + current[3]; + tempY = y + current[4]; + + if (previous[0].match(/[CcSs]/) === null) { + // If there is no previous command or if the previous command was not a C, c, S, or s, + // the control point is coincident with the current point + controlX = x; + controlY = y; + } + else { + // calculate reflection of previous control points + controlX = 2 * x - controlX; + controlY = 2 * y - controlY; + } + + bounds = fabric.util.getBoundsOfCurve(x, y, + controlX, + controlY, + x + current[1], + y + current[2], + tempX, + tempY + ); + // set control point to 2nd one of this command + // "... the first control point is assumed to be + // the reflection of the second control point on + // the previous command relative to the current point." + controlX = x + current[1]; + controlY = y + current[2]; + x = tempX; + y = tempY; + break; + + case 'S': // shorthand cubic bezierCurveTo, absolute + tempX = current[3]; + tempY = current[4]; + if (previous[0].match(/[CcSs]/) === null) { + // If there is no previous command or if the previous command was not a C, c, S, or s, + // the control point is coincident with the current point + controlX = x; + controlY = y; + } + else { + // calculate reflection of previous control points + controlX = 2 * x - controlX; + controlY = 2 * y - controlY; + } + bounds = fabric.util.getBoundsOfCurve(x, y, + controlX, + controlY, + current[1], + current[2], + tempX, + tempY + ); + x = tempX; + y = tempY; + // set control point to 2nd one of this command + // "... the first control point is assumed to be + // the reflection of the second control point on + // the previous command relative to the current point." + controlX = current[1]; + controlY = current[2]; + break; + + case 'q': // quadraticCurveTo, relative + // transform to absolute x,y + tempX = x + current[3]; + tempY = y + current[4]; + controlX = x + current[1]; + controlY = y + current[2]; + bounds = fabric.util.getBoundsOfCurve(x, y, + controlX, + controlY, + controlX, + controlY, + tempX, + tempY + ); + x = tempX; + y = tempY; + break; + + case 'Q': // quadraticCurveTo, absolute + controlX = current[1]; + controlY = current[2]; + bounds = fabric.util.getBoundsOfCurve(x, y, + controlX, + controlY, + controlX, + controlY, + current[3], + current[4] + ); + x = current[3]; + y = current[4]; + break; + + case 't': // shorthand quadraticCurveTo, relative + // transform to absolute x,y + tempX = x + current[1]; + tempY = y + current[2]; + if (previous[0].match(/[QqTt]/) === null) { + // If there is no previous command or if the previous command was not a Q, q, T or t, + // assume the control point is coincident with the current point + controlX = x; + controlY = y; + } + else { + // calculate reflection of previous control point + controlX = 2 * x - controlX; + controlY = 2 * y - controlY; + } + + bounds = fabric.util.getBoundsOfCurve(x, y, + controlX, + controlY, + controlX, + controlY, + tempX, + tempY + ); + x = tempX; + y = tempY; + + break; + + case 'T': + tempX = current[1]; + tempY = current[2]; + + if (previous[0].match(/[QqTt]/) === null) { + // If there is no previous command or if the previous command was not a Q, q, T or t, + // assume the control point is coincident with the current point + controlX = x; + controlY = y; + } + else { + // calculate reflection of previous control point + controlX = 2 * x - controlX; + controlY = 2 * y - controlY; + } + bounds = fabric.util.getBoundsOfCurve(x, y, + controlX, + controlY, + controlX, + controlY, + tempX, + tempY + ); + x = tempX; + y = tempY; + break; + + case 'a': + // TODO: optimize this + bounds = fabric.util.getBoundsOfArc(x, y, + current[1], + current[2], + current[3], + current[4], + current[5], + current[6] + x, + current[7] + y + ); + x += current[6]; + y += current[7]; + break; + + case 'A': + // TODO: optimize this + bounds = fabric.util.getBoundsOfArc(x, y, + current[1], + current[2], + current[3], + current[4], + current[5], + current[6], + current[7] + ); + x = current[6]; + y = current[7]; + break; + + case 'z': + case 'Z': + x = subpathStartX; + y = subpathStartY; + break; + } + previous = current; + bounds.forEach(function (point) { + aX.push(point.x); + aY.push(point.y); + }); + aX.push(x); + aY.push(y); + } + + var minX = min(aX) || 0, + minY = min(aY) || 0, + maxX = max(aX) || 0, + maxY = max(aY) || 0, + deltaX = maxX - minX, + deltaY = maxY - minY; + + return { + left: minX, + top: minY, + width: deltaX, + height: deltaY + }; + } + }); + + /** + * Creates an instance of fabric.Path from an object + * @static + * @memberOf fabric.Path + * @param {Object} object + * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created + */ + fabric.Path.fromObject = function(object, callback) { + if (typeof object.sourcePath === 'string') { + var pathUrl = object.sourcePath; + fabric.loadSVGFromURL(pathUrl, function (elements) { + var path = elements[0]; + path.setOptions(object); + callback && callback(path); + }); + } + else { + fabric.Object._fromObject('Path', object, callback, 'path'); + } + }; + + /* _FROM_SVG_START_ */ + /** + * List of attribute names to account for when parsing SVG element (used by `fabric.Path.fromElement`) + * @static + * @memberOf fabric.Path + * @see http://www.w3.org/TR/SVG/paths.html#PathElement + */ + fabric.Path.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(['d']); + + /** + * Creates an instance of fabric.Path from an SVG element + * @static + * @memberOf fabric.Path + * @param {SVGElement} element to parse + * @param {Function} callback Callback to invoke when an fabric.Path instance is created + * @param {Object} [options] Options object + * @param {Function} [callback] Options callback invoked after parsing is finished + */ + fabric.Path.fromElement = function(element, callback, options) { + var parsedAttributes = fabric.parseAttributes(element, fabric.Path.ATTRIBUTE_NAMES); + parsedAttributes.fromSVG = true; + callback(new fabric.Path(parsedAttributes.d, extend(parsedAttributes, options))); + }; + /* _FROM_SVG_END_ */ + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + min = fabric.util.array.min, + max = fabric.util.array.max; + + if (fabric.Group) { + return; + } + + /** + * Group class + * @class fabric.Group + * @extends fabric.Object + * @mixes fabric.Collection + * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups} + * @see {@link fabric.Group#initialize} for constructor definition + */ + fabric.Group = fabric.util.createClass(fabric.Object, fabric.Collection, /** @lends fabric.Group.prototype */ { + + /** + * Type of an object + * @type String + * @default + */ + type: 'group', + + /** + * Width of stroke + * @type Number + * @default + */ + strokeWidth: 0, + + /** + * Indicates if click, mouseover, mouseout events & hoverCursor should also check for subtargets + * @type Boolean + * @default + */ + subTargetCheck: false, + + /** + * Groups are container, do not render anything on theyr own, ence no cache properties + * @type Array + * @default + */ + cacheProperties: [], + + /** + * setOnGroup is a method used for TextBox that is no more used since 2.0.0 The behavior is still + * available setting this boolean to true. + * @type Boolean + * @since 2.0.0 + * @default + */ + useSetOnGroup: false, + + /** + * Constructor + * @param {Object} objects Group objects + * @param {Object} [options] Options object + * @param {Boolean} [isAlreadyGrouped] if true, objects have been grouped already. + * @return {Object} thisArg + */ + initialize: function(objects, options, isAlreadyGrouped) { + options = options || {}; + this._objects = []; + // if objects enclosed in a group have been grouped already, + // we cannot change properties of objects. + // Thus we need to set options to group without objects, + isAlreadyGrouped && this.callSuper('initialize', options); + this._objects = objects || []; + for (var i = this._objects.length; i--; ) { + this._objects[i].group = this; + } + + if (!isAlreadyGrouped) { + var center = options && options.centerPoint; + // we want to set origins before calculating the bounding box. + // so that the topleft can be set with that in mind. + // if specific top and left are passed, are overwritten later + // with the callSuper('initialize', options) + if (options.originX !== undefined) { + this.originX = options.originX; + } + if (options.originY !== undefined) { + this.originY = options.originY; + } + // if coming from svg i do not want to calc bounds. + // i assume width and height are passed along options + center || this._calcBounds(); + this._updateObjectsCoords(center); + delete options.centerPoint; + this.callSuper('initialize', options); + } + else { + this._updateObjectsACoords(); + } + + this.setCoords(); + }, + + /** + * @private + * @param {Boolean} [skipCoordsChange] if true, coordinates of objects enclosed in a group do not change + */ + _updateObjectsACoords: function() { + var ignoreZoom = true, skipAbsolute = true; + for (var i = this._objects.length; i--; ){ + this._objects[i].setCoords(ignoreZoom, skipAbsolute); + } + }, + + /** + * @private + * @param {Boolean} [skipCoordsChange] if true, coordinates of objects enclosed in a group do not change + */ + _updateObjectsCoords: function(center) { + var center = center || this.getCenterPoint(); + for (var i = this._objects.length; i--; ){ + this._updateObjectCoords(this._objects[i], center); + } + }, + + /** + * @private + * @param {Object} object + * @param {fabric.Point} center, current center of group. + */ + _updateObjectCoords: function(object, center) { + var objectLeft = object.left, + objectTop = object.top, + ignoreZoom = true, skipAbsolute = true; + + object.set({ + left: objectLeft - center.x, + top: objectTop - center.y + }); + object.group = this; + object.setCoords(ignoreZoom, skipAbsolute); + }, + + /** + * Returns string represenation of a group + * @return {String} + */ + toString: function() { + return '#'; + }, + + /** + * Adds an object to a group; Then recalculates group's dimension, position. + * @param {Object} object + * @return {fabric.Group} thisArg + * @chainable + */ + addWithUpdate: function(object) { + this._restoreObjectsState(); + fabric.util.resetObjectTransform(this); + if (object) { + this._objects.push(object); + object.group = this; + object._set('canvas', this.canvas); + } + this._calcBounds(); + this._updateObjectsCoords(); + this.setCoords(); + this.dirty = true; + return this; + }, + + /** + * Removes an object from a group; Then recalculates group's dimension, position. + * @param {Object} object + * @return {fabric.Group} thisArg + * @chainable + */ + removeWithUpdate: function(object) { + this._restoreObjectsState(); + fabric.util.resetObjectTransform(this); + + this.remove(object); + this._calcBounds(); + this._updateObjectsCoords(); + this.setCoords(); + this.dirty = true; + return this; + }, + + /** + * @private + */ + _onObjectAdded: function(object) { + this.dirty = true; + object.group = this; + object._set('canvas', this.canvas); + }, + + /** + * @private + */ + _onObjectRemoved: function(object) { + this.dirty = true; + delete object.group; + }, + + /** + * @private + */ + _set: function(key, value) { + var i = this._objects.length; + if (this.useSetOnGroup) { + while (i--) { + this._objects[i].setOnGroup(key, value); + } + } + if (key === 'canvas') { + while (i--) { + this._objects[i]._set(key, value); + } + } + fabric.Object.prototype._set.call(this, key, value); + }, + + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject: function(propertiesToInclude) { + var _includeDefaultValues = this.includeDefaultValues; + var objsToObject = this._objects.map(function(obj) { + var originalDefaults = obj.includeDefaultValues; + obj.includeDefaultValues = _includeDefaultValues; + var _obj = obj.toObject(propertiesToInclude); + obj.includeDefaultValues = originalDefaults; + return _obj; + }); + var obj = fabric.Object.prototype.toObject.call(this, propertiesToInclude); + obj.objects = objsToObject; + return obj; + }, + + /** + * Returns object representation of an instance, in dataless mode. + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toDatalessObject: function(propertiesToInclude) { + var objsToObject, sourcePath = this.sourcePath; + if (sourcePath) { + objsToObject = sourcePath; + } + else { + var _includeDefaultValues = this.includeDefaultValues; + objsToObject = this._objects.map(function(obj) { + var originalDefaults = obj.includeDefaultValues; + obj.includeDefaultValues = _includeDefaultValues; + var _obj = obj.toDatalessObject(propertiesToInclude); + obj.includeDefaultValues = originalDefaults; + return _obj; + }); + } + var obj = fabric.Object.prototype.toDatalessObject.call(this, propertiesToInclude); + obj.objects = objsToObject; + return obj; + }, + + /** + * Renders instance on a given context + * @param {CanvasRenderingContext2D} ctx context to render instance on + */ + render: function(ctx) { + this._transformDone = true; + this.callSuper('render', ctx); + this._transformDone = false; + }, + + /** + * Decide if the object should cache or not. Create its own cache level + * needsItsOwnCache should be used when the object drawing method requires + * a cache step. None of the fabric classes requires it. + * Generally you do not cache objects in groups because the group is already cached. + * @return {Boolean} + */ + shouldCache: function() { + var ownCache = fabric.Object.prototype.shouldCache.call(this); + if (ownCache) { + for (var i = 0, len = this._objects.length; i < len; i++) { + if (this._objects[i].willDrawShadow()) { + this.ownCaching = false; + return false; + } + } + } + return ownCache; + }, + + /** + * Check if this object or a child object will cast a shadow + * @return {Boolean} + */ + willDrawShadow: function() { + if (this.shadow) { + return fabric.Object.prototype.willDrawShadow.call(this); + } + for (var i = 0, len = this._objects.length; i < len; i++) { + if (this._objects[i].willDrawShadow()) { + return true; + } + } + return false; + }, + + /** + * Check if this group or its parent group are caching, recursively up + * @return {Boolean} + */ + isOnACache: function() { + return this.ownCaching || (this.group && this.group.isOnACache()); + }, + + /** + * Execute the drawing operation for an object on a specified context + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + drawObject: function(ctx) { + for (var i = 0, len = this._objects.length; i < len; i++) { + this._objects[i].render(ctx); + } + this._drawClipPath(ctx); + }, + + /** + * Check if cache is dirty + */ + isCacheDirty: function(skipCanvas) { + if (this.callSuper('isCacheDirty', skipCanvas)) { + return true; + } + if (!this.statefullCache) { + return false; + } + for (var i = 0, len = this._objects.length; i < len; i++) { + if (this._objects[i].isCacheDirty(true)) { + if (this._cacheCanvas) { + // if this group has not a cache canvas there is nothing to clean + var x = this.cacheWidth / this.zoomX, y = this.cacheHeight / this.zoomY; + this._cacheContext.clearRect(-x / 2, -y / 2, x, y); + } + return true; + } + } + return false; + }, + + /** + * Retores original state of each of group objects (original state is that which was before group was created). + * @private + * @return {fabric.Group} thisArg + * @chainable + */ + _restoreObjectsState: function() { + this._objects.forEach(this._restoreObjectState, this); + return this; + }, + + /** + * Realises the transform from this group onto the supplied object + * i.e. it tells you what would happen if the supplied object was in + * the group, and then the group was destroyed. It mutates the supplied + * object. + * @param {fabric.Object} object + * @return {fabric.Object} transformedObject + */ + realizeTransform: function(object) { + var matrix = object.calcTransformMatrix(), + options = fabric.util.qrDecompose(matrix), + center = new fabric.Point(options.translateX, options.translateY); + object.flipX = false; + object.flipY = false; + object.set('scaleX', options.scaleX); + object.set('scaleY', options.scaleY); + object.skewX = options.skewX; + object.skewY = options.skewY; + object.angle = options.angle; + object.setPositionByOrigin(center, 'center', 'center'); + return object; + }, + + /** + * Restores original state of a specified object in group + * @private + * @param {fabric.Object} object + * @return {fabric.Group} thisArg + */ + _restoreObjectState: function(object) { + this.realizeTransform(object); + object.setCoords(); + delete object.group; + return this; + }, + + /** + * Destroys a group (restoring state of its objects) + * @return {fabric.Group} thisArg + * @chainable + */ + destroy: function() { + // when group is destroyed objects needs to get a repaint to be eventually + // displayed on canvas. + this._objects.forEach(function(object) { + object.set('dirty', true); + }); + return this._restoreObjectsState(); + }, + + /** + * make a group an active selection, remove the group from canvas + * the group has to be on canvas for this to work. + * @return {fabric.ActiveSelection} thisArg + * @chainable + */ + toActiveSelection: function() { + if (!this.canvas) { + return; + } + var objects = this._objects, canvas = this.canvas; + this._objects = []; + var options = this.toObject(); + delete options.objects; + var activeSelection = new fabric.ActiveSelection([]); + activeSelection.set(options); + activeSelection.type = 'activeSelection'; + canvas.remove(this); + objects.forEach(function(object) { + object.group = activeSelection; + object.dirty = true; + canvas.add(object); + }); + activeSelection.canvas = canvas; + activeSelection._objects = objects; + canvas._activeObject = activeSelection; + activeSelection.setCoords(); + return activeSelection; + }, + + /** + * Destroys a group (restoring state of its objects) + * @return {fabric.Group} thisArg + * @chainable + */ + ungroupOnCanvas: function() { + return this._restoreObjectsState(); + }, + + /** + * Sets coordinates of all objects inside group + * @return {fabric.Group} thisArg + * @chainable + */ + setObjectsCoords: function() { + var ignoreZoom = true, skipAbsolute = true; + this.forEachObject(function(object) { + object.setCoords(ignoreZoom, skipAbsolute); + }); + return this; + }, + + /** + * @private + */ + _calcBounds: function(onlyWidthHeight) { + var aX = [], + aY = [], + o, prop, + props = ['tr', 'br', 'bl', 'tl'], + i = 0, iLen = this._objects.length, + j, jLen = props.length, + ignoreZoom = true; + + for ( ; i < iLen; ++i) { + o = this._objects[i]; + o.setCoords(ignoreZoom); + for (j = 0; j < jLen; j++) { + prop = props[j]; + aX.push(o.oCoords[prop].x); + aY.push(o.oCoords[prop].y); + } + } + + this._getBounds(aX, aY, onlyWidthHeight); + }, + + /** + * @private + */ + _getBounds: function(aX, aY, onlyWidthHeight) { + var minXY = new fabric.Point(min(aX), min(aY)), + maxXY = new fabric.Point(max(aX), max(aY)), + top = minXY.y || 0, left = minXY.x || 0, + width = (maxXY.x - minXY.x) || 0, + height = (maxXY.y - minXY.y) || 0; + this.width = width; + this.height = height; + if (!onlyWidthHeight) { + // the bounding box always finds the topleft most corner. + // whatever is the group origin, we set up here the left/top position. + this.setPositionByOrigin({ x: left, y: top }, 'left', 'top'); + } + }, + + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @param {Function} [reviver] Method for further parsing of svg representation. + * @return {String} svg representation of an instance + */ + _toSVG: function(reviver) { + var svgString = ['\n']; + + for (var i = 0, len = this._objects.length; i < len; i++) { + svgString.push('\t\t', this._objects[i].toSVG(reviver)); + } + svgString.push('\n'); + return svgString; + }, + + /** + * Returns styles-string for svg-export, specific version for group + * @return {String} + */ + getSvgStyles: function() { + var opacity = typeof this.opacity !== 'undefined' && this.opacity !== 1 ? + 'opacity: ' + this.opacity + ';' : '', + visibility = this.visible ? '' : ' visibility: hidden;'; + return [ + opacity, + this.getSvgFilter(), + visibility + ].join(''); + }, + + /** + * Returns svg clipPath representation of an instance + * @param {Function} [reviver] Method for further parsing of svg representation. + * @return {String} svg representation of an instance + */ + toClipPathSVG: function(reviver) { + var svgString = []; + + for (var i = 0, len = this._objects.length; i < len; i++) { + svgString.push('\t', this._objects[i].toClipPathSVG(reviver)); + } + + return this._createBaseClipPathSVGMarkup(svgString, { reviver: reviver }); + }, + /* _TO_SVG_END_ */ + }); + + /** + * Returns {@link fabric.Group} instance from an object representation + * @static + * @memberOf fabric.Group + * @param {Object} object Object to create a group from + * @param {Function} [callback] Callback to invoke when an group instance is created + */ + fabric.Group.fromObject = function(object, callback) { + var objects = object.objects, + options = fabric.util.object.clone(object, true); + delete options.objects; + if (typeof objects === 'string') { + // it has to be an url or something went wrong. + fabric.loadSVGFromURL(objects, function (elements) { + var group = fabric.util.groupSVGElements(elements, object, objects); + group.set(options); + callback && callback(group); + }); + return; + } + fabric.util.enlivenObjects(objects, function(enlivenedObjects) { + fabric.util.enlivenObjects([object.clipPath], function(enlivedClipPath) { + var options = fabric.util.object.clone(object, true); + options.clipPath = enlivedClipPath[0]; + delete options.objects; + callback && callback(new fabric.Group(enlivenedObjects, options, true)); + }); + }); + }; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }); + + if (fabric.ActiveSelection) { + return; + } + + /** + * Group class + * @class fabric.ActiveSelection + * @extends fabric.Group + * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups} + * @see {@link fabric.ActiveSelection#initialize} for constructor definition + */ + fabric.ActiveSelection = fabric.util.createClass(fabric.Group, /** @lends fabric.ActiveSelection.prototype */ { + + /** + * Type of an object + * @type String + * @default + */ + type: 'activeSelection', + + /** + * Constructor + * @param {Object} objects ActiveSelection objects + * @param {Object} [options] Options object + * @return {Object} thisArg + */ + initialize: function(objects, options) { + options = options || {}; + this._objects = objects || []; + for (var i = this._objects.length; i--; ) { + this._objects[i].group = this; + } + + if (options.originX) { + this.originX = options.originX; + } + if (options.originY) { + this.originY = options.originY; + } + this._calcBounds(); + this._updateObjectsCoords(); + fabric.Object.prototype.initialize.call(this, options); + this.setCoords(); + }, + + /** + * Change te activeSelection to a normal group, + * High level function that automatically adds it to canvas as + * active object. no events fired. + * @since 2.0.0 + * @return {fabric.Group} + */ + toGroup: function() { + var objects = this._objects.concat(); + this._objects = []; + var options = fabric.Object.prototype.toObject.call(this); + var newGroup = new fabric.Group([]); + delete options.type; + newGroup.set(options); + objects.forEach(function(object) { + object.canvas.remove(object); + object.group = newGroup; + }); + newGroup._objects = objects; + if (!this.canvas) { + return newGroup; + } + var canvas = this.canvas; + canvas.add(newGroup); + canvas._activeObject = newGroup; + newGroup.setCoords(); + return newGroup; + }, + + /** + * If returns true, deselection is cancelled. + * @since 2.0.0 + * @return {Boolean} [cancel] + */ + onDeselect: function() { + this.destroy(); + return false; + }, + + /** + * Returns string representation of a group + * @return {String} + */ + toString: function() { + return '#'; + }, + + /** + * Decide if the object should cache or not. Create its own cache level + * objectCaching is a global flag, wins over everything + * needsItsOwnCache should be used when the object drawing method requires + * a cache step. None of the fabric classes requires it. + * Generally you do not cache objects in groups because the group outside is cached. + * @return {Boolean} + */ + shouldCache: function() { + return false; + }, + + /** + * Check if this group or its parent group are caching, recursively up + * @return {Boolean} + */ + isOnACache: function() { + return false; + }, + + /** + * Renders controls and borders for the object + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {Object} [styleOverride] properties to override the object style + * @param {Object} [childrenOverride] properties to override the children overrides + */ + _renderControls: function(ctx, styleOverride, childrenOverride) { + ctx.save(); + ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1; + this.callSuper('_renderControls', ctx, styleOverride); + childrenOverride = childrenOverride || { }; + if (typeof childrenOverride.hasControls === 'undefined') { + childrenOverride.hasControls = false; + } + if (typeof childrenOverride.hasRotatingPoint === 'undefined') { + childrenOverride.hasRotatingPoint = false; + } + childrenOverride.forActiveSelection = true; + for (var i = 0, len = this._objects.length; i < len; i++) { + this._objects[i]._renderControls(ctx, childrenOverride); + } + ctx.restore(); + }, + }); + + /** + * Returns {@link fabric.ActiveSelection} instance from an object representation + * @static + * @memberOf fabric.ActiveSelection + * @param {Object} object Object to create a group from + * @param {Function} [callback] Callback to invoke when an ActiveSelection instance is created + */ + fabric.ActiveSelection.fromObject = function(object, callback) { + fabric.util.enlivenObjects(object.objects, function(enlivenedObjects) { + delete object.objects; + callback && callback(new fabric.ActiveSelection(enlivenedObjects, object, true)); + }); + }; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var extend = fabric.util.object.extend; + + if (!global.fabric) { + global.fabric = { }; + } + + if (global.fabric.Image) { + fabric.warn('fabric.Image is already defined.'); + return; + } + + /** + * Image class + * @class fabric.Image + * @extends fabric.Object + * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#images} + * @see {@link fabric.Image#initialize} for constructor definition + */ + fabric.Image = fabric.util.createClass(fabric.Object, /** @lends fabric.Image.prototype */ { + + /** + * Type of an object + * @type String + * @default + */ + type: 'image', + + /** + * crossOrigin value (one of "", "anonymous", "use-credentials") + * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes + * @type String + * @default + */ + crossOrigin: '', + + /** + * Width of a stroke. + * For image quality a stroke multiple of 2 gives better results. + * @type Number + * @default + */ + strokeWidth: 0, + + /** + * When calling {@link fabric.Image.getSrc}, return value from element src with `element.getAttribute('src')`. + * This allows for relative urls as image src. + * @since 2.7.0 + * @type Boolean + * @default + */ + srcFromAttribute: false, + + /** + * private + * contains last value of scaleX to detect + * if the Image got resized after the last Render + * @type Number + */ + _lastScaleX: 1, + + /** + * private + * contains last value of scaleY to detect + * if the Image got resized after the last Render + * @type Number + */ + _lastScaleY: 1, + + /** + * private + * contains last value of scaling applied by the apply filter chain + * @type Number + */ + _filterScalingX: 1, + + /** + * private + * contains last value of scaling applied by the apply filter chain + * @type Number + */ + _filterScalingY: 1, + + /** + * minimum scale factor under which any resizeFilter is triggered to resize the image + * 0 will disable the automatic resize. 1 will trigger automatically always. + * number bigger than 1 are not implemented yet. + * @type Number + */ + minimumScaleTrigger: 0.5, + + /** + * List of properties to consider when checking if + * state of an object is changed ({@link fabric.Object#hasStateChanged}) + * as well as for history (undo/redo) purposes + * @type Array + */ + stateProperties: fabric.Object.prototype.stateProperties.concat('cropX', 'cropY'), + + /** + * key used to retrieve the texture representing this image + * @since 2.0.0 + * @type String + * @default + */ + cacheKey: '', + + /** + * Image crop in pixels from original image size. + * @since 2.0.0 + * @type Number + * @default + */ + cropX: 0, + + /** + * Image crop in pixels from original image size. + * @since 2.0.0 + * @type Number + * @default + */ + cropY: 0, + + /** + * Constructor + * @param {HTMLImageElement | String} element Image element + * @param {Object} [options] Options object + * @param {function} [callback] callback function to call after eventual filters applied. + * @return {fabric.Image} thisArg + */ + initialize: function(element, options) { + options || (options = { }); + this.filters = []; + this.cacheKey = 'texture' + fabric.Object.__uid++; + this.callSuper('initialize', options); + this._initElement(element, options); + }, + + /** + * Returns image element which this instance if based on + * @return {HTMLImageElement} Image element + */ + getElement: function() { + return this._element || {}; + }, + + /** + * Sets image element for this instance to a specified one. + * If filters defined they are applied to new image. + * You might need to call `canvas.renderAll` and `object.setCoords` after replacing, to render new image and update controls area. + * @param {HTMLImageElement} element + * @param {Object} [options] Options object + * @return {fabric.Image} thisArg + * @chainable + */ + setElement: function(element, options) { + this.removeTexture(this.cacheKey); + this.removeTexture(this.cacheKey + '_filtered'); + this._element = element; + this._originalElement = element; + this._initConfig(options); + if (this.filters.length !== 0) { + this.applyFilters(); + } + // resizeFilters work on the already filtered copy. + // we need to apply resizeFilters AFTER normal filters. + // applyResizeFilters is run more often than normal fiters + // and is triggered by user interactions rather than dev code + if (this.resizeFilter) { + this.applyResizeFilters(); + } + return this; + }, + + /** + * Delete a single texture if in webgl mode + */ + removeTexture: function(key) { + var backend = fabric.filterBackend; + if (backend && backend.evictCachesForKey) { + backend.evictCachesForKey(key); + } + }, + + /** + * Delete textures, reference to elements and eventually JSDOM cleanup + */ + dispose: function() { + this.removeTexture(this.cacheKey); + this.removeTexture(this.cacheKey + '_filtered'); + this._cacheContext = undefined; + ['_originalElement', '_element', '_filteredEl', '_cacheCanvas'].forEach((function(element) { + fabric.util.cleanUpJsdomNode(this[element]); + this[element] = undefined; + }).bind(this)); + }, + + /** + * Sets crossOrigin value (on an instance and corresponding image element) + * @return {fabric.Image} thisArg + * @chainable + */ + setCrossOrigin: function(value) { + this.crossOrigin = value; + this._element.crossOrigin = value; + + return this; + }, + + /** + * Returns original size of an image + * @return {Object} Object with "width" and "height" properties + */ + getOriginalSize: function() { + var element = this.getElement(); + return { + width: element.naturalWidth || element.width, + height: element.naturalHeight || element.height + }; + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _stroke: function(ctx) { + if (!this.stroke || this.strokeWidth === 0) { + return; + } + var w = this.width / 2, h = this.height / 2; + ctx.beginPath(); + ctx.moveTo(-w, -h); + ctx.lineTo(w, -h); + ctx.lineTo(w, h); + ctx.lineTo(-w, h); + ctx.lineTo(-w, -h); + ctx.closePath(); + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderDashedStroke: function(ctx) { + var x = -this.width / 2, + y = -this.height / 2, + w = this.width, + h = this.height; + + ctx.save(); + this._setStrokeStyles(ctx, this); + + ctx.beginPath(); + fabric.util.drawDashedLine(ctx, x, y, x + w, y, this.strokeDashArray); + fabric.util.drawDashedLine(ctx, x + w, y, x + w, y + h, this.strokeDashArray); + fabric.util.drawDashedLine(ctx, x + w, y + h, x, y + h, this.strokeDashArray); + fabric.util.drawDashedLine(ctx, x, y + h, x, y, this.strokeDashArray); + ctx.closePath(); + ctx.restore(); + }, + + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} Object representation of an instance + */ + toObject: function(propertiesToInclude) { + var filters = []; + + this.filters.forEach(function(filterObj) { + if (filterObj) { + filters.push(filterObj.toObject()); + } + }); + var object = extend( + this.callSuper( + 'toObject', + ['crossOrigin', 'cropX', 'cropY'].concat(propertiesToInclude) + ), { + src: this.getSrc(), + filters: filters, + }); + if (this.resizeFilter) { + object.resizeFilter = this.resizeFilter.toObject(); + } + return object; + }, + + /** + * Returns true if an image has crop applied, inspecting values of cropX,cropY,width,hight. + * @return {Boolean} + */ + hasCrop: function() { + return this.cropX || this.cropY || this.width < this._element.width || this.height < this._element.height; + }, + + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG: function() { + var svgString = [], imageMarkup = [], strokeSvg, + x = -this.width / 2, y = -this.height / 2, clipPath = ''; + if (this.hasCrop()) { + var clipPathId = fabric.Object.__uid++; + svgString.push( + '\n', + '\t\n', + '\n' + ); + clipPath = ' clip-path="url(#imageCrop_' + clipPathId + ')" '; + } + imageMarkup.push('\t\n'); + + if (this.stroke || this.strokeDashArray) { + var origFill = this.fill; + this.fill = null; + strokeSvg = [ + '\t\n' + ]; + this.fill = origFill; + } + if (this.paintFirst !== 'fill') { + svgString = svgString.concat(strokeSvg, imageMarkup); + } + else { + svgString = svgString.concat(imageMarkup, strokeSvg); + } + return svgString; + }, + /* _TO_SVG_END_ */ + + /** + * Returns source of an image + * @param {Boolean} filtered indicates if the src is needed for svg + * @return {String} Source of an image + */ + getSrc: function(filtered) { + var element = filtered ? this._element : this._originalElement; + if (element) { + if (element.toDataURL) { + return element.toDataURL(); + } + + if (this.srcFromAttribute) { + return element.getAttribute('src'); + } + else { + return element.src; + } + } + else { + return this.src || ''; + } + }, + + /** + * Sets source of an image + * @param {String} src Source string (URL) + * @param {Function} [callback] Callback is invoked when image has been loaded (and all filters have been applied) + * @param {Object} [options] Options object + * @return {fabric.Image} thisArg + * @chainable + */ + setSrc: function(src, callback, options) { + fabric.util.loadImage(src, function(img) { + this.setElement(img, options); + this._setWidthHeight(); + callback && callback(this); + }, this, options && options.crossOrigin); + return this; + }, + + /** + * Returns string representation of an instance + * @return {String} String representation of an instance + */ + toString: function() { + return '#'; + }, + + applyResizeFilters: function() { + var filter = this.resizeFilter, + minimumScale = this.minimumScaleTrigger, + objectScale = this.getTotalObjectScaling(), + scaleX = objectScale.scaleX, + scaleY = objectScale.scaleY, + elementToFilter = this._filteredEl || this._originalElement; + if (this.group) { + this.set('dirty', true); + } + if (!filter || (scaleX > minimumScale && scaleY > minimumScale)) { + this._element = elementToFilter; + this._filterScalingX = 1; + this._filterScalingY = 1; + this._lastScaleX = scaleX; + this._lastScaleY = scaleY; + return; + } + if (!fabric.filterBackend) { + fabric.filterBackend = fabric.initFilterBackend(); + } + var canvasEl = fabric.util.createCanvasElement(), + cacheKey = this._filteredEl ? (this.cacheKey + '_filtered') : this.cacheKey, + sourceWidth = elementToFilter.width, sourceHeight = elementToFilter.height; + canvasEl.width = sourceWidth; + canvasEl.height = sourceHeight; + this._element = canvasEl; + this._lastScaleX = filter.scaleX = scaleX; + this._lastScaleY = filter.scaleY = scaleY; + fabric.filterBackend.applyFilters( + [filter], elementToFilter, sourceWidth, sourceHeight, this._element, cacheKey); + this._filterScalingX = canvasEl.width / this._originalElement.width; + this._filterScalingY = canvasEl.height / this._originalElement.height; + }, + + /** + * Applies filters assigned to this image (from "filters" array) or from filter param + * @method applyFilters + * @param {Array} filters to be applied + * @param {Boolean} forResizing specify if the filter operation is a resize operation + * @return {thisArg} return the fabric.Image object + * @chainable + */ + applyFilters: function(filters) { + + filters = filters || this.filters || []; + filters = filters.filter(function(filter) { return filter && !filter.isNeutralState(); }); + this.set('dirty', true); + + // needs to clear out or WEBGL will not resize correctly + this.removeTexture(this.cacheKey + '_filtered'); + + if (filters.length === 0) { + this._element = this._originalElement; + this._filteredEl = null; + this._filterScalingX = 1; + this._filterScalingY = 1; + return this; + } + + var imgElement = this._originalElement, + sourceWidth = imgElement.naturalWidth || imgElement.width, + sourceHeight = imgElement.naturalHeight || imgElement.height; + + if (this._element === this._originalElement) { + // if the element is the same we need to create a new element + var canvasEl = fabric.util.createCanvasElement(); + canvasEl.width = sourceWidth; + canvasEl.height = sourceHeight; + this._element = canvasEl; + this._filteredEl = canvasEl; + } + else { + // clear the existing element to get new filter data + // also dereference the eventual resized _element + this._element = this._filteredEl; + this._filteredEl.getContext('2d').clearRect(0, 0, sourceWidth, sourceHeight); + // we also need to resize again at next renderAll, so remove saved _lastScaleX/Y + this._lastScaleX = 1; + this._lastScaleY = 1; + } + if (!fabric.filterBackend) { + fabric.filterBackend = fabric.initFilterBackend(); + } + fabric.filterBackend.applyFilters( + filters, this._originalElement, sourceWidth, sourceHeight, this._element, this.cacheKey); + if (this._originalElement.width !== this._element.width || + this._originalElement.height !== this._element.height) { + this._filterScalingX = this._element.width / this._originalElement.width; + this._filterScalingY = this._element.height / this._originalElement.height; + } + return this; + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(ctx) { + if (this.isMoving !== true && this.resizeFilter && this._needsResize()) { + this.applyResizeFilters(); + } + this._stroke(ctx); + this._renderPaintInOrder(ctx); + }, + + /** + * Decide if the object should cache or not. Create its own cache level + * needsItsOwnCache should be used when the object drawing method requires + * a cache step. None of the fabric classes requires it. + * Generally you do not cache objects in groups because the group outside is cached. + * This is the special image version where we would like to avoid caching where possible. + * Essentially images do not benefit from caching. They may require caching, and in that + * case we do it. Also caching an image usually ends in a loss of details. + * A full performance audit should be done. + * @return {Boolean} + */ + shouldCache: function() { + return this.needsItsOwnCache(); + }, + + _renderFill: function(ctx) { + var elementToDraw = this._element, + w = this.width, h = this.height, + sW = Math.min(elementToDraw.naturalWidth || elementToDraw.width, w * this._filterScalingX), + sH = Math.min(elementToDraw.naturalHeight || elementToDraw.height, h * this._filterScalingY), + x = -w / 2, y = -h / 2, + sX = Math.max(0, this.cropX * this._filterScalingX), + sY = Math.max(0, this.cropY * this._filterScalingY); + + elementToDraw && ctx.drawImage(elementToDraw, sX, sY, sW, sH, x, y, w, h); + }, + + /** + * needed to check if image needs resize + * @private + */ + _needsResize: function() { + var scale = this.getTotalObjectScaling(); + return (scale.scaleX !== this._lastScaleX || scale.scaleY !== this._lastScaleY); + }, + + /** + * @private + */ + _resetWidthHeight: function() { + this.set(this.getOriginalSize()); + }, + + /** + * The Image class's initialization method. This method is automatically + * called by the constructor. + * @private + * @param {HTMLImageElement|String} element The element representing the image + * @param {Object} [options] Options object + */ + _initElement: function(element, options) { + this.setElement(fabric.util.getById(element), options); + fabric.util.addClass(this.getElement(), fabric.Image.CSS_CANVAS); + }, + + /** + * @private + * @param {Object} [options] Options object + */ + _initConfig: function(options) { + options || (options = { }); + this.setOptions(options); + this._setWidthHeight(options); + if (this._element && this.crossOrigin) { + this._element.crossOrigin = this.crossOrigin; + } + }, + + /** + * @private + * @param {Array} filters to be initialized + * @param {Function} callback Callback to invoke when all fabric.Image.filters instances are created + */ + _initFilters: function(filters, callback) { + if (filters && filters.length) { + fabric.util.enlivenObjects(filters, function(enlivenedObjects) { + callback && callback(enlivenedObjects); + }, 'fabric.Image.filters'); + } + else { + callback && callback(); + } + }, + + /** + * @private + * Set the width and the height of the image object, using the element or the + * options. + * @param {Object} [options] Object with width/height properties + */ + _setWidthHeight: function(options) { + options || (options = { }); + var el = this.getElement(); + this.width = options.width || el.naturalWidth || el.width || 0; + this.height = options.height || el.naturalHeight || el.height || 0; + }, + + /** + * Calculate offset for center and scale factor for the image in order to respect + * the preserveAspectRatio attribute + * @private + * @return {Object} + */ + parsePreserveAspectRatioAttribute: function() { + var pAR = fabric.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio || ''), + rWidth = this._element.width, rHeight = this._element.height, + scaleX = 1, scaleY = 1, offsetLeft = 0, offsetTop = 0, cropX = 0, cropY = 0, + offset, pWidth = this.width, pHeight = this.height, parsedAttributes = { width: pWidth, height: pHeight }; + if (pAR && (pAR.alignX !== 'none' || pAR.alignY !== 'none')) { + if (pAR.meetOrSlice === 'meet') { + scaleX = scaleY = fabric.util.findScaleToFit(this._element, parsedAttributes); + offset = (pWidth - rWidth * scaleX) / 2; + if (pAR.alignX === 'Min') { + offsetLeft = -offset; + } + if (pAR.alignX === 'Max') { + offsetLeft = offset; + } + offset = (pHeight - rHeight * scaleY) / 2; + if (pAR.alignY === 'Min') { + offsetTop = -offset; + } + if (pAR.alignY === 'Max') { + offsetTop = offset; + } + } + if (pAR.meetOrSlice === 'slice') { + scaleX = scaleY = fabric.util.findScaleToCover(this._element, parsedAttributes); + offset = rWidth - pWidth / scaleX; + if (pAR.alignX === 'Mid') { + cropX = offset / 2; + } + if (pAR.alignX === 'Max') { + cropX = offset; + } + offset = rHeight - pHeight / scaleY; + if (pAR.alignY === 'Mid') { + cropY = offset / 2; + } + if (pAR.alignY === 'Max') { + cropY = offset; + } + rWidth = pWidth / scaleX; + rHeight = pHeight / scaleY; + } + } + else { + scaleX = pWidth / rWidth; + scaleY = pHeight / rHeight; + } + return { + width: rWidth, + height: rHeight, + scaleX: scaleX, + scaleY: scaleY, + offsetLeft: offsetLeft, + offsetTop: offsetTop, + cropX: cropX, + cropY: cropY + }; + } + }); + + /** + * Default CSS class name for canvas + * @static + * @type String + * @default + */ + fabric.Image.CSS_CANVAS = 'canvas-img'; + + /** + * Alias for getSrc + * @static + */ + fabric.Image.prototype.getSvgSrc = fabric.Image.prototype.getSrc; + + /** + * Creates an instance of fabric.Image from its object representation + * @static + * @param {Object} object Object to create an instance from + * @param {Function} callback Callback to invoke when an image instance is created + */ + fabric.Image.fromObject = function(_object, callback) { + var object = fabric.util.object.clone(_object); + fabric.util.loadImage(object.src, function(img, error) { + if (error) { + callback && callback(null, error); + return; + } + fabric.Image.prototype._initFilters.call(object, object.filters, function(filters) { + object.filters = filters || []; + fabric.Image.prototype._initFilters.call(object, [object.resizeFilter], function(resizeFilters) { + object.resizeFilter = resizeFilters[0]; + fabric.util.enlivenObjects([object.clipPath], function(enlivedProps) { + object.clipPath = enlivedProps[0]; + var image = new fabric.Image(img, object); + callback(image); + }); + }); + }); + }, null, object.crossOrigin); + }; + + /** + * Creates an instance of fabric.Image from an URL string + * @static + * @param {String} url URL to create an image from + * @param {Function} [callback] Callback to invoke when image is created (newly created image is passed as a first argument) + * @param {Object} [imgOptions] Options object + */ + fabric.Image.fromURL = function(url, callback, imgOptions) { + fabric.util.loadImage(url, function(img) { + callback && callback(new fabric.Image(img, imgOptions)); + }, null, imgOptions && imgOptions.crossOrigin); + }; + + /* _FROM_SVG_START_ */ + /** + * List of attribute names to account for when parsing SVG element (used by {@link fabric.Image.fromElement}) + * @static + * @see {@link http://www.w3.org/TR/SVG/struct.html#ImageElement} + */ + fabric.Image.ATTRIBUTE_NAMES = + fabric.SHARED_ATTRIBUTES.concat('x y width height preserveAspectRatio xlink:href crossOrigin'.split(' ')); + + /** + * Returns {@link fabric.Image} instance from an SVG element + * @static + * @param {SVGElement} element Element to parse + * @param {Object} [options] Options object + * @param {Function} callback Callback to execute when fabric.Image object is created + * @return {fabric.Image} Instance of fabric.Image + */ + fabric.Image.fromElement = function(element, callback, options) { + var parsedAttributes = fabric.parseAttributes(element, fabric.Image.ATTRIBUTE_NAMES); + fabric.Image.fromURL(parsedAttributes['xlink:href'], callback, + extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes)); + }; + /* _FROM_SVG_END_ */ + +})(typeof exports !== 'undefined' ? exports : this); + + +fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { + + /** + * @private + * @return {Number} angle value + */ + _getAngleValueForStraighten: function() { + var angle = this.angle % 360; + if (angle > 0) { + return Math.round((angle - 1) / 90) * 90; + } + return Math.round(angle / 90) * 90; + }, + + /** + * Straightens an object (rotating it from current angle to one of 0, 90, 180, 270, etc. depending on which is closer) + * @return {fabric.Object} thisArg + * @chainable + */ + straighten: function() { + this.rotate(this._getAngleValueForStraighten()); + return this; + }, + + /** + * Same as {@link fabric.Object.prototype.straighten} but with animation + * @param {Object} callbacks Object with callback functions + * @param {Function} [callbacks.onComplete] Invoked on completion + * @param {Function} [callbacks.onChange] Invoked on every step of animation + * @return {fabric.Object} thisArg + * @chainable + */ + fxStraighten: function(callbacks) { + callbacks = callbacks || { }; + + var empty = function() { }, + onComplete = callbacks.onComplete || empty, + onChange = callbacks.onChange || empty, + _this = this; + + fabric.util.animate({ + startValue: this.get('angle'), + endValue: this._getAngleValueForStraighten(), + duration: this.FX_DURATION, + onChange: function(value) { + _this.rotate(value); + onChange(); + }, + onComplete: function() { + _this.setCoords(); + onComplete(); + }, + }); + + return this; + } +}); + +fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ { + + /** + * Straightens object, then rerenders canvas + * @param {fabric.Object} object Object to straighten + * @return {fabric.Canvas} thisArg + * @chainable + */ + straightenObject: function (object) { + object.straighten(); + this.requestRenderAll(); + return this; + }, + + /** + * Same as {@link fabric.Canvas.prototype.straightenObject}, but animated + * @param {fabric.Object} object Object to straighten + * @return {fabric.Canvas} thisArg + * @chainable + */ + fxStraightenObject: function (object) { + object.fxStraighten({ + onChange: this.requestRenderAllBound + }); + return this; + } +}); + + +(function() { + + 'use strict'; + + /** + * Tests if webgl supports certain precision + * @param {WebGL} Canvas WebGL context to test on + * @param {String} Precision to test can be any of following: 'lowp', 'mediump', 'highp' + * @returns {Boolean} Whether the user's browser WebGL supports given precision. + */ + function testPrecision(gl, precision){ + var fragmentSource = 'precision ' + precision + ' float;\nvoid main(){}'; + var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); + gl.shaderSource(fragmentShader, fragmentSource); + gl.compileShader(fragmentShader); + if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) { + return false; + } + return true; + } + + /** + * Indicate whether this filtering backend is supported by the user's browser. + * @param {Number} tileSize check if the tileSize is supported + * @returns {Boolean} Whether the user's browser supports WebGL. + */ + fabric.isWebglSupported = function(tileSize) { + if (fabric.isLikelyNode) { + return false; + } + tileSize = tileSize || fabric.WebglFilterBackend.prototype.tileSize; + var canvas = document.createElement('canvas'); + var gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl'); + var isSupported = false; + // eslint-disable-next-line + if (gl) { + fabric.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE); + isSupported = fabric.maxTextureSize >= tileSize; + var precisions = ['highp', 'mediump', 'lowp']; + for (var i = 0; i < 3; i++){ + if (testPrecision(gl, precisions[i])){ + fabric.webGlPrecision = precisions[i]; + break; + }; + } + } + this.isSupported = isSupported; + return isSupported; + }; + + fabric.WebglFilterBackend = WebglFilterBackend; + + /** + * WebGL filter backend. + */ + function WebglFilterBackend(options) { + if (options && options.tileSize) { + this.tileSize = options.tileSize; + } + this.setupGLContext(this.tileSize, this.tileSize); + this.captureGPUInfo(); + }; + + WebglFilterBackend.prototype = /** @lends fabric.WebglFilterBackend.prototype */ { + + tileSize: 2048, + + /** + * Experimental. This object is a sort of repository of help layers used to avoid + * of recreating them during frequent filtering. If you are previewing a filter with + * a slider you problably do not want to create help layers every filter step. + * in this object there will be appended some canvases, created once, resized sometimes + * cleared never. Clearing is left to the developer. + **/ + resources: { + + }, + + /** + * Setup a WebGL context suitable for filtering, and bind any needed event handlers. + */ + setupGLContext: function(width, height) { + this.dispose(); + this.createWebGLCanvas(width, height); + // eslint-disable-next-line + this.aPosition = new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]); + this.chooseFastestCopyGLTo2DMethod(width, height); + }, + + /** + * Pick a method to copy data from GL context to 2d canvas. In some browsers using + * putImageData is faster than drawImage for that specific operation. + */ + chooseFastestCopyGLTo2DMethod: function(width, height) { + var canMeasurePerf = typeof window.performance !== 'undefined', canUseImageData; + try { + new ImageData(1, 1); + canUseImageData = true; + } + catch (e) { + canUseImageData = false; + } + // eslint-disable-next-line no-undef + var canUseArrayBuffer = typeof ArrayBuffer !== 'undefined'; + // eslint-disable-next-line no-undef + var canUseUint8Clamped = typeof Uint8ClampedArray !== 'undefined'; + + if (!(canMeasurePerf && canUseImageData && canUseArrayBuffer && canUseUint8Clamped)) { + return; + } + + var targetCanvas = fabric.util.createCanvasElement(); + // eslint-disable-next-line no-undef + var imageBuffer = new ArrayBuffer(width * height * 4); + if (fabric.forceGLPutImageData) { + this.imageBuffer = imageBuffer; + this.copyGLTo2D = copyGLTo2DPutImageData; + return; + } + var testContext = { + imageBuffer: imageBuffer, + destinationWidth: width, + destinationHeight: height, + targetCanvas: targetCanvas + }; + var startTime, drawImageTime, putImageDataTime; + targetCanvas.width = width; + targetCanvas.height = height; + + startTime = window.performance.now(); + copyGLTo2DDrawImage.call(testContext, this.gl, testContext); + drawImageTime = window.performance.now() - startTime; + + startTime = window.performance.now(); + copyGLTo2DPutImageData.call(testContext, this.gl, testContext); + putImageDataTime = window.performance.now() - startTime; + + if (drawImageTime > putImageDataTime) { + this.imageBuffer = imageBuffer; + this.copyGLTo2D = copyGLTo2DPutImageData; + } + else { + this.copyGLTo2D = copyGLTo2DDrawImage; + } + }, + + /** + * Create a canvas element and associated WebGL context and attaches them as + * class properties to the GLFilterBackend class. + */ + createWebGLCanvas: function(width, height) { + var canvas = fabric.util.createCanvasElement(); + canvas.width = width; + canvas.height = height; + var glOptions = { + alpha: true, + premultipliedAlpha: false, + depth: false, + stencil: false, + antialias: false + }, + gl = canvas.getContext('webgl', glOptions); + if (!gl) { + gl = canvas.getContext('experimental-webgl', glOptions); + } + if (!gl) { + return; + } + gl.clearColor(0, 0, 0, 0); + // this canvas can fire webglcontextlost and webglcontextrestored + this.canvas = canvas; + this.gl = gl; + }, + + /** + * Attempts to apply the requested filters to the source provided, drawing the filtered output + * to the provided target canvas. + * + * @param {Array} filters The filters to apply. + * @param {HTMLImageElement|HTMLCanvasElement} source The source to be filtered. + * @param {Number} width The width of the source input. + * @param {Number} height The height of the source input. + * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn. + * @param {String|undefined} cacheKey A key used to cache resources related to the source. If + * omitted, caching will be skipped. + */ + applyFilters: function(filters, source, width, height, targetCanvas, cacheKey) { + var gl = this.gl; + var cachedTexture; + if (cacheKey) { + cachedTexture = this.getCachedTexture(cacheKey, source); + } + var pipelineState = { + originalWidth: source.width || source.originalWidth, + originalHeight: source.height || source.originalHeight, + sourceWidth: width, + sourceHeight: height, + destinationWidth: width, + destinationHeight: height, + context: gl, + sourceTexture: this.createTexture(gl, width, height, !cachedTexture && source), + targetTexture: this.createTexture(gl, width, height), + originalTexture: cachedTexture || + this.createTexture(gl, width, height, !cachedTexture && source), + passes: filters.length, + webgl: true, + aPosition: this.aPosition, + programCache: this.programCache, + pass: 0, + filterBackend: this, + targetCanvas: targetCanvas + }; + var tempFbo = gl.createFramebuffer(); + gl.bindFramebuffer(gl.FRAMEBUFFER, tempFbo); + filters.forEach(function(filter) { filter && filter.applyTo(pipelineState); }); + resizeCanvasIfNeeded(pipelineState); + this.copyGLTo2D(gl, pipelineState); + gl.bindTexture(gl.TEXTURE_2D, null); + gl.deleteTexture(pipelineState.sourceTexture); + gl.deleteTexture(pipelineState.targetTexture); + gl.deleteFramebuffer(tempFbo); + targetCanvas.getContext('2d').setTransform(1, 0, 0, 1, 0, 0); + return pipelineState; + }, + + /** + * Detach event listeners, remove references, and clean up caches. + */ + dispose: function() { + if (this.canvas) { + this.canvas = null; + this.gl = null; + } + this.clearWebGLCaches(); + }, + + /** + * Wipe out WebGL-related caches. + */ + clearWebGLCaches: function() { + this.programCache = {}; + this.textureCache = {}; + }, + + /** + * Create a WebGL texture object. + * + * Accepts specific dimensions to initialize the textuer to or a source image. + * + * @param {WebGLRenderingContext} gl The GL context to use for creating the texture. + * @param {Number} width The width to initialize the texture at. + * @param {Number} height The height to initialize the texture. + * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source for the texture data. + * @returns {WebGLTexture} + */ + createTexture: function(gl, width, height, textureImageSource) { + var texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + if (textureImageSource) { + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, textureImageSource); + } + else { + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); + } + return texture; + }, + + /** + * Can be optionally used to get a texture from the cache array + * + * If an existing texture is not found, a new texture is created and cached. + * + * @param {String} uniqueId A cache key to use to find an existing texture. + * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source to use to create the + * texture cache entry if one does not already exist. + */ + getCachedTexture: function(uniqueId, textureImageSource) { + if (this.textureCache[uniqueId]) { + return this.textureCache[uniqueId]; + } + else { + var texture = this.createTexture( + this.gl, textureImageSource.width, textureImageSource.height, textureImageSource); + this.textureCache[uniqueId] = texture; + return texture; + } + }, + + /** + * Clear out cached resources related to a source image that has been + * filtered previously. + * + * @param {String} cacheKey The cache key provided when the source image was filtered. + */ + evictCachesForKey: function(cacheKey) { + if (this.textureCache[cacheKey]) { + this.gl.deleteTexture(this.textureCache[cacheKey]); + delete this.textureCache[cacheKey]; + } + }, + + copyGLTo2D: copyGLTo2DDrawImage, + + /** + * Attempt to extract GPU information strings from a WebGL context. + * + * Useful information when debugging or blacklisting specific GPUs. + * + * @returns {Object} A GPU info object with renderer and vendor strings. + */ + captureGPUInfo: function() { + if (this.gpuInfo) { + return this.gpuInfo; + } + var gl = this.gl, gpuInfo = { renderer: '', vendor: '' }; + if (!gl) { + return gpuInfo; + } + var ext = gl.getExtension('WEBGL_debug_renderer_info'); + if (ext) { + var renderer = gl.getParameter(ext.UNMASKED_RENDERER_WEBGL); + var vendor = gl.getParameter(ext.UNMASKED_VENDOR_WEBGL); + if (renderer) { + gpuInfo.renderer = renderer.toLowerCase(); + } + if (vendor) { + gpuInfo.vendor = vendor.toLowerCase(); + } + } + this.gpuInfo = gpuInfo; + return gpuInfo; + }, + }; +})(); + +function resizeCanvasIfNeeded(pipelineState) { + var targetCanvas = pipelineState.targetCanvas, + width = targetCanvas.width, height = targetCanvas.height, + dWidth = pipelineState.destinationWidth, + dHeight = pipelineState.destinationHeight; + + if (width !== dWidth || height !== dHeight) { + targetCanvas.width = dWidth; + targetCanvas.height = dHeight; + } +} + +/** + * Copy an input WebGL canvas on to an output 2D canvas. + * + * The WebGL canvas is assumed to be upside down, with the top-left pixel of the + * desired output image appearing in the bottom-left corner of the WebGL canvas. + * + * @param {WebGLRenderingContext} sourceContext The WebGL context to copy from. + * @param {HTMLCanvasElement} targetCanvas The 2D target canvas to copy on to. + * @param {Object} pipelineState The 2D target canvas to copy on to. + */ +function copyGLTo2DDrawImage(gl, pipelineState) { + var glCanvas = gl.canvas, targetCanvas = pipelineState.targetCanvas, + ctx = targetCanvas.getContext('2d'); + ctx.translate(0, targetCanvas.height); // move it down again + ctx.scale(1, -1); // vertical flip + // where is my image on the big glcanvas? + var sourceY = glCanvas.height - targetCanvas.height; + ctx.drawImage(glCanvas, 0, sourceY, targetCanvas.width, targetCanvas.height, 0, 0, + targetCanvas.width, targetCanvas.height); +} + +/** + * Copy an input WebGL canvas on to an output 2D canvas using 2d canvas' putImageData + * API. Measurably faster than using ctx.drawImage in Firefox (version 54 on OSX Sierra). + * + * @param {WebGLRenderingContext} sourceContext The WebGL context to copy from. + * @param {HTMLCanvasElement} targetCanvas The 2D target canvas to copy on to. + * @param {Object} pipelineState The 2D target canvas to copy on to. + */ +function copyGLTo2DPutImageData(gl, pipelineState) { + var targetCanvas = pipelineState.targetCanvas, ctx = targetCanvas.getContext('2d'), + dWidth = pipelineState.destinationWidth, + dHeight = pipelineState.destinationHeight, + numBytes = dWidth * dHeight * 4; + + // eslint-disable-next-line no-undef + var u8 = new Uint8Array(this.imageBuffer, 0, numBytes); + // eslint-disable-next-line no-undef + var u8Clamped = new Uint8ClampedArray(this.imageBuffer, 0, numBytes); + + gl.readPixels(0, 0, dWidth, dHeight, gl.RGBA, gl.UNSIGNED_BYTE, u8); + var imgData = new ImageData(u8Clamped, dWidth, dHeight); + ctx.putImageData(imgData, 0, 0); +} + + +(function() { + + 'use strict'; + + var noop = function() {}; + + fabric.Canvas2dFilterBackend = Canvas2dFilterBackend; + + /** + * Canvas 2D filter backend. + */ + function Canvas2dFilterBackend() {}; + + Canvas2dFilterBackend.prototype = /** @lends fabric.Canvas2dFilterBackend.prototype */ { + evictCachesForKey: noop, + dispose: noop, + clearWebGLCaches: noop, + + /** + * Experimental. This object is a sort of repository of help layers used to avoid + * of recreating them during frequent filtering. If you are previewing a filter with + * a slider you probably do not want to create help layers every filter step. + * in this object there will be appended some canvases, created once, resized sometimes + * cleared never. Clearing is left to the developer. + **/ + resources: { + + }, + + /** + * Apply a set of filters against a source image and draw the filtered output + * to the provided destination canvas. + * + * @param {EnhancedFilter} filters The filter to apply. + * @param {HTMLImageElement|HTMLCanvasElement} sourceElement The source to be filtered. + * @param {Number} sourceWidth The width of the source input. + * @param {Number} sourceHeight The height of the source input. + * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn. + */ + applyFilters: function(filters, sourceElement, sourceWidth, sourceHeight, targetCanvas) { + var ctx = targetCanvas.getContext('2d'); + ctx.drawImage(sourceElement, 0, 0, sourceWidth, sourceHeight); + var imageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight); + var originalImageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight); + var pipelineState = { + sourceWidth: sourceWidth, + sourceHeight: sourceHeight, + imageData: imageData, + originalEl: sourceElement, + originalImageData: originalImageData, + canvasEl: targetCanvas, + ctx: ctx, + filterBackend: this, + }; + filters.forEach(function(filter) { filter.applyTo(pipelineState); }); + if (pipelineState.imageData.width !== sourceWidth || pipelineState.imageData.height !== sourceHeight) { + targetCanvas.width = pipelineState.imageData.width; + targetCanvas.height = pipelineState.imageData.height; + } + ctx.putImageData(pipelineState.imageData, 0, 0); + return pipelineState; + }, + + }; +})(); + + +/** + * @namespace fabric.Image.filters + * @memberOf fabric.Image + * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#image_filters} + * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} + */ +fabric.Image = fabric.Image || { }; +fabric.Image.filters = fabric.Image.filters || { }; + +/** + * Root filter class from which all filter classes inherit from + * @class fabric.Image.filters.BaseFilter + * @memberOf fabric.Image.filters + */ +fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Image.filters.BaseFilter.prototype */ { + + /** + * Filter type + * @param {String} type + * @default + */ + type: 'BaseFilter', + + /** + * Array of attributes to send with buffers. do not modify + * @private + */ + + vertexSource: 'attribute vec2 aPosition;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vTexCoord = aPosition;\n' + + 'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n' + + '}', + + fragmentSource: 'precision highp float;\n' + + 'varying vec2 vTexCoord;\n' + + 'uniform sampler2D uTexture;\n' + + 'void main() {\n' + + 'gl_FragColor = texture2D(uTexture, vTexCoord);\n' + + '}', + + /** + * Constructor + * @param {Object} [options] Options object + */ + initialize: function(options) { + if (options) { + this.setOptions(options); + } + }, + + /** + * Sets filter's properties from options + * @param {Object} [options] Options object + */ + setOptions: function(options) { + for (var prop in options) { + this[prop] = options[prop]; + } + }, + + /** + * Compile this filter's shader program. + * + * @param {WebGLRenderingContext} gl The GL canvas context to use for shader compilation. + * @param {String} fragmentSource fragmentShader source for compilation + * @param {String} vertexSource vertexShader source for compilation + */ + createProgram: function(gl, fragmentSource, vertexSource) { + fragmentSource = fragmentSource || this.fragmentSource; + vertexSource = vertexSource || this.vertexSource; + if (fabric.webGlPrecision !== 'highp'){ + fragmentSource = fragmentSource.replace( + /precision highp float/g, + 'precision ' + fabric.webGlPrecision + ' float' + ); + } + var vertexShader = gl.createShader(gl.VERTEX_SHADER); + gl.shaderSource(vertexShader, vertexSource); + gl.compileShader(vertexShader); + if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) { + throw new Error( + // eslint-disable-next-line prefer-template + 'Vertex shader compile error for ' + this.type + ': ' + + gl.getShaderInfoLog(vertexShader) + ); + } + + var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); + gl.shaderSource(fragmentShader, fragmentSource); + gl.compileShader(fragmentShader); + if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) { + throw new Error( + // eslint-disable-next-line prefer-template + 'Fragment shader compile error for ' + this.type + ': ' + + gl.getShaderInfoLog(fragmentShader) + ); + } + + var program = gl.createProgram(); + gl.attachShader(program, vertexShader); + gl.attachShader(program, fragmentShader); + gl.linkProgram(program); + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { + throw new Error( + // eslint-disable-next-line prefer-template + 'Shader link error for "${this.type}" ' + + gl.getProgramInfoLog(program) + ); + } + + var attributeLocations = this.getAttributeLocations(gl, program); + var uniformLocations = this.getUniformLocations(gl, program) || { }; + uniformLocations.uStepW = gl.getUniformLocation(program, 'uStepW'); + uniformLocations.uStepH = gl.getUniformLocation(program, 'uStepH'); + return { + program: program, + attributeLocations: attributeLocations, + uniformLocations: uniformLocations + }; + }, + + /** + * Return a map of attribute names to WebGLAttributeLocation objects. + * + * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program. + * @param {WebGLShaderProgram} program The shader program from which to take attribute locations. + * @returns {Object} A map of attribute names to attribute locations. + */ + getAttributeLocations: function(gl, program) { + return { + aPosition: gl.getAttribLocation(program, 'aPosition'), + }; + }, + + /** + * Return a map of uniform names to WebGLUniformLocation objects. + * + * Intended to be overridden by subclasses. + * + * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program. + * @param {WebGLShaderProgram} program The shader program from which to take uniform locations. + * @returns {Object} A map of uniform names to uniform locations. + */ + getUniformLocations: function (/* gl, program */) { + // in case i do not need any special uniform i need to return an empty object + return { }; + }, + + /** + * Send attribute data from this filter to its shader program on the GPU. + * + * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program. + * @param {Object} attributeLocations A map of shader attribute names to their locations. + */ + sendAttributeData: function(gl, attributeLocations, aPositionData) { + var attributeLocation = attributeLocations.aPosition; + var buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.enableVertexAttribArray(attributeLocation); + gl.vertexAttribPointer(attributeLocation, 2, gl.FLOAT, false, 0, 0); + gl.bufferData(gl.ARRAY_BUFFER, aPositionData, gl.STATIC_DRAW); + }, + + _setupFrameBuffer: function(options) { + var gl = options.context, width, height; + if (options.passes > 1) { + width = options.destinationWidth; + height = options.destinationHeight; + if (options.sourceWidth !== width || options.sourceHeight !== height) { + gl.deleteTexture(options.targetTexture); + options.targetTexture = options.filterBackend.createTexture(gl, width, height); + } + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, + options.targetTexture, 0); + } + else { + // draw last filter on canvas and not to framebuffer. + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + gl.finish(); + } + }, + + _swapTextures: function(options) { + options.passes--; + options.pass++; + var temp = options.targetTexture; + options.targetTexture = options.sourceTexture; + options.sourceTexture = temp; + }, + + /** + * Generic isNeutral implementation for one parameter based filters. + * Used only in image applyFilters to discard filters that will not have an effect + * on the image + * Other filters may need their own verison ( ColorMatrix, HueRotation, gamma, ComposedFilter ) + * @param {Object} options + **/ + isNeutralState: function(/* options */) { + var main = this.mainParameter, + _class = fabric.Image.filters[this.type].prototype; + if (main) { + if (Array.isArray(_class[main])) { + for (var i = _class[main].length; i--;) { + if (this[main][i] !== _class[main][i]) { + return false; + } + } + return true; + } + else { + return _class[main] === this[main]; + } + } + else { + return false; + } + }, + + /** + * Apply this filter to the input image data provided. + * + * Determines whether to use WebGL or Canvas2D based on the options.webgl flag. + * + * @param {Object} options + * @param {Number} options.passes The number of filters remaining to be executed + * @param {Boolean} options.webgl Whether to use webgl to render the filter. + * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered. + * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn. + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + applyTo: function(options) { + if (options.webgl) { + this._setupFrameBuffer(options); + this.applyToWebGL(options); + this._swapTextures(options); + } + else { + this.applyTo2d(options); + } + }, + + /** + * Retrieves the cached shader. + * @param {Object} options + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + retrieveShader: function(options) { + if (!options.programCache.hasOwnProperty(this.type)) { + options.programCache[this.type] = this.createProgram(options.context); + } + return options.programCache[this.type]; + }, + + /** + * Apply this filter using webgl. + * + * @param {Object} options + * @param {Number} options.passes The number of filters remaining to be executed + * @param {Boolean} options.webgl Whether to use webgl to render the filter. + * @param {WebGLTexture} options.originalTexture The texture of the original input image. + * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered. + * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn. + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + applyToWebGL: function(options) { + var gl = options.context; + var shader = this.retrieveShader(options); + if (options.pass === 0 && options.originalTexture) { + gl.bindTexture(gl.TEXTURE_2D, options.originalTexture); + } + else { + gl.bindTexture(gl.TEXTURE_2D, options.sourceTexture); + } + gl.useProgram(shader.program); + this.sendAttributeData(gl, shader.attributeLocations, options.aPosition); + + gl.uniform1f(shader.uniformLocations.uStepW, 1 / options.sourceWidth); + gl.uniform1f(shader.uniformLocations.uStepH, 1 / options.sourceHeight); + + this.sendUniformData(gl, shader.uniformLocations); + gl.viewport(0, 0, options.destinationWidth, options.destinationHeight); + gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); + }, + + bindAdditionalTexture: function(gl, texture, textureUnit) { + gl.activeTexture(textureUnit); + gl.bindTexture(gl.TEXTURE_2D, texture); + // reset active texture to 0 as usual + gl.activeTexture(gl.TEXTURE0); + }, + + unbindAdditionalTexture: function(gl, textureUnit) { + gl.activeTexture(textureUnit); + gl.bindTexture(gl.TEXTURE_2D, null); + gl.activeTexture(gl.TEXTURE0); + }, + + getMainParameter: function() { + return this[this.mainParameter]; + }, + + setMainParameter: function(value) { + this[this.mainParameter] = value; + }, + + /** + * Send uniform data from this filter to its shader program on the GPU. + * + * Intended to be overridden by subclasses. + * + * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program. + * @param {Object} uniformLocations A map of shader uniform names to their locations. + */ + sendUniformData: function(/* gl, uniformLocations */) { + // Intentionally left blank. Override me in subclasses. + }, + + /** + * If needed by a 2d filter, this functions can create an helper canvas to be used + * remember that options.targetCanvas is available for use till end of chain. + */ + createHelpLayer: function(options) { + if (!options.helpLayer) { + var helpLayer = document.createElement('canvas'); + helpLayer.width = options.sourceWidth; + helpLayer.height = options.sourceHeight; + options.helpLayer = helpLayer; + } + }, + + /** + * Returns object representation of an instance + * @return {Object} Object representation of an instance + */ + toObject: function() { + var object = { type: this.type }, mainP = this.mainParameter; + if (mainP) { + object[mainP] = this[mainP]; + } + return object; + }, + + /** + * Returns a JSON representation of an instance + * @return {Object} JSON + */ + toJSON: function() { + // delegate, not alias + return this.toObject(); + } +}); + +fabric.Image.filters.BaseFilter.fromObject = function(object, callback) { + var filter = new fabric.Image.filters[object.type](object); + callback && callback(filter); + return filter; +}; + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * Color Matrix filter class + * @class fabric.Image.filters.ColorMatrix + * @memberOf fabric.Image.filters + * @extends fabric.Image.filters.BaseFilter + * @see {@link fabric.Image.filters.ColorMatrix#initialize} for constructor definition + * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} + * @see {@Link http://www.webwasp.co.uk/tutorials/219/Color_Matrix_Filter.php} + * @see {@Link http://phoboslab.org/log/2013/11/fast-image-filters-with-webgl} + * @example Kodachrome filter + * var filter = new fabric.Image.filters.ColorMatrix({ + * matrix: [ + 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502, + -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203, + -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946, + 0, 0, 0, 1, 0 + ] + * }); + * object.filters.push(filter); + * object.applyFilters(); + */ + filters.ColorMatrix = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.ColorMatrix.prototype */ { + + /** + * Filter type + * @param {String} type + * @default + */ + type: 'ColorMatrix', + + fragmentSource: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'varying vec2 vTexCoord;\n' + + 'uniform mat4 uColorMatrix;\n' + + 'uniform vec4 uConstants;\n' + + 'void main() {\n' + + 'vec4 color = texture2D(uTexture, vTexCoord);\n' + + 'color *= uColorMatrix;\n' + + 'color += uConstants;\n' + + 'gl_FragColor = color;\n' + + '}', + + /** + * Colormatrix for pixels. + * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning + * outside the -1, 1 range. + * 0.0039215686 is the part of 1 that get translated to 1 in 2d + * @param {Array} matrix array of 20 numbers. + * @default + */ + matrix: [ + 1, 0, 0, 0, 0, + 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0 + ], + + mainParameter: 'matrix', + + /** + * Lock the colormatrix on the color part, skipping alpha, manly for non webgl scenario + * to save some calculation + */ + colorsOnly: true, + + /** + * Constructor + * @param {Object} [options] Options object + */ + initialize: function(options) { + this.callSuper('initialize', options); + // create a new array instead mutating the prototype with push + this.matrix = this.matrix.slice(0); + }, + + /** + * Apply the ColorMatrix operation to a Uint8Array representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8Array to be filtered. + */ + applyTo2d: function(options) { + var imageData = options.imageData, + data = imageData.data, + iLen = data.length, + m = this.matrix, + r, g, b, a, i, colorsOnly = this.colorsOnly; + + for (i = 0; i < iLen; i += 4) { + r = data[i]; + g = data[i + 1]; + b = data[i + 2]; + if (colorsOnly) { + data[i] = r * m[0] + g * m[1] + b * m[2] + m[4] * 255; + data[i + 1] = r * m[5] + g * m[6] + b * m[7] + m[9] * 255; + data[i + 2] = r * m[10] + g * m[11] + b * m[12] + m[14] * 255; + } + else { + a = data[i + 3]; + data[i] = r * m[0] + g * m[1] + b * m[2] + a * m[3] + m[4] * 255; + data[i + 1] = r * m[5] + g * m[6] + b * m[7] + a * m[8] + m[9] * 255; + data[i + 2] = r * m[10] + g * m[11] + b * m[12] + a * m[13] + m[14] * 255; + data[i + 3] = r * m[15] + g * m[16] + b * m[17] + a * m[18] + m[19] * 255; + } + } + }, + + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(gl, program) { + return { + uColorMatrix: gl.getUniformLocation(program, 'uColorMatrix'), + uConstants: gl.getUniformLocation(program, 'uConstants'), + }; + }, + + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(gl, uniformLocations) { + var m = this.matrix, + matrix = [ + m[0], m[1], m[2], m[3], + m[5], m[6], m[7], m[8], + m[10], m[11], m[12], m[13], + m[15], m[16], m[17], m[18] + ], + constants = [m[4], m[9], m[14], m[19]]; + gl.uniformMatrix4fv(uniformLocations.uColorMatrix, false, matrix); + gl.uniform4fv(uniformLocations.uConstants, constants); + }, + }); + + /** + * Returns filter instance from an object representation + * @static + * @param {Object} object Object to create an instance from + * @param {function} [callback] function to invoke after filter creation + * @return {fabric.Image.filters.ColorMatrix} Instance of fabric.Image.filters.ColorMatrix + */ + fabric.Image.filters.ColorMatrix.fromObject = fabric.Image.filters.BaseFilter.fromObject; +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * Brightness filter class + * @class fabric.Image.filters.Brightness + * @memberOf fabric.Image.filters + * @extends fabric.Image.filters.BaseFilter + * @see {@link fabric.Image.filters.Brightness#initialize} for constructor definition + * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} + * @example + * var filter = new fabric.Image.filters.Brightness({ + * brightness: 0.05 + * }); + * object.filters.push(filter); + * object.applyFilters(); + */ + filters.Brightness = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Brightness.prototype */ { + + /** + * Filter type + * @param {String} type + * @default + */ + type: 'Brightness', + + /** + * Fragment source for the brightness program + */ + fragmentSource: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform float uBrightness;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 color = texture2D(uTexture, vTexCoord);\n' + + 'color.rgb += uBrightness;\n' + + 'gl_FragColor = color;\n' + + '}', + + /** + * Brightness value, from -1 to 1. + * translated to -255 to 255 for 2d + * 0.0039215686 is the part of 1 that get translated to 1 in 2d + * @param {Number} brightness + * @default + */ + brightness: 0, + + /** + * Describe the property that is the filter parameter + * @param {String} m + * @default + */ + mainParameter: 'brightness', + + /** + * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. + */ + applyTo2d: function(options) { + if (this.brightness === 0) { + return; + } + var imageData = options.imageData, + data = imageData.data, i, len = data.length, + brightness = Math.round(this.brightness * 255); + for (i = 0; i < len; i += 4) { + data[i] = data[i] + brightness; + data[i + 1] = data[i + 1] + brightness; + data[i + 2] = data[i + 2] + brightness; + } + }, + + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(gl, program) { + return { + uBrightness: gl.getUniformLocation(program, 'uBrightness'), + }; + }, + + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(gl, uniformLocations) { + gl.uniform1f(uniformLocations.uBrightness, this.brightness); + }, + }); + + /** + * Returns filter instance from an object representation + * @static + * @param {Object} object Object to create an instance from + * @param {function} [callback] to be invoked after filter creation + * @return {fabric.Image.filters.Brightness} Instance of fabric.Image.filters.Brightness + */ + fabric.Image.filters.Brightness.fromObject = fabric.Image.filters.BaseFilter.fromObject; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + extend = fabric.util.object.extend, + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * Adapted from html5rocks article + * @class fabric.Image.filters.Convolute + * @memberOf fabric.Image.filters + * @extends fabric.Image.filters.BaseFilter + * @see {@link fabric.Image.filters.Convolute#initialize} for constructor definition + * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} + * @example Sharpen filter + * var filter = new fabric.Image.filters.Convolute({ + * matrix: [ 0, -1, 0, + * -1, 5, -1, + * 0, -1, 0 ] + * }); + * object.filters.push(filter); + * object.applyFilters(); + * canvas.renderAll(); + * @example Blur filter + * var filter = new fabric.Image.filters.Convolute({ + * matrix: [ 1/9, 1/9, 1/9, + * 1/9, 1/9, 1/9, + * 1/9, 1/9, 1/9 ] + * }); + * object.filters.push(filter); + * object.applyFilters(); + * canvas.renderAll(); + * @example Emboss filter + * var filter = new fabric.Image.filters.Convolute({ + * matrix: [ 1, 1, 1, + * 1, 0.7, -1, + * -1, -1, -1 ] + * }); + * object.filters.push(filter); + * object.applyFilters(); + * canvas.renderAll(); + * @example Emboss filter with opaqueness + * var filter = new fabric.Image.filters.Convolute({ + * opaque: true, + * matrix: [ 1, 1, 1, + * 1, 0.7, -1, + * -1, -1, -1 ] + * }); + * object.filters.push(filter); + * object.applyFilters(); + * canvas.renderAll(); + */ + filters.Convolute = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Convolute.prototype */ { + + /** + * Filter type + * @param {String} type + * @default + */ + type: 'Convolute', + + /* + * Opaque value (true/false) + */ + opaque: false, + + /* + * matrix for the filter, max 9x9 + */ + matrix: [0, 0, 0, 0, 1, 0, 0, 0, 0], + + /** + * Fragment source for the brightness program + */ + fragmentSource: { + Convolute_3_1: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform float uMatrix[9];\n' + + 'uniform float uStepW;\n' + + 'uniform float uStepH;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 color = vec4(0, 0, 0, 0);\n' + + 'for (float h = 0.0; h < 3.0; h+=1.0) {\n' + + 'for (float w = 0.0; w < 3.0; w+=1.0) {\n' + + 'vec2 matrixPos = vec2(uStepW * (w - 1), uStepH * (h - 1));\n' + + 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 3.0 + w)];\n' + + '}\n' + + '}\n' + + 'gl_FragColor = color;\n' + + '}', + Convolute_3_0: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform float uMatrix[9];\n' + + 'uniform float uStepW;\n' + + 'uniform float uStepH;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 color = vec4(0, 0, 0, 1);\n' + + 'for (float h = 0.0; h < 3.0; h+=1.0) {\n' + + 'for (float w = 0.0; w < 3.0; w+=1.0) {\n' + + 'vec2 matrixPos = vec2(uStepW * (w - 1.0), uStepH * (h - 1.0));\n' + + 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 3.0 + w)];\n' + + '}\n' + + '}\n' + + 'float alpha = texture2D(uTexture, vTexCoord).a;\n' + + 'gl_FragColor = color;\n' + + 'gl_FragColor.a = alpha;\n' + + '}', + Convolute_5_1: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform float uMatrix[25];\n' + + 'uniform float uStepW;\n' + + 'uniform float uStepH;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 color = vec4(0, 0, 0, 0);\n' + + 'for (float h = 0.0; h < 5.0; h+=1.0) {\n' + + 'for (float w = 0.0; w < 5.0; w+=1.0) {\n' + + 'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\n' + + 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 5.0 + w)];\n' + + '}\n' + + '}\n' + + 'gl_FragColor = color;\n' + + '}', + Convolute_5_0: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform float uMatrix[25];\n' + + 'uniform float uStepW;\n' + + 'uniform float uStepH;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 color = vec4(0, 0, 0, 1);\n' + + 'for (float h = 0.0; h < 5.0; h+=1.0) {\n' + + 'for (float w = 0.0; w < 5.0; w+=1.0) {\n' + + 'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\n' + + 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 5.0 + w)];\n' + + '}\n' + + '}\n' + + 'float alpha = texture2D(uTexture, vTexCoord).a;\n' + + 'gl_FragColor = color;\n' + + 'gl_FragColor.a = alpha;\n' + + '}', + Convolute_7_1: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform float uMatrix[49];\n' + + 'uniform float uStepW;\n' + + 'uniform float uStepH;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 color = vec4(0, 0, 0, 0);\n' + + 'for (float h = 0.0; h < 7.0; h+=1.0) {\n' + + 'for (float w = 0.0; w < 7.0; w+=1.0) {\n' + + 'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\n' + + 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 7.0 + w)];\n' + + '}\n' + + '}\n' + + 'gl_FragColor = color;\n' + + '}', + Convolute_7_0: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform float uMatrix[49];\n' + + 'uniform float uStepW;\n' + + 'uniform float uStepH;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 color = vec4(0, 0, 0, 1);\n' + + 'for (float h = 0.0; h < 7.0; h+=1.0) {\n' + + 'for (float w = 0.0; w < 7.0; w+=1.0) {\n' + + 'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\n' + + 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 7.0 + w)];\n' + + '}\n' + + '}\n' + + 'float alpha = texture2D(uTexture, vTexCoord).a;\n' + + 'gl_FragColor = color;\n' + + 'gl_FragColor.a = alpha;\n' + + '}', + Convolute_9_1: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform float uMatrix[81];\n' + + 'uniform float uStepW;\n' + + 'uniform float uStepH;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 color = vec4(0, 0, 0, 0);\n' + + 'for (float h = 0.0; h < 9.0; h+=1.0) {\n' + + 'for (float w = 0.0; w < 9.0; w+=1.0) {\n' + + 'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\n' + + 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 9.0 + w)];\n' + + '}\n' + + '}\n' + + 'gl_FragColor = color;\n' + + '}', + Convolute_9_0: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform float uMatrix[81];\n' + + 'uniform float uStepW;\n' + + 'uniform float uStepH;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 color = vec4(0, 0, 0, 1);\n' + + 'for (float h = 0.0; h < 9.0; h+=1.0) {\n' + + 'for (float w = 0.0; w < 9.0; w+=1.0) {\n' + + 'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\n' + + 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 9.0 + w)];\n' + + '}\n' + + '}\n' + + 'float alpha = texture2D(uTexture, vTexCoord).a;\n' + + 'gl_FragColor = color;\n' + + 'gl_FragColor.a = alpha;\n' + + '}', + }, + + /** + * Constructor + * @memberOf fabric.Image.filters.Convolute.prototype + * @param {Object} [options] Options object + * @param {Boolean} [options.opaque=false] Opaque value (true/false) + * @param {Array} [options.matrix] Filter matrix + */ + + + /** + * Retrieves the cached shader. + * @param {Object} options + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + retrieveShader: function(options) { + var size = Math.sqrt(this.matrix.length); + var cacheKey = this.type + '_' + size + '_' + (this.opaque ? 1 : 0); + var shaderSource = this.fragmentSource[cacheKey]; + if (!options.programCache.hasOwnProperty(cacheKey)) { + options.programCache[cacheKey] = this.createProgram(options.context, shaderSource); + } + return options.programCache[cacheKey]; + }, + + /** + * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. + */ + applyTo2d: function(options) { + var imageData = options.imageData, + data = imageData.data, + weights = this.matrix, + side = Math.round(Math.sqrt(weights.length)), + halfSide = Math.floor(side / 2), + sw = imageData.width, + sh = imageData.height, + output = options.ctx.createImageData(sw, sh), + dst = output.data, + // go through the destination image pixels + alphaFac = this.opaque ? 1 : 0, + r, g, b, a, dstOff, + scx, scy, srcOff, wt, + x, y, cx, cy; + + for (y = 0; y < sh; y++) { + for (x = 0; x < sw; x++) { + dstOff = (y * sw + x) * 4; + // calculate the weighed sum of the source image pixels that + // fall under the convolution matrix + r = 0; g = 0; b = 0; a = 0; + + for (cy = 0; cy < side; cy++) { + for (cx = 0; cx < side; cx++) { + scy = y + cy - halfSide; + scx = x + cx - halfSide; + + // eslint-disable-next-line max-depth + if (scy < 0 || scy > sh || scx < 0 || scx > sw) { + continue; + } + + srcOff = (scy * sw + scx) * 4; + wt = weights[cy * side + cx]; + + r += data[srcOff] * wt; + g += data[srcOff + 1] * wt; + b += data[srcOff + 2] * wt; + // eslint-disable-next-line max-depth + if (!alphaFac) { + a += data[srcOff + 3] * wt; + } + } + } + dst[dstOff] = r; + dst[dstOff + 1] = g; + dst[dstOff + 2] = b; + if (!alphaFac) { + dst[dstOff + 3] = a; + } + else { + dst[dstOff + 3] = data[dstOff + 3]; + } + } + } + options.imageData = output; + }, + + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(gl, program) { + return { + uMatrix: gl.getUniformLocation(program, 'uMatrix'), + uOpaque: gl.getUniformLocation(program, 'uOpaque'), + uHalfSize: gl.getUniformLocation(program, 'uHalfSize'), + uSize: gl.getUniformLocation(program, 'uSize'), + }; + }, + + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(gl, uniformLocations) { + gl.uniform1fv(uniformLocations.uMatrix, this.matrix); + }, + + /** + * Returns object representation of an instance + * @return {Object} Object representation of an instance + */ + toObject: function() { + return extend(this.callSuper('toObject'), { + opaque: this.opaque, + matrix: this.matrix + }); + } + }); + + /** + * Returns filter instance from an object representation + * @static + * @param {Object} object Object to create an instance from + * @param {function} [callback] to be invoked after filter creation + * @return {fabric.Image.filters.Convolute} Instance of fabric.Image.filters.Convolute + */ + fabric.Image.filters.Convolute.fromObject = fabric.Image.filters.BaseFilter.fromObject; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * Grayscale image filter class + * @class fabric.Image.filters.Grayscale + * @memberOf fabric.Image.filters + * @extends fabric.Image.filters.BaseFilter + * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} + * @example + * var filter = new fabric.Image.filters.Grayscale(); + * object.filters.push(filter); + * object.applyFilters(); + */ + filters.Grayscale = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Grayscale.prototype */ { + + /** + * Filter type + * @param {String} type + * @default + */ + type: 'Grayscale', + + fragmentSource: { + average: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 color = texture2D(uTexture, vTexCoord);\n' + + 'float average = (color.r + color.b + color.g) / 3.0;\n' + + 'gl_FragColor = vec4(average, average, average, color.a);\n' + + '}', + lightness: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform int uMode;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 col = texture2D(uTexture, vTexCoord);\n' + + 'float average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\n' + + 'gl_FragColor = vec4(average, average, average, col.a);\n' + + '}', + luminosity: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform int uMode;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 col = texture2D(uTexture, vTexCoord);\n' + + 'float average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\n' + + 'gl_FragColor = vec4(average, average, average, col.a);\n' + + '}', + }, + + + /** + * Grayscale mode, between 'average', 'lightness', 'luminosity' + * @param {String} type + * @default + */ + mode: 'average', + + mainParameter: 'mode', + + /** + * Apply the Grayscale operation to a Uint8Array representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8Array to be filtered. + */ + applyTo2d: function(options) { + var imageData = options.imageData, + data = imageData.data, i, + len = data.length, value, + mode = this.mode; + for (i = 0; i < len; i += 4) { + if (mode === 'average') { + value = (data[i] + data[i + 1] + data[i + 2]) / 3; + } + else if (mode === 'lightness') { + value = (Math.min(data[i], data[i + 1], data[i + 2]) + + Math.max(data[i], data[i + 1], data[i + 2])) / 2; + } + else if (mode === 'luminosity') { + value = 0.21 * data[i] + 0.72 * data[i + 1] + 0.07 * data[i + 2]; + } + data[i] = value; + data[i + 1] = value; + data[i + 2] = value; + } + }, + + /** + * Retrieves the cached shader. + * @param {Object} options + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + retrieveShader: function(options) { + var cacheKey = this.type + '_' + this.mode; + if (!options.programCache.hasOwnProperty(cacheKey)) { + var shaderSource = this.fragmentSource[this.mode]; + options.programCache[cacheKey] = this.createProgram(options.context, shaderSource); + } + return options.programCache[cacheKey]; + }, + + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(gl, program) { + return { + uMode: gl.getUniformLocation(program, 'uMode'), + }; + }, + + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(gl, uniformLocations) { + // default average mode. + var mode = 1; + gl.uniform1i(uniformLocations.uMode, mode); + }, + + /** + * Grayscale filter isNeutralState implementation + * The filter is never neutral + * on the image + **/ + isNeutralState: function() { + return false; + }, + }); + + /** + * Returns filter instance from an object representation + * @static + * @param {Object} object Object to create an instance from + * @param {function} [callback] to be invoked after filter creation + * @return {fabric.Image.filters.Grayscale} Instance of fabric.Image.filters.Grayscale + */ + fabric.Image.filters.Grayscale.fromObject = fabric.Image.filters.BaseFilter.fromObject; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * Invert filter class + * @class fabric.Image.filters.Invert + * @memberOf fabric.Image.filters + * @extends fabric.Image.filters.BaseFilter + * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} + * @example + * var filter = new fabric.Image.filters.Invert(); + * object.filters.push(filter); + * object.applyFilters(canvas.renderAll.bind(canvas)); + */ + filters.Invert = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Invert.prototype */ { + + /** + * Filter type + * @param {String} type + * @default + */ + type: 'Invert', + + fragmentSource: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform int uInvert;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 color = texture2D(uTexture, vTexCoord);\n' + + 'if (uInvert == 1) {\n' + + 'gl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a);\n' + + '} else {\n' + + 'gl_FragColor = color;\n' + + '}\n' + + '}', + + /** + * Filter invert. if false, does nothing + * @param {Boolean} invert + * @default + */ + invert: true, + + mainParameter: 'invert', + + /** + * Apply the Invert operation to a Uint8Array representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8Array to be filtered. + */ + applyTo2d: function(options) { + var imageData = options.imageData, + data = imageData.data, i, + len = data.length; + for (i = 0; i < len; i += 4) { + data[i] = 255 - data[i]; + data[i + 1] = 255 - data[i + 1]; + data[i + 2] = 255 - data[i + 2]; + } + }, + + /** + * Invert filter isNeutralState implementation + * Used only in image applyFilters to discard filters that will not have an effect + * on the image + * @param {Object} options + **/ + isNeutralState: function() { + return !this.invert; + }, + + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(gl, program) { + return { + uInvert: gl.getUniformLocation(program, 'uInvert'), + }; + }, + + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(gl, uniformLocations) { + gl.uniform1i(uniformLocations.uInvert, this.invert); + }, + }); + + /** + * Returns filter instance from an object representation + * @static + * @param {Object} object Object to create an instance from + * @param {function} [callback] to be invoked after filter creation + * @return {fabric.Image.filters.Invert} Instance of fabric.Image.filters.Invert + */ + fabric.Image.filters.Invert.fromObject = fabric.Image.filters.BaseFilter.fromObject; + + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + extend = fabric.util.object.extend, + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * Noise filter class + * @class fabric.Image.filters.Noise + * @memberOf fabric.Image.filters + * @extends fabric.Image.filters.BaseFilter + * @see {@link fabric.Image.filters.Noise#initialize} for constructor definition + * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} + * @example + * var filter = new fabric.Image.filters.Noise({ + * noise: 700 + * }); + * object.filters.push(filter); + * object.applyFilters(); + * canvas.renderAll(); + */ + filters.Noise = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Noise.prototype */ { + + /** + * Filter type + * @param {String} type + * @default + */ + type: 'Noise', + + /** + * Fragment source for the noise program + */ + fragmentSource: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform float uStepH;\n' + + 'uniform float uNoise;\n' + + 'uniform float uSeed;\n' + + 'varying vec2 vTexCoord;\n' + + 'float rand(vec2 co, float seed, float vScale) {\n' + + 'return fract(sin(dot(co.xy * vScale ,vec2(12.9898 , 78.233))) * 43758.5453 * (seed + 0.01) / 2.0);\n' + + '}\n' + + 'void main() {\n' + + 'vec4 color = texture2D(uTexture, vTexCoord);\n' + + 'color.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise;\n' + + 'gl_FragColor = color;\n' + + '}', + + /** + * Describe the property that is the filter parameter + * @param {String} m + * @default + */ + mainParameter: 'noise', + + /** + * Noise value, from + * @param {Number} noise + * @default + */ + noise: 0, + + /** + * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. + */ + applyTo2d: function(options) { + if (this.noise === 0) { + return; + } + var imageData = options.imageData, + data = imageData.data, i, len = data.length, + noise = this.noise, rand; + + for (i = 0, len = data.length; i < len; i += 4) { + + rand = (0.5 - Math.random()) * noise; + + data[i] += rand; + data[i + 1] += rand; + data[i + 2] += rand; + } + }, + + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(gl, program) { + return { + uNoise: gl.getUniformLocation(program, 'uNoise'), + uSeed: gl.getUniformLocation(program, 'uSeed'), + }; + }, + + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(gl, uniformLocations) { + gl.uniform1f(uniformLocations.uNoise, this.noise / 255); + gl.uniform1f(uniformLocations.uSeed, Math.random()); + }, + + /** + * Returns object representation of an instance + * @return {Object} Object representation of an instance + */ + toObject: function() { + return extend(this.callSuper('toObject'), { + noise: this.noise + }); + } + }); + + /** + * Returns filter instance from an object representation + * @static + * @param {Object} object Object to create an instance from + * @param {Function} [callback] to be invoked after filter creation + * @return {fabric.Image.filters.Noise} Instance of fabric.Image.filters.Noise + */ + fabric.Image.filters.Noise.fromObject = fabric.Image.filters.BaseFilter.fromObject; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * Pixelate filter class + * @class fabric.Image.filters.Pixelate + * @memberOf fabric.Image.filters + * @extends fabric.Image.filters.BaseFilter + * @see {@link fabric.Image.filters.Pixelate#initialize} for constructor definition + * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} + * @example + * var filter = new fabric.Image.filters.Pixelate({ + * blocksize: 8 + * }); + * object.filters.push(filter); + * object.applyFilters(); + */ + filters.Pixelate = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Pixelate.prototype */ { + + /** + * Filter type + * @param {String} type + * @default + */ + type: 'Pixelate', + + blocksize: 4, + + mainParameter: 'blocksize', + + /** + * Fragment source for the Pixelate program + */ + fragmentSource: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform float uBlocksize;\n' + + 'uniform float uStepW;\n' + + 'uniform float uStepH;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'float blockW = uBlocksize * uStepW;\n' + + 'float blockH = uBlocksize * uStepW;\n' + + 'int posX = int(vTexCoord.x / blockW);\n' + + 'int posY = int(vTexCoord.y / blockH);\n' + + 'float fposX = float(posX);\n' + + 'float fposY = float(posY);\n' + + 'vec2 squareCoords = vec2(fposX * blockW, fposY * blockH);\n' + + 'vec4 color = texture2D(uTexture, squareCoords);\n' + + 'gl_FragColor = color;\n' + + '}', + + /** + * Apply the Pixelate operation to a Uint8ClampedArray representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. + */ + applyTo2d: function(options) { + var imageData = options.imageData, + data = imageData.data, + iLen = imageData.height, + jLen = imageData.width, + index, i, j, r, g, b, a, + _i, _j, _iLen, _jLen; + + for (i = 0; i < iLen; i += this.blocksize) { + for (j = 0; j < jLen; j += this.blocksize) { + + index = (i * 4) * jLen + (j * 4); + + r = data[index]; + g = data[index + 1]; + b = data[index + 2]; + a = data[index + 3]; + + _iLen = Math.min(i + this.blocksize, iLen); + _jLen = Math.min(j + this.blocksize, jLen); + for (_i = i; _i < _iLen; _i++) { + for (_j = j; _j < _jLen; _j++) { + index = (_i * 4) * jLen + (_j * 4); + data[index] = r; + data[index + 1] = g; + data[index + 2] = b; + data[index + 3] = a; + } + } + } + } + }, + + /** + * Indicate when the filter is not gonna apply changes to the image + **/ + isNeutralState: function() { + return this.blocksize === 1; + }, + + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(gl, program) { + return { + uBlocksize: gl.getUniformLocation(program, 'uBlocksize'), + uStepW: gl.getUniformLocation(program, 'uStepW'), + uStepH: gl.getUniformLocation(program, 'uStepH'), + }; + }, + + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(gl, uniformLocations) { + gl.uniform1f(uniformLocations.uBlocksize, this.blocksize); + }, + }); + + /** + * Returns filter instance from an object representation + * @static + * @param {Object} object Object to create an instance from + * @param {Function} [callback] to be invoked after filter creation + * @return {fabric.Image.filters.Pixelate} Instance of fabric.Image.filters.Pixelate + */ + fabric.Image.filters.Pixelate.fromObject = fabric.Image.filters.BaseFilter.fromObject; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + extend = fabric.util.object.extend, + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * Remove white filter class + * @class fabric.Image.filters.RemoveColor + * @memberOf fabric.Image.filters + * @extends fabric.Image.filters.BaseFilter + * @see {@link fabric.Image.filters.RemoveColor#initialize} for constructor definition + * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} + * @example + * var filter = new fabric.Image.filters.RemoveColor({ + * threshold: 0.2, + * }); + * object.filters.push(filter); + * object.applyFilters(); + * canvas.renderAll(); + */ + filters.RemoveColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.RemoveColor.prototype */ { + + /** + * Filter type + * @param {String} type + * @default + */ + type: 'RemoveColor', + + /** + * Color to remove, in any format understood by fabric.Color. + * @param {String} type + * @default + */ + color: '#FFFFFF', + + /** + * Fragment source for the brightness program + */ + fragmentSource: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform vec4 uLow;\n' + + 'uniform vec4 uHigh;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'gl_FragColor = texture2D(uTexture, vTexCoord);\n' + + 'if(all(greaterThan(gl_FragColor.rgb,uLow.rgb)) && all(greaterThan(uHigh.rgb,gl_FragColor.rgb))) {\n' + + 'gl_FragColor.a = 0.0;\n' + + '}\n' + + '}', + + /** + * distance to actual color, as value up or down from each r,g,b + * between 0 and 1 + **/ + distance: 0.02, + + /** + * For color to remove inside distance, use alpha channel for a smoother deletion + * NOT IMPLEMENTED YET + **/ + useAlpha: false, + + /** + * Constructor + * @memberOf fabric.Image.filters.RemoveWhite.prototype + * @param {Object} [options] Options object + * @param {Number} [options.color=#RRGGBB] Threshold value + * @param {Number} [options.distance=10] Distance value + */ + + /** + * Applies filter to canvas element + * @param {Object} canvasEl Canvas element to apply filter to + */ + applyTo2d: function(options) { + var imageData = options.imageData, + data = imageData.data, i, + distance = this.distance * 255, + r, g, b, + source = new fabric.Color(this.color).getSource(), + lowC = [ + source[0] - distance, + source[1] - distance, + source[2] - distance, + ], + highC = [ + source[0] + distance, + source[1] + distance, + source[2] + distance, + ]; + + + for (i = 0; i < data.length; i += 4) { + r = data[i]; + g = data[i + 1]; + b = data[i + 2]; + + if (r > lowC[0] && + g > lowC[1] && + b > lowC[2] && + r < highC[0] && + g < highC[1] && + b < highC[2]) { + data[i + 3] = 0; + } + } + }, + + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(gl, program) { + return { + uLow: gl.getUniformLocation(program, 'uLow'), + uHigh: gl.getUniformLocation(program, 'uHigh'), + }; + }, + + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(gl, uniformLocations) { + var source = new fabric.Color(this.color).getSource(), + distance = parseFloat(this.distance), + lowC = [ + 0 + source[0] / 255 - distance, + 0 + source[1] / 255 - distance, + 0 + source[2] / 255 - distance, + 1 + ], + highC = [ + source[0] / 255 + distance, + source[1] / 255 + distance, + source[2] / 255 + distance, + 1 + ]; + gl.uniform4fv(uniformLocations.uLow, lowC); + gl.uniform4fv(uniformLocations.uHigh, highC); + }, + + /** + * Returns object representation of an instance + * @return {Object} Object representation of an instance + */ + toObject: function() { + return extend(this.callSuper('toObject'), { + color: this.color, + distance: this.distance + }); + } + }); + + /** + * Returns filter instance from an object representation + * @static + * @param {Object} object Object to create an instance from + * @param {Function} [callback] to be invoked after filter creation + * @return {fabric.Image.filters.RemoveColor} Instance of fabric.Image.filters.RemoveWhite + */ + fabric.Image.filters.RemoveColor.fromObject = fabric.Image.filters.BaseFilter.fromObject; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + var matrices = { + Brownie: [ + 0.59970,0.34553,-0.27082,0,0.186, + -0.03770,0.86095,0.15059,0,-0.1449, + 0.24113,-0.07441,0.44972,0,-0.02965, + 0,0,0,1,0 + ], + Vintage: [ + 0.62793,0.32021,-0.03965,0,0.03784, + 0.02578,0.64411,0.03259,0,0.02926, + 0.04660,-0.08512,0.52416,0,0.02023, + 0,0,0,1,0 + ], + Kodachrome: [ + 1.12855,-0.39673,-0.03992,0,0.24991, + -0.16404,1.08352,-0.05498,0,0.09698, + -0.16786,-0.56034,1.60148,0,0.13972, + 0,0,0,1,0 + ], + Technicolor: [ + 1.91252,-0.85453,-0.09155,0,0.04624, + -0.30878,1.76589,-0.10601,0,-0.27589, + -0.23110,-0.75018,1.84759,0,0.12137, + 0,0,0,1,0 + ], + Polaroid: [ + 1.438,-0.062,-0.062,0,0, + -0.122,1.378,-0.122,0,0, + -0.016,-0.016,1.483,0,0, + 0,0,0,1,0 + ], + Sepia: [ + 0.393, 0.769, 0.189, 0, 0, + 0.349, 0.686, 0.168, 0, 0, + 0.272, 0.534, 0.131, 0, 0, + 0, 0, 0, 1, 0 + ], + BlackWhite: [ + 1.5, 1.5, 1.5, 0, -1, + 1.5, 1.5, 1.5, 0, -1, + 1.5, 1.5, 1.5, 0, -1, + 0, 0, 0, 1, 0, + ] + }; + + for (var key in matrices) { + filters[key] = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.Sepia.prototype */ { + + /** + * Filter type + * @param {String} type + * @default + */ + type: key, + + /** + * Colormatrix for the effect + * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning + * outside the -1, 1 range. + * @param {Array} matrix array of 20 numbers. + * @default + */ + matrix: matrices[key], + + /** + * Lock the matrix export for this kind of static, parameter less filters. + */ + mainParameter: false, + /** + * Lock the colormatrix on the color part, skipping alpha + */ + colorsOnly: true, + + }); + fabric.Image.filters[key].fromObject = fabric.Image.filters.BaseFilter.fromObject; + } +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + 'use strict'; + + var fabric = global.fabric, + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * Color Blend filter class + * @class fabric.Image.filter.BlendColor + * @memberOf fabric.Image.filters + * @extends fabric.Image.filters.BaseFilter + * @example + * var filter = new fabric.Image.filters.BlendColor({ + * color: '#000', + * mode: 'multiply' + * }); + * + * var filter = new fabric.Image.filters.BlendImage({ + * image: fabricImageObject, + * mode: 'multiply', + * alpha: 0.5 + * }); + * object.filters.push(filter); + * object.applyFilters(); + * canvas.renderAll(); + */ + + filters.BlendColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blend.prototype */ { + type: 'BlendColor', + + /** + * Color to make the blend operation with. default to a reddish color since black or white + * gives always strong result. + **/ + color: '#F95C63', + + /** + * Blend mode for the filter: one of multiply, add, diff, screen, subtract, + * darken, lighten, overlay, exclusion, tint. + **/ + mode: 'multiply', + + /** + * alpha value. represent the strength of the blend color operation. + **/ + alpha: 1, + + /** + * Fragment source for the Multiply program + */ + fragmentSource: { + multiply: 'gl_FragColor.rgb *= uColor.rgb;\n', + screen: 'gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb);\n', + add: 'gl_FragColor.rgb += uColor.rgb;\n', + diff: 'gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb);\n', + subtract: 'gl_FragColor.rgb -= uColor.rgb;\n', + lighten: 'gl_FragColor.rgb = max(gl_FragColor.rgb, uColor.rgb);\n', + darken: 'gl_FragColor.rgb = min(gl_FragColor.rgb, uColor.rgb);\n', + exclusion: 'gl_FragColor.rgb += uColor.rgb - 2.0 * (uColor.rgb * gl_FragColor.rgb);\n', + overlay: 'if (uColor.r < 0.5) {\n' + + 'gl_FragColor.r *= 2.0 * uColor.r;\n' + + '} else {\n' + + 'gl_FragColor.r = 1.0 - 2.0 * (1.0 - gl_FragColor.r) * (1.0 - uColor.r);\n' + + '}\n' + + 'if (uColor.g < 0.5) {\n' + + 'gl_FragColor.g *= 2.0 * uColor.g;\n' + + '} else {\n' + + 'gl_FragColor.g = 1.0 - 2.0 * (1.0 - gl_FragColor.g) * (1.0 - uColor.g);\n' + + '}\n' + + 'if (uColor.b < 0.5) {\n' + + 'gl_FragColor.b *= 2.0 * uColor.b;\n' + + '} else {\n' + + 'gl_FragColor.b = 1.0 - 2.0 * (1.0 - gl_FragColor.b) * (1.0 - uColor.b);\n' + + '}\n', + tint: 'gl_FragColor.rgb *= (1.0 - uColor.a);\n' + + 'gl_FragColor.rgb += uColor.rgb;\n', + }, + + /** + * build the fragment source for the filters, joining the common part with + * the specific one. + * @param {String} mode the mode of the filter, a key of this.fragmentSource + * @return {String} the source to be compiled + * @private + */ + buildSource: function(mode) { + return 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform vec4 uColor;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 color = texture2D(uTexture, vTexCoord);\n' + + 'gl_FragColor = color;\n' + + 'if (color.a > 0.0) {\n' + + this.fragmentSource[mode] + + '}\n' + + '}'; + }, + + /** + * Retrieves the cached shader. + * @param {Object} options + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + retrieveShader: function(options) { + var cacheKey = this.type + '_' + this.mode, shaderSource; + if (!options.programCache.hasOwnProperty(cacheKey)) { + shaderSource = this.buildSource(this.mode); + options.programCache[cacheKey] = this.createProgram(options.context, shaderSource); + } + return options.programCache[cacheKey]; + }, + + /** + * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. + */ + applyTo2d: function(options) { + var imageData = options.imageData, + data = imageData.data, iLen = data.length, + tr, tg, tb, + r, g, b, + source, alpha1 = 1 - this.alpha; + + source = new fabric.Color(this.color).getSource(); + tr = source[0] * this.alpha; + tg = source[1] * this.alpha; + tb = source[2] * this.alpha; + + for (var i = 0; i < iLen; i += 4) { + + r = data[i]; + g = data[i + 1]; + b = data[i + 2]; + + switch (this.mode) { + case 'multiply': + data[i] = r * tr / 255; + data[i + 1] = g * tg / 255; + data[i + 2] = b * tb / 255; + break; + case 'screen': + data[i] = 255 - (255 - r) * (255 - tr) / 255; + data[i + 1] = 255 - (255 - g) * (255 - tg) / 255; + data[i + 2] = 255 - (255 - b) * (255 - tb) / 255; + break; + case 'add': + data[i] = r + tr; + data[i + 1] = g + tg; + data[i + 2] = b + tb; + break; + case 'diff': + case 'difference': + data[i] = Math.abs(r - tr); + data[i + 1] = Math.abs(g - tg); + data[i + 2] = Math.abs(b - tb); + break; + case 'subtract': + data[i] = r - tr; + data[i + 1] = g - tg; + data[i + 2] = b - tb; + break; + case 'darken': + data[i] = Math.min(r, tr); + data[i + 1] = Math.min(g, tg); + data[i + 2] = Math.min(b, tb); + break; + case 'lighten': + data[i] = Math.max(r, tr); + data[i + 1] = Math.max(g, tg); + data[i + 2] = Math.max(b, tb); + break; + case 'overlay': + data[i] = tr < 128 ? (2 * r * tr / 255) : (255 - 2 * (255 - r) * (255 - tr) / 255); + data[i + 1] = tg < 128 ? (2 * g * tg / 255) : (255 - 2 * (255 - g) * (255 - tg) / 255); + data[i + 2] = tb < 128 ? (2 * b * tb / 255) : (255 - 2 * (255 - b) * (255 - tb) / 255); + break; + case 'exclusion': + data[i] = tr + r - ((2 * tr * r) / 255); + data[i + 1] = tg + g - ((2 * tg * g) / 255); + data[i + 2] = tb + b - ((2 * tb * b) / 255); + break; + case 'tint': + data[i] = tr + r * alpha1; + data[i + 1] = tg + g * alpha1; + data[i + 2] = tb + b * alpha1; + } + } + }, + + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(gl, program) { + return { + uColor: gl.getUniformLocation(program, 'uColor'), + }; + }, + + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(gl, uniformLocations) { + var source = new fabric.Color(this.color).getSource(); + source[0] = this.alpha * source[0] / 255; + source[1] = this.alpha * source[1] / 255; + source[2] = this.alpha * source[2] / 255; + source[3] = this.alpha; + gl.uniform4fv(uniformLocations.uColor, source); + }, + + /** + * Returns object representation of an instance + * @return {Object} Object representation of an instance + */ + toObject: function() { + return { + type: this.type, + color: this.color, + mode: this.mode, + alpha: this.alpha + }; + } + }); + + /** + * Returns filter instance from an object representation + * @static + * @param {Object} object Object to create an instance from + * @param {function} [callback] to be invoked after filter creation + * @return {fabric.Image.filters.BlendColor} Instance of fabric.Image.filters.BlendColor + */ + fabric.Image.filters.BlendColor.fromObject = fabric.Image.filters.BaseFilter.fromObject; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + 'use strict'; + + var fabric = global.fabric, + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * Image Blend filter class + * @class fabric.Image.filter.BlendImage + * @memberOf fabric.Image.filters + * @extends fabric.Image.filters.BaseFilter + * @example + * var filter = new fabric.Image.filters.BlendColor({ + * color: '#000', + * mode: 'multiply' + * }); + * + * var filter = new fabric.Image.filters.BlendImage({ + * image: fabricImageObject, + * mode: 'multiply', + * alpha: 0.5 + * }); + * object.filters.push(filter); + * object.applyFilters(); + * canvas.renderAll(); + */ + + filters.BlendImage = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.BlendImage.prototype */ { + type: 'BlendImage', + + /** + * Color to make the blend operation with. default to a reddish color since black or white + * gives always strong result. + **/ + image: null, + + /** + * Blend mode for the filter: one of multiply, add, diff, screen, subtract, + * darken, lighten, overlay, exclusion, tint. + **/ + mode: 'multiply', + + /** + * alpha value. represent the strength of the blend image operation. + * not implemented. + **/ + alpha: 1, + + vertexSource: 'attribute vec2 aPosition;\n' + + 'varying vec2 vTexCoord;\n' + + 'varying vec2 vTexCoord2;\n' + + 'uniform mat3 uTransformMatrix;\n' + + 'void main() {\n' + + 'vTexCoord = aPosition;\n' + + 'vTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy;\n' + + 'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n' + + '}', + + /** + * Fragment source for the Multiply program + */ + fragmentSource: { + multiply: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform sampler2D uImage;\n' + + 'uniform vec4 uColor;\n' + + 'varying vec2 vTexCoord;\n' + + 'varying vec2 vTexCoord2;\n' + + 'void main() {\n' + + 'vec4 color = texture2D(uTexture, vTexCoord);\n' + + 'vec4 color2 = texture2D(uImage, vTexCoord2);\n' + + 'color.rgba *= color2.rgba;\n' + + 'gl_FragColor = color;\n' + + '}', + mask: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform sampler2D uImage;\n' + + 'uniform vec4 uColor;\n' + + 'varying vec2 vTexCoord;\n' + + 'varying vec2 vTexCoord2;\n' + + 'void main() {\n' + + 'vec4 color = texture2D(uTexture, vTexCoord);\n' + + 'vec4 color2 = texture2D(uImage, vTexCoord2);\n' + + 'color.a = color2.a;\n' + + 'gl_FragColor = color;\n' + + '}', + }, + + /** + * Retrieves the cached shader. + * @param {Object} options + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + retrieveShader: function(options) { + var cacheKey = this.type + '_' + this.mode; + var shaderSource = this.fragmentSource[this.mode]; + if (!options.programCache.hasOwnProperty(cacheKey)) { + options.programCache[cacheKey] = this.createProgram(options.context, shaderSource); + } + return options.programCache[cacheKey]; + }, + + applyToWebGL: function(options) { + // load texture to blend. + var gl = options.context, + texture = this.createTexture(options.filterBackend, this.image); + this.bindAdditionalTexture(gl, texture, gl.TEXTURE1); + this.callSuper('applyToWebGL', options); + this.unbindAdditionalTexture(gl, gl.TEXTURE1); + }, + + createTexture: function(backend, image) { + return backend.getCachedTexture(image.cacheKey, image._element); + }, + + /** + * Calculate a transformMatrix to adapt the image to blend over + * @param {Object} options + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + calculateMatrix: function() { + var image = this.image, + width = image._element.width, + height = image._element.height; + return [ + 1 / image.scaleX, 0, 0, + 0, 1 / image.scaleY, 0, + -image.left / width, -image.top / height, 1 + ]; + }, + + /** + * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. + */ + applyTo2d: function(options) { + var imageData = options.imageData, + resources = options.filterBackend.resources, + data = imageData.data, iLen = data.length, + width = imageData.width, + height = imageData.height, + tr, tg, tb, ta, + r, g, b, a, + canvas1, context, image = this.image, blendData; + + if (!resources.blendImage) { + resources.blendImage = fabric.util.createCanvasElement(); + } + canvas1 = resources.blendImage; + context = canvas1.getContext('2d'); + if (canvas1.width !== width || canvas1.height !== height) { + canvas1.width = width; + canvas1.height = height; + } + else { + context.clearRect(0, 0, width, height); + } + context.setTransform(image.scaleX, 0, 0, image.scaleY, image.left, image.top); + context.drawImage(image._element, 0, 0, width, height); + blendData = context.getImageData(0, 0, width, height).data; + for (var i = 0; i < iLen; i += 4) { + + r = data[i]; + g = data[i + 1]; + b = data[i + 2]; + a = data[i + 3]; + + tr = blendData[i]; + tg = blendData[i + 1]; + tb = blendData[i + 2]; + ta = blendData[i + 3]; + + switch (this.mode) { + case 'multiply': + data[i] = r * tr / 255; + data[i + 1] = g * tg / 255; + data[i + 2] = b * tb / 255; + data[i + 3] = a * ta / 255; + break; + case 'mask': + data[i + 3] = ta; + break; + } + } + }, + + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(gl, program) { + return { + uTransformMatrix: gl.getUniformLocation(program, 'uTransformMatrix'), + uImage: gl.getUniformLocation(program, 'uImage'), + }; + }, + + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(gl, uniformLocations) { + var matrix = this.calculateMatrix(); + gl.uniform1i(uniformLocations.uImage, 1); // texture unit 1. + gl.uniformMatrix3fv(uniformLocations.uTransformMatrix, false, matrix); + }, + + /** + * Returns object representation of an instance + * @return {Object} Object representation of an instance + */ + toObject: function() { + return { + type: this.type, + image: this.image && this.image.toObject(), + mode: this.mode, + alpha: this.alpha + }; + } + }); + + /** + * Returns filter instance from an object representation + * @static + * @param {Object} object Object to create an instance from + * @param {function} callback to be invoked after filter creation + * @return {fabric.Image.filters.BlendImage} Instance of fabric.Image.filters.BlendImage + */ + fabric.Image.filters.BlendImage.fromObject = function(object, callback) { + fabric.Image.fromObject(object.image, function(image) { + var options = fabric.util.object.clone(object); + options.image = image; + callback(new fabric.Image.filters.BlendImage(options)); + }); + }; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), pow = Math.pow, floor = Math.floor, + sqrt = Math.sqrt, abs = Math.abs, round = Math.round, sin = Math.sin, + ceil = Math.ceil, + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * Resize image filter class + * @class fabric.Image.filters.Resize + * @memberOf fabric.Image.filters + * @extends fabric.Image.filters.BaseFilter + * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} + * @example + * var filter = new fabric.Image.filters.Resize(); + * object.filters.push(filter); + * object.applyFilters(canvas.renderAll.bind(canvas)); + */ + filters.Resize = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Resize.prototype */ { + + /** + * Filter type + * @param {String} type + * @default + */ + type: 'Resize', + + /** + * Resize type + * for webgl resizeType is just lanczos, for canvas2d can be: + * bilinear, hermite, sliceHack, lanczos. + * @param {String} resizeType + * @default + */ + resizeType: 'hermite', + + /** + * Scale factor for resizing, x axis + * @param {Number} scaleX + * @default + */ + scaleX: 1, + + /** + * Scale factor for resizing, y axis + * @param {Number} scaleY + * @default + */ + scaleY: 1, + + /** + * LanczosLobes parameter for lanczos filter, valid for resizeType lanczos + * @param {Number} lanczosLobes + * @default + */ + lanczosLobes: 3, + + + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(gl, program) { + return { + uDelta: gl.getUniformLocation(program, 'uDelta'), + uTaps: gl.getUniformLocation(program, 'uTaps'), + }; + }, + + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(gl, uniformLocations) { + gl.uniform2fv(uniformLocations.uDelta, this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height]); + gl.uniform1fv(uniformLocations.uTaps, this.taps); + }, + + /** + * Retrieves the cached shader. + * @param {Object} options + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + retrieveShader: function(options) { + var filterWindow = this.getFilterWindow(), cacheKey = this.type + '_' + filterWindow; + if (!options.programCache.hasOwnProperty(cacheKey)) { + var fragmentShader = this.generateShader(filterWindow); + options.programCache[cacheKey] = this.createProgram(options.context, fragmentShader); + } + return options.programCache[cacheKey]; + }, + + getFilterWindow: function() { + var scale = this.tempScale; + return Math.ceil(this.lanczosLobes / scale); + }, + + getTaps: function() { + var lobeFunction = this.lanczosCreate(this.lanczosLobes), scale = this.tempScale, + filterWindow = this.getFilterWindow(), taps = new Array(filterWindow); + for (var i = 1; i <= filterWindow; i++) { + taps[i - 1] = lobeFunction(i * scale); + } + return taps; + }, + + /** + * Generate vertex and shader sources from the necessary steps numbers + * @param {Number} filterWindow + */ + generateShader: function(filterWindow) { + var offsets = new Array(filterWindow), + fragmentShader = this.fragmentSourceTOP, filterWindow; + + for (var i = 1; i <= filterWindow; i++) { + offsets[i - 1] = i + '.0 * uDelta'; + } + + fragmentShader += 'uniform float uTaps[' + filterWindow + '];\n'; + fragmentShader += 'void main() {\n'; + fragmentShader += ' vec4 color = texture2D(uTexture, vTexCoord);\n'; + fragmentShader += ' float sum = 1.0;\n'; + + offsets.forEach(function(offset, i) { + fragmentShader += ' color += texture2D(uTexture, vTexCoord + ' + offset + ') * uTaps[' + i + '];\n'; + fragmentShader += ' color += texture2D(uTexture, vTexCoord - ' + offset + ') * uTaps[' + i + '];\n'; + fragmentShader += ' sum += 2.0 * uTaps[' + i + '];\n'; + }); + fragmentShader += ' gl_FragColor = color / sum;\n'; + fragmentShader += '}'; + return fragmentShader; + }, + + fragmentSourceTOP: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform vec2 uDelta;\n' + + 'varying vec2 vTexCoord;\n', + + /** + * Apply the resize filter to the image + * Determines whether to use WebGL or Canvas2D based on the options.webgl flag. + * + * @param {Object} options + * @param {Number} options.passes The number of filters remaining to be executed + * @param {Boolean} options.webgl Whether to use webgl to render the filter. + * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered. + * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn. + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + applyTo: function(options) { + if (options.webgl) { + options.passes++; + this.width = options.sourceWidth; + this.horizontal = true; + this.dW = Math.round(this.width * this.scaleX); + this.dH = options.sourceHeight; + this.tempScale = this.dW / this.width; + this.taps = this.getTaps(); + options.destinationWidth = this.dW; + this._setupFrameBuffer(options); + this.applyToWebGL(options); + this._swapTextures(options); + options.sourceWidth = options.destinationWidth; + + this.height = options.sourceHeight; + this.horizontal = false; + this.dH = Math.round(this.height * this.scaleY); + this.tempScale = this.dH / this.height; + this.taps = this.getTaps(); + options.destinationHeight = this.dH; + this._setupFrameBuffer(options); + this.applyToWebGL(options); + this._swapTextures(options); + options.sourceHeight = options.destinationHeight; + } + else { + this.applyTo2d(options); + } + }, + + isNeutralState: function() { + return this.scaleX === 1 && this.scaleY === 1; + }, + + lanczosCreate: function(lobes) { + return function(x) { + if (x >= lobes || x <= -lobes) { + return 0.0; + } + if (x < 1.19209290E-07 && x > -1.19209290E-07) { + return 1.0; + } + x *= Math.PI; + var xx = x / lobes; + return (sin(x) / x) * sin(xx) / xx; + }; + }, + + /** + * Applies filter to canvas element + * @memberOf fabric.Image.filters.Resize.prototype + * @param {Object} canvasEl Canvas element to apply filter to + * @param {Number} scaleX + * @param {Number} scaleY + */ + applyTo2d: function(options) { + var imageData = options.imageData, + scaleX = this.scaleX, + scaleY = this.scaleY; + + this.rcpScaleX = 1 / scaleX; + this.rcpScaleY = 1 / scaleY; + + var oW = imageData.width, oH = imageData.height, + dW = round(oW * scaleX), dH = round(oH * scaleY), + newData; + + if (this.resizeType === 'sliceHack') { + newData = this.sliceByTwo(options, oW, oH, dW, dH); + } + else if (this.resizeType === 'hermite') { + newData = this.hermiteFastResize(options, oW, oH, dW, dH); + } + else if (this.resizeType === 'bilinear') { + newData = this.bilinearFiltering(options, oW, oH, dW, dH); + } + else if (this.resizeType === 'lanczos') { + newData = this.lanczosResize(options, oW, oH, dW, dH); + } + options.imageData = newData; + }, + + /** + * Filter sliceByTwo + * @param {Object} canvasEl Canvas element to apply filter to + * @param {Number} oW Original Width + * @param {Number} oH Original Height + * @param {Number} dW Destination Width + * @param {Number} dH Destination Height + * @returns {ImageData} + */ + sliceByTwo: function(options, oW, oH, dW, dH) { + var imageData = options.imageData, + mult = 0.5, doneW = false, doneH = false, stepW = oW * mult, + stepH = oH * mult, resources = fabric.filterBackend.resources, + tmpCanvas, ctx, sX = 0, sY = 0, dX = oW, dY = 0; + if (!resources.sliceByTwo) { + resources.sliceByTwo = document.createElement('canvas'); + } + tmpCanvas = resources.sliceByTwo; + if (tmpCanvas.width < oW * 1.5 || tmpCanvas.height < oH) { + tmpCanvas.width = oW * 1.5; + tmpCanvas.height = oH; + } + ctx = tmpCanvas.getContext('2d'); + ctx.clearRect(0, 0, oW * 1.5, oH); + ctx.putImageData(imageData, 0, 0); + + dW = floor(dW); + dH = floor(dH); + + while (!doneW || !doneH) { + oW = stepW; + oH = stepH; + if (dW < floor(stepW * mult)) { + stepW = floor(stepW * mult); + } + else { + stepW = dW; + doneW = true; + } + if (dH < floor(stepH * mult)) { + stepH = floor(stepH * mult); + } + else { + stepH = dH; + doneH = true; + } + ctx.drawImage(tmpCanvas, sX, sY, oW, oH, dX, dY, stepW, stepH); + sX = dX; + sY = dY; + dY += stepH; + } + return ctx.getImageData(sX, sY, dW, dH); + }, + + /** + * Filter lanczosResize + * @param {Object} canvasEl Canvas element to apply filter to + * @param {Number} oW Original Width + * @param {Number} oH Original Height + * @param {Number} dW Destination Width + * @param {Number} dH Destination Height + * @returns {ImageData} + */ + lanczosResize: function(options, oW, oH, dW, dH) { + + function process(u) { + var v, i, weight, idx, a, red, green, + blue, alpha, fX, fY; + center.x = (u + 0.5) * ratioX; + icenter.x = floor(center.x); + for (v = 0; v < dH; v++) { + center.y = (v + 0.5) * ratioY; + icenter.y = floor(center.y); + a = 0; red = 0; green = 0; blue = 0; alpha = 0; + for (i = icenter.x - range2X; i <= icenter.x + range2X; i++) { + if (i < 0 || i >= oW) { + continue; + } + fX = floor(1000 * abs(i - center.x)); + if (!cacheLanc[fX]) { + cacheLanc[fX] = { }; + } + for (var j = icenter.y - range2Y; j <= icenter.y + range2Y; j++) { + if (j < 0 || j >= oH) { + continue; + } + fY = floor(1000 * abs(j - center.y)); + if (!cacheLanc[fX][fY]) { + cacheLanc[fX][fY] = lanczos(sqrt(pow(fX * rcpRatioX, 2) + pow(fY * rcpRatioY, 2)) / 1000); + } + weight = cacheLanc[fX][fY]; + if (weight > 0) { + idx = (j * oW + i) * 4; + a += weight; + red += weight * srcData[idx]; + green += weight * srcData[idx + 1]; + blue += weight * srcData[idx + 2]; + alpha += weight * srcData[idx + 3]; + } + } + } + idx = (v * dW + u) * 4; + destData[idx] = red / a; + destData[idx + 1] = green / a; + destData[idx + 2] = blue / a; + destData[idx + 3] = alpha / a; + } + + if (++u < dW) { + return process(u); + } + else { + return destImg; + } + } + + var srcData = options.imageData.data, + destImg = options.ctx.createImageData(dW, dH), + destData = destImg.data, + lanczos = this.lanczosCreate(this.lanczosLobes), + ratioX = this.rcpScaleX, ratioY = this.rcpScaleY, + rcpRatioX = 2 / this.rcpScaleX, rcpRatioY = 2 / this.rcpScaleY, + range2X = ceil(ratioX * this.lanczosLobes / 2), + range2Y = ceil(ratioY * this.lanczosLobes / 2), + cacheLanc = { }, center = { }, icenter = { }; + + return process(0); + }, + + /** + * bilinearFiltering + * @param {Object} canvasEl Canvas element to apply filter to + * @param {Number} oW Original Width + * @param {Number} oH Original Height + * @param {Number} dW Destination Width + * @param {Number} dH Destination Height + * @returns {ImageData} + */ + bilinearFiltering: function(options, oW, oH, dW, dH) { + var a, b, c, d, x, y, i, j, xDiff, yDiff, chnl, + color, offset = 0, origPix, ratioX = this.rcpScaleX, + ratioY = this.rcpScaleY, + w4 = 4 * (oW - 1), img = options.imageData, + pixels = img.data, destImage = options.ctx.createImageData(dW, dH), + destPixels = destImage.data; + for (i = 0; i < dH; i++) { + for (j = 0; j < dW; j++) { + x = floor(ratioX * j); + y = floor(ratioY * i); + xDiff = ratioX * j - x; + yDiff = ratioY * i - y; + origPix = 4 * (y * oW + x); + + for (chnl = 0; chnl < 4; chnl++) { + a = pixels[origPix + chnl]; + b = pixels[origPix + 4 + chnl]; + c = pixels[origPix + w4 + chnl]; + d = pixels[origPix + w4 + 4 + chnl]; + color = a * (1 - xDiff) * (1 - yDiff) + b * xDiff * (1 - yDiff) + + c * yDiff * (1 - xDiff) + d * xDiff * yDiff; + destPixels[offset++] = color; + } + } + } + return destImage; + }, + + /** + * hermiteFastResize + * @param {Object} canvasEl Canvas element to apply filter to + * @param {Number} oW Original Width + * @param {Number} oH Original Height + * @param {Number} dW Destination Width + * @param {Number} dH Destination Height + * @returns {ImageData} + */ + hermiteFastResize: function(options, oW, oH, dW, dH) { + var ratioW = this.rcpScaleX, ratioH = this.rcpScaleY, + ratioWHalf = ceil(ratioW / 2), + ratioHHalf = ceil(ratioH / 2), + img = options.imageData, data = img.data, + img2 = options.ctx.createImageData(dW, dH), data2 = img2.data; + for (var j = 0; j < dH; j++) { + for (var i = 0; i < dW; i++) { + var x2 = (i + j * dW) * 4, weight = 0, weights = 0, weightsAlpha = 0, + gxR = 0, gxG = 0, gxB = 0, gxA = 0, centerY = (j + 0.5) * ratioH; + for (var yy = floor(j * ratioH); yy < (j + 1) * ratioH; yy++) { + var dy = abs(centerY - (yy + 0.5)) / ratioHHalf, + centerX = (i + 0.5) * ratioW, w0 = dy * dy; + for (var xx = floor(i * ratioW); xx < (i + 1) * ratioW; xx++) { + var dx = abs(centerX - (xx + 0.5)) / ratioWHalf, + w = sqrt(w0 + dx * dx); + /* eslint-disable max-depth */ + if (w > 1 && w < -1) { + continue; + } + //hermite filter + weight = 2 * w * w * w - 3 * w * w + 1; + if (weight > 0) { + dx = 4 * (xx + yy * oW); + //alpha + gxA += weight * data[dx + 3]; + weightsAlpha += weight; + //colors + if (data[dx + 3] < 255) { + weight = weight * data[dx + 3] / 250; + } + gxR += weight * data[dx]; + gxG += weight * data[dx + 1]; + gxB += weight * data[dx + 2]; + weights += weight; + } + /* eslint-enable max-depth */ + } + } + data2[x2] = gxR / weights; + data2[x2 + 1] = gxG / weights; + data2[x2 + 2] = gxB / weights; + data2[x2 + 3] = gxA / weightsAlpha; + } + } + return img2; + }, + + /** + * Returns object representation of an instance + * @return {Object} Object representation of an instance + */ + toObject: function() { + return { + type: this.type, + scaleX: this.scaleX, + scaleY: this.scaleY, + resizeType: this.resizeType, + lanczosLobes: this.lanczosLobes + }; + } + }); + + /** + * Returns filter instance from an object representation + * @static + * @param {Object} object Object to create an instance from + * @param {Function} [callback] to be invoked after filter creation + * @return {fabric.Image.filters.Resize} Instance of fabric.Image.filters.Resize + */ + fabric.Image.filters.Resize.fromObject = fabric.Image.filters.BaseFilter.fromObject; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * Contrast filter class + * @class fabric.Image.filters.Contrast + * @memberOf fabric.Image.filters + * @extends fabric.Image.filters.BaseFilter + * @see {@link fabric.Image.filters.Contrast#initialize} for constructor definition + * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} + * @example + * var filter = new fabric.Image.filters.Contrast({ + * contrast: 40 + * }); + * object.filters.push(filter); + * object.applyFilters(); + */ + filters.Contrast = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Contrast.prototype */ { + + /** + * Filter type + * @param {String} type + * @default + */ + type: 'Contrast', + + fragmentSource: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform float uContrast;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 color = texture2D(uTexture, vTexCoord);\n' + + 'float contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\n' + + 'color.rgb = contrastF * (color.rgb - 0.5) + 0.5;\n' + + 'gl_FragColor = color;\n' + + '}', + + contrast: 0, + + mainParameter: 'contrast', + + /** + * Constructor + * @memberOf fabric.Image.filters.Contrast.prototype + * @param {Object} [options] Options object + * @param {Number} [options.contrast=0] Value to contrast the image up (-1...1) + */ + + /** + * Apply the Contrast operation to a Uint8Array representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8Array to be filtered. + */ + applyTo2d: function(options) { + if (this.contrast === 0) { + return; + } + var imageData = options.imageData, i, len, + data = imageData.data, len = data.length, + contrast = Math.floor(this.contrast * 255), + contrastF = 259 * (contrast + 255) / (255 * (259 - contrast)); + + for (i = 0; i < len; i += 4) { + data[i] = contrastF * (data[i] - 128) + 128; + data[i + 1] = contrastF * (data[i + 1] - 128) + 128; + data[i + 2] = contrastF * (data[i + 2] - 128) + 128; + } + }, + + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(gl, program) { + return { + uContrast: gl.getUniformLocation(program, 'uContrast'), + }; + }, + + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(gl, uniformLocations) { + gl.uniform1f(uniformLocations.uContrast, this.contrast); + }, + }); + + /** + * Returns filter instance from an object representation + * @static + * @param {Object} object Object to create an instance from + * @param {function} [callback] to be invoked after filter creation + * @return {fabric.Image.filters.Contrast} Instance of fabric.Image.filters.Contrast + */ + fabric.Image.filters.Contrast.fromObject = fabric.Image.filters.BaseFilter.fromObject; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * Saturate filter class + * @class fabric.Image.filters.Saturation + * @memberOf fabric.Image.filters + * @extends fabric.Image.filters.BaseFilter + * @see {@link fabric.Image.filters.Saturation#initialize} for constructor definition + * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} + * @example + * var filter = new fabric.Image.filters.Saturation({ + * saturation: 100 + * }); + * object.filters.push(filter); + * object.applyFilters(); + */ + filters.Saturation = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Saturation.prototype */ { + + /** + * Filter type + * @param {String} type + * @default + */ + type: 'Saturation', + + fragmentSource: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform float uSaturation;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 color = texture2D(uTexture, vTexCoord);\n' + + 'float rgMax = max(color.r, color.g);\n' + + 'float rgbMax = max(rgMax, color.b);\n' + + 'color.r += rgbMax != color.r ? (rgbMax - color.r) * uSaturation : 0.00;\n' + + 'color.g += rgbMax != color.g ? (rgbMax - color.g) * uSaturation : 0.00;\n' + + 'color.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00;\n' + + 'gl_FragColor = color;\n' + + '}', + + saturation: 0, + + mainParameter: 'saturation', + + /** + * Constructor + * @memberOf fabric.Image.filters.Saturate.prototype + * @param {Object} [options] Options object + * @param {Number} [options.saturate=0] Value to saturate the image (-1...1) + */ + + /** + * Apply the Saturation operation to a Uint8ClampedArray representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. + */ + applyTo2d: function(options) { + if (this.saturation === 0) { + return; + } + var imageData = options.imageData, + data = imageData.data, len = data.length, + adjust = -this.saturation, i, max; + + for (i = 0; i < len; i += 4) { + max = Math.max(data[i], data[i + 1], data[i + 2]); + data[i] += max !== data[i] ? (max - data[i]) * adjust : 0; + data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * adjust : 0; + data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * adjust : 0; + } + }, + + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(gl, program) { + return { + uSaturation: gl.getUniformLocation(program, 'uSaturation'), + }; + }, + + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(gl, uniformLocations) { + gl.uniform1f(uniformLocations.uSaturation, -this.saturation); + }, + }); + + /** + * Returns filter instance from an object representation + * @static + * @param {Object} object Object to create an instance from + * @param {Function} [callback] to be invoked after filter creation + * @return {fabric.Image.filters.Saturation} Instance of fabric.Image.filters.Saturate + */ + fabric.Image.filters.Saturation.fromObject = fabric.Image.filters.BaseFilter.fromObject; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * Blur filter class + * @class fabric.Image.filters.Blur + * @memberOf fabric.Image.filters + * @extends fabric.Image.filters.BaseFilter + * @see {@link fabric.Image.filters.Blur#initialize} for constructor definition + * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} + * @example + * var filter = new fabric.Image.filters.Blur({ + * blur: 0.5 + * }); + * object.filters.push(filter); + * object.applyFilters(); + * canvas.renderAll(); + */ + filters.Blur = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blur.prototype */ { + + type: 'Blur', + + /* +'gl_FragColor = vec4(0.0);', +'gl_FragColor += texture2D(texture, vTexCoord + -7 * uDelta)*0.0044299121055113265;', +'gl_FragColor += texture2D(texture, vTexCoord + -6 * uDelta)*0.00895781211794;', +'gl_FragColor += texture2D(texture, vTexCoord + -5 * uDelta)*0.0215963866053;', +'gl_FragColor += texture2D(texture, vTexCoord + -4 * uDelta)*0.0443683338718;', +'gl_FragColor += texture2D(texture, vTexCoord + -3 * uDelta)*0.0776744219933;', +'gl_FragColor += texture2D(texture, vTexCoord + -2 * uDelta)*0.115876621105;', +'gl_FragColor += texture2D(texture, vTexCoord + -1 * uDelta)*0.147308056121;', +'gl_FragColor += texture2D(texture, vTexCoord )*0.159576912161;', +'gl_FragColor += texture2D(texture, vTexCoord + 1 * uDelta)*0.147308056121;', +'gl_FragColor += texture2D(texture, vTexCoord + 2 * uDelta)*0.115876621105;', +'gl_FragColor += texture2D(texture, vTexCoord + 3 * uDelta)*0.0776744219933;', +'gl_FragColor += texture2D(texture, vTexCoord + 4 * uDelta)*0.0443683338718;', +'gl_FragColor += texture2D(texture, vTexCoord + 5 * uDelta)*0.0215963866053;', +'gl_FragColor += texture2D(texture, vTexCoord + 6 * uDelta)*0.00895781211794;', +'gl_FragColor += texture2D(texture, vTexCoord + 7 * uDelta)*0.0044299121055113265;', +*/ + + /* eslint-disable max-len */ + fragmentSource: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform vec2 uDelta;\n' + + 'varying vec2 vTexCoord;\n' + + 'const float nSamples = 15.0;\n' + + 'vec3 v3offset = vec3(12.9898, 78.233, 151.7182);\n' + + 'float random(vec3 scale) {\n' + + /* use the fragment position for a different seed per-pixel */ + 'return fract(sin(dot(gl_FragCoord.xyz, scale)) * 43758.5453);\n' + + '}\n' + + 'void main() {\n' + + 'vec4 color = vec4(0.0);\n' + + 'float total = 0.0;\n' + + 'float offset = random(v3offset);\n' + + 'for (float t = -nSamples; t <= nSamples; t++) {\n' + + 'float percent = (t + offset - 0.5) / nSamples;\n' + + 'float weight = 1.0 - abs(percent);\n' + + 'color += texture2D(uTexture, vTexCoord + uDelta * percent) * weight;\n' + + 'total += weight;\n' + + '}\n' + + 'gl_FragColor = color / total;\n' + + '}', + /* eslint-enable max-len */ + + /** + * blur value, in percentage of image dimensions. + * specific to keep the image blur constant at different resolutions + * range bewteen 0 and 1. + */ + blur: 0, + + mainParameter: 'blur', + + applyTo: function(options) { + if (options.webgl) { + // this aspectRatio is used to give the same blur to vertical and horizontal + this.aspectRatio = options.sourceWidth / options.sourceHeight; + options.passes++; + this._setupFrameBuffer(options); + this.horizontal = true; + this.applyToWebGL(options); + this._swapTextures(options); + this._setupFrameBuffer(options); + this.horizontal = false; + this.applyToWebGL(options); + this._swapTextures(options); + } + else { + this.applyTo2d(options); + } + }, + + applyTo2d: function(options) { + // paint canvasEl with current image data. + //options.ctx.putImageData(options.imageData, 0, 0); + options.imageData = this.simpleBlur(options); + }, + + simpleBlur: function(options) { + var resources = options.filterBackend.resources, canvas1, canvas2, + width = options.imageData.width, + height = options.imageData.height; + + if (!resources.blurLayer1) { + resources.blurLayer1 = fabric.util.createCanvasElement(); + resources.blurLayer2 = fabric.util.createCanvasElement(); + } + canvas1 = resources.blurLayer1; + canvas2 = resources.blurLayer2; + if (canvas1.width !== width || canvas1.height !== height) { + canvas2.width = canvas1.width = width; + canvas2.height = canvas1.height = height; + } + var ctx1 = canvas1.getContext('2d'), + ctx2 = canvas2.getContext('2d'), + nSamples = 15, + random, percent, j, i, + blur = this.blur * 0.06 * 0.5; + + // load first canvas + ctx1.putImageData(options.imageData, 0, 0); + ctx2.clearRect(0, 0, width, height); + + for (i = -nSamples; i <= nSamples; i++) { + random = (Math.random() - 0.5) / 4; + percent = i / nSamples; + j = blur * percent * width + random; + ctx2.globalAlpha = 1 - Math.abs(percent); + ctx2.drawImage(canvas1, j, random); + ctx1.drawImage(canvas2, 0, 0); + ctx2.globalAlpha = 1; + ctx2.clearRect(0, 0, canvas2.width, canvas2.height); + } + for (i = -nSamples; i <= nSamples; i++) { + random = (Math.random() - 0.5) / 4; + percent = i / nSamples; + j = blur * percent * height + random; + ctx2.globalAlpha = 1 - Math.abs(percent); + ctx2.drawImage(canvas1, random, j); + ctx1.drawImage(canvas2, 0, 0); + ctx2.globalAlpha = 1; + ctx2.clearRect(0, 0, canvas2.width, canvas2.height); + } + options.ctx.drawImage(canvas1, 0, 0); + var newImageData = options.ctx.getImageData(0, 0, canvas1.width, canvas1.height); + ctx1.globalAlpha = 1; + ctx1.clearRect(0, 0, canvas1.width, canvas1.height); + return newImageData; + }, + + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(gl, program) { + return { + delta: gl.getUniformLocation(program, 'uDelta'), + }; + }, + + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(gl, uniformLocations) { + var delta = this.chooseRightDelta(); + gl.uniform2fv(uniformLocations.delta, delta); + }, + + /** + * choose right value of image percentage to blur with + * @returns {Array} a numeric array with delta values + */ + chooseRightDelta: function() { + var blurScale = 1, delta = [0, 0], blur; + if (this.horizontal) { + if (this.aspectRatio > 1) { + // image is wide, i want to shrink radius horizontal + blurScale = 1 / this.aspectRatio; + } + } + else { + if (this.aspectRatio < 1) { + // image is tall, i want to shrink radius vertical + blurScale = this.aspectRatio; + } + } + blur = blurScale * this.blur * 0.12; + if (this.horizontal) { + delta[0] = blur; + } + else { + delta[1] = blur; + } + return delta; + }, + }); + + /** + * Deserialize a JSON definition of a BlurFilter into a concrete instance. + */ + filters.Blur.fromObject = fabric.Image.filters.BaseFilter.fromObject; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * Gamma filter class + * @class fabric.Image.filters.Gamma + * @memberOf fabric.Image.filters + * @extends fabric.Image.filters.BaseFilter + * @see {@link fabric.Image.filters.Gamma#initialize} for constructor definition + * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} + * @example + * var filter = new fabric.Image.filters.Gamma({ + * brightness: 200 + * }); + * object.filters.push(filter); + * object.applyFilters(); + */ + filters.Gamma = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Gamma.prototype */ { + + /** + * Filter type + * @param {String} type + * @default + */ + type: 'Gamma', + + fragmentSource: 'precision highp float;\n' + + 'uniform sampler2D uTexture;\n' + + 'uniform vec3 uGamma;\n' + + 'varying vec2 vTexCoord;\n' + + 'void main() {\n' + + 'vec4 color = texture2D(uTexture, vTexCoord);\n' + + 'vec3 correction = (1.0 / uGamma);\n' + + 'color.r = pow(color.r, correction.r);\n' + + 'color.g = pow(color.g, correction.g);\n' + + 'color.b = pow(color.b, correction.b);\n' + + 'gl_FragColor = color;\n' + + 'gl_FragColor.rgb *= color.a;\n' + + '}', + + /** + * Gamma array value, from 0.01 to 2.2. + * @param {Array} gamma + * @default + */ + gamma: [1, 1, 1], + + /** + * Describe the property that is the filter parameter + * @param {String} m + * @default + */ + mainParameter: 'gamma', + + /** + * Constructor + * @param {Object} [options] Options object + */ + initialize: function(options) { + this.gamma = [1, 1, 1]; + filters.BaseFilter.prototype.initialize.call(this, options); + }, + + /** + * Apply the Gamma operation to a Uint8Array representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8Array to be filtered. + */ + applyTo2d: function(options) { + var imageData = options.imageData, data = imageData.data, + gamma = this.gamma, len = data.length, + rInv = 1 / gamma[0], gInv = 1 / gamma[1], + bInv = 1 / gamma[2], i; + + if (!this.rVals) { + // eslint-disable-next-line + this.rVals = new Uint8Array(256); + // eslint-disable-next-line + this.gVals = new Uint8Array(256); + // eslint-disable-next-line + this.bVals = new Uint8Array(256); + } + + // This is an optimization - pre-compute a look-up table for each color channel + // instead of performing these pow calls for each pixel in the image. + for (i = 0, len = 256; i < len; i++) { + this.rVals[i] = Math.pow(i / 255, rInv) * 255; + this.gVals[i] = Math.pow(i / 255, gInv) * 255; + this.bVals[i] = Math.pow(i / 255, bInv) * 255; + } + for (i = 0, len = data.length; i < len; i += 4) { + data[i] = this.rVals[data[i]]; + data[i + 1] = this.gVals[data[i + 1]]; + data[i + 2] = this.bVals[data[i + 2]]; + } + }, + + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(gl, program) { + return { + uGamma: gl.getUniformLocation(program, 'uGamma'), + }; + }, + + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(gl, uniformLocations) { + gl.uniform3fv(uniformLocations.uGamma, this.gamma); + }, + }); + + /** + * Returns filter instance from an object representation + * @static + * @param {Object} object Object to create an instance from + * @param {function} [callback] to be invoked after filter creation + * @return {fabric.Image.filters.Gamma} Instance of fabric.Image.filters.Gamma + */ + fabric.Image.filters.Gamma.fromObject = fabric.Image.filters.BaseFilter.fromObject; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * A container class that knows how to apply a sequence of filters to an input image. + */ + filters.Composed = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Composed.prototype */ { + + type: 'Composed', + + /** + * A non sparse array of filters to apply + */ + subFilters: [], + + /** + * Constructor + * @param {Object} [options] Options object + */ + initialize: function(options) { + this.callSuper('initialize', options); + // create a new array instead mutating the prototype with push + this.subFilters = this.subFilters.slice(0); + }, + + /** + * Apply this container's filters to the input image provided. + * + * @param {Object} options + * @param {Number} options.passes The number of filters remaining to be applied. + */ + applyTo: function(options) { + options.passes += this.subFilters.length - 1; + this.subFilters.forEach(function(filter) { + filter.applyTo(options); + }); + }, + + /** + * Serialize this filter into JSON. + * + * @returns {Object} A JSON representation of this filter. + */ + toObject: function() { + return fabric.util.object.extend(this.callSuper('toObject'), { + subFilters: this.subFilters.map(function(filter) { return filter.toObject(); }), + }); + }, + + isNeutralState: function() { + return !this.subFilters.some(function(filter) { return !filter.isNeutralState(); }); + } + }); + + /** + * Deserialize a JSON definition of a ComposedFilter into a concrete instance. + */ + fabric.Image.filters.Composed.fromObject = function(object, callback) { + var filters = object.subFilters || [], + subFilters = filters.map(function(filter) { + return new fabric.Image.filters[filter.type](filter); + }), + instance = new fabric.Image.filters.Composed({ subFilters: subFilters }); + callback && callback(instance); + return instance; + }; +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + filters = fabric.Image.filters, + createClass = fabric.util.createClass; + + /** + * HueRotation filter class + * @class fabric.Image.filters.HueRotation + * @memberOf fabric.Image.filters + * @extends fabric.Image.filters.BaseFilter + * @see {@link fabric.Image.filters.HueRotation#initialize} for constructor definition + * @see {@link http://fabricjs.com/image-filters|ImageFilters demo} + * @example + * var filter = new fabric.Image.filters.HueRotation({ + * rotation: -0.5 + * }); + * object.filters.push(filter); + * object.applyFilters(); + */ + filters.HueRotation = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.HueRotation.prototype */ { + + /** + * Filter type + * @param {String} type + * @default + */ + type: 'HueRotation', + + /** + * HueRotation value, from -1 to 1. + * the unit is radians + * @param {Number} myParameter + * @default + */ + rotation: 0, + + /** + * Describe the property that is the filter parameter + * @param {String} m + * @default + */ + mainParameter: 'rotation', + + calculateMatrix: function() { + var rad = this.rotation * Math.PI, cos = fabric.util.cos(rad), sin = fabric.util.sin(rad), + aThird = 1 / 3, aThirdSqtSin = Math.sqrt(aThird) * sin, OneMinusCos = 1 - cos; + this.matrix = [ + 1, 0, 0, 0, 0, + 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0 + ]; + this.matrix[0] = cos + OneMinusCos / 3; + this.matrix[1] = aThird * OneMinusCos - aThirdSqtSin; + this.matrix[2] = aThird * OneMinusCos + aThirdSqtSin; + this.matrix[5] = aThird * OneMinusCos + aThirdSqtSin; + this.matrix[6] = cos + aThird * OneMinusCos; + this.matrix[7] = aThird * OneMinusCos - aThirdSqtSin; + this.matrix[10] = aThird * OneMinusCos - aThirdSqtSin; + this.matrix[11] = aThird * OneMinusCos + aThirdSqtSin; + this.matrix[12] = cos + aThird * OneMinusCos; + }, + + /** + * HueRotation isNeutralState implementation + * Used only in image applyFilters to discard filters that will not have an effect + * on the image + * @param {Object} options + **/ + isNeutralState: function(options) { + this.calculateMatrix(); + return filters.BaseFilter.prototype.isNeutralState.call(this, options); + }, + + /** + * Apply this filter to the input image data provided. + * + * Determines whether to use WebGL or Canvas2D based on the options.webgl flag. + * + * @param {Object} options + * @param {Number} options.passes The number of filters remaining to be executed + * @param {Boolean} options.webgl Whether to use webgl to render the filter. + * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered. + * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn. + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + applyTo: function(options) { + this.calculateMatrix(); + filters.BaseFilter.prototype.applyTo.call(this, options); + }, + + }); + + /** + * Returns filter instance from an object representation + * @static + * @param {Object} object Object to create an instance from + * @param {function} [callback] to be invoked after filter creation + * @return {fabric.Image.filters.HueRotation} Instance of fabric.Image.filters.HueRotation + */ + fabric.Image.filters.HueRotation.fromObject = fabric.Image.filters.BaseFilter.fromObject; + +})(typeof exports !== 'undefined' ? exports : this); + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = { }), + clone = fabric.util.object.clone; + + if (fabric.Text) { + fabric.warn('fabric.Text is already defined'); + return; + } + + /** + * Text class + * @class fabric.Text + * @extends fabric.Object + * @return {fabric.Text} thisArg + * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#text} + * @see {@link fabric.Text#initialize} for constructor definition + */ + fabric.Text = fabric.util.createClass(fabric.Object, /** @lends fabric.Text.prototype */ { + + /** + * Properties which when set cause object to change dimensions + * @type Array + * @private + */ + _dimensionAffectingProps: [ + 'fontSize', + 'fontWeight', + 'fontFamily', + 'fontStyle', + 'lineHeight', + 'text', + 'charSpacing', + 'textAlign', + 'styles', + ], + + /** + * @private + */ + _reNewline: /\r?\n/, + + /** + * Use this regular expression to filter for whitespaces that is not a new line. + * Mostly used when text is 'justify' aligned. + * @private + */ + _reSpacesAndTabs: /[ \t\r]/g, + + /** + * Use this regular expression to filter for whitespace that is not a new line. + * Mostly used when text is 'justify' aligned. + * @private + */ + _reSpaceAndTab: /[ \t\r]/, + + /** + * Use this regular expression to filter consecutive groups of non spaces. + * Mostly used when text is 'justify' aligned. + * @private + */ + _reWords: /\S+/g, + + /** + * Type of an object + * @type String + * @default + */ + type: 'text', + + /** + * Font size (in pixels) + * @type Number + * @default + */ + fontSize: 40, + + /** + * Font weight (e.g. bold, normal, 400, 600, 800) + * @type {(Number|String)} + * @default + */ + fontWeight: 'normal', + + /** + * Font family + * @type String + * @default + */ + fontFamily: 'Times New Roman', + + /** + * Text decoration underline. + * @type Boolean + * @default + */ + underline: false, + + /** + * Text decoration overline. + * @type Boolean + * @default + */ + overline: false, + + /** + * Text decoration linethrough. + * @type Boolean + * @default + */ + linethrough: false, + + /** + * Text alignment. Possible values: "left", "center", "right", "justify", + * "justify-left", "justify-center" or "justify-right". + * @type String + * @default + */ + textAlign: 'left', + + /** + * Font style . Possible values: "", "normal", "italic" or "oblique". + * @type String + * @default + */ + fontStyle: 'normal', + + /** + * Line height + * @type Number + * @default + */ + lineHeight: 1.16, + + /** + * Superscript schema object (minimum overlap) + * @type {Object} + * @default + */ + superscript: { + size: 0.60, // fontSize factor + baseline: -0.35 // baseline-shift factor (upwards) + }, + + /** + * Subscript schema object (minimum overlap) + * @type {Object} + * @default + */ + subscript: { + size: 0.60, // fontSize factor + baseline: 0.11 // baseline-shift factor (downwards) + }, + + /** + * Background color of text lines + * @type String + * @default + */ + textBackgroundColor: '', + + /** + * List of properties to consider when checking if + * state of an object is changed ({@link fabric.Object#hasStateChanged}) + * as well as for history (undo/redo) purposes + * @type Array + */ + stateProperties: fabric.Object.prototype.stateProperties.concat('fontFamily', + 'fontWeight', + 'fontSize', + 'text', + 'underline', + 'overline', + 'linethrough', + 'textAlign', + 'fontStyle', + 'lineHeight', + 'textBackgroundColor', + 'charSpacing', + 'styles'), + + /** + * List of properties to consider when checking if cache needs refresh + * @type Array + */ + cacheProperties: fabric.Object.prototype.cacheProperties.concat('fontFamily', + 'fontWeight', + 'fontSize', + 'text', + 'underline', + 'overline', + 'linethrough', + 'textAlign', + 'fontStyle', + 'lineHeight', + 'textBackgroundColor', + 'charSpacing', + 'styles'), + + /** + * When defined, an object is rendered via stroke and this property specifies its color. + * Backwards incompatibility note: This property was named "strokeStyle" until v1.1.6 + * @type String + * @default + */ + stroke: null, + + /** + * Shadow object representing shadow of this shape. + * Backwards incompatibility note: This property was named "textShadow" (String) until v1.2.11 + * @type fabric.Shadow + * @default + */ + shadow: null, + + /** + * @private + */ + _fontSizeFraction: 0.222, + + /** + * @private + */ + offsets: { + underline: 0.10, + linethrough: -0.315, + overline: -0.88 + }, + + /** + * Text Line proportion to font Size (in pixels) + * @type Number + * @default + */ + _fontSizeMult: 1.13, + + /** + * additional space between characters + * expressed in thousands of em unit + * @type Number + * @default + */ + charSpacing: 0, + + /** + * Object containing character styles - top-level properties -> line numbers, + * 2nd-level properties - charater numbers + * @type Object + * @default + */ + styles: null, + + /** + * Reference to a context to measure text char or couple of chars + * the cacheContext of the canvas will be used or a freshly created one if the object is not on canvas + * once created it will be referenced on fabric._measuringContext to avoide creating a canvas for every + * text object created. + * @type {CanvasRenderingContext2D} + * @default + */ + _measuringContext: null, + + /** + * Baseline shift, stlyes only, keep at 0 for the main text object + * @type {Number} + * @default + */ + deltaY: 0, + + /** + * Array of properties that define a style unit (of 'styles'). + * @type {Array} + * @default + */ + _styleProperties: [ + 'stroke', + 'strokeWidth', + 'fill', + 'fontFamily', + 'fontSize', + 'fontWeight', + 'fontStyle', + 'underline', + 'overline', + 'linethrough', + 'deltaY', + 'textBackgroundColor', + ], + + /** + * contains characters bounding boxes + */ + __charBounds: [], + + /** + * use this size when measuring text. To avoid IE11 rounding errors + * @type {Number} + * @default + * @readonly + * @private + */ + CACHE_FONT_SIZE: 400, + + /** + * contains the min text width to avoid getting 0 + * @type {Number} + * @default + */ + MIN_TEXT_WIDTH: 2, + + /** + * Constructor + * @param {String} text Text string + * @param {Object} [options] Options object + * @return {fabric.Text} thisArg + */ + initialize: function(text, options) { + this.styles = options ? (options.styles || { }) : { }; + this.text = text; + this.__skipDimension = true; + this.callSuper('initialize', options); + this.__skipDimension = false; + this.initDimensions(); + this.setCoords(); + this.setupState({ propertySet: '_dimensionAffectingProps' }); + }, + + /** + * Return a contex for measurement of text string. + * if created it gets stored for reuse + * @param {String} text Text string + * @param {Object} [options] Options object + * @return {fabric.Text} thisArg + */ + getMeasuringContext: function() { + // if we did not return we have to measure something. + if (!fabric._measuringContext) { + fabric._measuringContext = this.canvas && this.canvas.contextCache || + fabric.util.createCanvasElement().getContext('2d'); + } + return fabric._measuringContext; + }, + + /** + * @private + * Divides text into lines of text and lines of graphemes. + */ + _splitText: function() { + var newLines = this._splitTextIntoLines(this.text); + this.textLines = newLines.lines; + this._textLines = newLines.graphemeLines; + this._unwrappedTextLines = newLines._unwrappedLines; + this._text = newLines.graphemeText; + return newLines; + }, + + /** + * Initialize or update text dimensions. + * Updates this.width and this.height with the proper values. + * Does not return dimensions. + */ + initDimensions: function() { + if (this.__skipDimension) { + return; + } + this._splitText(); + this._clearCache(); + this.width = this.calcTextWidth() || this.cursorWidth || this.MIN_TEXT_WIDTH; + if (this.textAlign.indexOf('justify') !== -1) { + // once text is measured we need to make space fatter to make justified text. + this.enlargeSpaces(); + } + this.height = this.calcTextHeight(); + this.saveState({ propertySet: '_dimensionAffectingProps' }); + }, + + /** + * Enlarge space boxes and shift the others + */ + enlargeSpaces: function() { + var diffSpace, currentLineWidth, numberOfSpaces, accumulatedSpace, line, charBound, spaces; + for (var i = 0, len = this._textLines.length; i < len; i++) { + if (this.textAlign !== 'justify' && (i === len - 1 || this.isEndOfWrapping(i))) { + continue; + } + accumulatedSpace = 0; + line = this._textLines[i]; + currentLineWidth = this.getLineWidth(i); + if (currentLineWidth < this.width && (spaces = this.textLines[i].match(this._reSpacesAndTabs))) { + numberOfSpaces = spaces.length; + diffSpace = (this.width - currentLineWidth) / numberOfSpaces; + for (var j = 0, jlen = line.length; j <= jlen; j++) { + charBound = this.__charBounds[i][j]; + if (this._reSpaceAndTab.test(line[j])) { + charBound.width += diffSpace; + charBound.kernedWidth += diffSpace; + charBound.left += accumulatedSpace; + accumulatedSpace += diffSpace; + } + else { + charBound.left += accumulatedSpace; + } + } + } + } + }, + + /** + * Detect if the text line is ended with an hard break + * text and itext do not have wrapping, return false + * @return {Boolean} + */ + isEndOfWrapping: function(lineIndex) { + return lineIndex === this._textLines.length - 1; + }, + + /** + * Detect if a line has a linebreak and so we need to account for it when moving + * and counting style. + * It return always for text and Itext. + * @return Number + */ + missingNewlineOffset: function() { + return 1; + }, + + /** + * Returns string representation of an instance + * @return {String} String representation of text object + */ + toString: function() { + return '#'; + }, + + /** + * Return the dimension and the zoom level needed to create a cache canvas + * big enough to host the object to be cached. + * @private + * @param {Object} dim.x width of object to be cached + * @param {Object} dim.y height of object to be cached + * @return {Object}.width width of canvas + * @return {Object}.height height of canvas + * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache + * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache + */ + _getCacheCanvasDimensions: function() { + var dims = this.callSuper('_getCacheCanvasDimensions'); + var fontSize = this.fontSize; + dims.width += fontSize * dims.zoomX; + dims.height += fontSize * dims.zoomY; + return dims; + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(ctx) { + this._setTextStyles(ctx); + this._renderTextLinesBackground(ctx); + this._renderTextDecoration(ctx, 'underline'); + this._renderText(ctx); + this._renderTextDecoration(ctx, 'overline'); + this._renderTextDecoration(ctx, 'linethrough'); + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderText: function(ctx) { + if (this.paintFirst === 'stroke') { + this._renderTextStroke(ctx); + this._renderTextFill(ctx); + } + else { + this._renderTextFill(ctx); + this._renderTextStroke(ctx); + } + }, + + /** + * Set the font parameter of the context with the object properties or with charStyle + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {Object} [charStyle] object with font style properties + * @param {String} [charStyle.fontFamily] Font Family + * @param {Number} [charStyle.fontSize] Font size in pixels. ( without px suffix ) + * @param {String} [charStyle.fontWeight] Font weight + * @param {String} [charStyle.fontStyle] Font style (italic|normal) + */ + _setTextStyles: function(ctx, charStyle, forMeasuring) { + ctx.textBaseline = 'alphabetic'; + ctx.font = this._getFontDeclaration(charStyle, forMeasuring); + }, + + /** + * calculate and return the text Width measuring each line. + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + * @return {Number} Maximum width of fabric.Text object + */ + calcTextWidth: function() { + var maxWidth = this.getLineWidth(0); + + for (var i = 1, len = this._textLines.length; i < len; i++) { + var currentLineWidth = this.getLineWidth(i); + if (currentLineWidth > maxWidth) { + maxWidth = currentLineWidth; + } + } + return maxWidth; + }, + + /** + * @private + * @param {String} method Method name ("fillText" or "strokeText") + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {String} line Text to render + * @param {Number} left Left position of text + * @param {Number} top Top position of text + * @param {Number} lineIndex Index of a line in a text + */ + _renderTextLine: function(method, ctx, line, left, top, lineIndex) { + this._renderChars(method, ctx, line, left, top, lineIndex); + }, + + /** + * Renders the text background for lines, taking care of style + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderTextLinesBackground: function(ctx) { + if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor')) { + return; + } + var lineTopOffset = 0, heightOfLine, + lineLeftOffset, originalFill = ctx.fillStyle, + line, lastColor, + leftOffset = this._getLeftOffset(), + topOffset = this._getTopOffset(), + boxStart = 0, boxWidth = 0, charBox, currentColor; + + for (var i = 0, len = this._textLines.length; i < len; i++) { + heightOfLine = this.getHeightOfLine(i); + if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor', i)) { + lineTopOffset += heightOfLine; + continue; + } + line = this._textLines[i]; + lineLeftOffset = this._getLineLeftOffset(i); + boxWidth = 0; + boxStart = 0; + lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor'); + for (var j = 0, jlen = line.length; j < jlen; j++) { + charBox = this.__charBounds[i][j]; + currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor'); + if (currentColor !== lastColor) { + ctx.fillStyle = lastColor; + lastColor && ctx.fillRect( + leftOffset + lineLeftOffset + boxStart, + topOffset + lineTopOffset, + boxWidth, + heightOfLine / this.lineHeight + ); + boxStart = charBox.left; + boxWidth = charBox.width; + lastColor = currentColor; + } + else { + boxWidth += charBox.kernedWidth; + } + } + if (currentColor) { + ctx.fillStyle = currentColor; + ctx.fillRect( + leftOffset + lineLeftOffset + boxStart, + topOffset + lineTopOffset, + boxWidth, + heightOfLine / this.lineHeight + ); + } + lineTopOffset += heightOfLine; + } + ctx.fillStyle = originalFill; + // if there is text background color no + // other shadows should be casted + this._removeShadow(ctx); + }, + + /** + * @private + * @param {Object} decl style declaration for cache + * @param {String} decl.fontFamily fontFamily + * @param {String} decl.fontStyle fontStyle + * @param {String} decl.fontWeight fontWeight + * @return {Object} reference to cache + */ + getFontCache: function(decl) { + var fontFamily = decl.fontFamily.toLowerCase(); + if (!fabric.charWidthsCache[fontFamily]) { + fabric.charWidthsCache[fontFamily] = { }; + } + var cache = fabric.charWidthsCache[fontFamily], + cacheProp = decl.fontStyle.toLowerCase() + '_' + (decl.fontWeight + '').toLowerCase(); + if (!cache[cacheProp]) { + cache[cacheProp] = { }; + } + return cache[cacheProp]; + }, + + /** + * apply all the character style to canvas for rendering + * @private + * @param {String} _char + * @param {Number} lineIndex + * @param {Number} charIndex + * @param {Object} [decl] + */ + _applyCharStyles: function(method, ctx, lineIndex, charIndex, styleDeclaration) { + + this._setFillStyles(ctx, styleDeclaration); + this._setStrokeStyles(ctx, styleDeclaration); + + ctx.font = this._getFontDeclaration(styleDeclaration); + }, + + /** + * measure and return the width of a single character. + * possibly overridden to accommodate different measure logic or + * to hook some external lib for character measurement + * @private + * @param {String} _char, char to be measured + * @param {Object} charStyle style of char to be measured + * @param {String} [previousChar] previous char + * @param {Object} [prevCharStyle] style of previous char + */ + _measureChar: function(_char, charStyle, previousChar, prevCharStyle) { + // first i try to return from cache + var fontCache = this.getFontCache(charStyle), fontDeclaration = this._getFontDeclaration(charStyle), + previousFontDeclaration = this._getFontDeclaration(prevCharStyle), couple = previousChar + _char, + stylesAreEqual = fontDeclaration === previousFontDeclaration, width, coupleWidth, previousWidth, + fontMultiplier = charStyle.fontSize / this.CACHE_FONT_SIZE, kernedWidth; + + if (previousChar && fontCache[previousChar] !== undefined) { + previousWidth = fontCache[previousChar]; + } + if (fontCache[_char] !== undefined) { + kernedWidth = width = fontCache[_char]; + } + if (stylesAreEqual && fontCache[couple] !== undefined) { + coupleWidth = fontCache[couple]; + kernedWidth = coupleWidth - previousWidth; + } + if (width === undefined || previousWidth === undefined || coupleWidth === undefined) { + var ctx = this.getMeasuringContext(); + // send a TRUE to specify measuring font size CACHE_FONT_SIZE + this._setTextStyles(ctx, charStyle, true); + } + if (width === undefined) { + kernedWidth = width = ctx.measureText(_char).width; + fontCache[_char] = width; + } + if (previousWidth === undefined && stylesAreEqual && previousChar) { + previousWidth = ctx.measureText(previousChar).width; + fontCache[previousChar] = previousWidth; + } + if (stylesAreEqual && coupleWidth === undefined) { + // we can measure the kerning couple and subtract the width of the previous character + coupleWidth = ctx.measureText(couple).width; + fontCache[couple] = coupleWidth; + kernedWidth = coupleWidth - previousWidth; + } + return { width: width * fontMultiplier, kernedWidth: kernedWidth * fontMultiplier }; + }, + + /** + * Computes height of character at given position + * @param {Number} line the line index number + * @param {Number} _char the character index number + * @return {Number} fontSize of the character + */ + getHeightOfChar: function(line, _char) { + return this.getValueOfPropertyAt(line, _char, 'fontSize'); + }, + + /** + * measure a text line measuring all characters. + * @param {Number} lineIndex line number + * @return {Number} Line width + */ + measureLine: function(lineIndex) { + var lineInfo = this._measureLine(lineIndex); + if (this.charSpacing !== 0) { + lineInfo.width -= this._getWidthOfCharSpacing(); + } + if (lineInfo.width < 0) { + lineInfo.width = 0; + } + return lineInfo; + }, + + /** + * measure every grapheme of a line, populating __charBounds + * @param {Number} lineIndex + * @return {Object} object.width total width of characters + * @return {Object} object.widthOfSpaces length of chars that match this._reSpacesAndTabs + */ + _measureLine: function(lineIndex) { + var width = 0, i, grapheme, line = this._textLines[lineIndex], prevGrapheme, + graphemeInfo, numOfSpaces = 0, lineBounds = new Array(line.length); + + this.__charBounds[lineIndex] = lineBounds; + for (i = 0; i < line.length; i++) { + grapheme = line[i]; + graphemeInfo = this._getGraphemeBox(grapheme, lineIndex, i, prevGrapheme); + lineBounds[i] = graphemeInfo; + width += graphemeInfo.kernedWidth; + prevGrapheme = grapheme; + } + // this latest bound box represent the last character of the line + // to simplify cursor handling in interactive mode. + lineBounds[i] = { + left: graphemeInfo ? graphemeInfo.left + graphemeInfo.width : 0, + width: 0, + kernedWidth: 0, + height: this.fontSize + }; + return { width: width, numOfSpaces: numOfSpaces }; + }, + + /** + * Measure and return the info of a single grapheme. + * needs the the info of previous graphemes already filled + * @private + * @param {String} grapheme to be measured + * @param {Number} lineIndex index of the line where the char is + * @param {Number} charIndex position in the line + * @param {String} [prevGrapheme] character preceding the one to be measured + */ + _getGraphemeBox: function(grapheme, lineIndex, charIndex, prevGrapheme, skipLeft) { + var style = this.getCompleteStyleDeclaration(lineIndex, charIndex), + prevStyle = prevGrapheme ? this.getCompleteStyleDeclaration(lineIndex, charIndex - 1) : { }, + info = this._measureChar(grapheme, style, prevGrapheme, prevStyle), + kernedWidth = info.kernedWidth, + width = info.width, charSpacing; + + if (this.charSpacing !== 0) { + charSpacing = this._getWidthOfCharSpacing(); + width += charSpacing; + kernedWidth += charSpacing; + } + + var box = { + width: width, + left: 0, + height: style.fontSize, + kernedWidth: kernedWidth, + deltaY: style.deltaY, + }; + if (charIndex > 0 && !skipLeft) { + var previousBox = this.__charBounds[lineIndex][charIndex - 1]; + box.left = previousBox.left + previousBox.width + info.kernedWidth - info.width; + } + return box; + }, + + /** + * Calculate height of line at 'lineIndex' + * @param {Number} lineIndex index of line to calculate + * @return {Number} + */ + getHeightOfLine: function(lineIndex) { + if (this.__lineHeights[lineIndex]) { + return this.__lineHeights[lineIndex]; + } + + var line = this._textLines[lineIndex], + // char 0 is measured before the line cycle because it nneds to char + // emptylines + maxHeight = this.getHeightOfChar(lineIndex, 0); + for (var i = 1, len = line.length; i < len; i++) { + maxHeight = Math.max(this.getHeightOfChar(lineIndex, i), maxHeight); + } + + return this.__lineHeights[lineIndex] = maxHeight * this.lineHeight * this._fontSizeMult; + }, + + /** + * Calculate text box height + */ + calcTextHeight: function() { + var lineHeight, height = 0; + for (var i = 0, len = this._textLines.length; i < len; i++) { + lineHeight = this.getHeightOfLine(i); + height += (i === len - 1 ? lineHeight / this.lineHeight : lineHeight); + } + return height; + }, + + /** + * @private + * @return {Number} Left offset + */ + _getLeftOffset: function() { + return -this.width / 2; + }, + + /** + * @private + * @return {Number} Top offset + */ + _getTopOffset: function() { + return -this.height / 2; + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {String} method Method name ("fillText" or "strokeText") + */ + _renderTextCommon: function(ctx, method) { + ctx.save(); + var lineHeights = 0, left = this._getLeftOffset(), top = this._getTopOffset(), + offsets = this._applyPatternGradientTransform(ctx, method === 'fillText' ? this.fill : this.stroke); + for (var i = 0, len = this._textLines.length; i < len; i++) { + var heightOfLine = this.getHeightOfLine(i), + maxHeight = heightOfLine / this.lineHeight, + leftOffset = this._getLineLeftOffset(i); + this._renderTextLine( + method, + ctx, + this._textLines[i], + left + leftOffset - offsets.offsetX, + top + lineHeights + maxHeight - offsets.offsetY, + i + ); + lineHeights += heightOfLine; + } + ctx.restore(); + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderTextFill: function(ctx) { + if (!this.fill && !this.styleHas('fill')) { + return; + } + + this._renderTextCommon(ctx, 'fillText'); + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderTextStroke: function(ctx) { + if ((!this.stroke || this.strokeWidth === 0) && this.isEmptyStyles()) { + return; + } + + if (this.shadow && !this.shadow.affectStroke) { + this._removeShadow(ctx); + } + + ctx.save(); + this._setLineDash(ctx, this.strokeDashArray); + ctx.beginPath(); + this._renderTextCommon(ctx, 'strokeText'); + ctx.closePath(); + ctx.restore(); + }, + + /** + * @private + * @param {String} method + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {String} line Content of the line + * @param {Number} left + * @param {Number} top + * @param {Number} lineIndex + * @param {Number} charOffset + */ + _renderChars: function(method, ctx, line, left, top, lineIndex) { + // set proper line offset + var lineHeight = this.getHeightOfLine(lineIndex), + isJustify = this.textAlign.indexOf('justify') !== -1, + actualStyle, + nextStyle, + charsToRender = '', + charBox, + boxWidth = 0, + timeToRender, + shortCut = !isJustify && this.charSpacing === 0 && this.isEmptyStyles(lineIndex); + + ctx.save(); + top -= lineHeight * this._fontSizeFraction / this.lineHeight; + if (shortCut) { + // render all the line in one pass without checking + this._renderChar(method, ctx, lineIndex, 0, this.textLines[lineIndex], left, top, lineHeight); + ctx.restore(); + return; + } + for (var i = 0, len = line.length - 1; i <= len; i++) { + timeToRender = i === len || this.charSpacing; + charsToRender += line[i]; + charBox = this.__charBounds[lineIndex][i]; + if (boxWidth === 0) { + left += charBox.kernedWidth - charBox.width; + boxWidth += charBox.width; + } + else { + boxWidth += charBox.kernedWidth; + } + if (isJustify && !timeToRender) { + if (this._reSpaceAndTab.test(line[i])) { + timeToRender = true; + } + } + if (!timeToRender) { + // if we have charSpacing, we render char by char + actualStyle = actualStyle || this.getCompleteStyleDeclaration(lineIndex, i); + nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1); + timeToRender = this._hasStyleChanged(actualStyle, nextStyle); + } + if (timeToRender) { + this._renderChar(method, ctx, lineIndex, i, charsToRender, left, top, lineHeight); + charsToRender = ''; + actualStyle = nextStyle; + left += boxWidth; + boxWidth = 0; + } + } + ctx.restore(); + }, + + /** + * @private + * @param {String} method + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {Number} lineIndex + * @param {Number} charIndex + * @param {String} _char + * @param {Number} left Left coordinate + * @param {Number} top Top coordinate + * @param {Number} lineHeight Height of the line + */ + _renderChar: function(method, ctx, lineIndex, charIndex, _char, left, top) { + var decl = this._getStyleDeclaration(lineIndex, charIndex), + fullDecl = this.getCompleteStyleDeclaration(lineIndex, charIndex), + shouldFill = method === 'fillText' && fullDecl.fill, + shouldStroke = method === 'strokeText' && fullDecl.stroke && fullDecl.strokeWidth; + + if (!shouldStroke && !shouldFill) { + return; + } + decl && ctx.save(); + + this._applyCharStyles(method, ctx, lineIndex, charIndex, fullDecl); + + if (decl && decl.textBackgroundColor) { + this._removeShadow(ctx); + } + if (decl && decl.deltaY) { + top += decl.deltaY; + } + + shouldFill && ctx.fillText(_char, left, top); + shouldStroke && ctx.strokeText(_char, left, top); + decl && ctx.restore(); + }, + + /** + * Turns the character into a 'superior figure' (i.e. 'superscript') + * @param {Number} start selection start + * @param {Number} end selection end + * @returns {fabric.Text} thisArg + * @chainable + */ + setSuperscript: function(start, end) { + return this._setScript(start, end, this.superscript); + }, + + /** + * Turns the character into an 'inferior figure' (i.e. 'subscript') + * @param {Number} start selection start + * @param {Number} end selection end + * @returns {fabric.Text} thisArg + * @chainable + */ + setSubscript: function(start, end) { + return this._setScript(start, end, this.subscript); + }, + + /** + * Applies 'schema' at given position + * @private + * @param {Number} start selection start + * @param {Number} end selection end + * @param {Number} schema + * @returns {fabric.Text} thisArg + * @chainable + */ + _setScript: function(start, end, schema) { + var loc = this.get2DCursorLocation(start, true), + fontSize = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'fontSize'), + dy = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'deltaY'), + style = { fontSize: fontSize * schema.size, deltaY: dy + fontSize * schema.baseline }; + this.setSelectionStyles(style, start, end); + return this; + }, + + /** + * @private + * @param {Object} prevStyle + * @param {Object} thisStyle + */ + _hasStyleChanged: function(prevStyle, thisStyle) { + return prevStyle.fill !== thisStyle.fill || + prevStyle.stroke !== thisStyle.stroke || + prevStyle.strokeWidth !== thisStyle.strokeWidth || + prevStyle.fontSize !== thisStyle.fontSize || + prevStyle.fontFamily !== thisStyle.fontFamily || + prevStyle.fontWeight !== thisStyle.fontWeight || + prevStyle.fontStyle !== thisStyle.fontStyle || + prevStyle.deltaY !== thisStyle.deltaY; + }, + + /** + * @private + * @param {Object} prevStyle + * @param {Object} thisStyle + */ + _hasStyleChangedForSvg: function(prevStyle, thisStyle) { + return this._hasStyleChanged(prevStyle, thisStyle) || + prevStyle.overline !== thisStyle.overline || + prevStyle.underline !== thisStyle.underline || + prevStyle.linethrough !== thisStyle.linethrough; + }, + + /** + * @private + * @param {Number} lineIndex index text line + * @return {Number} Line left offset + */ + _getLineLeftOffset: function(lineIndex) { + var lineWidth = this.getLineWidth(lineIndex); + if (this.textAlign === 'center') { + return (this.width - lineWidth) / 2; + } + if (this.textAlign === 'right') { + return this.width - lineWidth; + } + if (this.textAlign === 'justify-center' && this.isEndOfWrapping(lineIndex)) { + return (this.width - lineWidth) / 2; + } + if (this.textAlign === 'justify-right' && this.isEndOfWrapping(lineIndex)) { + return this.width - lineWidth; + } + return 0; + }, + + /** + * @private + */ + _clearCache: function() { + this.__lineWidths = []; + this.__lineHeights = []; + this.__charBounds = []; + }, + + /** + * @private + */ + _shouldClearDimensionCache: function() { + var shouldClear = this._forceClearCache; + shouldClear || (shouldClear = this.hasStateChanged('_dimensionAffectingProps')); + if (shouldClear) { + this.dirty = true; + this._forceClearCache = false; + } + return shouldClear; + }, + + /** + * Measure a single line given its index. Used to calculate the initial + * text bounding box. The values are calculated and stored in __lineWidths cache. + * @private + * @param {Number} lineIndex line number + * @return {Number} Line width + */ + getLineWidth: function(lineIndex) { + if (this.__lineWidths[lineIndex]) { + return this.__lineWidths[lineIndex]; + } + + var width, line = this._textLines[lineIndex], lineInfo; + + if (line === '') { + width = 0; + } + else { + lineInfo = this.measureLine(lineIndex); + width = lineInfo.width; + } + this.__lineWidths[lineIndex] = width; + return width; + }, + + _getWidthOfCharSpacing: function() { + if (this.charSpacing !== 0) { + return this.fontSize * this.charSpacing / 1000; + } + return 0; + }, + + /** + * Retrieves the value of property at given character position + * @param {Number} lineIndex the line number + * @param {Number} charIndex the charater number + * @param {String} property the property name + * @returns the value of 'property' + */ + getValueOfPropertyAt: function(lineIndex, charIndex, property) { + var charStyle = this._getStyleDeclaration(lineIndex, charIndex); + if (charStyle && typeof charStyle[property] !== 'undefined') { + return charStyle[property]; + } + return this[property]; + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderTextDecoration: function(ctx, type) { + if (!this[type] && !this.styleHas(type)) { + return; + } + var heightOfLine, size, _size, + lineLeftOffset, dy, _dy, + line, lastDecoration, + leftOffset = this._getLeftOffset(), + topOffset = this._getTopOffset(), top, + boxStart, boxWidth, charBox, currentDecoration, + maxHeight, currentFill, lastFill, + charSpacing = this._getWidthOfCharSpacing(); + + for (var i = 0, len = this._textLines.length; i < len; i++) { + heightOfLine = this.getHeightOfLine(i); + if (!this[type] && !this.styleHas(type, i)) { + topOffset += heightOfLine; + continue; + } + line = this._textLines[i]; + maxHeight = heightOfLine / this.lineHeight; + lineLeftOffset = this._getLineLeftOffset(i); + boxStart = 0; + boxWidth = 0; + lastDecoration = this.getValueOfPropertyAt(i, 0, type); + lastFill = this.getValueOfPropertyAt(i, 0, 'fill'); + top = topOffset + maxHeight * (1 - this._fontSizeFraction); + size = this.getHeightOfChar(i, 0); + dy = this.getValueOfPropertyAt(i, 0, 'deltaY'); + for (var j = 0, jlen = line.length; j < jlen; j++) { + charBox = this.__charBounds[i][j]; + currentDecoration = this.getValueOfPropertyAt(i, j, type); + currentFill = this.getValueOfPropertyAt(i, j, 'fill'); + _size = this.getHeightOfChar(i, j); + _dy = this.getValueOfPropertyAt(i, j, 'deltaY'); + if ((currentDecoration !== lastDecoration || currentFill !== lastFill || _size !== size || _dy !== dy) && + boxWidth > 0) { + ctx.fillStyle = lastFill; + lastDecoration && lastFill && ctx.fillRect( + leftOffset + lineLeftOffset + boxStart, + top + this.offsets[type] * size + dy, + boxWidth, + this.fontSize / 15 + ); + boxStart = charBox.left; + boxWidth = charBox.width; + lastDecoration = currentDecoration; + lastFill = currentFill; + size = _size; + dy = _dy; + } + else { + boxWidth += charBox.kernedWidth; + } + } + ctx.fillStyle = currentFill; + currentDecoration && currentFill && ctx.fillRect( + leftOffset + lineLeftOffset + boxStart, + top + this.offsets[type] * size + dy, + boxWidth - charSpacing, + this.fontSize / 15 + ); + topOffset += heightOfLine; + } + // if there is text background color no + // other shadows should be casted + this._removeShadow(ctx); + }, + + /** + * return font declaration string for canvas context + * @param {Object} [styleObject] object + * @returns {String} font declaration formatted for canvas context. + */ + _getFontDeclaration: function(styleObject, forMeasuring) { + var style = styleObject || this, family = this.fontFamily, + fontIsGeneric = fabric.Text.genericFonts.indexOf(family.toLowerCase()) > -1; + var fontFamily = family === undefined || + family.indexOf('\'') > -1 || family.indexOf(',') > -1 || + family.indexOf('"') > -1 || fontIsGeneric + ? style.fontFamily : '"' + style.fontFamily + '"'; + return [ + // node-canvas needs "weight style", while browsers need "style weight" + // verify if this can be fixed in JSDOM + (fabric.isLikelyNode ? style.fontWeight : style.fontStyle), + (fabric.isLikelyNode ? style.fontStyle : style.fontWeight), + forMeasuring ? this.CACHE_FONT_SIZE + 'px' : style.fontSize + 'px', + fontFamily + ].join(' '); + }, + + /** + * Renders text instance on a specified context + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + render: function(ctx) { + // do not render if object is not visible + if (!this.visible) { + return; + } + if (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen()) { + return; + } + if (this._shouldClearDimensionCache()) { + this.initDimensions(); + } + this.callSuper('render', ctx); + }, + + /** + * Returns the text as an array of lines. + * @param {String} text text to split + * @returns {Array} Lines in the text + */ + _splitTextIntoLines: function(text) { + var lines = text.split(this._reNewline), + newLines = new Array(lines.length), + newLine = ['\n'], + newText = []; + for (var i = 0; i < lines.length; i++) { + newLines[i] = fabric.util.string.graphemeSplit(lines[i]); + newText = newText.concat(newLines[i], newLine); + } + newText.pop(); + return { _unwrappedLines: newLines, lines: lines, graphemeText: newText, graphemeLines: newLines }; + }, + + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} Object representation of an instance + */ + toObject: function(propertiesToInclude) { + var additionalProperties = [ + 'text', + 'fontSize', + 'fontWeight', + 'fontFamily', + 'fontStyle', + 'lineHeight', + 'underline', + 'overline', + 'linethrough', + 'textAlign', + 'textBackgroundColor', + 'charSpacing', + ].concat(propertiesToInclude); + var obj = this.callSuper('toObject', additionalProperties); + obj.styles = clone(this.styles, true); + return obj; + }, + + /** + * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`. + * @param {String|Object} key Property name or object (if object, iterate over the object properties) + * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one) + * @return {fabric.Object} thisArg + * @chainable + */ + set: function(key, value) { + this.callSuper('set', key, value); + var needsDims = false; + if (typeof key === 'object') { + for (var _key in key) { + needsDims = needsDims || this._dimensionAffectingProps.indexOf(_key) !== -1; + } + } + else { + needsDims = this._dimensionAffectingProps.indexOf(key) !== -1; + } + if (needsDims) { + this.initDimensions(); + this.setCoords(); + } + return this; + }, + + /** + * Returns complexity of an instance + * @return {Number} complexity + */ + complexity: function() { + return 1; + } + }); + + /* _FROM_SVG_START_ */ + /** + * List of attribute names to account for when parsing SVG element (used by {@link fabric.Text.fromElement}) + * @static + * @memberOf fabric.Text + * @see: http://www.w3.org/TR/SVG/text.html#TextElement + */ + fabric.Text.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat( + 'x y dx dy font-family font-style font-weight font-size letter-spacing text-decoration text-anchor'.split(' ')); + + /** + * Default SVG font size + * @static + * @memberOf fabric.Text + */ + fabric.Text.DEFAULT_SVG_FONT_SIZE = 16; + + /** + * Returns fabric.Text instance from an SVG element (not yet implemented) + * @static + * @memberOf fabric.Text + * @param {SVGElement} element Element to parse + * @param {Function} callback callback function invoked after parsing + * @param {Object} [options] Options object + */ + fabric.Text.fromElement = function(element, callback, options) { + if (!element) { + return callback(null); + } + + var parsedAttributes = fabric.parseAttributes(element, fabric.Text.ATTRIBUTE_NAMES), + parsedAnchor = parsedAttributes.textAnchor || 'left'; + options = fabric.util.object.extend((options ? clone(options) : { }), parsedAttributes); + + options.top = options.top || 0; + options.left = options.left || 0; + if (parsedAttributes.textDecoration) { + var textDecoration = parsedAttributes.textDecoration; + if (textDecoration.indexOf('underline') !== -1) { + options.underline = true; + } + if (textDecoration.indexOf('overline') !== -1) { + options.overline = true; + } + if (textDecoration.indexOf('line-through') !== -1) { + options.linethrough = true; + } + delete options.textDecoration; + } + if ('dx' in parsedAttributes) { + options.left += parsedAttributes.dx; + } + if ('dy' in parsedAttributes) { + options.top += parsedAttributes.dy; + } + if (!('fontSize' in options)) { + options.fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE; + } + + var textContent = ''; + + // The XML is not properly parsed in IE9 so a workaround to get + // textContent is through firstChild.data. Another workaround would be + // to convert XML loaded from a file to be converted using DOMParser (same way loadSVGFromString() does) + if (!('textContent' in element)) { + if ('firstChild' in element && element.firstChild !== null) { + if ('data' in element.firstChild && element.firstChild.data !== null) { + textContent = element.firstChild.data; + } + } + } + else { + textContent = element.textContent; + } + + textContent = textContent.replace(/^\s+|\s+$|\n+/g, '').replace(/\s+/g, ' '); + var originalStrokeWidth = options.strokeWidth; + options.strokeWidth = 0; + + var text = new fabric.Text(textContent, options), + textHeightScaleFactor = text.getScaledHeight() / text.height, + lineHeightDiff = (text.height + text.strokeWidth) * text.lineHeight - text.height, + scaledDiff = lineHeightDiff * textHeightScaleFactor, + textHeight = text.getScaledHeight() + scaledDiff, + offX = 0; + /* + Adjust positioning: + x/y attributes in SVG correspond to the bottom-left corner of text bounding box + fabric output by default at top, left. + */ + if (parsedAnchor === 'center') { + offX = text.getScaledWidth() / 2; + } + if (parsedAnchor === 'right') { + offX = text.getScaledWidth(); + } + text.set({ + left: text.left - offX, + top: text.top - (textHeight - text.fontSize * (0.07 + text._fontSizeFraction)) / text.lineHeight, + strokeWidth: typeof originalStrokeWidth !== 'undefined' ? originalStrokeWidth : 1, + }); + callback(text); + }; + /* _FROM_SVG_END_ */ + + /** + * Returns fabric.Text instance from an object representation + * @static + * @memberOf fabric.Text + * @param {Object} object Object to create an instance from + * @param {Function} [callback] Callback to invoke when an fabric.Text instance is created + */ + fabric.Text.fromObject = function(object, callback) { + return fabric.Object._fromObject('Text', object, callback, 'text'); + }; + + fabric.Text.genericFonts = ['sans-serif', 'serif', 'cursive', 'fantasy', 'monospace']; + + fabric.util.createAccessors && fabric.util.createAccessors(fabric.Text); + +})(typeof exports !== 'undefined' ? exports : this); + + +(function() { + fabric.util.object.extend(fabric.Text.prototype, /** @lends fabric.Text.prototype */ { + /** + * Returns true if object has no styling or no styling in a line + * @param {Number} lineIndex , lineIndex is on wrapped lines. + * @return {Boolean} + */ + isEmptyStyles: function(lineIndex) { + if (!this.styles) { + return true; + } + if (typeof lineIndex !== 'undefined' && !this.styles[lineIndex]) { + return true; + } + var obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] }; + for (var p1 in obj) { + for (var p2 in obj[p1]) { + // eslint-disable-next-line no-unused-vars + for (var p3 in obj[p1][p2]) { + return false; + } + } + } + return true; + }, + + /** + * Returns true if object has a style property or has it ina specified line + * This function is used to detect if a text will use a particular property or not. + * @param {String} property to check for + * @param {Number} lineIndex to check the style on + * @return {Boolean} + */ + styleHas: function(property, lineIndex) { + if (!this.styles || !property || property === '') { + return false; + } + if (typeof lineIndex !== 'undefined' && !this.styles[lineIndex]) { + return false; + } + var obj = typeof lineIndex === 'undefined' ? this.styles : { 0: this.styles[lineIndex] }; + // eslint-disable-next-line + for (var p1 in obj) { + // eslint-disable-next-line + for (var p2 in obj[p1]) { + if (typeof obj[p1][p2][property] !== 'undefined') { + return true; + } + } + } + return false; + }, + + /** + * Check if characters in a text have a value for a property + * whose value matches the textbox's value for that property. If so, + * the character-level property is deleted. If the character + * has no other properties, then it is also deleted. Finally, + * if the line containing that character has no other characters + * then it also is deleted. + * + * @param {string} property The property to compare between characters and text. + */ + cleanStyle: function(property) { + if (!this.styles || !property || property === '') { + return false; + } + var obj = this.styles, stylesCount = 0, letterCount, stylePropertyValue, + allStyleObjectPropertiesMatch = true, graphemeCount = 0, styleObject; + // eslint-disable-next-line + for (var p1 in obj) { + letterCount = 0; + // eslint-disable-next-line + for (var p2 in obj[p1]) { + var styleObject = obj[p1][p2], + stylePropertyHasBeenSet = styleObject.hasOwnProperty(property); + + stylesCount++; + + if (stylePropertyHasBeenSet) { + if (!stylePropertyValue) { + stylePropertyValue = styleObject[property]; + } + else if (styleObject[property] !== stylePropertyValue) { + allStyleObjectPropertiesMatch = false; + } + + if (styleObject[property] === this[property]) { + delete styleObject[property]; + } + } + else { + allStyleObjectPropertiesMatch = false; + } + + if (Object.keys(styleObject).length !== 0) { + letterCount++; + } + else { + delete obj[p1][p2]; + } + } + + if (letterCount === 0) { + delete obj[p1]; + } + } + // if every grapheme has the same style set then + // delete those styles and set it on the parent + for (var i = 0; i < this._textLines.length; i++) { + graphemeCount += this._textLines[i].length; + } + if (allStyleObjectPropertiesMatch && stylesCount === graphemeCount) { + this[property] = stylePropertyValue; + this.removeStyle(property); + } + }, + + /** + * Remove a style property or properties from all individual character styles + * in a text object. Deletes the character style object if it contains no other style + * props. Deletes a line style object if it contains no other character styles. + * + * @param {String} props The property to remove from character styles. + */ + removeStyle: function(property) { + if (!this.styles || !property || property === '') { + return; + } + var obj = this.styles, line, lineNum, charNum; + for (lineNum in obj) { + line = obj[lineNum]; + for (charNum in line) { + delete line[charNum][property]; + if (Object.keys(line[charNum]).length === 0) { + delete line[charNum]; + } + } + if (Object.keys(line).length === 0) { + delete obj[lineNum]; + } + } + }, + + /** + * @private + */ + _extendStyles: function(index, styles) { + var loc = this.get2DCursorLocation(index); + + if (!this._getLineStyle(loc.lineIndex)) { + this._setLineStyle(loc.lineIndex); + } + + if (!this._getStyleDeclaration(loc.lineIndex, loc.charIndex)) { + this._setStyleDeclaration(loc.lineIndex, loc.charIndex, {}); + } + + fabric.util.object.extend(this._getStyleDeclaration(loc.lineIndex, loc.charIndex), styles); + }, + + /** + * Returns 2d representation (lineIndex and charIndex) of cursor (or selection start) + * @param {Number} [selectionStart] Optional index. When not given, current selectionStart is used. + * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. usefull to manage styles. + */ + get2DCursorLocation: function(selectionStart, skipWrapping) { + if (typeof selectionStart === 'undefined') { + selectionStart = this.selectionStart; + } + var lines = skipWrapping ? this._unwrappedTextLines : this._textLines, + len = lines.length; + for (var i = 0; i < len; i++) { + if (selectionStart <= lines[i].length) { + return { + lineIndex: i, + charIndex: selectionStart + }; + } + selectionStart -= lines[i].length + this.missingNewlineOffset(i); + } + return { + lineIndex: i - 1, + charIndex: lines[i - 1].length < selectionStart ? lines[i - 1].length : selectionStart + }; + }, + + /** + * Gets style of a current selection/cursor (at the start position) + * if startIndex or endIndex are not provided, slectionStart or selectionEnd will be used. + * @param {Number} [startIndex] Start index to get styles at + * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1 + * @param {Boolean} [complete] get full style or not + * @return {Array} styles an array with one, zero or more Style objects + */ + getSelectionStyles: function(startIndex, endIndex, complete) { + if (typeof startIndex === 'undefined') { + startIndex = this.selectionStart || 0; + } + if (typeof endIndex === 'undefined') { + endIndex = this.selectionEnd || startIndex; + } + var styles = []; + for (var i = startIndex; i < endIndex; i++) { + styles.push(this.getStyleAtPosition(i, complete)); + } + return styles; + }, + + /** + * Gets style of a current selection/cursor position + * @param {Number} position to get styles at + * @param {Boolean} [complete] full style if true + * @return {Object} style Style object at a specified index + * @private + */ + getStyleAtPosition: function(position, complete) { + var loc = this.get2DCursorLocation(position), + style = complete ? this.getCompleteStyleDeclaration(loc.lineIndex, loc.charIndex) : + this._getStyleDeclaration(loc.lineIndex, loc.charIndex); + return style || {}; + }, + + /** + * Sets style of a current selection, if no selection exist, do not set anything. + * @param {Object} [styles] Styles object + * @param {Number} [startIndex] Start index to get styles at + * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1 + * @return {fabric.IText} thisArg + * @chainable + */ + setSelectionStyles: function(styles, startIndex, endIndex) { + if (typeof startIndex === 'undefined') { + startIndex = this.selectionStart || 0; + } + if (typeof endIndex === 'undefined') { + endIndex = this.selectionEnd || startIndex; + } + for (var i = startIndex; i < endIndex; i++) { + this._extendStyles(i, styles); + } + /* not included in _extendStyles to avoid clearing cache more than once */ + this._forceClearCache = true; + return this; + }, + + /** + * get the reference, not a clone, of the style object for a given character + * @param {Number} lineIndex + * @param {Number} charIndex + * @return {Object} style object + */ + _getStyleDeclaration: function(lineIndex, charIndex) { + var lineStyle = this.styles && this.styles[lineIndex]; + if (!lineStyle) { + return null; + } + return lineStyle[charIndex]; + }, + + /** + * return a new object that contains all the style property for a character + * the object returned is newly created + * @param {Number} lineIndex of the line where the character is + * @param {Number} charIndex position of the character on the line + * @return {Object} style object + */ + getCompleteStyleDeclaration: function(lineIndex, charIndex) { + var style = this._getStyleDeclaration(lineIndex, charIndex) || { }, + styleObject = { }, prop; + for (var i = 0; i < this._styleProperties.length; i++) { + prop = this._styleProperties[i]; + styleObject[prop] = typeof style[prop] === 'undefined' ? this[prop] : style[prop]; + } + return styleObject; + }, + + /** + * @param {Number} lineIndex + * @param {Number} charIndex + * @param {Object} style + * @private + */ + _setStyleDeclaration: function(lineIndex, charIndex, style) { + this.styles[lineIndex][charIndex] = style; + }, + + /** + * + * @param {Number} lineIndex + * @param {Number} charIndex + * @private + */ + _deleteStyleDeclaration: function(lineIndex, charIndex) { + delete this.styles[lineIndex][charIndex]; + }, + + /** + * @param {Number} lineIndex + * @return {Boolean} if the line exists or not + * @private + */ + _getLineStyle: function(lineIndex) { + return !!this.styles[lineIndex]; + }, + + /** + * Set the line style to an empty object so that is initialized + * @param {Number} lineIndex + * @private + */ + _setLineStyle: function(lineIndex) { + this.styles[lineIndex] = {}; + }, + + /** + * @param {Number} lineIndex + * @private + */ + _deleteLineStyle: function(lineIndex) { + delete this.styles[lineIndex]; + } + }); +})(); + + +(function() { + + function parseDecoration(object) { + if (object.textDecoration) { + object.textDecoration.indexOf('underline') > -1 && (object.underline = true); + object.textDecoration.indexOf('line-through') > -1 && (object.linethrough = true); + object.textDecoration.indexOf('overline') > -1 && (object.overline = true); + delete object.textDecoration; + } + } + + /** + * IText class (introduced in v1.4) Events are also fired with "text:" + * prefix when observing canvas. + * @class fabric.IText + * @extends fabric.Text + * @mixes fabric.Observable + * + * @fires changed + * @fires selection:changed + * @fires editing:entered + * @fires editing:exited + * + * @return {fabric.IText} thisArg + * @see {@link fabric.IText#initialize} for constructor definition + * + *

Supported key combinations:

+ *
+   *   Move cursor:                    left, right, up, down
+   *   Select character:               shift + left, shift + right
+   *   Select text vertically:         shift + up, shift + down
+   *   Move cursor by word:            alt + left, alt + right
+   *   Select words:                   shift + alt + left, shift + alt + right
+   *   Move cursor to line start/end:  cmd + left, cmd + right or home, end
+   *   Select till start/end of line:  cmd + shift + left, cmd + shift + right or shift + home, shift + end
+   *   Jump to start/end of text:      cmd + up, cmd + down
+   *   Select till start/end of text:  cmd + shift + up, cmd + shift + down or shift + pgUp, shift + pgDown
+   *   Delete character:               backspace
+   *   Delete word:                    alt + backspace
+   *   Delete line:                    cmd + backspace
+   *   Forward delete:                 delete
+   *   Copy text:                      ctrl/cmd + c
+   *   Paste text:                     ctrl/cmd + v
+   *   Cut text:                       ctrl/cmd + x
+   *   Select entire text:             ctrl/cmd + a
+   *   Quit editing                    tab or esc
+   * 
+ * + *

Supported mouse/touch combination

+ *
+   *   Position cursor:                click/touch
+   *   Create selection:               click/touch & drag
+   *   Create selection:               click & shift + click
+   *   Select word:                    double click
+   *   Select line:                    triple click
+   * 
+ */ + fabric.IText = fabric.util.createClass(fabric.Text, fabric.Observable, /** @lends fabric.IText.prototype */ { + + /** + * Type of an object + * @type String + * @default + */ + type: 'i-text', + + /** + * Index where text selection starts (or where cursor is when there is no selection) + * @type Number + * @default + */ + selectionStart: 0, + + /** + * Index where text selection ends + * @type Number + * @default + */ + selectionEnd: 0, + + /** + * Color of text selection + * @type String + * @default + */ + selectionColor: 'rgba(17,119,255,0.3)', + + /** + * Indicates whether text is in editing mode + * @type Boolean + * @default + */ + isEditing: false, + + /** + * Indicates whether a text can be edited + * @type Boolean + * @default + */ + editable: true, + + /** + * Border color of text object while it's in editing mode + * @type String + * @default + */ + editingBorderColor: 'rgba(102,153,255,0.25)', + + /** + * Width of cursor (in px) + * @type Number + * @default + */ + cursorWidth: 2, + + /** + * Color of default cursor (when not overwritten by character style) + * @type String + * @default + */ + cursorColor: '#333', + + /** + * Delay between cursor blink (in ms) + * @type Number + * @default + */ + cursorDelay: 1000, + + /** + * Duration of cursor fadein (in ms) + * @type Number + * @default + */ + cursorDuration: 600, + + /** + * Indicates whether internal text char widths can be cached + * @type Boolean + * @default + */ + caching: true, + + /** + * @private + */ + _reSpace: /\s|\n/, + + /** + * @private + */ + _currentCursorOpacity: 0, + + /** + * @private + */ + _selectionDirection: null, + + /** + * @private + */ + _abortCursorAnimation: false, + + /** + * @private + */ + __widthOfSpace: [], + + /** + * Helps determining when the text is in composition, so that the cursor + * rendering is altered. + */ + inCompositionMode: false, + + /** + * Constructor + * @param {String} text Text string + * @param {Object} [options] Options object + * @return {fabric.IText} thisArg + */ + initialize: function(text, options) { + this.callSuper('initialize', text, options); + this.initBehavior(); + }, + + /** + * Sets selection start (left boundary of a selection) + * @param {Number} index Index to set selection start to + */ + setSelectionStart: function(index) { + index = Math.max(index, 0); + this._updateAndFire('selectionStart', index); + }, + + /** + * Sets selection end (right boundary of a selection) + * @param {Number} index Index to set selection end to + */ + setSelectionEnd: function(index) { + index = Math.min(index, this.text.length); + this._updateAndFire('selectionEnd', index); + }, + + /** + * @private + * @param {String} property 'selectionStart' or 'selectionEnd' + * @param {Number} index new position of property + */ + _updateAndFire: function(property, index) { + if (this[property] !== index) { + this._fireSelectionChanged(); + this[property] = index; + } + this._updateTextarea(); + }, + + /** + * Fires the even of selection changed + * @private + */ + _fireSelectionChanged: function() { + this.fire('selection:changed'); + this.canvas && this.canvas.fire('text:selection:changed', { target: this }); + }, + + /** + * Initialize text dimensions. Render all text on given context + * or on a offscreen canvas to get the text width with measureText. + * Updates this.width and this.height with the proper values. + * Does not return dimensions. + * @private + */ + initDimensions: function() { + this.isEditing && this.initDelayedCursor(); + this.clearContextTop(); + this.callSuper('initDimensions'); + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + render: function(ctx) { + this.clearContextTop(); + this.callSuper('render', ctx); + // clear the cursorOffsetCache, so we ensure to calculate once per renderCursor + // the correct position but not at every cursor animation. + this.cursorOffsetCache = { }; + this.renderCursorOrSelection(); + }, + + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(ctx) { + this.callSuper('_render', ctx); + }, + + /** + * Prepare and clean the contextTop + */ + clearContextTop: function(skipRestore) { + if (!this.isEditing || !this.canvas || !this.canvas.contextTop) { + return; + } + var ctx = this.canvas.contextTop, v = this.canvas.viewportTransform; + ctx.save(); + ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); + this.transform(ctx); + this.transformMatrix && ctx.transform.apply(ctx, this.transformMatrix); + this._clearTextArea(ctx); + skipRestore || ctx.restore(); + }, + + /** + * Renders cursor or selection (depending on what exists) + * it does on the contextTop. If contextTop is not available, do nothing. + */ + renderCursorOrSelection: function() { + if (!this.isEditing || !this.canvas || !this.canvas.contextTop) { + return; + } + var boundaries = this._getCursorBoundaries(), + ctx = this.canvas.contextTop; + this.clearContextTop(true); + if (this.selectionStart === this.selectionEnd) { + this.renderCursor(boundaries, ctx); + } + else { + this.renderSelection(boundaries, ctx); + } + ctx.restore(); + }, + + _clearTextArea: function(ctx) { + // we add 4 pixel, to be sure to do not leave any pixel out + var width = this.width + 4, height = this.height + 4; + ctx.clearRect(-width / 2, -height / 2, width, height); + }, + + /** + * Returns cursor boundaries (left, top, leftOffset, topOffset) + * @private + * @param {Array} chars Array of characters + * @param {String} typeOfBoundaries + */ + _getCursorBoundaries: function(position) { + + // left/top are left/top of entire text box + // leftOffset/topOffset are offset from that left/top point of a text box + + if (typeof position === 'undefined') { + position = this.selectionStart; + } + + var left = this._getLeftOffset(), + top = this._getTopOffset(), + offsets = this._getCursorBoundariesOffsets(position); + + return { + left: left, + top: top, + leftOffset: offsets.left, + topOffset: offsets.top + }; + }, + + /** + * @private + */ + _getCursorBoundariesOffsets: function(position) { + if (this.cursorOffsetCache && 'top' in this.cursorOffsetCache) { + return this.cursorOffsetCache; + } + var lineLeftOffset, + lineIndex, + charIndex, + topOffset = 0, + leftOffset = 0, + boundaries, + cursorPosition = this.get2DCursorLocation(position); + charIndex = cursorPosition.charIndex; + lineIndex = cursorPosition.lineIndex; + for (var i = 0; i < lineIndex; i++) { + topOffset += this.getHeightOfLine(i); + } + lineLeftOffset = this._getLineLeftOffset(lineIndex); + var bound = this.__charBounds[lineIndex][charIndex]; + bound && (leftOffset = bound.left); + if (this.charSpacing !== 0 && charIndex === this._textLines[lineIndex].length) { + leftOffset -= this._getWidthOfCharSpacing(); + } + boundaries = { + top: topOffset, + left: lineLeftOffset + (leftOffset > 0 ? leftOffset : 0), + }; + this.cursorOffsetCache = boundaries; + return this.cursorOffsetCache; + }, + + /** + * Renders cursor + * @param {Object} boundaries + * @param {CanvasRenderingContext2D} ctx transformed context to draw on + */ + renderCursor: function(boundaries, ctx) { + var cursorLocation = this.get2DCursorLocation(), + lineIndex = cursorLocation.lineIndex, + charIndex = cursorLocation.charIndex > 0 ? cursorLocation.charIndex - 1 : 0, + charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize'), + multiplier = this.scaleX * this.canvas.getZoom(), + cursorWidth = this.cursorWidth / multiplier, + topOffset = boundaries.topOffset, + dy = this.getValueOfPropertyAt(lineIndex, charIndex, 'deltaY'); + + topOffset += (1 - this._fontSizeFraction) * this.getHeightOfLine(lineIndex) / this.lineHeight + - charHeight * (1 - this._fontSizeFraction); + + if (this.inCompositionMode) { + this.renderSelection(boundaries, ctx); + } + + ctx.fillStyle = this.getValueOfPropertyAt(lineIndex, charIndex, 'fill'); + ctx.globalAlpha = this.__isMousedown ? 1 : this._currentCursorOpacity; + ctx.fillRect( + boundaries.left + boundaries.leftOffset - cursorWidth / 2, + topOffset + boundaries.top + dy, + cursorWidth, + charHeight); + }, + + /** + * Renders text selection + * @param {Object} boundaries Object with left/top/leftOffset/topOffset + * @param {CanvasRenderingContext2D} ctx transformed context to draw on + */ + renderSelection: function(boundaries, ctx) { + + var selectionStart = this.inCompositionMode ? this.hiddenTextarea.selectionStart : this.selectionStart, + selectionEnd = this.inCompositionMode ? this.hiddenTextarea.selectionEnd : this.selectionEnd, + isJustify = this.textAlign.indexOf('justify') !== -1, + start = this.get2DCursorLocation(selectionStart), + end = this.get2DCursorLocation(selectionEnd), + startLine = start.lineIndex, + endLine = end.lineIndex, + startChar = start.charIndex < 0 ? 0 : start.charIndex, + endChar = end.charIndex < 0 ? 0 : end.charIndex; + + for (var i = startLine; i <= endLine; i++) { + var lineOffset = this._getLineLeftOffset(i) || 0, + lineHeight = this.getHeightOfLine(i), + realLineHeight = 0, boxStart = 0, boxEnd = 0; + + if (i === startLine) { + boxStart = this.__charBounds[startLine][startChar].left; + } + if (i >= startLine && i < endLine) { + boxEnd = isJustify && !this.isEndOfWrapping(i) ? this.width : this.getLineWidth(i) || 5; // WTF is this 5? + } + else if (i === endLine) { + if (endChar === 0) { + boxEnd = this.__charBounds[endLine][endChar].left; + } + else { + var charSpacing = this._getWidthOfCharSpacing(); + boxEnd = this.__charBounds[endLine][endChar - 1].left + + this.__charBounds[endLine][endChar - 1].width - charSpacing; + } + } + realLineHeight = lineHeight; + if (this.lineHeight < 1 || (i === endLine && this.lineHeight > 1)) { + lineHeight /= this.lineHeight; + } + if (this.inCompositionMode) { + ctx.fillStyle = this.compositionColor || 'black'; + ctx.fillRect( + boundaries.left + lineOffset + boxStart, + boundaries.top + boundaries.topOffset + lineHeight, + boxEnd - boxStart, + 1); + } + else { + ctx.fillStyle = this.selectionColor; + ctx.fillRect( + boundaries.left + lineOffset + boxStart, + boundaries.top + boundaries.topOffset, + boxEnd - boxStart, + lineHeight); + } + + + boundaries.topOffset += realLineHeight; + } + }, + + /** + * High level function to know the height of the cursor. + * the currentChar is the one that precedes the cursor + * Returns fontSize of char at the current cursor + * @return {Number} Character font size + */ + getCurrentCharFontSize: function() { + var cp = this._getCurrentCharIndex(); + return this.getValueOfPropertyAt(cp.l, cp.c, 'fontSize'); + }, + + /** + * High level function to know the color of the cursor. + * the currentChar is the one that precedes the cursor + * Returns color (fill) of char at the current cursor + * @return {String} Character color (fill) + */ + getCurrentCharColor: function() { + var cp = this._getCurrentCharIndex(); + return this.getValueOfPropertyAt(cp.l, cp.c, 'fill'); + }, + + /** + * Returns the cursor position for the getCurrent.. functions + * @private + */ + _getCurrentCharIndex: function() { + var cursorPosition = this.get2DCursorLocation(this.selectionStart, true), + charIndex = cursorPosition.charIndex > 0 ? cursorPosition.charIndex - 1 : 0; + return { l: cursorPosition.lineIndex, c: charIndex }; + } + }); + + /** + * Returns fabric.IText instance from an object representation + * @static + * @memberOf fabric.IText + * @param {Object} object Object to create an instance from + * @param {function} [callback] invoked with new instance as argument + */ + fabric.IText.fromObject = function(object, callback) { + parseDecoration(object); + if (object.styles) { + for (var i in object.styles) { + for (var j in object.styles[i]) { + parseDecoration(object.styles[i][j]); + } + } + } + fabric.Object._fromObject('IText', object, callback, 'text'); + }; +})(); + + +(function() { + + var clone = fabric.util.object.clone; + + fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ { + + /** + * Initializes all the interactive behavior of IText + */ + initBehavior: function() { + this.initAddedHandler(); + this.initRemovedHandler(); + this.initCursorSelectionHandlers(); + this.initDoubleClickSimulation(); + this.mouseMoveHandler = this.mouseMoveHandler.bind(this); + }, + + onDeselect: function() { + this.isEditing && this.exitEditing(); + this.selected = false; + }, + + /** + * Initializes "added" event handler + */ + initAddedHandler: function() { + var _this = this; + this.on('added', function() { + var canvas = _this.canvas; + if (canvas) { + if (!canvas._hasITextHandlers) { + canvas._hasITextHandlers = true; + _this._initCanvasHandlers(canvas); + } + canvas._iTextInstances = canvas._iTextInstances || []; + canvas._iTextInstances.push(_this); + } + }); + }, + + initRemovedHandler: function() { + var _this = this; + this.on('removed', function() { + var canvas = _this.canvas; + if (canvas) { + canvas._iTextInstances = canvas._iTextInstances || []; + fabric.util.removeFromArray(canvas._iTextInstances, _this); + if (canvas._iTextInstances.length === 0) { + canvas._hasITextHandlers = false; + _this._removeCanvasHandlers(canvas); + } + } + }); + }, + + /** + * register canvas event to manage exiting on other instances + * @private + */ + _initCanvasHandlers: function(canvas) { + canvas._mouseUpITextHandler = function() { + if (canvas._iTextInstances) { + canvas._iTextInstances.forEach(function(obj) { + obj.__isMousedown = false; + }); + } + }; + canvas.on('mouse:up', canvas._mouseUpITextHandler); + }, + + /** + * remove canvas event to manage exiting on other instances + * @private + */ + _removeCanvasHandlers: function(canvas) { + canvas.off('mouse:up', canvas._mouseUpITextHandler); + }, + + /** + * @private + */ + _tick: function() { + this._currentTickState = this._animateCursor(this, 1, this.cursorDuration, '_onTickComplete'); + }, + + /** + * @private + */ + _animateCursor: function(obj, targetOpacity, duration, completeMethod) { + + var tickState; + + tickState = { + isAborted: false, + abort: function() { + this.isAborted = true; + }, + }; + + obj.animate('_currentCursorOpacity', targetOpacity, { + duration: duration, + onComplete: function() { + if (!tickState.isAborted) { + obj[completeMethod](); + } + }, + onChange: function() { + // we do not want to animate a selection, only cursor + if (obj.canvas && obj.selectionStart === obj.selectionEnd) { + obj.renderCursorOrSelection(); + } + }, + abort: function() { + return tickState.isAborted; + } + }); + return tickState; + }, + + /** + * @private + */ + _onTickComplete: function() { + + var _this = this; + + if (this._cursorTimeout1) { + clearTimeout(this._cursorTimeout1); + } + this._cursorTimeout1 = setTimeout(function() { + _this._currentTickCompleteState = _this._animateCursor(_this, 0, this.cursorDuration / 2, '_tick'); + }, 100); + }, + + /** + * Initializes delayed cursor + */ + initDelayedCursor: function(restart) { + var _this = this, + delay = restart ? 0 : this.cursorDelay; + + this.abortCursorAnimation(); + this._currentCursorOpacity = 1; + this._cursorTimeout2 = setTimeout(function() { + _this._tick(); + }, delay); + }, + + /** + * Aborts cursor animation and clears all timeouts + */ + abortCursorAnimation: function() { + var shouldClear = this._currentTickState || this._currentTickCompleteState, + canvas = this.canvas; + this._currentTickState && this._currentTickState.abort(); + this._currentTickCompleteState && this._currentTickCompleteState.abort(); + + clearTimeout(this._cursorTimeout1); + clearTimeout(this._cursorTimeout2); + + this._currentCursorOpacity = 0; + // to clear just itext area we need to transform the context + // it may not be worth it + if (shouldClear && canvas) { + canvas.clearContext(canvas.contextTop || canvas.contextContainer); + } + + }, + + /** + * Selects entire text + * @return {fabric.IText} thisArg + * @chainable + */ + selectAll: function() { + this.selectionStart = 0; + this.selectionEnd = this._text.length; + this._fireSelectionChanged(); + this._updateTextarea(); + return this; + }, + + /** + * Returns selected text + * @return {String} + */ + getSelectedText: function() { + return this._text.slice(this.selectionStart, this.selectionEnd).join(''); + }, + + /** + * Find new selection index representing start of current word according to current selection index + * @param {Number} startFrom Current selection index + * @return {Number} New selection index + */ + findWordBoundaryLeft: function(startFrom) { + var offset = 0, index = startFrom - 1; + + // remove space before cursor first + if (this._reSpace.test(this._text[index])) { + while (this._reSpace.test(this._text[index])) { + offset++; + index--; + } + } + while (/\S/.test(this._text[index]) && index > -1) { + offset++; + index--; + } + + return startFrom - offset; + }, + + /** + * Find new selection index representing end of current word according to current selection index + * @param {Number} startFrom Current selection index + * @return {Number} New selection index + */ + findWordBoundaryRight: function(startFrom) { + var offset = 0, index = startFrom; + + // remove space after cursor first + if (this._reSpace.test(this._text[index])) { + while (this._reSpace.test(this._text[index])) { + offset++; + index++; + } + } + while (/\S/.test(this._text[index]) && index < this._text.length) { + offset++; + index++; + } + + return startFrom + offset; + }, + + /** + * Find new selection index representing start of current line according to current selection index + * @param {Number} startFrom Current selection index + * @return {Number} New selection index + */ + findLineBoundaryLeft: function(startFrom) { + var offset = 0, index = startFrom - 1; + + while (!/\n/.test(this._text[index]) && index > -1) { + offset++; + index--; + } + + return startFrom - offset; + }, + + /** + * Find new selection index representing end of current line according to current selection index + * @param {Number} startFrom Current selection index + * @return {Number} New selection index + */ + findLineBoundaryRight: function(startFrom) { + var offset = 0, index = startFrom; + + while (!/\n/.test(this._text[index]) && index < this._text.length) { + offset++; + index++; + } + + return startFrom + offset; + }, + + /** + * Finds index corresponding to beginning or end of a word + * @param {Number} selectionStart Index of a character + * @param {Number} direction 1 or -1 + * @return {Number} Index of the beginning or end of a word + */ + searchWordBoundary: function(selectionStart, direction) { + var text = this._text, + index = this._reSpace.test(text[selectionStart]) ? selectionStart - 1 : selectionStart, + _char = text[index], + // wrong + reNonWord = fabric.reNonWord; + + while (!reNonWord.test(_char) && index > 0 && index < text.length) { + index += direction; + _char = text[index]; + } + if (reNonWord.test(_char)) { + index += direction === 1 ? 0 : 1; + } + return index; + }, + + /** + * Selects a word based on the index + * @param {Number} selectionStart Index of a character + */ + selectWord: function(selectionStart) { + selectionStart = selectionStart || this.selectionStart; + var newSelectionStart = this.searchWordBoundary(selectionStart, -1), /* search backwards */ + newSelectionEnd = this.searchWordBoundary(selectionStart, 1); /* search forward */ + + this.selectionStart = newSelectionStart; + this.selectionEnd = newSelectionEnd; + this._fireSelectionChanged(); + this._updateTextarea(); + this.renderCursorOrSelection(); + }, + + /** + * Selects a line based on the index + * @param {Number} selectionStart Index of a character + * @return {fabric.IText} thisArg + * @chainable + */ + selectLine: function(selectionStart) { + selectionStart = selectionStart || this.selectionStart; + var newSelectionStart = this.findLineBoundaryLeft(selectionStart), + newSelectionEnd = this.findLineBoundaryRight(selectionStart); + + this.selectionStart = newSelectionStart; + this.selectionEnd = newSelectionEnd; + this._fireSelectionChanged(); + this._updateTextarea(); + return this; + }, + + /** + * Enters editing state + * @return {fabric.IText} thisArg + * @chainable + */ + enterEditing: function(e) { + if (this.isEditing || !this.editable) { + return; + } + + if (this.canvas) { + this.canvas.calcOffset(); + this.exitEditingOnOthers(this.canvas); + } + + this.isEditing = true; + + this.initHiddenTextarea(e); + this.hiddenTextarea.focus(); + this.hiddenTextarea.value = this.text; + this._updateTextarea(); + this._saveEditingProps(); + this._setEditingProps(); + this._textBeforeEdit = this.text; + + this._tick(); + this.fire('editing:entered'); + this._fireSelectionChanged(); + if (!this.canvas) { + return this; + } + this.canvas.fire('text:editing:entered', { target: this }); + this.initMouseMoveHandler(); + this.canvas.requestRenderAll(); + return this; + }, + + exitEditingOnOthers: function(canvas) { + if (canvas._iTextInstances) { + canvas._iTextInstances.forEach(function(obj) { + obj.selected = false; + if (obj.isEditing) { + obj.exitEditing(); + } + }); + } + }, + + /** + * Initializes "mousemove" event handler + */ + initMouseMoveHandler: function() { + this.canvas.on('mouse:move', this.mouseMoveHandler); + }, + + /** + * @private + */ + mouseMoveHandler: function(options) { + if (!this.__isMousedown || !this.isEditing) { + return; + } + + var newSelectionStart = this.getSelectionStartFromPointer(options.e), + currentStart = this.selectionStart, + currentEnd = this.selectionEnd; + if ( + (newSelectionStart !== this.__selectionStartOnMouseDown || currentStart === currentEnd) + && + (currentStart === newSelectionStart || currentEnd === newSelectionStart) + ) { + return; + } + if (newSelectionStart > this.__selectionStartOnMouseDown) { + this.selectionStart = this.__selectionStartOnMouseDown; + this.selectionEnd = newSelectionStart; + } + else { + this.selectionStart = newSelectionStart; + this.selectionEnd = this.__selectionStartOnMouseDown; + } + if (this.selectionStart !== currentStart || this.selectionEnd !== currentEnd) { + this.restartCursorIfNeeded(); + this._fireSelectionChanged(); + this._updateTextarea(); + this.renderCursorOrSelection(); + } + }, + + /** + * @private + */ + _setEditingProps: function() { + this.hoverCursor = 'text'; + + if (this.canvas) { + this.canvas.defaultCursor = this.canvas.moveCursor = 'text'; + } + + this.borderColor = this.editingBorderColor; + this.hasControls = this.selectable = false; + this.lockMovementX = this.lockMovementY = true; + }, + + /** + * convert from textarea to grapheme indexes + */ + fromStringToGraphemeSelection: function(start, end, text) { + var smallerTextStart = text.slice(0, start), + graphemeStart = fabric.util.string.graphemeSplit(smallerTextStart).length; + if (start === end) { + return { selectionStart: graphemeStart, selectionEnd: graphemeStart }; + } + var smallerTextEnd = text.slice(start, end), + graphemeEnd = fabric.util.string.graphemeSplit(smallerTextEnd).length; + return { selectionStart: graphemeStart, selectionEnd: graphemeStart + graphemeEnd }; + }, + + /** + * convert from fabric to textarea values + */ + fromGraphemeToStringSelection: function(start, end, _text) { + var smallerTextStart = _text.slice(0, start), + graphemeStart = smallerTextStart.join('').length; + if (start === end) { + return { selectionStart: graphemeStart, selectionEnd: graphemeStart }; + } + var smallerTextEnd = _text.slice(start, end), + graphemeEnd = smallerTextEnd.join('').length; + return { selectionStart: graphemeStart, selectionEnd: graphemeStart + graphemeEnd }; + }, + + /** + * @private + */ + _updateTextarea: function() { + this.cursorOffsetCache = { }; + if (!this.hiddenTextarea) { + return; + } + if (!this.inCompositionMode) { + var newSelection = this.fromGraphemeToStringSelection(this.selectionStart, this.selectionEnd, this._text); + this.hiddenTextarea.selectionStart = newSelection.selectionStart; + this.hiddenTextarea.selectionEnd = newSelection.selectionEnd; + } + this.updateTextareaPosition(); + }, + + /** + * @private + */ + updateFromTextArea: function() { + if (!this.hiddenTextarea) { + return; + } + this.cursorOffsetCache = { }; + this.text = this.hiddenTextarea.value; + if (this._shouldClearDimensionCache()) { + this.initDimensions(); + this.setCoords(); + } + var newSelection = this.fromStringToGraphemeSelection( + this.hiddenTextarea.selectionStart, this.hiddenTextarea.selectionEnd, this.hiddenTextarea.value); + this.selectionEnd = this.selectionStart = newSelection.selectionEnd; + if (!this.inCompositionMode) { + this.selectionStart = newSelection.selectionStart; + } + this.updateTextareaPosition(); + }, + + /** + * @private + */ + updateTextareaPosition: function() { + if (this.selectionStart === this.selectionEnd) { + var style = this._calcTextareaPosition(); + this.hiddenTextarea.style.left = style.left; + this.hiddenTextarea.style.top = style.top; + } + }, + + /** + * @private + * @return {Object} style contains style for hiddenTextarea + */ + _calcTextareaPosition: function() { + if (!this.canvas) { + return { x: 1, y: 1 }; + } + var desiredPosition = this.inCompositionMode ? this.compositionStart : this.selectionStart, + boundaries = this._getCursorBoundaries(desiredPosition), + cursorLocation = this.get2DCursorLocation(desiredPosition), + lineIndex = cursorLocation.lineIndex, + charIndex = cursorLocation.charIndex, + charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize') * this.lineHeight, + leftOffset = boundaries.leftOffset, + m = this.calcTransformMatrix(), + p = { + x: boundaries.left + leftOffset, + y: boundaries.top + boundaries.topOffset + charHeight + }, + retinaScaling = this.canvas.getRetinaScaling(), + upperCanvas = this.canvas.upperCanvasEl, + upperCanvasWidth = upperCanvas.width / retinaScaling, + upperCanvasHeight = upperCanvas.height / retinaScaling, + maxWidth = upperCanvasWidth - charHeight, + maxHeight = upperCanvasHeight - charHeight, + scaleX = upperCanvas.clientWidth / upperCanvasWidth, + scaleY = upperCanvas.clientHeight / upperCanvasHeight; + + p = fabric.util.transformPoint(p, m); + p = fabric.util.transformPoint(p, this.canvas.viewportTransform); + p.x *= scaleX; + p.y *= scaleY; + if (p.x < 0) { + p.x = 0; + } + if (p.x > maxWidth) { + p.x = maxWidth; + } + if (p.y < 0) { + p.y = 0; + } + if (p.y > maxHeight) { + p.y = maxHeight; + } + + // add canvas offset on document + p.x += this.canvas._offset.left; + p.y += this.canvas._offset.top; + + return { left: p.x + 'px', top: p.y + 'px', fontSize: charHeight + 'px', charHeight: charHeight }; + }, + + /** + * @private + */ + _saveEditingProps: function() { + this._savedProps = { + hasControls: this.hasControls, + borderColor: this.borderColor, + lockMovementX: this.lockMovementX, + lockMovementY: this.lockMovementY, + hoverCursor: this.hoverCursor, + selectable: this.selectable, + defaultCursor: this.canvas && this.canvas.defaultCursor, + moveCursor: this.canvas && this.canvas.moveCursor + }; + }, + + /** + * @private + */ + _restoreEditingProps: function() { + if (!this._savedProps) { + return; + } + + this.hoverCursor = this._savedProps.hoverCursor; + this.hasControls = this._savedProps.hasControls; + this.borderColor = this._savedProps.borderColor; + this.selectable = this._savedProps.selectable; + this.lockMovementX = this._savedProps.lockMovementX; + this.lockMovementY = this._savedProps.lockMovementY; + + if (this.canvas) { + this.canvas.defaultCursor = this._savedProps.defaultCursor; + this.canvas.moveCursor = this._savedProps.moveCursor; + } + }, + + /** + * Exits from editing state + * @return {fabric.IText} thisArg + * @chainable + */ + exitEditing: function() { + var isTextChanged = (this._textBeforeEdit !== this.text); + this.selected = false; + this.isEditing = false; + + this.selectionEnd = this.selectionStart; + + if (this.hiddenTextarea) { + this.hiddenTextarea.blur && this.hiddenTextarea.blur(); + this.canvas && this.hiddenTextarea.parentNode.removeChild(this.hiddenTextarea); + this.hiddenTextarea = null; + } + + this.abortCursorAnimation(); + this._restoreEditingProps(); + this._currentCursorOpacity = 0; + if (this._shouldClearDimensionCache()) { + this.initDimensions(); + this.setCoords(); + } + this.fire('editing:exited'); + isTextChanged && this.fire('modified'); + if (this.canvas) { + this.canvas.off('mouse:move', this.mouseMoveHandler); + this.canvas.fire('text:editing:exited', { target: this }); + isTextChanged && this.canvas.fire('object:modified', { target: this }); + } + return this; + }, + + /** + * @private + */ + _removeExtraneousStyles: function() { + for (var prop in this.styles) { + if (!this._textLines[prop]) { + delete this.styles[prop]; + } + } + }, + + /** + * remove and reflow a style block from start to end. + * @param {Number} start linear start position for removal (included in removal) + * @param {Number} end linear end position for removal ( excluded from removal ) + */ + removeStyleFromTo: function(start, end) { + var cursorStart = this.get2DCursorLocation(start, true), + cursorEnd = this.get2DCursorLocation(end, true), + lineStart = cursorStart.lineIndex, + charStart = cursorStart.charIndex, + lineEnd = cursorEnd.lineIndex, + charEnd = cursorEnd.charIndex, + i, styleObj; + if (lineStart !== lineEnd) { + // step1 remove the trailing of lineStart + if (this.styles[lineStart]) { + for (i = charStart; i < this._unwrappedTextLines[lineStart].length; i++) { + delete this.styles[lineStart][i]; + } + } + // step2 move the trailing of lineEnd to lineStart if needed + if (this.styles[lineEnd]) { + for (i = charEnd; i < this._unwrappedTextLines[lineEnd].length; i++) { + styleObj = this.styles[lineEnd][i]; + if (styleObj) { + this.styles[lineStart] || (this.styles[lineStart] = { }); + this.styles[lineStart][charStart + i - charEnd] = styleObj; + } + } + } + // step3 detects lines will be completely removed. + for (i = lineStart + 1; i <= lineEnd; i++) { + delete this.styles[i]; + } + // step4 shift remaining lines. + this.shiftLineStyles(lineEnd, lineStart - lineEnd); + } + else { + // remove and shift left on the same line + if (this.styles[lineStart]) { + styleObj = this.styles[lineStart]; + var diff = charEnd - charStart, numericChar, _char; + for (i = charStart; i < charEnd; i++) { + delete styleObj[i]; + } + for (_char in this.styles[lineStart]) { + numericChar = parseInt(_char, 10); + if (numericChar >= charEnd) { + styleObj[numericChar - diff] = styleObj[_char]; + delete styleObj[_char]; + } + } + } + } + }, + + /** + * Shifts line styles up or down + * @param {Number} lineIndex Index of a line + * @param {Number} offset Can any number? + */ + shiftLineStyles: function(lineIndex, offset) { + // shift all line styles by offset upward or downward + // do not clone deep. we need new array, not new style objects + var clonedStyles = clone(this.styles); + for (var line in this.styles) { + var numericLine = parseInt(line, 10); + if (numericLine > lineIndex) { + this.styles[numericLine + offset] = clonedStyles[numericLine]; + if (!clonedStyles[numericLine - offset]) { + delete this.styles[numericLine]; + } + } + } + }, + + restartCursorIfNeeded: function() { + if (!this._currentTickState || this._currentTickState.isAborted + || !this._currentTickCompleteState || this._currentTickCompleteState.isAborted + ) { + this.initDelayedCursor(); + } + }, + + /** + * Inserts new style object + * @param {Number} lineIndex Index of a line + * @param {Number} charIndex Index of a char + * @param {Number} qty number of lines to add + * @param {Array} copiedStyle Array of objects styles + */ + insertNewlineStyleObject: function(lineIndex, charIndex, qty, copiedStyle) { + var currentCharStyle, + newLineStyles = {}, + somethingAdded = false; + + qty || (qty = 1); + this.shiftLineStyles(lineIndex, qty); + if (this.styles[lineIndex]) { + currentCharStyle = this.styles[lineIndex][charIndex === 0 ? charIndex : charIndex - 1]; + } + + // we clone styles of all chars + // after cursor onto the current line + for (var index in this.styles[lineIndex]) { + var numIndex = parseInt(index, 10); + if (numIndex >= charIndex) { + somethingAdded = true; + newLineStyles[numIndex - charIndex] = this.styles[lineIndex][index]; + // remove lines from the previous line since they're on a new line now + delete this.styles[lineIndex][index]; + } + } + if (somethingAdded) { + this.styles[lineIndex + qty] = newLineStyles; + } + else { + delete this.styles[lineIndex + qty]; + } + // for the other lines + // we clone current char style onto the next (otherwise empty) line + while (qty > 1) { + qty--; + if (copiedStyle && copiedStyle[qty]) { + this.styles[lineIndex + qty] = { 0: clone(copiedStyle[qty]) }; + } + else if (currentCharStyle) { + this.styles[lineIndex + qty] = { 0: clone(currentCharStyle) }; + } + else { + delete this.styles[lineIndex + qty]; + } + } + this._forceClearCache = true; + }, + + /** + * Inserts style object for a given line/char index + * @param {Number} lineIndex Index of a line + * @param {Number} charIndex Index of a char + * @param {Number} quantity number Style object to insert, if given + * @param {Array} copiedStyle array of style objects + */ + insertCharStyleObject: function(lineIndex, charIndex, quantity, copiedStyle) { + if (!this.styles) { + this.styles = {}; + } + var currentLineStyles = this.styles[lineIndex], + currentLineStylesCloned = currentLineStyles ? clone(currentLineStyles) : {}; + + quantity || (quantity = 1); + // shift all char styles by quantity forward + // 0,1,2,3 -> (charIndex=2) -> 0,1,3,4 -> (insert 2) -> 0,1,2,3,4 + for (var index in currentLineStylesCloned) { + var numericIndex = parseInt(index, 10); + if (numericIndex >= charIndex) { + currentLineStyles[numericIndex + quantity] = currentLineStylesCloned[numericIndex]; + // only delete the style if there was nothing moved there + if (!currentLineStylesCloned[numericIndex - quantity]) { + delete currentLineStyles[numericIndex]; + } + } + } + this._forceClearCache = true; + if (copiedStyle) { + while (quantity--) { + if (!Object.keys(copiedStyle[quantity]).length) { + continue; + } + if (!this.styles[lineIndex]) { + this.styles[lineIndex] = {}; + } + this.styles[lineIndex][charIndex + quantity] = clone(copiedStyle[quantity]); + } + return; + } + if (!currentLineStyles) { + return; + } + var newStyle = currentLineStyles[charIndex ? charIndex - 1 : 1]; + while (newStyle && quantity--) { + this.styles[lineIndex][charIndex + quantity] = clone(newStyle); + } + }, + + /** + * Inserts style object(s) + * @param {Array} insertedText Characters at the location where style is inserted + * @param {Number} start cursor index for inserting style + * @param {Array} [copiedStyle] array of style objects to insert. + */ + insertNewStyleBlock: function(insertedText, start, copiedStyle) { + var cursorLoc = this.get2DCursorLocation(start, true), + addedLines = [0], linesLength = 0; + for (var i = 0; i < insertedText.length; i++) { + if (insertedText[i] === '\n') { + linesLength++; + addedLines[linesLength] = 0; + } + else { + addedLines[linesLength]++; + } + } + if (addedLines[0] > 0) { + this.insertCharStyleObject(cursorLoc.lineIndex, cursorLoc.charIndex, addedLines[0], copiedStyle); + copiedStyle = copiedStyle && copiedStyle.slice(addedLines[0] + 1); + } + linesLength && this.insertNewlineStyleObject( + cursorLoc.lineIndex, cursorLoc.charIndex + addedLines[0], linesLength); + for (var i = 1; i < linesLength; i++) { + if (addedLines[i] > 0) { + this.insertCharStyleObject(cursorLoc.lineIndex + i, 0, addedLines[i], copiedStyle); + } + else if (copiedStyle) { + this.styles[cursorLoc.lineIndex + i][0] = copiedStyle[0]; + } + copiedStyle = copiedStyle && copiedStyle.slice(addedLines[i] + 1); + } + // we use i outside the loop to get it like linesLength + if (addedLines[i] > 0) { + this.insertCharStyleObject(cursorLoc.lineIndex + i, 0, addedLines[i], copiedStyle); + } + }, + + /** + * Set the selectionStart and selectionEnd according to the new position of cursor + * mimic the key - mouse navigation when shift is pressed. + */ + setSelectionStartEndWithShift: function(start, end, newSelection) { + if (newSelection <= start) { + if (end === start) { + this._selectionDirection = 'left'; + } + else if (this._selectionDirection === 'right') { + this._selectionDirection = 'left'; + this.selectionEnd = start; + } + this.selectionStart = newSelection; + } + else if (newSelection > start && newSelection < end) { + if (this._selectionDirection === 'right') { + this.selectionEnd = newSelection; + } + else { + this.selectionStart = newSelection; + } + } + else { + // newSelection is > selection start and end + if (end === start) { + this._selectionDirection = 'right'; + } + else if (this._selectionDirection === 'left') { + this._selectionDirection = 'right'; + this.selectionStart = end; + } + this.selectionEnd = newSelection; + } + }, + + setSelectionInBoundaries: function() { + var length = this.text.length; + if (this.selectionStart > length) { + this.selectionStart = length; + } + else if (this.selectionStart < 0) { + this.selectionStart = 0; + } + if (this.selectionEnd > length) { + this.selectionEnd = length; + } + else if (this.selectionEnd < 0) { + this.selectionEnd = 0; + } + } + }); +})(); + + +fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ { + /** + * Initializes "dbclick" event handler + */ + initDoubleClickSimulation: function() { + + // for double click + this.__lastClickTime = +new Date(); + + // for triple click + this.__lastLastClickTime = +new Date(); + + this.__lastPointer = { }; + + this.on('mousedown', this.onMouseDown); + }, + + /** + * Default event handler to simulate triple click + * @private + */ + onMouseDown: function(options) { + if (!this.canvas) { + return; + } + this.__newClickTime = +new Date(); + var newPointer = options.pointer; + if (this.isTripleClick(newPointer)) { + this.fire('tripleclick', options); + this._stopEvent(options.e); + } + this.__lastLastClickTime = this.__lastClickTime; + this.__lastClickTime = this.__newClickTime; + this.__lastPointer = newPointer; + this.__lastIsEditing = this.isEditing; + this.__lastSelected = this.selected; + }, + + isTripleClick: function(newPointer) { + return this.__newClickTime - this.__lastClickTime < 500 && + this.__lastClickTime - this.__lastLastClickTime < 500 && + this.__lastPointer.x === newPointer.x && + this.__lastPointer.y === newPointer.y; + }, + + /** + * @private + */ + _stopEvent: function(e) { + e.preventDefault && e.preventDefault(); + e.stopPropagation && e.stopPropagation(); + }, + + /** + * Initializes event handlers related to cursor or selection + */ + initCursorSelectionHandlers: function() { + this.initMousedownHandler(); + this.initMouseupHandler(); + this.initClicks(); + }, + + /** + * Default handler for double click, select a word + */ + doubleClickHandler: function(options) { + if (!this.isEditing) { + return; + } + this.selectWord(this.getSelectionStartFromPointer(options.e)); + }, + + /** + * Default handler for triple click, select a line + */ + tripleClickHandler: function(options) { + if (!this.isEditing) { + return; + } + this.selectLine(this.getSelectionStartFromPointer(options.e)); + }, + + /** + * Initializes double and triple click event handlers + */ + initClicks: function() { + this.on('mousedblclick', this.doubleClickHandler); + this.on('tripleclick', this.tripleClickHandler); + }, + + /** + * Default event handler for the basic functionalities needed on _mouseDown + * can be overridden to do something different. + * Scope of this implementation is: find the click position, set selectionStart + * find selectionEnd, initialize the drawing of either cursor or selection area + */ + _mouseDownHandler: function(options) { + if (!this.canvas || !this.editable || (options.e.button && options.e.button !== 1)) { + return; + } + + this.__isMousedown = true; + + if (this.selected) { + this.setCursorByClick(options.e); + } + + if (this.isEditing) { + this.__selectionStartOnMouseDown = this.selectionStart; + if (this.selectionStart === this.selectionEnd) { + this.abortCursorAnimation(); + } + this.renderCursorOrSelection(); + } + }, + + /** + * Default event handler for the basic functionalities needed on mousedown:before + * can be overridden to do something different. + * Scope of this implementation is: verify the object is already selected when mousing down + */ + _mouseDownHandlerBefore: function(options) { + if (!this.canvas || !this.editable || (options.e.button && options.e.button !== 1)) { + return; + } + // we want to avoid that an object that was selected and then becomes unselectable, + // may trigger editing mode in some way. + this.selected = this === this.canvas._activeObject; + }, + + /** + * Initializes "mousedown" event handler + */ + initMousedownHandler: function() { + this.on('mousedown', this._mouseDownHandler); + this.on('mousedown:before', this._mouseDownHandlerBefore); + }, + + /** + * Initializes "mouseup" event handler + */ + initMouseupHandler: function() { + this.on('mouseup', this.mouseUpHandler); + }, + + /** + * standard hander for mouse up, overridable + * @private + */ + mouseUpHandler: function(options) { + this.__isMousedown = false; + if (!this.editable || this.group || + (options.transform && options.transform.actionPerformed) || + (options.e.button && options.e.button !== 1)) { + return; + } + + if (this.canvas) { + var currentActive = this.canvas._activeObject; + if (currentActive && currentActive !== this) { + // avoid running this logic when there is an active object + // this because is possible with shift click and fast clicks, + // to rapidly deselect and reselect this object and trigger an enterEdit + return; + } + } + + if (this.__lastSelected && !this.__corner) { + this.selected = false; + this.__lastSelected = false; + this.enterEditing(options.e); + if (this.selectionStart === this.selectionEnd) { + this.initDelayedCursor(true); + } + else { + this.renderCursorOrSelection(); + } + } + else { + this.selected = true; + } + }, + + /** + * Changes cursor location in a text depending on passed pointer (x/y) object + * @param {Event} e Event object + */ + setCursorByClick: function(e) { + var newSelection = this.getSelectionStartFromPointer(e), + start = this.selectionStart, end = this.selectionEnd; + if (e.shiftKey) { + this.setSelectionStartEndWithShift(start, end, newSelection); + } + else { + this.selectionStart = newSelection; + this.selectionEnd = newSelection; + } + if (this.isEditing) { + this._fireSelectionChanged(); + this._updateTextarea(); + } + }, + + /** + * Returns index of a character corresponding to where an object was clicked + * @param {Event} e Event object + * @return {Number} Index of a character + */ + getSelectionStartFromPointer: function(e) { + var mouseOffset = this.getLocalPointer(e), + prevWidth = 0, + width = 0, + height = 0, + charIndex = 0, + lineIndex = 0, + lineLeftOffset, + line; + + for (var i = 0, len = this._textLines.length; i < len; i++) { + if (height <= mouseOffset.y) { + height += this.getHeightOfLine(i) * this.scaleY; + lineIndex = i; + if (i > 0) { + charIndex += this._textLines[i - 1].length + this.missingNewlineOffset(i - 1); + } + } + else { + break; + } + } + lineLeftOffset = this._getLineLeftOffset(lineIndex); + width = lineLeftOffset * this.scaleX; + line = this._textLines[lineIndex]; + for (var j = 0, jlen = line.length; j < jlen; j++) { + prevWidth = width; + // i removed something about flipX here, check. + width += this.__charBounds[lineIndex][j].kernedWidth * this.scaleX; + if (width <= mouseOffset.x) { + charIndex++; + } + else { + break; + } + } + return this._getNewSelectionStartFromOffset(mouseOffset, prevWidth, width, charIndex, jlen); + }, + + /** + * @private + */ + _getNewSelectionStartFromOffset: function(mouseOffset, prevWidth, width, index, jlen) { + // we need Math.abs because when width is after the last char, the offset is given as 1, while is 0 + var distanceBtwLastCharAndCursor = mouseOffset.x - prevWidth, + distanceBtwNextCharAndCursor = width - mouseOffset.x, + offset = distanceBtwNextCharAndCursor > distanceBtwLastCharAndCursor || + distanceBtwNextCharAndCursor < 0 ? 0 : 1, + newSelectionStart = index + offset; + // if object is horizontally flipped, mirror cursor location from the end + if (this.flipX) { + newSelectionStart = jlen - newSelectionStart; + } + + if (newSelectionStart > this._text.length) { + newSelectionStart = this._text.length; + } + + return newSelectionStart; + } +}); + + +fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ { + + /** + * Initializes hidden textarea (needed to bring up keyboard in iOS) + */ + initHiddenTextarea: function() { + this.hiddenTextarea = fabric.document.createElement('textarea'); + this.hiddenTextarea.setAttribute('autocapitalize', 'off'); + this.hiddenTextarea.setAttribute('autocorrect', 'off'); + this.hiddenTextarea.setAttribute('autocomplete', 'off'); + this.hiddenTextarea.setAttribute('spellcheck', 'false'); + this.hiddenTextarea.setAttribute('data-fabric-hiddentextarea', ''); + this.hiddenTextarea.setAttribute('wrap', 'off'); + var style = this._calcTextareaPosition(); + // line-height: 1px; was removed from the style to fix this: + // https://bugs.chromium.org/p/chromium/issues/detail?id=870966 + this.hiddenTextarea.style.cssText = 'position: absolute; top: ' + style.top + + '; left: ' + style.left + '; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px;' + + ' paddingーtop: ' + style.fontSize + ';'; + fabric.document.body.appendChild(this.hiddenTextarea); + + fabric.util.addListener(this.hiddenTextarea, 'keydown', this.onKeyDown.bind(this)); + fabric.util.addListener(this.hiddenTextarea, 'keyup', this.onKeyUp.bind(this)); + fabric.util.addListener(this.hiddenTextarea, 'input', this.onInput.bind(this)); + fabric.util.addListener(this.hiddenTextarea, 'copy', this.copy.bind(this)); + fabric.util.addListener(this.hiddenTextarea, 'cut', this.copy.bind(this)); + fabric.util.addListener(this.hiddenTextarea, 'paste', this.paste.bind(this)); + fabric.util.addListener(this.hiddenTextarea, 'compositionstart', this.onCompositionStart.bind(this)); + fabric.util.addListener(this.hiddenTextarea, 'compositionupdate', this.onCompositionUpdate.bind(this)); + fabric.util.addListener(this.hiddenTextarea, 'compositionend', this.onCompositionEnd.bind(this)); + + if (!this._clickHandlerInitialized && this.canvas) { + fabric.util.addListener(this.canvas.upperCanvasEl, 'click', this.onClick.bind(this)); + this._clickHandlerInitialized = true; + } + }, + + /** + * For functionalities on keyDown + * Map a special key to a function of the instance/prototype + * If you need different behaviour for ESC or TAB or arrows, you have to change + * this map setting the name of a function that you build on the fabric.Itext or + * your prototype. + * the map change will affect all Instances unless you need for only some text Instances + * in that case you have to clone this object and assign your Instance. + * this.keysMap = fabric.util.object.clone(this.keysMap); + * The function must be in fabric.Itext.prototype.myFunction And will receive event as args[0] + */ + keysMap: { + 9: 'exitEditing', + 27: 'exitEditing', + 33: 'moveCursorUp', + 34: 'moveCursorDown', + 35: 'moveCursorRight', + 36: 'moveCursorLeft', + 37: 'moveCursorLeft', + 38: 'moveCursorUp', + 39: 'moveCursorRight', + 40: 'moveCursorDown', + }, + + /** + * For functionalities on keyUp + ctrl || cmd + */ + ctrlKeysMapUp: { + 67: 'copy', + 88: 'cut' + }, + + /** + * For functionalities on keyDown + ctrl || cmd + */ + ctrlKeysMapDown: { + 65: 'selectAll' + }, + + onClick: function() { + // No need to trigger click event here, focus is enough to have the keyboard appear on Android + this.hiddenTextarea && this.hiddenTextarea.focus(); + }, + + /** + * Handles keyup event + * @param {Event} e Event object + */ + onKeyDown: function(e) { + if (!this.isEditing || this.inCompositionMode) { + return; + } + if (e.keyCode in this.keysMap) { + this[this.keysMap[e.keyCode]](e); + } + else if ((e.keyCode in this.ctrlKeysMapDown) && (e.ctrlKey || e.metaKey)) { + this[this.ctrlKeysMapDown[e.keyCode]](e); + } + else { + return; + } + e.stopImmediatePropagation(); + e.preventDefault(); + if (e.keyCode >= 33 && e.keyCode <= 40) { + // if i press an arrow key just update selection + this.clearContextTop(); + this.renderCursorOrSelection(); + } + else { + this.canvas && this.canvas.requestRenderAll(); + } + }, + + /** + * Handles keyup event + * We handle KeyUp because ie11 and edge have difficulties copy/pasting + * if a copy/cut event fired, keyup is dismissed + * @param {Event} e Event object + */ + onKeyUp: function(e) { + if (!this.isEditing || this._copyDone || this.inCompositionMode) { + this._copyDone = false; + return; + } + if ((e.keyCode in this.ctrlKeysMapUp) && (e.ctrlKey || e.metaKey)) { + this[this.ctrlKeysMapUp[e.keyCode]](e); + } + else { + return; + } + e.stopImmediatePropagation(); + e.preventDefault(); + this.canvas && this.canvas.requestRenderAll(); + }, + + /** + * Handles onInput event + * @param {Event} e Event object + */ + onInput: function(e) { + var fromPaste = this.fromPaste; + this.fromPaste = false; + e && e.stopPropagation(); + if (!this.isEditing) { + return; + } + // decisions about style changes. + var nextText = this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText, + charCount = this._text.length, + nextCharCount = nextText.length, + removedText, insertedText, + charDiff = nextCharCount - charCount; + if (this.hiddenTextarea.value === '') { + this.styles = { }; + this.updateFromTextArea(); + this.fire('changed'); + if (this.canvas) { + this.canvas.fire('text:changed', { target: this }); + this.canvas.requestRenderAll(); + } + return; + } + + var textareaSelection = this.fromStringToGraphemeSelection( + this.hiddenTextarea.selectionStart, + this.hiddenTextarea.selectionEnd, + this.hiddenTextarea.value + ); + var backDelete = this.selectionStart > textareaSelection.selectionStart; + + if (this.selectionStart !== this.selectionEnd) { + removedText = this._text.slice(this.selectionStart, this.selectionEnd); + charDiff += this.selectionEnd - this.selectionStart; + } + else if (nextCharCount < charCount) { + if (backDelete) { + removedText = this._text.slice(this.selectionEnd + charDiff, this.selectionEnd); + } + else { + removedText = this._text.slice(this.selectionStart, this.selectionStart - charDiff); + } + } + insertedText = nextText.slice(textareaSelection.selectionEnd - charDiff, textareaSelection.selectionEnd); + if (removedText && removedText.length) { + if (this.selectionStart !== this.selectionEnd) { + this.removeStyleFromTo(this.selectionStart, this.selectionEnd); + } + else if (backDelete) { + // detect differencies between forwardDelete and backDelete + this.removeStyleFromTo(this.selectionEnd - removedText.length, this.selectionEnd); + } + else { + this.removeStyleFromTo(this.selectionEnd, this.selectionEnd + removedText.length); + } + } + if (insertedText.length) { + if (fromPaste && insertedText.join('') === fabric.copiedText && !fabric.disableStyleCopyPaste) { + this.insertNewStyleBlock(insertedText, this.selectionStart, fabric.copiedTextStyle); + } + else { + this.insertNewStyleBlock(insertedText, this.selectionStart); + } + } + this.updateFromTextArea(); + this.fire('changed'); + if (this.canvas) { + this.canvas.fire('text:changed', { target: this }); + this.canvas.requestRenderAll(); + } + }, + /** + * Composition start + */ + onCompositionStart: function() { + this.inCompositionMode = true; + }, + + /** + * Composition end + */ + onCompositionEnd: function() { + this.inCompositionMode = false; + }, + + // /** + // * Composition update + // */ + onCompositionUpdate: function(e) { + this.compositionStart = e.target.selectionStart; + this.compositionEnd = e.target.selectionEnd; + this.updateTextareaPosition(); + }, + + /** + * Copies selected text + * @param {Event} e Event object + */ + copy: function() { + if (this.selectionStart === this.selectionEnd) { + //do not cut-copy if no selection + return; + } + + fabric.copiedText = this.getSelectedText(); + if (!fabric.disableStyleCopyPaste) { + fabric.copiedTextStyle = this.getSelectionStyles(this.selectionStart, this.selectionEnd, true); + } + else { + fabric.copiedTextStyle = null; + } + this._copyDone = true; + }, + + /** + * Pastes text + * @param {Event} e Event object + */ + paste: function() { + this.fromPaste = true; + }, + + /** + * @private + * @param {Event} e Event object + * @return {Object} Clipboard data object + */ + _getClipboardData: function(e) { + return (e && e.clipboardData) || fabric.window.clipboardData; + }, + + /** + * Finds the width in pixels before the cursor on the same line + * @private + * @param {Number} lineIndex + * @param {Number} charIndex + * @return {Number} widthBeforeCursor width before cursor + */ + _getWidthBeforeCursor: function(lineIndex, charIndex) { + var widthBeforeCursor = this._getLineLeftOffset(lineIndex), bound; + + if (charIndex > 0) { + bound = this.__charBounds[lineIndex][charIndex - 1]; + widthBeforeCursor += bound.left + bound.width; + } + return widthBeforeCursor; + }, + + /** + * Gets start offset of a selection + * @param {Event} e Event object + * @param {Boolean} isRight + * @return {Number} + */ + getDownCursorOffset: function(e, isRight) { + var selectionProp = this._getSelectionForOffset(e, isRight), + cursorLocation = this.get2DCursorLocation(selectionProp), + lineIndex = cursorLocation.lineIndex; + // if on last line, down cursor goes to end of line + if (lineIndex === this._textLines.length - 1 || e.metaKey || e.keyCode === 34) { + // move to the end of a text + return this._text.length - selectionProp; + } + var charIndex = cursorLocation.charIndex, + widthBeforeCursor = this._getWidthBeforeCursor(lineIndex, charIndex), + indexOnOtherLine = this._getIndexOnLine(lineIndex + 1, widthBeforeCursor), + textAfterCursor = this._textLines[lineIndex].slice(charIndex); + return textAfterCursor.length + indexOnOtherLine + 1 + this.missingNewlineOffset(lineIndex); + }, + + /** + * private + * Helps finding if the offset should be counted from Start or End + * @param {Event} e Event object + * @param {Boolean} isRight + * @return {Number} + */ + _getSelectionForOffset: function(e, isRight) { + if (e.shiftKey && this.selectionStart !== this.selectionEnd && isRight) { + return this.selectionEnd; + } + else { + return this.selectionStart; + } + }, + + /** + * @param {Event} e Event object + * @param {Boolean} isRight + * @return {Number} + */ + getUpCursorOffset: function(e, isRight) { + var selectionProp = this._getSelectionForOffset(e, isRight), + cursorLocation = this.get2DCursorLocation(selectionProp), + lineIndex = cursorLocation.lineIndex; + if (lineIndex === 0 || e.metaKey || e.keyCode === 33) { + // if on first line, up cursor goes to start of line + return -selectionProp; + } + var charIndex = cursorLocation.charIndex, + widthBeforeCursor = this._getWidthBeforeCursor(lineIndex, charIndex), + indexOnOtherLine = this._getIndexOnLine(lineIndex - 1, widthBeforeCursor), + textBeforeCursor = this._textLines[lineIndex].slice(0, charIndex), + missingNewlineOffset = this.missingNewlineOffset(lineIndex - 1); + // return a negative offset + return -this._textLines[lineIndex - 1].length + + indexOnOtherLine - textBeforeCursor.length + (1 - missingNewlineOffset); + }, + + /** + * for a given width it founds the matching character. + * @private + */ + _getIndexOnLine: function(lineIndex, width) { + + var line = this._textLines[lineIndex], + lineLeftOffset = this._getLineLeftOffset(lineIndex), + widthOfCharsOnLine = lineLeftOffset, + indexOnLine = 0, charWidth, foundMatch; + + for (var j = 0, jlen = line.length; j < jlen; j++) { + charWidth = this.__charBounds[lineIndex][j].width; + widthOfCharsOnLine += charWidth; + if (widthOfCharsOnLine > width) { + foundMatch = true; + var leftEdge = widthOfCharsOnLine - charWidth, + rightEdge = widthOfCharsOnLine, + offsetFromLeftEdge = Math.abs(leftEdge - width), + offsetFromRightEdge = Math.abs(rightEdge - width); + + indexOnLine = offsetFromRightEdge < offsetFromLeftEdge ? j : (j - 1); + break; + } + } + + // reached end + if (!foundMatch) { + indexOnLine = line.length - 1; + } + + return indexOnLine; + }, + + + /** + * Moves cursor down + * @param {Event} e Event object + */ + moveCursorDown: function(e) { + if (this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length) { + return; + } + this._moveCursorUpOrDown('Down', e); + }, + + /** + * Moves cursor up + * @param {Event} e Event object + */ + moveCursorUp: function(e) { + if (this.selectionStart === 0 && this.selectionEnd === 0) { + return; + } + this._moveCursorUpOrDown('Up', e); + }, + + /** + * Moves cursor up or down, fires the events + * @param {String} direction 'Up' or 'Down' + * @param {Event} e Event object + */ + _moveCursorUpOrDown: function(direction, e) { + // getUpCursorOffset + // getDownCursorOffset + var action = 'get' + direction + 'CursorOffset', + offset = this[action](e, this._selectionDirection === 'right'); + if (e.shiftKey) { + this.moveCursorWithShift(offset); + } + else { + this.moveCursorWithoutShift(offset); + } + if (offset !== 0) { + this.setSelectionInBoundaries(); + this.abortCursorAnimation(); + this._currentCursorOpacity = 1; + this.initDelayedCursor(); + this._fireSelectionChanged(); + this._updateTextarea(); + } + }, + + /** + * Moves cursor with shift + * @param {Number} offset + */ + moveCursorWithShift: function(offset) { + var newSelection = this._selectionDirection === 'left' + ? this.selectionStart + offset + : this.selectionEnd + offset; + this.setSelectionStartEndWithShift(this.selectionStart, this.selectionEnd, newSelection); + return offset !== 0; + }, + + /** + * Moves cursor up without shift + * @param {Number} offset + */ + moveCursorWithoutShift: function(offset) { + if (offset < 0) { + this.selectionStart += offset; + this.selectionEnd = this.selectionStart; + } + else { + this.selectionEnd += offset; + this.selectionStart = this.selectionEnd; + } + return offset !== 0; + }, + + /** + * Moves cursor left + * @param {Event} e Event object + */ + moveCursorLeft: function(e) { + if (this.selectionStart === 0 && this.selectionEnd === 0) { + return; + } + this._moveCursorLeftOrRight('Left', e); + }, + + /** + * @private + * @return {Boolean} true if a change happened + */ + _move: function(e, prop, direction) { + var newValue; + if (e.altKey) { + newValue = this['findWordBoundary' + direction](this[prop]); + } + else if (e.metaKey || e.keyCode === 35 || e.keyCode === 36 ) { + newValue = this['findLineBoundary' + direction](this[prop]); + } + else { + this[prop] += direction === 'Left' ? -1 : 1; + return true; + } + if (typeof newValue !== undefined && this[prop] !== newValue) { + this[prop] = newValue; + return true; + } + }, + + /** + * @private + */ + _moveLeft: function(e, prop) { + return this._move(e, prop, 'Left'); + }, + + /** + * @private + */ + _moveRight: function(e, prop) { + return this._move(e, prop, 'Right'); + }, + + /** + * Moves cursor left without keeping selection + * @param {Event} e + */ + moveCursorLeftWithoutShift: function(e) { + var change = true; + this._selectionDirection = 'left'; + + // only move cursor when there is no selection, + // otherwise we discard it, and leave cursor on same place + if (this.selectionEnd === this.selectionStart && this.selectionStart !== 0) { + change = this._moveLeft(e, 'selectionStart'); + + } + this.selectionEnd = this.selectionStart; + return change; + }, + + /** + * Moves cursor left while keeping selection + * @param {Event} e + */ + moveCursorLeftWithShift: function(e) { + if (this._selectionDirection === 'right' && this.selectionStart !== this.selectionEnd) { + return this._moveLeft(e, 'selectionEnd'); + } + else if (this.selectionStart !== 0){ + this._selectionDirection = 'left'; + return this._moveLeft(e, 'selectionStart'); + } + }, + + /** + * Moves cursor right + * @param {Event} e Event object + */ + moveCursorRight: function(e) { + if (this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length) { + return; + } + this._moveCursorLeftOrRight('Right', e); + }, + + /** + * Moves cursor right or Left, fires event + * @param {String} direction 'Left', 'Right' + * @param {Event} e Event object + */ + _moveCursorLeftOrRight: function(direction, e) { + var actionName = 'moveCursor' + direction + 'With'; + this._currentCursorOpacity = 1; + + if (e.shiftKey) { + actionName += 'Shift'; + } + else { + actionName += 'outShift'; + } + if (this[actionName](e)) { + this.abortCursorAnimation(); + this.initDelayedCursor(); + this._fireSelectionChanged(); + this._updateTextarea(); + } + }, + + /** + * Moves cursor right while keeping selection + * @param {Event} e + */ + moveCursorRightWithShift: function(e) { + if (this._selectionDirection === 'left' && this.selectionStart !== this.selectionEnd) { + return this._moveRight(e, 'selectionStart'); + } + else if (this.selectionEnd !== this._text.length) { + this._selectionDirection = 'right'; + return this._moveRight(e, 'selectionEnd'); + } + }, + + /** + * Moves cursor right without keeping selection + * @param {Event} e Event object + */ + moveCursorRightWithoutShift: function(e) { + var changed = true; + this._selectionDirection = 'right'; + + if (this.selectionStart === this.selectionEnd) { + changed = this._moveRight(e, 'selectionStart'); + this.selectionEnd = this.selectionStart; + } + else { + this.selectionStart = this.selectionEnd; + } + return changed; + }, + + /** + * Removes characters from start/end + * start/end ar per grapheme position in _text array. + * + * @param {Number} start + * @param {Number} end default to start + 1 + */ + removeChars: function(start, end) { + if (typeof end === 'undefined') { + end = start + 1; + } + this.removeStyleFromTo(start, end); + this._text.splice(start, end - start); + this.text = this._text.join(''); + this.set('dirty', true); + if (this._shouldClearDimensionCache()) { + this.initDimensions(); + this.setCoords(); + } + this._removeExtraneousStyles(); + }, + + /** + * insert characters at start position, before start position. + * start equal 1 it means the text get inserted between actual grapheme 0 and 1 + * if style array is provided, it must be as the same length of text in graphemes + * if end is provided and is bigger than start, old text is replaced. + * start/end ar per grapheme position in _text array. + * + * @param {String} text text to insert + * @param {Array} style array of style objects + * @param {Number} start + * @param {Number} end default to start + 1 + */ + insertChars: function(text, style, start, end) { + if (typeof end === 'undefined') { + end = start; + } + if (end > start) { + this.removeStyleFromTo(start, end); + } + var graphemes = fabric.util.string.graphemeSplit(text); + this.insertNewStyleBlock(graphemes, start, style); + this._text = [].concat(this._text.slice(0, start), graphemes, this._text.slice(end)); + this.text = this._text.join(''); + this.set('dirty', true); + if (this._shouldClearDimensionCache()) { + this.initDimensions(); + this.setCoords(); + } + this._removeExtraneousStyles(); + }, + +}); + + +/* _TO_SVG_START_ */ +(function() { + var toFixed = fabric.util.toFixed, + multipleSpacesRegex = / +/g; + + fabric.util.object.extend(fabric.Text.prototype, /** @lends fabric.Text.prototype */ { + + /** + * Returns SVG representation of an instance + * @param {Function} [reviver] Method for further parsing of svg representation. + * @return {String} svg representation of an instance + */ + _toSVG: function() { + var offsets = this._getSVGLeftTopOffsets(), + textAndBg = this._getSVGTextAndBg(offsets.textTop, offsets.textLeft); + return this._wrapSVGTextAndBg(textAndBg); + }, + + /** + * Returns svg representation of an instance + * @param {Function} [reviver] Method for further parsing of svg representation. + * @return {String} svg representation of an instance + */ + toSVG: function(reviver) { + return this._createBaseSVGMarkup( + this._toSVG(), + { reviver: reviver, noStyle: true, withShadow: true } + ); + }, + + /** + * @private + */ + _getSVGLeftTopOffsets: function() { + return { + textLeft: -this.width / 2, + textTop: -this.height / 2, + lineTop: this.getHeightOfLine(0) + }; + }, + + /** + * @private + */ + _wrapSVGTextAndBg: function(textAndBg) { + var noShadow = true, + textDecoration = this.getSvgTextDecoration(this); + return [ + textAndBg.textBgRects.join(''), + '\t\t', + textAndBg.textSpans.join(''), + '\n' + ]; + }, + + /** + * @private + * @param {Number} textTopOffset Text top offset + * @param {Number} textLeftOffset Text left offset + * @return {Object} + */ + _getSVGTextAndBg: function(textTopOffset, textLeftOffset) { + var textSpans = [], + textBgRects = [], + height = textTopOffset, lineOffset; + // bounding-box background + this._setSVGBg(textBgRects); + + // text and text-background + for (var i = 0, len = this._textLines.length; i < len; i++) { + lineOffset = this._getLineLeftOffset(i); + if (this.textBackgroundColor || this.styleHas('textBackgroundColor', i)) { + this._setSVGTextLineBg(textBgRects, i, textLeftOffset + lineOffset, height); + } + this._setSVGTextLineText(textSpans, i, textLeftOffset + lineOffset, height); + height += this.getHeightOfLine(i); + } + + return { + textSpans: textSpans, + textBgRects: textBgRects + }; + }, + + /** + * @private + */ + _createTextCharSpan: function(_char, styleDecl, left, top) { + var shouldUseWhitespace = _char !== _char.trim() || _char.match(multipleSpacesRegex), + styleProps = this.getSvgSpanStyles(styleDecl, shouldUseWhitespace), + fillStyles = styleProps ? 'style="' + styleProps + '"' : '', + dy = styleDecl.deltaY, dySpan = '', + NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS; + if (dy) { + dySpan = ' dy="' + toFixed(dy, NUM_FRACTION_DIGITS) + '" '; + } + return [ + '', + fabric.util.string.escapeXml(_char), + '' + ].join(''); + }, + + _setSVGTextLineText: function(textSpans, lineIndex, textLeftOffset, textTopOffset) { + // set proper line offset + var lineHeight = this.getHeightOfLine(lineIndex), + isJustify = this.textAlign.indexOf('justify') !== -1, + actualStyle, + nextStyle, + charsToRender = '', + charBox, style, + boxWidth = 0, + line = this._textLines[lineIndex], + timeToRender; + + textTopOffset += lineHeight * (1 - this._fontSizeFraction) / this.lineHeight; + for (var i = 0, len = line.length - 1; i <= len; i++) { + timeToRender = i === len || this.charSpacing; + charsToRender += line[i]; + charBox = this.__charBounds[lineIndex][i]; + if (boxWidth === 0) { + textLeftOffset += charBox.kernedWidth - charBox.width; + boxWidth += charBox.width; + } + else { + boxWidth += charBox.kernedWidth; + } + if (isJustify && !timeToRender) { + if (this._reSpaceAndTab.test(line[i])) { + timeToRender = true; + } + } + if (!timeToRender) { + // if we have charSpacing, we render char by char + actualStyle = actualStyle || this.getCompleteStyleDeclaration(lineIndex, i); + nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1); + timeToRender = this._hasStyleChangedForSvg(actualStyle, nextStyle); + } + if (timeToRender) { + style = this._getStyleDeclaration(lineIndex, i) || { }; + textSpans.push(this._createTextCharSpan(charsToRender, style, textLeftOffset, textTopOffset)); + charsToRender = ''; + actualStyle = nextStyle; + textLeftOffset += boxWidth; + boxWidth = 0; + } + } + }, + + _pushTextBgRect: function(textBgRects, color, left, top, width, height) { + var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS; + textBgRects.push( + '\t\t\n'); + }, + + _setSVGTextLineBg: function(textBgRects, i, leftOffset, textTopOffset) { + var line = this._textLines[i], + heightOfLine = this.getHeightOfLine(i) / this.lineHeight, + boxWidth = 0, + boxStart = 0, + charBox, currentColor, + lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor'); + for (var j = 0, jlen = line.length; j < jlen; j++) { + charBox = this.__charBounds[i][j]; + currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor'); + if (currentColor !== lastColor) { + lastColor && this._pushTextBgRect(textBgRects, lastColor, leftOffset + boxStart, + textTopOffset, boxWidth, heightOfLine); + boxStart = charBox.left; + boxWidth = charBox.width; + lastColor = currentColor; + } + else { + boxWidth += charBox.kernedWidth; + } + } + currentColor && this._pushTextBgRect(textBgRects, currentColor, leftOffset + boxStart, + textTopOffset, boxWidth, heightOfLine); + }, + + /** + * Adobe Illustrator (at least CS5) is unable to render rgba()-based fill values + * we work around it by "moving" alpha channel into opacity attribute and setting fill's alpha to 1 + * + * @private + * @param {*} value + * @return {String} + */ + _getFillAttributes: function(value) { + var fillColor = (value && typeof value === 'string') ? new fabric.Color(value) : ''; + if (!fillColor || !fillColor.getSource() || fillColor.getAlpha() === 1) { + return 'fill="' + value + '"'; + } + return 'opacity="' + fillColor.getAlpha() + '" fill="' + fillColor.setAlpha(1).toRgb() + '"'; + }, + + /** + * @private + */ + _getSVGLineTopOffset: function(lineIndex) { + var lineTopOffset = 0, lastHeight = 0; + for (var j = 0; j < lineIndex; j++) { + lineTopOffset += this.getHeightOfLine(j); + } + lastHeight = this.getHeightOfLine(j); + return { + lineTop: lineTopOffset, + offset: (this._fontSizeMult - this._fontSizeFraction) * lastHeight / (this.lineHeight * this._fontSizeMult) + }; + }, + + /** + * Returns styles-string for svg-export + * @param {Boolean} skipShadow a boolean to skip shadow filter output + * @return {String} + */ + getSvgStyles: function(skipShadow) { + var svgStyle = fabric.Object.prototype.getSvgStyles.call(this, skipShadow); + return svgStyle + ' white-space: pre;'; + }, + }); +})(); +/* _TO_SVG_END_ */ + + +(function(global) { + + 'use strict'; + + var fabric = global.fabric || (global.fabric = {}); + + /** + * Textbox class, based on IText, allows the user to resize the text rectangle + * and wraps lines automatically. Textboxes have their Y scaling locked, the + * user can only change width. Height is adjusted automatically based on the + * wrapping of lines. + * @class fabric.Textbox + * @extends fabric.IText + * @mixes fabric.Observable + * @return {fabric.Textbox} thisArg + * @see {@link fabric.Textbox#initialize} for constructor definition + */ + fabric.Textbox = fabric.util.createClass(fabric.IText, fabric.Observable, { + + /** + * Type of an object + * @type String + * @default + */ + type: 'textbox', + + /** + * Minimum width of textbox, in pixels. + * @type Number + * @default + */ + minWidth: 20, + + /** + * Minimum calculated width of a textbox, in pixels. + * fixed to 2 so that an empty textbox cannot go to 0 + * and is still selectable without text. + * @type Number + * @default + */ + dynamicMinWidth: 2, + + /** + * Cached array of text wrapping. + * @type Array + */ + __cachedLines: null, + + /** + * Override standard Object class values + */ + lockScalingFlip: true, + + /** + * Override standard Object class values + * Textbox needs this on false + */ + noScaleCache: false, + + /** + * Properties which when set cause object to change dimensions + * @type Object + * @private + */ + _dimensionAffectingProps: fabric.Text.prototype._dimensionAffectingProps.concat('width'), + + /** + * Use this regular expression to split strings in breakable lines + * @private + */ + _wordJoiners: /[ \t\r]/, + + /** + * Use this boolean property in order to split strings that have no white space concept. + * this is a cheap way to help with chinese/japaense + * @type Boolean + * @since 2.6.0 + */ + splitByGrapheme: false, + + /** + * Unlike superclass's version of this function, Textbox does not update + * its width. + * @private + * @override + */ + initDimensions: function() { + if (this.__skipDimension) { + return; + } + this.isEditing && this.initDelayedCursor(); + this.clearContextTop(); + this._clearCache(); + // clear dynamicMinWidth as it will be different after we re-wrap line + this.dynamicMinWidth = 0; + // wrap lines + this._styleMap = this._generateStyleMap(this._splitText()); + // if after wrapping, the width is smaller than dynamicMinWidth, change the width and re-wrap + if (this.dynamicMinWidth > this.width) { + this._set('width', this.dynamicMinWidth); + } + if (this.textAlign.indexOf('justify') !== -1) { + // once text is measured we need to make space fatter to make justified text. + this.enlargeSpaces(); + } + // clear cache and re-calculate height + this.height = this.calcTextHeight(); + this.saveState({ propertySet: '_dimensionAffectingProps' }); + }, + + /** + * Generate an object that translates the style object so that it is + * broken up by visual lines (new lines and automatic wrapping). + * The original text styles object is broken up by actual lines (new lines only), + * which is only sufficient for Text / IText + * @private + */ + _generateStyleMap: function(textInfo) { + var realLineCount = 0, + realLineCharCount = 0, + charCount = 0, + map = {}; + + for (var i = 0; i < textInfo.graphemeLines.length; i++) { + if (textInfo.graphemeText[charCount] === '\n' && i > 0) { + realLineCharCount = 0; + charCount++; + realLineCount++; + } + else if (!this.splitByGrapheme && this._reSpaceAndTab.test(textInfo.graphemeText[charCount]) && i > 0) { + // this case deals with space's that are removed from end of lines when wrapping + realLineCharCount++; + charCount++; + } + + map[i] = { line: realLineCount, offset: realLineCharCount }; + + charCount += textInfo.graphemeLines[i].length; + realLineCharCount += textInfo.graphemeLines[i].length; + } + + return map; + }, + + /** + * Returns true if object has a style property or has it on a specified line + * @param {Number} lineIndex + * @return {Boolean} + */ + styleHas: function(property, lineIndex) { + if (this._styleMap && !this.isWrapping) { + var map = this._styleMap[lineIndex]; + if (map) { + lineIndex = map.line; + } + } + return fabric.Text.prototype.styleHas.call(this, property, lineIndex); + }, + + /** + * Returns true if object has no styling or no styling in a line + * @param {Number} lineIndex , lineIndex is on wrapped lines. + * @return {Boolean} + */ + isEmptyStyles: function(lineIndex) { + if (!this.styles) { + return true; + } + var offset = 0, nextLineIndex = lineIndex + 1, nextOffset, obj, shouldLimit = false, + map = this._styleMap[lineIndex], mapNextLine = this._styleMap[lineIndex + 1]; + if (map) { + lineIndex = map.line; + offset = map.offset; + } + if (mapNextLine) { + nextLineIndex = mapNextLine.line; + shouldLimit = nextLineIndex === lineIndex; + nextOffset = mapNextLine.offset; + } + obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] }; + for (var p1 in obj) { + for (var p2 in obj[p1]) { + if (p2 >= offset && (!shouldLimit || p2 < nextOffset)) { + // eslint-disable-next-line no-unused-vars + for (var p3 in obj[p1][p2]) { + return false; + } + } + } + } + return true; + }, + + /** + * @param {Number} lineIndex + * @param {Number} charIndex + * @private + */ + _getStyleDeclaration: function(lineIndex, charIndex) { + if (this._styleMap && !this.isWrapping) { + var map = this._styleMap[lineIndex]; + if (!map) { + return null; + } + lineIndex = map.line; + charIndex = map.offset + charIndex; + } + return this.callSuper('_getStyleDeclaration', lineIndex, charIndex); + }, + + /** + * @param {Number} lineIndex + * @param {Number} charIndex + * @param {Object} style + * @private + */ + _setStyleDeclaration: function(lineIndex, charIndex, style) { + var map = this._styleMap[lineIndex]; + lineIndex = map.line; + charIndex = map.offset + charIndex; + + this.styles[lineIndex][charIndex] = style; + }, + + /** + * @param {Number} lineIndex + * @param {Number} charIndex + * @private + */ + _deleteStyleDeclaration: function(lineIndex, charIndex) { + var map = this._styleMap[lineIndex]; + lineIndex = map.line; + charIndex = map.offset + charIndex; + delete this.styles[lineIndex][charIndex]; + }, + + /** + * probably broken need a fix + * Returns the real style line that correspond to the wrapped lineIndex line + * Used just to verify if the line does exist or not. + * @param {Number} lineIndex + * @returns {Boolean} if the line exists or not + * @private + */ + _getLineStyle: function(lineIndex) { + var map = this._styleMap[lineIndex]; + return !!this.styles[map.line]; + }, + + /** + * Set the line style to an empty object so that is initialized + * @param {Number} lineIndex + * @param {Object} style + * @private + */ + _setLineStyle: function(lineIndex) { + var map = this._styleMap[lineIndex]; + this.styles[map.line] = {}; + }, + + /** + * Wraps text using the 'width' property of Textbox. First this function + * splits text on newlines, so we preserve newlines entered by the user. + * Then it wraps each line using the width of the Textbox by calling + * _wrapLine(). + * @param {Array} lines The string array of text that is split into lines + * @param {Number} desiredWidth width you want to wrap to + * @returns {Array} Array of lines + */ + _wrapText: function(lines, desiredWidth) { + var wrapped = [], i; + this.isWrapping = true; + for (i = 0; i < lines.length; i++) { + wrapped = wrapped.concat(this._wrapLine(lines[i], i, desiredWidth)); + } + this.isWrapping = false; + return wrapped; + }, + + /** + * Helper function to measure a string of text, given its lineIndex and charIndex offset + * it gets called when charBounds are not available yet. + * @param {CanvasRenderingContext2D} ctx + * @param {String} text + * @param {number} lineIndex + * @param {number} charOffset + * @returns {number} + * @private + */ + _measureWord: function(word, lineIndex, charOffset) { + var width = 0, prevGrapheme, skipLeft = true; + charOffset = charOffset || 0; + for (var i = 0, len = word.length; i < len; i++) { + var box = this._getGraphemeBox(word[i], lineIndex, i + charOffset, prevGrapheme, skipLeft); + width += box.kernedWidth; + prevGrapheme = word[i]; + } + return width; + }, + + /** + * Wraps a line of text using the width of the Textbox and a context. + * @param {Array} line The grapheme array that represent the line + * @param {Number} lineIndex + * @param {Number} desiredWidth width you want to wrap the line to + * @param {Number} reservedSpace space to remove from wrapping for custom functionalities + * @returns {Array} Array of line(s) into which the given text is wrapped + * to. + */ + _wrapLine: function(_line, lineIndex, desiredWidth, reservedSpace) { + var lineWidth = 0, + splitByGrapheme = this.splitByGrapheme, + graphemeLines = [], + line = [], + // spaces in different languges? + words = splitByGrapheme ? fabric.util.string.graphemeSplit(_line) : _line.split(this._wordJoiners), + word = '', + offset = 0, + infix = splitByGrapheme ? '' : ' ', + wordWidth = 0, + infixWidth = 0, + largestWordWidth = 0, + lineJustStarted = true, + additionalSpace = splitByGrapheme ? 0 : this._getWidthOfCharSpacing(), + reservedSpace = reservedSpace || 0; + // fix a difference between split and graphemeSplit + if (words.length === 0) { + words.push([]); + } + desiredWidth -= reservedSpace; + for (var i = 0; i < words.length; i++) { + // if using splitByGrapheme words are already in graphemes. + word = splitByGrapheme ? words[i] : fabric.util.string.graphemeSplit(words[i]); + wordWidth = this._measureWord(word, lineIndex, offset); + offset += word.length; + + lineWidth += infixWidth + wordWidth - additionalSpace; + + if (lineWidth >= desiredWidth && !lineJustStarted) { + graphemeLines.push(line); + line = []; + lineWidth = wordWidth; + lineJustStarted = true; + } + else { + lineWidth += additionalSpace; + } + + if (!lineJustStarted && !splitByGrapheme) { + line.push(infix); + } + line = line.concat(word); + + infixWidth = this._measureWord([infix], lineIndex, offset); + offset++; + lineJustStarted = false; + // keep track of largest word + if (wordWidth > largestWordWidth) { + largestWordWidth = wordWidth; + } + } + + i && graphemeLines.push(line); + + if (largestWordWidth + reservedSpace > this.dynamicMinWidth) { + this.dynamicMinWidth = largestWordWidth - additionalSpace + reservedSpace; + } + + return graphemeLines; + }, + + /** + * Detect if the text line is ended with an hard break + * text and itext do not have wrapping, return false + * @param {Number} lineIndex text to split + * @return {Boolean} + */ + isEndOfWrapping: function(lineIndex) { + if (!this._styleMap[lineIndex + 1]) { + // is last line, return true; + return true; + } + if (this._styleMap[lineIndex + 1].line !== this._styleMap[lineIndex].line) { + // this is last line before a line break, return true; + return true; + } + return false; + }, + + /** + * Detect if a line has a linebreak and so we need to account for it when moving + * and counting style. + * @return Number + */ + missingNewlineOffset: function(lineIndex) { + if (this.splitByGrapheme) { + return this.isEndOfWrapping(lineIndex) ? 1 : 0; + } + return 1; + }, + + /** + * Gets lines of text to render in the Textbox. This function calculates + * text wrapping on the fly every time it is called. + * @param {String} text text to split + * @returns {Array} Array of lines in the Textbox. + * @override + */ + _splitTextIntoLines: function(text) { + var newText = fabric.Text.prototype._splitTextIntoLines.call(this, text), + graphemeLines = this._wrapText(newText.lines, this.width), + lines = new Array(graphemeLines.length); + for (var i = 0; i < graphemeLines.length; i++) { + lines[i] = graphemeLines[i].join(''); + } + newText.lines = lines; + newText.graphemeLines = graphemeLines; + return newText; + }, + + getMinWidth: function() { + return Math.max(this.minWidth, this.dynamicMinWidth); + }, + + _removeExtraneousStyles: function() { + var linesToKeep = {}; + for (var prop in this._styleMap) { + if (this._textLines[prop]) { + linesToKeep[this._styleMap[prop].line] = 1; + } + } + for (var prop in this.styles) { + if (!linesToKeep[prop]) { + delete this.styles[prop]; + } + } + }, + + /** + * Returns object representation of an instance + * @method toObject + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject: function(propertiesToInclude) { + return this.callSuper('toObject', ['minWidth', 'splitByGrapheme'].concat(propertiesToInclude)); + } + }); + + /** + * Returns fabric.Textbox instance from an object representation + * @static + * @memberOf fabric.Textbox + * @param {Object} object Object to create an instance from + * @param {Function} [callback] Callback to invoke when an fabric.Textbox instance is created + */ + fabric.Textbox.fromObject = function(object, callback) { + return fabric.Object._fromObject('Textbox', object, callback, 'text'); + }; +})(typeof exports !== 'undefined' ? exports : this); + diff --git a/kylin/hwweb/opt/hanvonwebscan/static/js/jquery-1.11.1.min.js b/kylin/hwweb/opt/hanvonwebscan/static/js/jquery-1.11.1.min.js index ae4aecf..ab28a24 100755 --- a/kylin/hwweb/opt/hanvonwebscan/static/js/jquery-1.11.1.min.js +++ b/kylin/hwweb/opt/hanvonwebscan/static/js/jquery-1.11.1.min.js @@ -1,4 +1,4 @@ -/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="
",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h; -if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/\s*$/g,rb={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:k.htmlSerialize?[0,"",""]:[1,"X
","
"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?""!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("