Sync build system and CI scripts with ndn-tools
Change-Id: I21dc5349f3f3c819bf8590fe709157ce0bc26b44
This commit is contained in:
1 parent
9a47123529
commit
29db0fd994
12 files changed
+295
-113
No files matched your search
@@ -1,9 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
|
||||
for i in `find "$DIR/.jenkins.d" -type f -perm +111 | sort`; do
|
||||
echo "Run: $i"
|
||||
$i
|
||||
for file in "$DIR"/.jenkins.d/*; do
|
||||
[[ -f $file && -x $file ]] || continue
|
||||
echo "Run: $file"
|
||||
"$file"
|
||||
done
|
||||
Executable
+29
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
JDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
source "$JDIR"/util.sh
|
||||
|
||||
set -x
|
||||
|
||||
if has OSX $NODE_LABELS; then
|
||||
FORMULAE=(boost openssl pkg-config)
|
||||
brew update
|
||||
if [[ -n $TRAVIS ]]; then
|
||||
# travis images come with a large number of brew packages
|
||||
# pre-installed, don't waste time upgrading all of them
|
||||
for FORMULA in "${FORMULAE[@]}"; do
|
||||
brew outdated $FORMULA || brew upgrade $FORMULA
|
||||
done
|
||||
else
|
||||
brew upgrade
|
||||
fi
|
||||
brew install "${FORMULAE[@]}"
|
||||
brew cleanup
|
||||
fi
|
||||
|
||||
if has Ubuntu $NODE_LABELS; then
|
||||
sudo apt-get -qq update
|
||||
sudo apt-get -qy install build-essential pkg-config libboost-all-dev \
|
||||
libsqlite3-dev libssl-dev
|
||||
fi
|
||||
Executable
+56
@@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
JDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
source "$JDIR"/util.sh
|
||||
|
||||
set -x
|
||||
|
||||
pushd "${CACHE_DIR:-/tmp}" >/dev/null
|
||||
|
||||
INSTALLED_VERSION=
|
||||
if has OSX $NODE_LABELS; then
|
||||
BOOST=$(brew ls --versions boost)
|
||||
OLD_BOOST=$(cat boost.txt || :)
|
||||
if [[ $OLD_BOOST != $BOOST ]]; then
|
||||
echo "$BOOST" > boost.txt
|
||||
INSTALLED_VERSION=NONE
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z $INSTALLED_VERSION ]]; then
|
||||
INSTALLED_VERSION=$(git -C ndn-cxx rev-parse HEAD 2>/dev/null || echo NONE)
|
||||
fi
|
||||
|
||||
sudo rm -Rf ndn-cxx-latest
|
||||
|
||||
git clone --depth 1 git://github.com/named-data/ndn-cxx ndn-cxx-latest
|
||||
|
||||
LATEST_VERSION=$(git -C ndn-cxx-latest rev-parse HEAD 2>/dev/null || echo UNKNOWN)
|
||||
|
||||
if [[ $INSTALLED_VERSION != $LATEST_VERSION ]]; then
|
||||
sudo rm -Rf ndn-cxx
|
||||
mv ndn-cxx-latest ndn-cxx
|
||||
else
|
||||
sudo rm -Rf ndn-cxx-latest
|
||||
fi
|
||||
|
||||
sudo rm -f /usr/local/bin/ndnsec*
|
||||
sudo rm -fr /usr/local/include/ndn-cxx
|
||||
sudo rm -f /usr/local/lib/libndn-cxx*
|
||||
sudo rm -f /usr/local/lib/pkgconfig/libndn-cxx.pc
|
||||
|
||||
pushd ndn-cxx >/dev/null
|
||||
|
||||
./waf configure --color=yes --enable-shared --disable-static --without-osx-keychain
|
||||
./waf build --color=yes -j${WAF_JOBS:-1}
|
||||
sudo env "PATH=$PATH" ./waf install --color=yes
|
||||
|
||||
popd >/dev/null
|
||||
popd >/dev/null
|
||||
|
||||
if has Linux $NODE_LABELS; then
|
||||
sudo ldconfig
|
||||
elif has FreeBSD10 $NODE_LABELS; then
|
||||
sudo ldconfig -m
|
||||
fi
|
||||
Executable
+10
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -x
|
||||
|
||||
sudo env "PATH=$PATH" ./waf --color=yes distclean
|
||||
|
||||
./waf --color=yes configure
|
||||
./waf --color=yes build -j${WAF_JOBS:-1}
|
||||
|
||||
sudo env "PATH=$PATH" ./waf --color=yes install
|
||||
@@ -1,39 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -x
|
||||
set -e
|
||||
|
||||
cd /tmp
|
||||
BUILD="no"
|
||||
if [ ! -d ndn-cxx ]; then
|
||||
git clone --depth 1 git://github.com/named-data/ndn-cxx
|
||||
cd ndn-cxx
|
||||
BUILD="yes"
|
||||
else
|
||||
cd ndn-cxx
|
||||
INSTALLED_VERSION=`git rev-parse HEAD || echo NONE`
|
||||
sudo rm -Rf latest-version
|
||||
git clone --depth 1 git://github.com/named-data/ndn-cxx latest-version
|
||||
cd latest-version
|
||||
LATEST_VERSION=`git rev-parse HEAD || echo UNKNOWN`
|
||||
cd ..
|
||||
rm -Rf latest-version
|
||||
if [ "$INSTALLED_VERSION" != "$LATEST_VERSION" ]; then
|
||||
cd ..
|
||||
sudo rm -Rf ndn-cxx
|
||||
git clone --depth 1 git://github.com/named-data/ndn-cxx
|
||||
cd ndn-cxx
|
||||
BUILD="yes"
|
||||
fi
|
||||
fi
|
||||
|
||||
sudo rm -Rf /usr/local/include/ndn-cxx
|
||||
sudo rm -f /usr/local/lib/libndn-cxx*
|
||||
sudo rm -f /usr/local/lib/pkgconfig/libndn-cxx*
|
||||
|
||||
if [ "$BUILD" = "yes" ]; then
|
||||
sudo ./waf distclean -j1 --color=yes
|
||||
fi
|
||||
|
||||
./waf configure -j1 --color=yes --without-osx-keychain
|
||||
./waf -j1 --color=yes
|
||||
sudo ./waf install -j1 --color=yes
|
||||
@@ -1,8 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -x
|
||||
set -e
|
||||
|
||||
sudo ./waf distclean -j1 --color=yes
|
||||
./waf configure -j1 --color=yes
|
||||
./waf -j1 --color=yes
|
||||
sudo ./waf install -j1 --color=yes
|
||||
@@ -0,0 +1,34 @@
|
||||
CONTINUOUS INTEGRATION SCRIPTS
|
||||
==============================
|
||||
|
||||
Environment Variables Used in Build Scripts
|
||||
-------------------------------------------
|
||||
|
||||
- `NODE_LABELS`: the variable defines a list of OS properties. The set values are used by the
|
||||
build scripts to select proper behavior for different OS.
|
||||
|
||||
The list should include at least `[OS_TYPE]`, `[DISTRO_TYPE]`, and `[DISTRO_VERSION]`.
|
||||
|
||||
Possible values for Linux:
|
||||
|
||||
* `[OS_TYPE]`: `Linux`
|
||||
* `[DISTRO_TYPE]`: `Ubuntu`
|
||||
* `[DISTRO_VERSION]`: `Ubuntu-14.04`, `Ubuntu-16.04`
|
||||
|
||||
Possible values for OS X / macOS:
|
||||
|
||||
* `[OS_TYPE]`: `OSX`
|
||||
* `[DISTRO_TYPE]`: `OSX` (can be absent)
|
||||
* `[DISTRO_VERSION]`: `OSX-10.10`, `OSX-10.11`, `OSX-10.12`
|
||||
|
||||
- `JOB_NAME`: optional variable to define type of the job. Depending on the defined job type,
|
||||
the build scripts can perform different tasks.
|
||||
|
||||
Possible values:
|
||||
|
||||
* empty: default build process
|
||||
|
||||
- `CACHE_DIR`: the variable defines a path to folder containing cached files from previous builds,
|
||||
e.g., a compiled version of ndn-cxx library. If not set, `/tmp` is used.
|
||||
|
||||
- `WAF_JOBS`: number of parallel build jobs used by waf, defaults to 1.
|
||||
@@ -0,0 +1,18 @@
|
||||
has() {
|
||||
local saved_xtrace
|
||||
[[ $- == *x* ]] && saved_xtrace=-x || saved_xtrace=+x
|
||||
set +x
|
||||
|
||||
local p=$1
|
||||
shift
|
||||
local i ret=1
|
||||
for i in "$@"; do
|
||||
if [[ "${i}" == "${p}" ]]; then
|
||||
ret=0
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
set ${saved_xtrace}
|
||||
return ${ret}
|
||||
}
|
||||
@@ -1,49 +1,77 @@
|
||||
# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
|
||||
|
||||
from waflib import Logs, Configure
|
||||
from waflib import Logs, Configure, Utils
|
||||
|
||||
def options(opt):
|
||||
opt.add_option('--debug', '--with-debug', action='store_true', default=False, dest='debug',
|
||||
help='''Compile in debugging mode without optimizations (-O0 or -Og)''')
|
||||
help='''Compile in debugging mode with minimal optimizations (-O0 or -Og)''')
|
||||
|
||||
def configure(conf):
|
||||
areCustomCxxflagsPresent = (len(conf.env.CXXFLAGS) > 0)
|
||||
defaultFlags = ['-std=c++0x', '-std=c++11',
|
||||
'-stdlib=libc++', # clang on OSX < 10.9 by default uses gcc's
|
||||
# libstdc++, which is not C++11 compatible
|
||||
'-pedantic', '-Wall']
|
||||
conf.start_msg('Checking C++ compiler version')
|
||||
|
||||
cxx = conf.env['CXX_NAME'] # CXX_NAME is the generic name of the compiler
|
||||
ccver = tuple(int(i) for i in conf.env['CC_VERSION'])
|
||||
errmsg = ''
|
||||
warnmsg = ''
|
||||
if cxx == 'gcc':
|
||||
if ccver < (4, 8, 2):
|
||||
errmsg = ('The version of gcc you are using is too old.\n'
|
||||
'The minimum supported gcc version is 4.8.2.')
|
||||
flags = GccFlags()
|
||||
elif cxx == 'clang':
|
||||
if ccver < (3, 4, 0):
|
||||
errmsg = ('The version of clang you are using is too old.\n'
|
||||
'The minimum supported clang version is 3.4.0.')
|
||||
flags = ClangFlags()
|
||||
else:
|
||||
warnmsg = 'Note: %s compiler is unsupported' % cxx
|
||||
flags = CompilerFlags()
|
||||
|
||||
if errmsg:
|
||||
conf.end_msg('.'.join(conf.env['CC_VERSION']), color='RED')
|
||||
conf.fatal(errmsg)
|
||||
elif warnmsg:
|
||||
conf.end_msg('.'.join(conf.env['CC_VERSION']), color='YELLOW')
|
||||
Logs.warn(warnmsg)
|
||||
else:
|
||||
conf.end_msg('.'.join(conf.env['CC_VERSION']))
|
||||
|
||||
areCustomCxxflagsPresent = (len(conf.env.CXXFLAGS) > 0)
|
||||
|
||||
# General flags are always applied (e.g., selecting C++11 mode)
|
||||
generalFlags = flags.getGeneralFlags(conf)
|
||||
conf.add_supported_cxxflags(generalFlags['CXXFLAGS'])
|
||||
conf.add_supported_linkflags(generalFlags['LINKFLAGS'])
|
||||
conf.env.DEFINES += generalFlags['DEFINES']
|
||||
|
||||
# Debug or optimized CXXFLAGS and LINKFLAGS are applied only if the
|
||||
# corresponding environment variables are not set.
|
||||
# DEFINES are always applied.
|
||||
if conf.options.debug:
|
||||
conf.define('_DEBUG', 1)
|
||||
defaultFlags += ['-O0',
|
||||
'-Og', # gcc >= 4.8
|
||||
'-g3',
|
||||
'-fcolor-diagnostics', # clang
|
||||
'-fdiagnostics-color', # gcc >= 4.9
|
||||
'-Werror',
|
||||
'-Wno-error=maybe-uninitialized',
|
||||
]
|
||||
extraFlags = flags.getDebugFlags(conf)
|
||||
if areCustomCxxflagsPresent:
|
||||
missingFlags = [x for x in defaultFlags if x not in conf.env.CXXFLAGS]
|
||||
missingFlags = [x for x in extraFlags['CXXFLAGS'] if x not in conf.env.CXXFLAGS]
|
||||
if len(missingFlags) > 0:
|
||||
Logs.warn("Selected debug mode, but CXXFLAGS is set to a custom value '%s'"
|
||||
% " ".join(conf.env.CXXFLAGS))
|
||||
Logs.warn("Default flags '%s' are not activated" % " ".join(missingFlags))
|
||||
else:
|
||||
conf.add_supported_cxxflags(defaultFlags)
|
||||
else:
|
||||
defaultFlags += ['-O2', '-g']
|
||||
if not areCustomCxxflagsPresent:
|
||||
conf.add_supported_cxxflags(defaultFlags)
|
||||
extraFlags = flags.getOptimizedFlags(conf)
|
||||
|
||||
# clang on OSX < 10.9 by default uses gcc's libstdc++, which is not C++11 compatible
|
||||
conf.add_supported_linkflags(['-stdlib=libc++'])
|
||||
if not areCustomCxxflagsPresent:
|
||||
conf.add_supported_cxxflags(extraFlags['CXXFLAGS'])
|
||||
conf.add_supported_linkflags(extraFlags['LINKFLAGS'])
|
||||
|
||||
conf.env.DEFINES += extraFlags['DEFINES']
|
||||
|
||||
@Configure.conf
|
||||
def add_supported_cxxflags(self, cxxflags):
|
||||
"""
|
||||
Check which cxxflags are supported by compiler and add them to env.CXXFLAGS variable
|
||||
"""
|
||||
if len(cxxflags) == 0:
|
||||
return
|
||||
|
||||
self.start_msg('Checking supported CXXFLAGS')
|
||||
|
||||
supportedFlags = []
|
||||
@@ -52,13 +80,16 @@ def add_supported_cxxflags(self, cxxflags):
|
||||
supportedFlags += [flag]
|
||||
|
||||
self.end_msg(' '.join(supportedFlags))
|
||||
self.env.CXXFLAGS = supportedFlags + self.env.CXXFLAGS
|
||||
self.env.prepend_value('CXXFLAGS', supportedFlags)
|
||||
|
||||
@Configure.conf
|
||||
def add_supported_linkflags(self, linkflags):
|
||||
"""
|
||||
Check which linkflags are supported by compiler and add them to env.LINKFLAGS variable
|
||||
"""
|
||||
if len(linkflags) == 0:
|
||||
return
|
||||
|
||||
self.start_msg('Checking supported LINKFLAGS')
|
||||
|
||||
supportedFlags = []
|
||||
@@ -67,4 +98,77 @@ def add_supported_linkflags(self, linkflags):
|
||||
supportedFlags += [flag]
|
||||
|
||||
self.end_msg(' '.join(supportedFlags))
|
||||
self.env.LINKFLAGS = supportedFlags + self.env.LINKFLAGS
|
||||
self.env.prepend_value('LINKFLAGS', supportedFlags)
|
||||
|
||||
|
||||
class CompilerFlags(object):
|
||||
def getGeneralFlags(self, conf):
|
||||
"""Get dict of CXXFLAGS, LINKFLAGS, and DEFINES that are always needed"""
|
||||
return {'CXXFLAGS': [], 'LINKFLAGS': [], 'DEFINES': []}
|
||||
|
||||
def getDebugFlags(self, conf):
|
||||
"""Get dict of CXXFLAGS, LINKFLAGS, and DEFINES that are needed only in debug mode"""
|
||||
return {'CXXFLAGS': [], 'LINKFLAGS': [], 'DEFINES': ['_DEBUG']}
|
||||
|
||||
def getOptimizedFlags(self, conf):
|
||||
"""Get dict of CXXFLAGS, LINKFLAGS, and DEFINES that are needed only in optimized mode"""
|
||||
return {'CXXFLAGS': [], 'LINKFLAGS': [], 'DEFINES': ['NDEBUG']}
|
||||
|
||||
class GccBasicFlags(CompilerFlags):
|
||||
"""
|
||||
This class defines basic flags that work for both gcc and clang compilers
|
||||
"""
|
||||
def getGeneralFlags(self, conf):
|
||||
flags = super(GccBasicFlags, self).getGeneralFlags(conf)
|
||||
flags['CXXFLAGS'] += ['-std=c++11']
|
||||
return flags
|
||||
|
||||
def getDebugFlags(self, conf):
|
||||
flags = super(GccBasicFlags, self).getDebugFlags(conf)
|
||||
flags['CXXFLAGS'] += ['-O0',
|
||||
'-Og', # gcc >= 4.8, clang >= 4.0
|
||||
'-g3',
|
||||
'-pedantic',
|
||||
'-Wall',
|
||||
'-Wextra',
|
||||
'-Werror',
|
||||
'-Wno-error=deprecated-declarations', # Bug #3795
|
||||
'-Wno-error=maybe-uninitialized', # Bug #1615
|
||||
'-Wno-unused-parameter',
|
||||
]
|
||||
flags['LINKFLAGS'] += ['-fuse-ld=gold', '-Wl,-O1']
|
||||
return flags
|
||||
|
||||
def getOptimizedFlags(self, conf):
|
||||
flags = super(GccBasicFlags, self).getOptimizedFlags(conf)
|
||||
flags['CXXFLAGS'] += ['-O2',
|
||||
'-g',
|
||||
'-pedantic',
|
||||
'-Wall',
|
||||
'-Wextra',
|
||||
'-Wno-unused-parameter',
|
||||
]
|
||||
flags['LINKFLAGS'] += ['-fuse-ld=gold', '-Wl,-O1']
|
||||
return flags
|
||||
|
||||
class GccFlags(GccBasicFlags):
|
||||
def getDebugFlags(self, conf):
|
||||
flags = super(GccFlags, self).getDebugFlags(conf)
|
||||
flags['CXXFLAGS'] += ['-fdiagnostics-color'] # gcc >= 4.9
|
||||
return flags
|
||||
|
||||
def getOptimizedFlags(self, conf):
|
||||
flags = super(GccFlags, self).getOptimizedFlags(conf)
|
||||
flags['CXXFLAGS'] += ['-fdiagnostics-color'] # gcc >= 4.9
|
||||
return flags
|
||||
|
||||
class ClangFlags(GccBasicFlags):
|
||||
def getDebugFlags(self, conf):
|
||||
flags = super(ClangFlags, self).getDebugFlags(conf)
|
||||
flags['CXXFLAGS'] += ['-fcolor-diagnostics']
|
||||
return flags
|
||||
|
||||
def getOptimizedFlags(self, conf):
|
||||
flags = super(ClangFlags, self).getOptimizedFlags(conf)
|
||||
flags['CXXFLAGS'] += ['-fcolor-diagnostics']
|
||||
return flags
|
||||
@@ -11,32 +11,12 @@ to configure various parameters.
|
||||
|
||||
Compiling and running ndn-traffic-generator requires the following dependencies:
|
||||
|
||||
1. C++ Boost Libraries version >= 1.48 <http://www.boost.org>
|
||||
1. ndn-cxx library <https://github.com/named-data/ndn-cxx>
|
||||
|
||||
On Ubuntu 12.04:
|
||||
For detailed installation instructions, please see
|
||||
[`INSTALL.rst`](https://github.com/named-data/ndn-cxx/blob/master/docs/INSTALL.rst)
|
||||
|
||||
sudo apt-get install libboost1.48-all-dev
|
||||
|
||||
On Ubuntu 13.10 and later
|
||||
|
||||
sudo apt-get install libboost-all-dev
|
||||
|
||||
On OSX with macports
|
||||
|
||||
sudo port install boost
|
||||
|
||||
On OSX with brew
|
||||
|
||||
brew install boost
|
||||
|
||||
On other platforms Boost Libraries can be installed from the packaged version for the
|
||||
distribution, if the version matches requirements, or compiled from source
|
||||
|
||||
2. ndn-cxx library <https://github.com/named-data/ndn-cxx>
|
||||
|
||||
For detailed installation instructions, please refer README file
|
||||
|
||||
3. NDN forwarding daemon <https://github.com/named-data/NFD>
|
||||
2. NDN forwarding daemon <https://github.com/named-data/NFD>
|
||||
|
||||
-----------------------------------------------------
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
# encoding: ISO8859-1
|
||||
# Thomas Nagy, 2005-2014
|
||||
# Thomas Nagy, 2005-2015
|
||||
|
||||
"""
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
@@ -32,11 +32,12 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import os, sys, inspect
|
||||
|
||||
VERSION="1.8.2"
|
||||
REVISION="a01aa13963437a19e5d8748cf2afd71b"
|
||||
VERSION="1.8.9"
|
||||
REVISION="8a9ccbc1c5d3936b0b08e972e4883a9a"
|
||||
GIT="2a098b1e9bc626c19cbd47c1f670758c17edf54c"
|
||||
INSTALL=''
|
||||
C1='#/'
|
||||
C2='#.'
|
||||
C1='#-'
|
||||
C2='#+'
|
||||
C3='#)'
|
||||
cwd = os.getcwd()
|
||||
join = os.path.join
|
||||
@@ -164,5 +165,5 @@ if __name__ == '__main__':
|
||||
Scripting.waf_entry_point(cwd, VERSION, wafdir)
|
||||
|
||||
#==>
|
||||
#BZh91AY&SY�ÉLt"ïÿÿÿ¼@ÿÿÿÿÿÿÿÿÿÿÿ�†¢¦x€�#)!2„Xaé\÷x¬#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)/ºúÕ=[Ý{{žÒá¯Z»må˳]9y›o�3ÏZÝ»½õ÷SÒû5Km»¶÷מ£ß4àÖLÕ—sª_^/^Ü&.ëm˜}+Üe#):z{·¡íªì÷ºìUg•:vÚi>{×�˜×ÍÞçÁï>jWlúûí÷Ɔ»·}Ýw½öpôYÛÆÞÚîÇ>ï¯m¼Øv,¶uÈ#)#)#.#)#)yì#)ƒÉl€#È(MÛÞœÀYÆ`Ë'F]Ûg¹î¡ ¶ƒ\ê¶#.Bí©¡I#)×Cvf(’ªR]íÒOcAT””•QZÉI#.7 mƒËmªéíÜ<z÷޽[vÎìê¬d¶hÒMyU,j¦zS/ݽ{wß};}ÛºÜ{|ûŸ^ÖY}k¼íŽó7Zö³Nì»[Vónßb¾÷s¯WÛ¶hä#)R¦Æ¨#/¢‚{$�Q‡•›™Ü»¯3Æ€#)¡{w³%¶d‰k{Û½Ûp $UPÞg»š][iŽ™½º'¹ÚíÎÞðÉÞ·‡[½n÷ÝæÛ·ÎßYUH’:lVÖíÔš˜×mòÝom;gps³:ÉßõOkl®õãxß{Ü÷ÚµÞÞõXZcÊžÜצ¼�J@#/U&ûÞ<™5õöó½=P®“۽Îo³¾òv}{Öw\ç{ÛÞíu=鯽ï5>÷w³×¾ÖiÛ{ºgº»Þì}ëÜoJíâ®yžíÅv;·‘ëÛ6÷¼jöª´¥¼u¶Îí¾ª•B’n7nï}Ís³ïžï]{çÝÙïI^ÞÎ>ÙãåÛ4¸·Ý£]´wvÙ]Ëžî6½ç]½wÓ0zOžó{ÌöoƒÛƒtÜÓ€P¡P ”Øwf²i»r޶#/¹u´œçFæù=öò<º—Uó½ç•ÛÒ¥8¬Á¥—¶ÆJ�¾,¶Þ|sß4PSß\èT#)‡ÞÍîå}ÝÞw¾>ûÛ\àxï¾îñ{�D½Ø[®�ºÓ›ïmµowbn£#/6Ï^—»µÙÉ«�ɽ¾ïuWÑ_{®ó>öñ2}ëáô€Õëï®ïW¯Q×»Ð=öo©_}»°zµ»j[}híîç½÷}öíÝ.·ºÜ÷[Çw®u·´ßl6µçw9á{[NOrÙµäﶪÒ6önæPO¬Ó•,ë}x>&ƒ ÓCê¼5[Œ´ØÕ÷lóž{ÞÁð¢@iñ#.:ù¦�}s{¸>ÊvçNÞös›Ó›Å[Ÿqœ«ßmn÷w½ÙõõióÎ7½'ßX}÷»A·\¥Ë)¥¢ûío}bù÷T‰õ½€Å„)õ¡î¶Èè)¥³%Ú³Þó»°6Nîwž¬i¼û[ï¼à2BÍT+g!÷°ãåÓ‡·¬vîw4=.s›¥soº�YÝÖÝé½´(ªH½vâv‹·*�Ù÷›šìçÓݬ«¯s{¬®ûÙïww¯¾õÞ;_ëßN¥_z·fçÞÚ÷n©Nœ�;ÞÝäS½ŠÓªÕé^¾Þ2Ýv{ÞíÉ÷šûìKQm\¯#½zÝäÝƒêø´%4B#) #)#) É£@#)&�L&¦ž©£O(PÓMSÐÔšši�)�'¦�5£M©é=!§¨hz�¡ê#)#)#)#)#) ˆ‚#)"b2#jTü§µSÍÒ™êi”zFÔò�S ¨#)È€#)#)Iê”’ ªj~Tª=¥6§¦¡§©£Ò#)#)#)#)#)=@�#)#)#)‘#)� ¦šM#)M`M&OL�žQ²ž“iP#)#)#)&¢ €€#@&™4 éSõOh¦Ô�eêÕzž¦›Ò›P#)#)#)Ð#)#)û|Ûú¶ÛWtI?³’wV5sZÍßom©»%‰£á¶Ôå)) ŠZ$‹‚¢#){V@åöüòÎX?æì¿eB?8ý0LØã©‡š.$…5dÆ•ˆƒŒÅ3d�‚o�ç÷ŸAÿ´“ŸRù¤ :‚]X�A#)»/¾_Ý„sE¾M̺Ôq·ª¥ŒŽÒ8æœÈó+¹IŽ0zË|-8Þ]Y‰ÔÁt>±q/eBœJµJ”ÄâqQa³[à’;Æöu8@!ÿÄð‹¿äÈx±!4…(ÒDa†*„¨¥"CJˆÌ�Jƒ@Ä"›*„ˆ® ‰ÞI#)iD(ÞE(#¢UH€û! °¤ª8šÂ•¤#/AÔ )æUÛ%€P`ÌJC3LH„È…Í£fh‰)©±‘2RŒÅ-¤¨je,P4$&�©Q´”DJ™¢l¡l–JÌ ‹L)A±¤Œ›hÅI)iª$%–’5$‚`Ê"F¶“T,šliblŒPRJ)¤HÄÓ6-�SU¦ª¥$ÖXŒ“$j6‚𥫙³4¦©,™fª%M±1³T’T†™’I5Ì�HÍhÔ„lšf‚‰(Ñd´�Z)J¤†lb`…‚‰šLM6(`›)°L ‘f*d™ˆ“%²@‘KŠÉdI�„)%%6)2AQ)Iµ j1¨lІ,L(¢”��%iDÆ,LTl™M¢’e¤‘4²4‘’T¢Šf¤*iM†$Â@¦ÄjK#.›D�l‚‘&**"#/É�¦l`’MIE$dBDÌˆÍ I™31’³)�¡,b$"HJ“a I4ÒÐbLš,¥0lÚ#M"�¢¤€J3A¤I›RÍ,¥”†“K$Ù¦Q 5,RY‘±£+$ÌI"ŠÀ3c,�¨’È*#/Yš1´YCd£2›4IKZl„Êc$jL”™…2RÍF’Ê•L ¢“QdA%() FHi‘¤H4–5¤Z¬„34‹&aJB›I²E²E£I2I(J,”4�`"���“,E#.‘6k1“RXÐJl2™¥1 #.…¦MRÆ,ÔØ¤Ê,ÒbJÙ$…”T‘bSLh� Å&M)&a²lš2d*#)„k$ÊÄÃh,›%!K&Q�Ši ÉL¤eˆÁi)TÙ¬mˆL‚dJHŠÑ�±¤™¬ŠLhÂHaQ¤2@KÑ´jR1EbKI‘™¢“ ,ˆ”!ŠY#)Z4™eFi#.›U-m ¤ª(É© k%ÊHÚ)’™&1¬–‹4HÓLÓM’”¢ÔÈÆÍ±(Щ²ÊFh¡K_‚ѲV�ÈK(ÉMbÖŠÅ¢£BfTDÓl–ƒTÆ¥ªb(lXŒ4¤IÌld1¢¡–¡5E‘MdÈle•E¡bdÌjZYŒ�¨°ÌÊj³F™Y©¥°Ö4ÙD–Te*±MZM¤+6V³RRÃm1B™b´i©Q%¦QDe�¢±¶f�²Ufj�V*J6ØÚ6%CDB¨¤*#.±ª5Ô†Ö!5’E´Ñ¥QH&ˆÃ5(”Ú•F£d“hƤ,jšLÚµ›Vš±ašÆË"eMdI–šaI3j¥¨¦ÌÔÒ¦kJ¥dJ˜ÛJ™JM©¦ÔÙlR#.lÖfd’²ÅÁ©-¥´²ZšFÄ@`i±¤£H„Q°�D1mÉ0)µRD¢Å2šÆÒ“MŠŒ’h4”Â…ŠeDX¤–cBi¢™)“ÊlÐÆ‰ CbÅ™!ŒR³RXm™dË,Ì!#/RÉ�ƒ ±QFÆÄ””dh4‹2‹S1³¤¬i„̓FM‹lËP)¢„±DE")´d,Í¢Å��Š4"¢4––H¦`´)e ÂH“�šJFS`ÉlB’Ò$“f¥š¨Ò©™‹#.Š”Òl�¤Ê,ÑV(�Ì(’‰I$ÙI4•%£)3H†•5–lme6V*16)4Ô“,É¢¦[R2e-%%²$”K1 Ó(ÑD#.e“d¥LDÔ�‘h¬FØM‹EFŠ6ÄVšL2LÑ%&‘h¦#)6)"±`Û-4’T†£Y3#.%,Èl…hѰ†Ñ¨“F„Ë#/ÐDEd¶*c()5JQ5cXÊfhB¢¤“i…ID–��ÑY¶©‹2j,Q‰+%¡¥4±¥%4IRÉ*JR”£VÄ¥"‹%+e%�²i*,m¶f)”l¦²¨i&l‘I±a�B"Å‹LÉC4`ÚL‰L±"Õ(�0™Kf"”j6¢ØªHB¡’c@FÊj�£i’X©#)ÐbŠL"MZPQiMR›IQ[ÆÖf+%¬È#/Ñlš’‹Å(#4cf„I �’˜4`ͱ�‹hØ¥6ÚJh‚±€É¨¨�6Ë-FÑX±kI¶¥³d4²±*ŒZ)–*¦¤Ò²Œ£E(–LYR¢ÒVM¤Û%dÕŠM¥3(²m�EIF‹F¶Û54f¡²X‰*eEF° Z#.&¥³VLS*ÑDUŠÑ¶Å¢ÛhÚ¡–Mkjš••DÙH6’cÊÂÊQd�šTEÌlII”“"!jMb̵L|>ó~i¯éyÛÇð‘{ßÍ\«E½fý;i6N£#ý¿òþÞS´W d]j¢$LLY¢ÒE˜pÿ«ýT|#.¥)°T\AÈŸúgQ”lÿ©ö�+Û=i÷é8ÈnT-ƒ²Q¥U¥uI¦éDn�™#/·ÿ5_Ͼ!kÒîƒÿFÃû>û®ÃüëI2h•ÌäDL³¶»Yb"<ŽÂ #.¶nà]uø^Ì?v§;q0ž¶ã?¨…NéÇX;£QLC§6íˆéTf¥5F�ª2Ù$”¤©�·_Bðjck´ðb¡Ø£Â¢5Š UwCkJÉTe0ÀÙ¤ŽJ’5äØ2¨…*(Ä´ÊÍh¥P5W³Ñü½Jô·³ÍÍFÉk1Q$âQb-ÀFiw.Š‹u@(þó«ÝçlËÙ¹I��¼ëÅ4â�" ÿïCýª0+1‡j¢AÄŸ6.ZÑ1íÃxÑ#.-WÇýº4=þÂv#/…•µÚ*�6P…²P€§†t+üs’ãLãPºˆÑˆí}[ï ÿi<;ð:N¤¥!V&CS‰MõlJ=i¦Žäâ+kqeœÿ7ñgH\Zšp»PD(aB1¼Üó®ît]ÆŠæå&�¤ÊDUCBWœŽÂyChJ;sÑ§Ó ¡�ì•(*H#(k‡=?#/\‡nÔØ28¸o}up#§²®ó@’�ñkñÛ^éé{𮥷³PhmØ£Ö21ðùÞÞ–H‚ê4|:EZ9`ˆÜZ©R²ä 7n\“w]‡uÓEA½ê·žw÷/š«H(¡ä•š%€‰³[5¸�ND”Å~uKꢱü+LySÿ5é‚eƒÿB©6J®YÆ*%¡x¨ÈI+ù1�ϳ iuÔÎ%É…V’QøUkÛrú#/ç÷EÏèñé™ìâ£Ær2?f_C<ᎲB8ãzçÿRƒ¹5NÆ¡ßÆ—dÏ>5~Ä�±qC¡.çíí}ËP˜Îo¢÷Ìå!³P‘ö`rÆw¸C:¥ÓÖèÛAÙÙW0´d;Ò×¢ÆÑX»0¬MÖ/R„PX%ç¥ãèü1F‰*'Mh³f ØÒƒÆçµ—S+áîß¿ZÄ›#.KHíÿ—!¾ŽëØc$4Ù&27åúí221ÀÍì¢aÍ×e/)Qì´½ÅFv“¤8ÆäÈÈY[i¯ÙÒ”cB'ë!î.êm+Ç3,›Ås]He �¡»¬ªJ]§<0=–¨™ÿ³�wîÄê71)¬‡$LÀÅ¢šÑ`Æ# Rzrå}�_?·ª¶±¡[B�yÖ ’'ˆ… -%$"˜K<P4€«µËcIÌŽ2�ø3\σ�%²aj#/Î,³$©±6„ؘÀî5Œ#CÅ TX]Q4£¶ôõ挃þ‘¢è)€,šùPöÍ�åDå’¡„DJÚÍ›éjõ(�µïï´ò76êo„º‘‚…4£†ÜîÅ“q�¤Þ¨.´BÒ$¸àPj‹{)˜²#¿¦kJlÍFd@îª-¥Q4í»¿‡—,�ªJgoeYRLHÀ]ë²áͺ$cb}¤e|¦x<C%¨÷b#.²µ¶–œe‘L„5|HÙæá¶ºk#/ÓÙÖDVxvT<Y€Qâ�µôáF$Nú¦ûª_…Qš‘Ñ}ÎS3–»{��ÚG½W'²¬äé•Z …WµÍòÂ?ÁV‹S:Ð¸í»™áW'h#.lÌ‚MˆZ�ÆÕåPý¤óÚ˜†‘�¦Ã¬!açž7?Òú_}ÓGúzô¾m.¨l8ã]Y„?ÇÒ¹3L‚4‚ÃÉ XŸm½§"úr‡±5¸uì‘FÀ*”Ð!¡ÈiZ¬mØ�\¤<ad¶A�ëÙÙY.ÞðÁx#/åÄÈq0”ÝM6á¯GÊ�ŸCay¯õ'h L~²XG=ñö«>^3ßa·ÊÌT;ï’Lq»óÆV1^75&}U4B?->Ó36T ¿sžª#!slÏdª¤?¦Bü†”<ªô©‡«(uÉ=Rò‡x6Ÿ£WÍüIFY¨è_Ún‘õÐh¸ùyϳwkŽÇ'~jKOWáÇY/(yå…ÂHÎl4cLine truncated
|
||||
#BZh91AY&SYüÆ6*Zÿÿ´�AÿÿÿÿÿÿÿÿÿÿÿD #)†Ž"¢D˜ @ ¨8aðœ÷½p€#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)ùçÛµ‡>ÞJí}iÛeHÛCWmk^|ã½dm}šª¥ë×Ujï<÷x]“©¶“+jÝpâ�o}=×Îvºîí°W–$�¢¯g»=fv:z=ë:uë]»v]==(ßvCÛÝÝ›½é÷Þ{é+îûš«ÇAëÓßw}÷ß}žðúêvø_mÛ—Û}ƒàwc{©Å=åî#)#)#)#)€–Èoµ)ôt<t;}°—0ÓºX,ß@÷™ž�ÆÐwgF†3¾¯oG¡ï5 ÜÂT¡@¢†½A¡ŠP‰A{·Hz4%šJTë#)®Ë^ºw@éÓÞúízïwnáíZÀî½íç•2Ôwv”ìÜÍ]šqkî÷m•‘XúWs|põ·¾óëØ×Õ½Öóww>æ›{»·Û3<ßw¹ßnöU§váíõßHõŸ%‹=>¼Jîæžöw6¾ïpÈ*T;(¦Œ†^ë;™Û±žw¦v#)t=]î3¬h¥´H+{½ç¶ávÐ#)¢„ô3Ó@ô={4Ð7¯qZ�¼Ý'œ×nîÝAí¨Þ‹3îù½�€Ð.Í#-úxJ6aά¼{€;¹ç�S¾ÝAÖÏxó½”Snï@9›îÏÞoP¼÷x×v=ªù{°sm:4$ºzû¾ùãì,8÷^WTžµÊž�»ìåÛ¶chúÖûÞÏ×¾÷·¼ªç»;}{Ë=³_wÜ{L|ów®çΰ<׸i=àÏW�väžG§M9{kExEÙ®ú…¬Ûx·ñ¾ï‰Ý�µ›Îî·]Ï·÷rõ÷Ù[,÷hC7}¼¶òö¯v>÷ ïMòu€ï,ûϾó×¾÷È/¸}ÑÏ$€*#-:-„…˜�kjNjºÐ/²ã½+ì˜äê»[{±v–(åpa넨Žío`ÓXû·×Ýßo¾úú=ð#)öåÚ€�·_a—ÞÞ»ßol÷½´9wÝ�¹ºõéË}‡Ýë§Í>ÙãÕÝÃ�ºÅt#+í}o/¾÷gc=Ýn†ë±×·¼{kzsï·Šm¾öøm#)hŸ_}ç«kkP/£�UªÑàWo\íÖŽÞÞ'Ý÷Þu6MnûnÔ’âuÚöáðñ³ò>özÛ}öåöÜZÔÐÖÁU÷ÝÓ¡}ºx§]wŽø9uÐWÝ„éx_ZÛ¼žºìGϾ^÷wsï@0kD¬ÀÚϼ¶ß[ìz7;Gí¾ööÏ�Ö¶Òë³íËÐ÷ÜϽ÷¾fû·:Ëç»ÞßwÕwŸTÛÜåÑ W b¶Ð—«op;º·�îŠsƒTwnØtËxduŸ@:(5sC×·#)ôG³ÈÙ¼|_{½î‚@�ô+UAOoOo¾ûîõw@c}}w—K[.×Þx{Ûíç¶ùöݳwW=9t*ŠHÞíq»;[ë”'bõV_w¹î[GÙ[Ó/}gmô4»œ}Þ¯ºõ|CŸ+îÝavù>zn°§°£O¾Î=›k¢ëY[¯¢÷wÛÕ·½0W‹ï{“}™`éÙ+ͯêòð6û¡^>îšA#)#)™#)#)& #)&™�2dÑ“ô‘£ô ¦ž 4z<”ýPJhDL€&§¦ˆõ12i¨<S2!µ#+#+#)#)Ð#)#)#)#) &"`€#LMI´Töž©”óTñ=)êmªhhÚŸ©4Éä€hÐ#)#+#)#)#)Iꔑ4‚hj§á¢žQµOOJzžž¨Ñ£z†�£@4È#)4#)#+#)#+#)#)#)D�„Ð#)F�4È#)™a0#-yÓ&¦�#)#) #)#)j"4ja �MOjjhõOÒf©“õOÕ=ª‡éG¨~¨È€#)ÿï¢ÿRÛjîßì›Rmlº'êÛjîR3GÆÛS�²L’�„F@«„O|QRÑ@B±#)�ÝÇåù~–µd³óÍæö;…ß[Ç3YuŒ™‹qâ±W/V÷iÌ(ÃЦÞáó3ýD7ÌÿCà1)ìH@lðbê¼0ΦV›Ê[Úl’:eª²Jܶ(d•¹qÓ+˜ëß-ð´ãy½n“Wy5xàÖ¶JëÂfä·pø¹Â³êÓT;Ä+›Iêqþ~Žß· ÷ÞmY«6±’¹ºUiZ¤²¨H„‚€B 2(�ÕB©b€<‚ƒ2#-#)^ „† ¨Ø€�ˆ¢�€{ …BÊ‚�A Õ HŒŠ¢�(UI€P`ÌJC3LH„ȆŒfѳ4D”ÔŠXÈ™)E1M´•#+L’X XMR¢²Pa(f‰²…²c%fPE™¢XКaJH¤Ø‹F(ŠIJ”ÍQ Á,´�T’ ƒ)"E¶“T,–libjF()%Ò$aflZ5¦Õ¦µR’mDÉ’d�E±µ+XÍ0Í™Lµ%“)¶Ä©¶&6j’ML,Š$š‹fF¤f´m!&™ ¦IF‚’ÒAh¥*’±‰‚#-34¦&›Á*S`˜@1f#-™&D¢$¡dªH)bY42DJB)%%,Rdƒh¦2R“jÔcPÙX˜QE),J$Ò)DÆ,LT&Sh¤™i¤‰ Å‘¤Œ’¥S0Ö�¨dQ,1&$$�MˆÔ–ËD�l‚‘%Æ’�¦l`’MIˆ¤ŒˆH™‘¤ 3„d¬Ë04%F"B$„©6�$“M-$É¢ÊSÍ¢4Ò(Њ!JHFh4‰3T²À‹)E%!“K$Ù¦Q 5,RY‘±£+$ÌI"‹@3c,�¨’È*#-Yš1´Y¤l”fSf‰)¦Á¡ˆL¦1¦Ô™)3#+4”³Q¤²¥FÅ(¤ÔDÄ™IJ#-hÐ$Œ�Ó"„ƒA `Íi´3Ye,‹&aJB›I²Ql‘hÒL’J‹%#+#X#+&QCd“f³5Ä`”¨e3Jb#-™4EK³Sb“(²2bJÙ$…”Tȱ4Á@ƈÚRdÒ’f&É£&B¡�F°“+)0Ú&ÉH$²e¦š‘”ÊFXŒ’•Mš*6�D&PL‰IZ1¶4“5‘CI�I#*4† %‰hÚ5)3V&ZL‰š)0’ȉB¥�£I�ÆQšCfÕM´UdÔÐ5’ƒe$mÉL“ÖKEš4�1”Í4Ù)J-LŒlÛ�#-›(ÊFh¡K_Ѥ,!�–Q’šÆÖŠÅ¢£BfTDÓl–ƒTÅI-SC`ÒÄPÒ”„ÒF³*jÔYÖL†ÆQiQ¤Z&LÆ¥¥˜É"¢Ã3)ªÍd5dlЦØV)²‰,¨ÊUbš´›HVlf¥)M0ÛLP¦DXÖ�5*$´Ê4FXÚ+fhÛ U™ª5XHÔ”m±´lJ5FhˆU…A¢Ö5FÃ5!µˆMd…¶š!”¢J)ÑF©D¦Ôª5$›F5!b´Éš¶³jÓA,56£e‘2¦²$ÌÍM)“-ªZŠZJf¦›3ZU+%T¡ �´©”¤ÚšV›1i45³Y™’JË3`Ô–ÒÚY¦”hˆÔi(Ò!l„dB‚™&6£jH”›Êm�¥&š*2dÐi)…#-)¥DlRK1¤B#+4S%2cYMš±!(TlY’Å+5%€ÆÙ–M,ÆSHED”¢LX0›16"(ÔlIIFFƒH³(µ31#-JƘLØ4dر0ÆÌµš(K@R!©M£!fm66(Ð�¤´Ð‘I‚°¥–ƒ "LVBi)Mƒ%±#-MJ"I6jQ UU31°Ø©M&ÈÚL¢Í%¬A!�¢J$L›)&„©-&dlÍ1*[,ØÚ#-ÊlÑDlblRi©&S&Š™mHÉ”´l””fÀ‰& b&4cL£E5–M’”11RBE¢±a6-(ÛZi0É3D”šE¢˜Ø¤ˆÅ‚ÙiI&¤0ɘi)fCL+F�„6�Elš4&XV‚ ’-%±Pca@ÑIªR‰«ÆS3B�’JÌŠ’‰-!¢,²Ö¦,ɨ´c+%¡¥(TiIMT²J’™JQ«b#+REJ4•FFÉcY4•5TÌS(©Kd-b¡¤™²E&ņ�B"Å‹LÉC4`ÚL‰3DŠ©Di„Ê[1¢ÑZ-Ф„*%0c)Q¨Ú6™% QI„I«J#--)ªSi5±¬Vɬ–³H#-Ñlš’‹Å(#(1³B$„ÆÉL0f¨‚�±±mSm¤¡–ˆ+šŠ‰#-Ñ3l³j6ŠÅE¬I&Ú”fÍ�ÒÊĪ1h¦Xªš“M¥FŠQ,˜²¥E ’¢ŠÉY-’�²jÅ&Ò™”Y6�#-F¢’�‹m¶kZhÍBÉb$©”mÂ�h4š–ÍY1‘‹´QÑZ5±h¶Ú6¨e“kb-SR³j&Ê@Ø‘´“6VR‹$lÒ¢(&cbH’L¤™Rm‹2Õ1òþ‹ýWô[î[Ï—_Î`¹z~*di)›ÿÓ¸[5BÓüåÕ¤\2#-Jd]ê¢$LLY”ÿ°‹0áÿWú¨Ö*j-ÁÈŸûó Ê6½õížÊD>{9ÆCp<X«šå�Ü–#-Y�3£XÇ]Ù�©ñTüZ¡�~‡tõê?�æ²Ë¿Æ”“&„lh;•L³¶»Yb"<ŽÂXA"!¢vÍÜ#®¿eìÑûõ9Û‰„g¥‹üHWt㬊ÑÁF‘ãàíi�r7¨£�Ûìkd˜RTÆÛ®W]§ƒmÅ1Ì”*»!¥¥dª2˜`qi#’¤�y6ª$¥TbZef*¨eÂÿméof›š�’Ö`–ßM׃ŒC »U„MÙ#)l×v$Ó½›šJ,Fï:ñOgnùöòŸøhþ˘C�Ê�5ªôI³,b"§ºŒ¥Œ‹"¯Ùþ\��µ£0#-�¥ïv†*�6P…¡COèW÷ç$Æ•ª¤–‰eHb?ã8ð}”N¶ ŽÃËÀË»3*Ò8‡¶Q#+ƒDãÊÆŸé¯‹2B<¸´#+8]¨"D`Äcy¹j)5Ý΋¸Ñ\Üɤ)5¤Š )‚ø ÌHe€a §Jñ¹ä�²&Z`E=ÔÄ¥:ð²ßKœó‚;a+⤔:0ŠHC¢Ø”‡Š¿šÖ÷ž—»UÔ¶önšv(Ñ‘AðùÞÞ–FDP£GäU£–�Å#+4©XMÈ@n##Ý×aÝtÑPo’ç�þåô]äKDkò.öéÖé5ßß9W‹mþ1üa8þy¼÷Çý�Ǧ‡þ‰Ë$�õ1ÒBº»oç®Õʺ›\å»ù3ëÜûóK¨ˆ¦¦q,*´’�¾«^Û—â5Ïé?o�LÍÄV«8;B¿M\ę䡎²5m\¿Â§jjœ+�C»�²xqÖýé;Q#+èt%Öý]O,㱌Ÿ+]ðq P튀€ …?N`g{„3«BŠLÓÙtm éì•,XZ2ékÑcaþëÆ.ì1‰¶“¼°¥‚Á/N·�½øâŒ=P*']h³f ØÒ‚ˆµâ—šÅºº]ý¹Î$PÍ]œóÉßÏî·à2o±Úl’Œ…í„G°�m&žÆ»RO‹<†\ˆïHÔ_ûÍ/yT�6·£\-V)(ºµcÇz.KzíÙõwåÝM¢Œh¯Ì²oÍr±ªý·”Ôi÷ÜY0Êî ÷6£ÿn§_ñT8™*’S#+wWlF4X1ˆÂjOJJCÝŽ¹Ä„–4$RÚg^u„ÂEä… ä!BKII¦ÇÙŠ" ³•_�ìòcâã(ß®k�øq¤¶L/n·_òó¼ã±cX²UõOö‹Ý\�¯Æê¯;ò‡¥àaóÔ4ý#ŠÀŒ8Òãß#)ñçT¦‰Ï%Cˆ.•µ›3É �‚ˆ©#+{öžFæÝMñ.¤h®q,Uõõ&Ã!IµP]e‚ÁÒ€ö¤±G)QˆÒB„¶¡5uªSfÐ@ïª-¥Q4í»€ßËÏ–ÀÕàÂÓ·YRL•HÀ^Ö᪒©�¤·hœÜC%¨ú1ÙXm¥§d™j(ø‘³±£FoœÄ8W�Ьñí¨y³#)£É¥òíIžÙõŠû¤<Ù>Û;öß—Ï5îè)ÚÌãÚˆ«ÕF1tÊ� ¨ù\Û 9Ê©EJ‰©,9QFþ~·‡|T°ðIHDä”H¤&h ØÁž�*‡æOfÔÄ0„Œm6¡4‡f+«�û®÷åyaðá½ö²uCaÇêÌ!ýþ•jiÈ�LjN ¡Îê½&òéïƒÖšÍ˜tjɬ!H#-©K”[ï¢åbé–‹v#W*ƒÆ‰’Ù7¯tCefCáPoZïtÅF%‹�3ü2gP¦þU³|¸ÑsW½P‘Ñz×NÒ˜ûÈqe9/Ó8û/ùxÏ~yŒÅC¾ù$ǶóÆV1^75&}U4E9ùiö˜UˆüÔs[HB 5z¯lX?tB|å/tM Ø¥µ Line truncated
|
||||
#<==
|
||||
@@ -22,18 +22,14 @@ def configure(conf):
|
||||
|
||||
def build(bld):
|
||||
bld.program(
|
||||
features='cxx',
|
||||
target='ndn-traffic',
|
||||
source='src/ndn-traffic-client.cpp',
|
||||
use='NDN_CXX',
|
||||
)
|
||||
use='NDN_CXX')
|
||||
|
||||
bld.program(
|
||||
features='cxx',
|
||||
target='ndn-traffic-server',
|
||||
source='src/ndn-traffic-server.cpp',
|
||||
use='NDN_CXX',
|
||||
)
|
||||
use='NDN_CXX')
|
||||
|
||||
bld.install_files('${SYSCONFDIR}/ndn', ['ndn-traffic-client.conf.sample',
|
||||
'ndn-traffic-server.conf.sample'])
|
||||
Reference in new issue
Block a user