diff --git a/.depend b/.depend index 0893a87ab..7cc0bfdc8 100644 --- a/.depend +++ b/.depend @@ -1,182 +1,175 @@ # DO NOT DELETE -addrmatch.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h match.h log.h -atomicio.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h atomicio.h -audit-bsm.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -audit-linux.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -audit.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -auth-bsdauth.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -auth-krb5.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h uidswap.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h -auth-options.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssherr.h log.h misc.h sshkey.h match.h ssh2.h auth-options.h -auth-pam.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -auth-passwd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h -auth-rhosts.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h uidswap.h pathnames.h log.h misc.h key.h sshkey.h servconf.h canohost.h hostfile.h auth.h auth-pam.h audit.h loginrec.h -auth-shadow.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -auth-sia.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -auth-skey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -auth.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h match.h groupaccess.h log.h misc.h servconf.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h canohost.h uidswap.h packet.h openbsd-compat/sys-queue.h -auth.o: dispatch.h opacket.h authfile.h monitor_wrap.h ssherr.h compat.h channels.h -auth2-chall.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh2.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h -auth2-gss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -auth2-hostbased.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h compat.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h canohost.h -auth2-hostbased.o: monitor_wrap.h pathnames.h ssherr.h match.h -auth2-kbdint.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h log.h misc.h servconf.h -auth2-none.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h atomicio.h xmalloc.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h compat.h ssh2.h ssherr.h -auth2-none.o: monitor_wrap.h -auth2-passwd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssherr.h log.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h monitor_wrap.h misc.h servconf.h -auth2-pubkey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h compat.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h pathnames.h uidswap.h +addrmatch.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h match.h log.h +atomicio.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h atomicio.h +audit-bsm.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +audit-linux.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +audit.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +auth-bsdauth.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +auth-krb5.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h sshbuf.h sshkey.h misc.h servconf.h uidswap.h hostfile.h auth.h auth-pam.h audit.h loginrec.h +auth-options.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssherr.h log.h sshbuf.h misc.h sshkey.h match.h ssh2.h auth-options.h +auth-pam.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +auth-passwd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h sshbuf.h ssherr.h log.h misc.h servconf.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h +auth-rhosts.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h uidswap.h pathnames.h log.h misc.h sshbuf.h sshkey.h servconf.h canohost.h hostfile.h auth.h auth-pam.h audit.h loginrec.h +auth-shadow.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +auth-sia.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +auth-skey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +auth.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h match.h groupaccess.h log.h sshbuf.h misc.h servconf.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h canohost.h uidswap.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h +auth.o: authfile.h monitor_wrap.h ssherr.h compat.h channels.h +auth2-chall.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh2.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h sshbuf.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssherr.h log.h misc.h servconf.h +auth2-gss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +auth2-hostbased.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h sshbuf.h log.h misc.h servconf.h compat.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h canohost.h monitor_wrap.h +auth2-hostbased.o: pathnames.h ssherr.h match.h +auth2-kbdint.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h hostfile.h auth.h auth-pam.h audit.h loginrec.h log.h misc.h servconf.h ssherr.h +auth2-none.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h atomicio.h xmalloc.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h compat.h ssh2.h ssherr.h monitor_wrap.h +auth2-passwd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssherr.h log.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h monitor_wrap.h misc.h servconf.h +auth2-pubkey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h sshbuf.h log.h misc.h servconf.h compat.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h pathnames.h uidswap.h auth2-pubkey.o: auth-options.h canohost.h monitor_wrap.h authfile.h match.h ssherr.h channels.h session.h -auth2.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h atomicio.h xmalloc.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h compat.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h pathnames.h -auth2.o: monitor_wrap.h ssherr.h -authfd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh.h sshkey.h authfd.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h compat.h log.h atomicio.h misc.h ssherr.h -authfile.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h ssh.h log.h authfile.h misc.h atomicio.h sshkey.h ssherr.h krl.h -bitmap.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h bitmap.h -bufaux.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h ssherr.h -bufbn.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -bufec.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h ssherr.h -buffer.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h ssherr.h -canohost.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h canohost.h misc.h -chacha.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h chacha.h -channels.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h ssherr.h packet.h dispatch.h opacket.h log.h misc.h channels.h compat.h canohost.h key.h sshkey.h authfd.h pathnames.h -cipher-aes.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/openssl-compat.h -cipher-aesctr.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h cipher-aesctr.h rijndael.h -cipher-chachapoly.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h ssherr.h cipher-chachapoly.h chacha.h poly1305.h -cipher-ctr.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -cipher.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h misc.h ssherr.h digest.h openbsd-compat/openssl-compat.h -cleanup.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h -clientloop.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h packet.h dispatch.h opacket.h compat.h channels.h key.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h -clientloop.o: kex.h mac.h myproposal.h log.h misc.h readconf.h clientloop.h sshconnect.h authfd.h atomicio.h sshpty.h match.h msg.h ssherr.h hostfile.h -compat.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h compat.h log.h match.h kex.h mac.h key.h sshkey.h -crc32.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h crc32.h -dh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -digest-libc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h digest.h -digest-openssl.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -dispatch.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssh2.h log.h dispatch.h packet.h openbsd-compat/sys-queue.h opacket.h compat.h ssherr.h -dns.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h sshkey.h ssherr.h dns.h log.h digest.h -ed25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h crypto_api.h ge25519.h fe25519.h sc25519.h -entropy.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -fatal.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h -fe25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h fe25519.h crypto_api.h -ge25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h fe25519.h crypto_api.h sc25519.h ge25519.h ge25519_base.data -groupaccess.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h groupaccess.h match.h log.h -gss-genr.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -gss-serv-krb5.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -gss-serv.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -hash.o: crypto_api.h includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h digest.h log.h ssherr.h -hmac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h digest.h hmac.h -hostfile.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h match.h sshkey.h hostfile.h log.h misc.h ssherr.h digest.h hmac.h -kex.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h key.h log.h match.h misc.h -kex.o: monitor.h ssherr.h digest.h -kexc25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssh2.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h key.h log.h digest.h ssherr.h -kexc25519c.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h key.h log.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssh2.h digest.h ssherr.h -kexc25519s.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h kex.h mac.h key.h log.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssh2.h ssherr.h -kexdh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -kexdhc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -kexdhs.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -kexecdh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -kexecdhc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -kexecdhs.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -kexgex.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -kexgexc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -kexgexs.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -key.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h key.h sshkey.h compat.h ssherr.h log.h authfile.h -krl.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h ssherr.h sshkey.h authfile.h misc.h log.h digest.h bitmap.h krl.h -log.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h -loginrec.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h key.h sshkey.h hostfile.h ssh.h loginrec.h log.h atomicio.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h canohost.h auth.h auth-pam.h audit.h -logintest.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h loginrec.h -mac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h digest.h hmac.h umac.h mac.h misc.h ssherr.h openbsd-compat/openssl-compat.h -match.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h match.h misc.h -md5crypt.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -misc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h misc.h log.h ssh.h ssherr.h uidswap.h -moduli.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -monitor.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h atomicio.h xmalloc.h ssh.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h cipher.h cipher-chachapoly.h chacha.h poly1305.h -monitor.o: cipher-aesctr.h rijndael.h kex.h mac.h dh.h packet.h dispatch.h opacket.h auth-options.h sshpty.h channels.h session.h sshlogin.h canohost.h log.h misc.h servconf.h monitor.h monitor_wrap.h monitor_fdpass.h compat.h ssh2.h authfd.h match.h ssherr.h -monitor_fdpass.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h monitor_fdpass.h -monitor_wrap.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h key.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h hostfile.h auth.h auth-pam.h audit.h -monitor_wrap.o: loginrec.h auth-options.h packet.h dispatch.h opacket.h log.h monitor.h monitor_wrap.h atomicio.h monitor_fdpass.h misc.h channels.h session.h servconf.h ssherr.h -msg.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h log.h atomicio.h msg.h misc.h -mux.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h log.h ssh.h ssh2.h pathnames.h misc.h match.h channels.h msg.h packet.h dispatch.h opacket.h monitor_fdpass.h sshpty.h key.h sshkey.h readconf.h clientloop.h -mux.o: ssherr.h -nchan.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h ssh2.h ssherr.h packet.h dispatch.h opacket.h channels.h compat.h log.h -opacket.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h -packet.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h key.h sshkey.h xmalloc.h crc32.h compat.h ssh2.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h digest.h log.h canohost.h misc.h -packet.o: channels.h ssh.h packet.h dispatch.h opacket.h ssherr.h -platform-misc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -platform-pledge.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -platform-tracing.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h -platform.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h misc.h servconf.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h -poly1305.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h poly1305.h -progressmeter.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h progressmeter.h atomicio.h misc.h -readconf.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/glob.h xmalloc.h ssh.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h pathnames.h log.h sshkey.h misc.h readconf.h match.h kex.h mac.h key.h -readconf.o: uidswap.h myproposal.h digest.h -readpass.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h misc.h pathnames.h log.h ssh.h uidswap.h -rijndael.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h rijndael.h -sandbox-capsicum.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -sandbox-darwin.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -sandbox-null.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -sandbox-pledge.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -sandbox-rlimit.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -sandbox-seccomp-filter.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -sandbox-solaris.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -sandbox-systrace.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -sc25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h sc25519.h crypto_api.h -scp.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh.h atomicio.h pathnames.h log.h misc.h progressmeter.h utf8.h -servconf.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h log.h misc.h servconf.h compat.h pathnames.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h key.h sshkey.h kex.h mac.h -servconf.o: match.h channels.h groupaccess.h canohost.h packet.h dispatch.h opacket.h hostfile.h auth.h auth-pam.h audit.h loginrec.h myproposal.h digest.h -serverloop.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h packet.h dispatch.h opacket.h log.h misc.h servconf.h canohost.h sshpty.h channels.h compat.h ssh2.h key.h sshkey.h cipher.h cipher-chachapoly.h chacha.h -serverloop.o: poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h hostfile.h auth.h auth-pam.h audit.h loginrec.h session.h auth-options.h serverloop.h ssherr.h -session.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshpty.h packet.h dispatch.h opacket.h match.h uidswap.h compat.h channels.h key.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h +auth2.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h atomicio.h xmalloc.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h sshbuf.h misc.h servconf.h compat.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h pathnames.h ssherr.h +auth2.o: monitor_wrap.h digest.h +authfd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh.h sshbuf.h sshkey.h authfd.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h compat.h log.h atomicio.h misc.h ssherr.h +authfile.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h ssh.h log.h authfile.h misc.h atomicio.h sshkey.h sshbuf.h ssherr.h krl.h +bitmap.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h bitmap.h +canohost.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h canohost.h misc.h +chacha.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h chacha.h +channels.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h ssherr.h sshbuf.h packet.h dispatch.h opacket.h log.h misc.h channels.h compat.h canohost.h sshkey.h authfd.h pathnames.h match.h +cipher-aes.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/openssl-compat.h +cipher-aesctr.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h cipher-aesctr.h rijndael.h +cipher-chachapoly.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h sshbuf.h ssherr.h cipher-chachapoly.h chacha.h poly1305.h +cipher-ctr.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +cipher.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h misc.h sshbuf.h ssherr.h digest.h openbsd-compat/openssl-compat.h +cleanup.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h +clientloop.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h packet.h dispatch.h opacket.h sshbuf.h compat.h channels.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h +clientloop.o: myproposal.h log.h misc.h readconf.h clientloop.h sshconnect.h authfd.h atomicio.h sshpty.h match.h msg.h ssherr.h hostfile.h +compat.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h compat.h log.h match.h kex.h mac.h +crc32.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crc32.h +dh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +digest-libc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssherr.h sshbuf.h digest.h +digest-openssl.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +dispatch.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssh2.h log.h dispatch.h packet.h openbsd-compat/sys-queue.h opacket.h compat.h ssherr.h +dns.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sshkey.h ssherr.h dns.h log.h digest.h +ed25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h ge25519.h fe25519.h sc25519.h +entropy.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +fatal.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h +fe25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h fe25519.h crypto_api.h +ge25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h fe25519.h crypto_api.h sc25519.h ge25519.h ge25519_base.data +groupaccess.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h groupaccess.h match.h log.h +gss-genr.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +gss-serv-krb5.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +gss-serv.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +hash.o: crypto_api.h includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h digest.h log.h ssherr.h +hmac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshbuf.h digest.h hmac.h +hostfile.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h match.h sshkey.h hostfile.h log.h misc.h ssherr.h digest.h hmac.h +kex.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h log.h match.h misc.h monitor.h ssherr.h sshbuf.h +kex.o: digest.h +kexc25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshbuf.h ssh2.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h log.h digest.h ssherr.h +kexc25519c.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h log.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssh2.h sshbuf.h digest.h ssherr.h +kexc25519s.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h kex.h mac.h log.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssh2.h sshbuf.h ssherr.h +kexdh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +kexdhc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +kexdhs.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +kexecdh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +kexecdhc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +kexecdhs.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +kexgex.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +kexgexc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +kexgexs.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +krl.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h sshbuf.h ssherr.h sshkey.h authfile.h misc.h log.h digest.h bitmap.h krl.h +log.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h +loginrec.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sshkey.h hostfile.h ssh.h loginrec.h log.h atomicio.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h canohost.h auth.h auth-pam.h audit.h sshbuf.h ssherr.h +logintest.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h loginrec.h +mac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h digest.h hmac.h umac.h mac.h misc.h ssherr.h sshbuf.h openbsd-compat/openssl-compat.h +match.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h match.h misc.h +md5crypt.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +misc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h misc.h log.h ssh.h sshbuf.h ssherr.h +moduli.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +monitor.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h atomicio.h xmalloc.h ssh.h sshkey.h sshbuf.h hostfile.h auth.h auth-pam.h audit.h loginrec.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h +monitor.o: rijndael.h kex.h mac.h dh.h packet.h dispatch.h opacket.h auth-options.h sshpty.h channels.h session.h sshlogin.h canohost.h log.h misc.h servconf.h monitor.h monitor_wrap.h monitor_fdpass.h compat.h ssh2.h authfd.h match.h ssherr.h +monitor_fdpass.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h monitor_fdpass.h +monitor_wrap.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h sshbuf.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h hostfile.h auth.h auth-pam.h audit.h loginrec.h +monitor_wrap.o: auth-options.h packet.h dispatch.h opacket.h log.h monitor.h monitor_wrap.h atomicio.h monitor_fdpass.h misc.h channels.h session.h servconf.h ssherr.h +msg.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshbuf.h ssherr.h log.h atomicio.h msg.h misc.h +mux.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h log.h ssh.h ssh2.h pathnames.h misc.h match.h sshbuf.h channels.h msg.h packet.h dispatch.h opacket.h monitor_fdpass.h sshpty.h sshkey.h readconf.h clientloop.h ssherr.h +nchan.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h ssh2.h sshbuf.h ssherr.h packet.h dispatch.h opacket.h channels.h compat.h log.h +opacket.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssherr.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h +packet.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h crc32.h compat.h ssh2.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h digest.h log.h canohost.h misc.h channels.h ssh.h +packet.o: packet.h dispatch.h opacket.h ssherr.h sshbuf.h +platform-misc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +platform-pledge.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +platform-tracing.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h +platform.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h misc.h servconf.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h +poly1305.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h poly1305.h +progressmeter.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h progressmeter.h atomicio.h misc.h +readconf.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/glob.h xmalloc.h ssh.h ssherr.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h pathnames.h log.h sshkey.h misc.h readconf.h match.h kex.h mac.h uidswap.h +readconf.o: myproposal.h digest.h +readpass.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h misc.h pathnames.h log.h ssh.h uidswap.h +rijndael.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h rijndael.h +sandbox-capsicum.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +sandbox-darwin.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +sandbox-null.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +sandbox-pledge.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +sandbox-rlimit.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +sandbox-seccomp-filter.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +sandbox-solaris.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +sandbox-systrace.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +sc25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sc25519.h crypto_api.h +scp.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh.h atomicio.h pathnames.h log.h misc.h progressmeter.h utf8.h +servconf.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h log.h sshbuf.h misc.h servconf.h compat.h pathnames.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h match.h channels.h +servconf.o: groupaccess.h canohost.h packet.h dispatch.h opacket.h ssherr.h hostfile.h auth.h auth-pam.h audit.h loginrec.h myproposal.h digest.h +serverloop.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h packet.h dispatch.h opacket.h sshbuf.h log.h misc.h servconf.h canohost.h sshpty.h channels.h compat.h ssh2.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h +serverloop.o: cipher-aesctr.h rijndael.h kex.h mac.h hostfile.h auth.h auth-pam.h audit.h loginrec.h session.h auth-options.h serverloop.h ssherr.h +session.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshpty.h packet.h dispatch.h opacket.h sshbuf.h ssherr.h match.h uidswap.h compat.h channels.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h session.o: cipher-aesctr.h rijndael.h hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h authfd.h pathnames.h log.h misc.h servconf.h sshlogin.h serverloop.h canohost.h session.h kex.h mac.h monitor_wrap.h sftp.h atomicio.h -sftp-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssherr.h log.h atomicio.h progressmeter.h misc.h utf8.h sftp.h sftp-common.h sftp-client.h openbsd-compat/glob.h -sftp-common.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssherr.h log.h misc.h sftp.h sftp-common.h -sftp-glob.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h sftp.h sftp-common.h sftp-client.h openbsd-compat/glob.h -sftp-server-main.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h sftp.h misc.h xmalloc.h -sftp-server.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssherr.h log.h misc.h match.h uidswap.h sftp.h sftp-common.h -sftp.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h log.h pathnames.h misc.h utf8.h sftp.h ssherr.h sftp-common.h sftp-client.h openbsd-compat/glob.h -ssh-add.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/openssl-compat.h xmalloc.h ssh.h log.h sshkey.h authfd.h authfile.h pathnames.h misc.h ssherr.h digest.h -ssh-agent.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h sshkey.h authfd.h compat.h log.h misc.h digest.h ssherr.h match.h -ssh-dss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -ssh-ecdsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -ssh-ed25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h crypto_api.h log.h sshkey.h ssherr.h ssh.h -ssh-keygen.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h sshkey.h authfile.h uuencode.h pathnames.h log.h misc.h match.h hostfile.h dns.h ssh.h ssh2.h ssherr.h ssh-pkcs11.h atomicio.h krl.h digest.h utf8.h authfd.h -ssh-keyscan.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h key.h compat.h myproposal.h packet.h dispatch.h -ssh-keyscan.o: opacket.h log.h atomicio.h misc.h hostfile.h ssherr.h ssh_api.h ssh2.h dns.h -ssh-keysign.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h log.h sshkey.h ssh.h ssh2.h misc.h authfile.h msg.h canohost.h pathnames.h readconf.h uidswap.h ssherr.h -ssh-pkcs11-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -ssh-pkcs11-helper.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h log.h misc.h sshkey.h authfd.h ssh-pkcs11.h ssherr.h -ssh-pkcs11.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -ssh-rsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -ssh-xmss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -ssh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/openssl-compat.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h canohost.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h packet.h -ssh.o: dispatch.h opacket.h channels.h key.h sshkey.h authfd.h authfile.h pathnames.h clientloop.h log.h misc.h readconf.h sshconnect.h kex.h mac.h sshpty.h match.h msg.h uidswap.h version.h ssherr.h myproposal.h utf8.h -ssh_api.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssh_api.h openbsd-compat/sys-queue.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h key.h ssh.h ssh2.h packet.h dispatch.h opacket.h compat.h -ssh_api.o: log.h authfile.h misc.h version.h myproposal.h ssherr.h -sshbuf-getput-basic.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h -sshbuf-getput-crypto.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h -sshbuf-misc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h -sshbuf.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h misc.h -sshconnect.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h key.h sshkey.h hostfile.h ssh.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h uidswap.h compat.h sshconnect.h log.h misc.h readconf.h atomicio.h dns.h monitor_fdpass.h -sshconnect.o: ssh2.h version.h authfile.h ssherr.h authfd.h -sshconnect2.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h packet.h dispatch.h opacket.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h key.h sshkey.h kex.h mac.h -sshconnect2.o: myproposal.h sshconnect.h authfile.h dh.h authfd.h log.h misc.h readconf.h match.h canohost.h msg.h pathnames.h uidswap.h hostfile.h ssherr.h utf8.h -sshd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshpty.h packet.h dispatch.h opacket.h log.h misc.h match.h servconf.h uidswap.h compat.h cipher.h cipher-chachapoly.h -sshd.o: chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h key.h sshkey.h kex.h mac.h myproposal.h authfile.h pathnames.h atomicio.h canohost.h hostfile.h auth.h auth-pam.h audit.h loginrec.h authfd.h msg.h channels.h session.h monitor.h monitor_wrap.h ssh-sandbox.h auth-options.h version.h ssherr.h +sftp-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssherr.h sshbuf.h log.h atomicio.h progressmeter.h misc.h utf8.h sftp.h sftp-common.h sftp-client.h openbsd-compat/glob.h +sftp-common.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssherr.h sshbuf.h log.h misc.h sftp.h sftp-common.h +sftp-glob.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sftp.h sftp-common.h sftp-client.h openbsd-compat/glob.h +sftp-server-main.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h sftp.h misc.h xmalloc.h +sftp-server.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sshbuf.h ssherr.h log.h misc.h match.h uidswap.h sftp.h sftp-common.h +sftp.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h log.h pathnames.h misc.h utf8.h sftp.h ssherr.h sshbuf.h sftp-common.h sftp-client.h openbsd-compat/glob.h +ssh-add.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/openssl-compat.h xmalloc.h ssh.h log.h sshkey.h sshbuf.h authfd.h authfile.h pathnames.h misc.h ssherr.h digest.h +ssh-agent.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h sshbuf.h sshkey.h authfd.h compat.h log.h misc.h digest.h ssherr.h match.h +ssh-dss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +ssh-ecdsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +ssh-ed25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h log.h sshbuf.h sshkey.h ssherr.h ssh.h +ssh-keygen.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sshkey.h authfile.h uuencode.h sshbuf.h pathnames.h log.h misc.h match.h hostfile.h dns.h ssh.h ssh2.h ssherr.h ssh-pkcs11.h atomicio.h krl.h digest.h utf8.h authfd.h +ssh-keyscan.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h sshbuf.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h compat.h myproposal.h packet.h dispatch.h opacket.h log.h +ssh-keyscan.o: atomicio.h misc.h hostfile.h ssherr.h ssh_api.h ssh2.h dns.h +ssh-keysign.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h log.h sshkey.h ssh.h ssh2.h misc.h sshbuf.h authfile.h msg.h canohost.h pathnames.h readconf.h uidswap.h ssherr.h +ssh-pkcs11-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +ssh-pkcs11-helper.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h sshbuf.h log.h misc.h sshkey.h authfd.h ssh-pkcs11.h ssherr.h +ssh-pkcs11.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +ssh-rsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +ssh-xmss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +ssh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/openssl-compat.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h canohost.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h packet.h dispatch.h opacket.h +ssh.o: sshbuf.h channels.h sshkey.h authfd.h authfile.h pathnames.h clientloop.h log.h misc.h readconf.h sshconnect.h kex.h mac.h sshpty.h match.h msg.h version.h ssherr.h myproposal.h utf8.h +ssh_api.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssh_api.h openbsd-compat/sys-queue.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h ssh.h ssh2.h packet.h dispatch.h opacket.h compat.h log.h authfile.h misc.h +ssh_api.o: version.h myproposal.h ssherr.h sshbuf.h +sshbuf-getput-basic.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssherr.h sshbuf.h +sshbuf-getput-crypto.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssherr.h sshbuf.h +sshbuf-misc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssherr.h sshbuf.h +sshbuf.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssherr.h sshbuf.h misc.h +sshconnect.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h hostfile.h ssh.h sshbuf.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h compat.h sshkey.h sshconnect.h log.h misc.h readconf.h atomicio.h dns.h monitor_fdpass.h ssh2.h version.h authfile.h +sshconnect.o: ssherr.h authfd.h +sshconnect2.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshbuf.h packet.h dispatch.h opacket.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h myproposal.h +sshconnect2.o: sshconnect.h authfile.h dh.h authfd.h log.h misc.h readconf.h match.h canohost.h msg.h pathnames.h uidswap.h hostfile.h ssherr.h utf8.h +sshd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshpty.h packet.h dispatch.h opacket.h log.h sshbuf.h misc.h match.h servconf.h uidswap.h compat.h cipher.h cipher-chachapoly.h chacha.h +sshd.o: poly1305.h cipher-aesctr.h rijndael.h digest.h sshkey.h kex.h mac.h myproposal.h authfile.h pathnames.h atomicio.h canohost.h hostfile.h auth.h auth-pam.h audit.h loginrec.h authfd.h msg.h channels.h session.h monitor.h monitor_wrap.h ssh-sandbox.h auth-options.h version.h ssherr.h ssherr.o: ssherr.h -sshkey-xmss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -sshkey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h crypto_api.h ssh2.h ssherr.h misc.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h sshkey.h sshkey-xmss.h match.h xmss_fast.h -sshlogin.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h loginrec.h log.h misc.h servconf.h -sshpty.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h sshpty.h log.h misc.h -sshtty.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h sshpty.h -ttymodes.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h compat.h ttymodes.h -uidswap.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h uidswap.h xmalloc.h -umac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h umac.h misc.h rijndael.h -umac128.o: umac.c includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h umac.h misc.h rijndael.h -utf8.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h utf8.h -uuencode.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h uuencode.h -verify.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h crypto_api.h -xmalloc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h log.h -xmss_commons.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -xmss_fast.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -xmss_hash.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -xmss_hash_address.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h -xmss_wots.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h +sshkey-xmss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +sshkey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h ssh2.h ssherr.h misc.h sshbuf.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h sshkey.h sshkey-xmss.h match.h xmss_fast.h +sshlogin.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshlogin.h ssherr.h loginrec.h log.h sshbuf.h misc.h servconf.h +sshpty.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshpty.h log.h misc.h +sshtty.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshpty.h +ttymodes.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h compat.h sshbuf.h ssherr.h ttymodes.h +uidswap.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h uidswap.h xmalloc.h +umac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h umac.h misc.h rijndael.h +umac128.o: umac.c includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h umac.h misc.h rijndael.h +utf8.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h utf8.h +uuencode.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h uuencode.h +verify.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h +xmalloc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h log.h +xmss_commons.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +xmss_fast.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +xmss_hash.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +xmss_hash_address.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h +xmss_wots.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h diff --git a/.skipped-commit-ids b/.skipped-commit-ids index b51baf90d..b94cadf1c 100644 --- a/.skipped-commit-ids +++ b/.skipped-commit-ids @@ -2,6 +2,8 @@ a337e886a49f96701ccbc4832bed086a68abfa85 Makefile changes f2c9feb26963615c4fece921906cf72e248b61ee more Makefile fa728823ba21c4b45212750e1d3a4b2086fd1a62 more Makefile refactoring +1de0e85522051eb2ffa00437e1885e9d7b3e0c2e moduli update +814b2f670df75759e1581ecef530980b2b3d7e0f remove redundant make defs Old upstream tree: diff --git a/INSTALL b/INSTALL index 7f552bf76..3fd265dbf 100644 --- a/INSTALL +++ b/INSTALL @@ -66,13 +66,6 @@ passphrase requester. This is maintained separately at: http://www.jmknoble.net/software/x11-ssh-askpass/ -S/Key Libraries: - -If you wish to use --with-skey then you will need the library below -installed. No other S/Key library is currently known to be supported. - -http://www.sparc.spb.su/solaris/skey/ - LibEdit: sftp supports command-line editing via NetBSD's libedit. If your platform @@ -184,9 +177,6 @@ it if lastlog is installed in a different place. --with-osfsia, --without-osfsia will enable or disable OSF1's Security Integration Architecture. The default for OSF1 machines is enable. ---with-skey=PATH will enable S/Key one time password support. You will -need the S/Key libraries and header files installed for this to work. - --with-md5-passwords will enable the use of MD5 passwords. Enable this if your operating system uses MD5 passwords and the system crypt() does not support them directly (see the crypt(3/3c) man page). If enabled, the @@ -220,7 +210,7 @@ If you need to pass special options to the compiler or linker, you can specify these as environment variables before running ./configure. For example: -CFLAGS="-O -m486" LDFLAGS="-s" LIBS="-lrubbish" LD="/usr/foo/ld" ./configure +CC="/usr/foo/cc" CFLAGS="-O" LDFLAGS="-s" LIBS="-lrubbish" ./configure 3. Configuration ---------------- diff --git a/Makefile.in b/Makefile.in index 04e1c8e53..2385c62a8 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,4 +1,4 @@ -# uncomment if you run a non bourne compatable shell. Ie. csh +# uncomment if you run a non bourne compatible shell. Ie. csh #SHELL = @SH@ AUTORECONF=autoreconf @@ -84,13 +84,13 @@ LIBOPENSSH_OBJS=\ ${XMSS_OBJS} LIBSSH_OBJS=${LIBOPENSSH_OBJS} \ - authfd.o authfile.o bufaux.o bufbn.o bufec.o buffer.o \ + authfd.o authfile.o \ canohost.o channels.o cipher.o cipher-aes.o cipher-aesctr.o \ cipher-ctr.o cleanup.o \ compat.o crc32.o fatal.o hostfile.o \ log.o match.o moduli.o nchan.o packet.o opacket.o \ readpass.o ttymodes.o xmalloc.o addrmatch.o \ - atomicio.o key.o dispatch.o mac.o uidswap.o uuencode.o misc.o utf8.o \ + atomicio.o dispatch.o mac.o uuencode.o misc.o utf8.o \ monitor_fdpass.o rijndael.o ssh-dss.o ssh-ecdsa.o ssh-rsa.o dh.o \ msg.o progressmeter.o dns.o entropy.o gss-genr.o umac.o umac128.o \ ssh-pkcs11.o smult_curve25519_ref.o \ @@ -110,7 +110,7 @@ SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o \ sshpty.o sshlogin.o servconf.o serverloop.o \ auth.o auth2.o auth-options.o session.o \ auth2-chall.o groupaccess.o \ - auth-skey.o auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o \ + auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o \ auth2-none.o auth2-passwd.o auth2-pubkey.o \ monitor.o monitor_wrap.o auth-krb5.o \ auth2-gss.o gss-serv.o gss-serv-krb5.o \ @@ -118,7 +118,7 @@ SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o \ sftp-server.o sftp-common.o \ sandbox-null.o sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o \ sandbox-seccomp-filter.o sandbox-capsicum.o sandbox-pledge.o \ - sandbox-solaris.o + sandbox-solaris.o uidswap.o MANPAGES = moduli.5.out scp.1.out ssh-add.1.out ssh-agent.1.out ssh-keygen.1.out ssh-keyscan.1.out ssh.1.out sshd.8.out sftp-server.8.out sftp.1.out ssh-keysign.8.out ssh-pkcs11-helper.8.out sshd_config.5.out ssh_config.5.out MANPAGES_IN = moduli.5 scp.1 ssh-add.1 ssh-agent.1 ssh-keygen.1 ssh-keyscan.1 ssh.1 sshd.8 sftp-server.8 sftp.1 ssh-keysign.8 ssh-pkcs11-helper.8 sshd_config.5 ssh_config.5 @@ -175,7 +175,7 @@ sshd$(EXEEXT): libssh.a $(LIBCOMPAT) $(SSHDOBJS) $(LD) -o $@ $(SSHDOBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(SSHDLIBS) $(LIBS) $(GSSLIBS) $(K5LIBS) scp$(EXEEXT): $(LIBCOMPAT) libssh.a scp.o progressmeter.o - $(LD) -o $@ scp.o progressmeter.o bufaux.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) + $(LD) -o $@ scp.o progressmeter.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) ssh-add$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-add.o $(LD) -o $@ ssh-add.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) @@ -186,8 +186,8 @@ ssh-agent$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-agent.o ssh-pkcs11-client.o ssh-keygen$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-keygen.o $(LD) -o $@ ssh-keygen.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) -ssh-keysign$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-keysign.o readconf.o - $(LD) -o $@ ssh-keysign.o readconf.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) +ssh-keysign$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-keysign.o readconf.o uidswap.o + $(LD) -o $@ ssh-keysign.o readconf.o uidswap.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) ssh-pkcs11-helper$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-pkcs11-helper.o ssh-pkcs11.o $(LD) -o $@ ssh-pkcs11-helper.o ssh-pkcs11.o $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS) @@ -230,6 +230,7 @@ clean: regressclean rm -f *.o *.a $(TARGETS) logintest config.cache config.log rm -f *.out core survey rm -f regress/check-perm$(EXEEXT) + rm -f regress/mkdtemp$(EXEEXT) rm -f regress/unittests/test_helper/*.a rm -f regress/unittests/test_helper/*.o rm -f regress/unittests/sshbuf/*.o @@ -258,6 +259,8 @@ distclean: regressclean rm -f Makefile buildpkg.sh config.h config.status rm -f survey.sh openbsd-compat/regress/Makefile *~ rm -rf autom4te.cache + rm -f regress/check-perm + rm -f regress/mkdtemp rm -f regress/unittests/test_helper/*.a rm -f regress/unittests/test_helper/*.o rm -f regress/unittests/sshbuf/*.o @@ -276,7 +279,8 @@ distclean: regressclean rm -f regress/unittests/match/test_match rm -f regress/unittests/utf8/*.o rm -f regress/unittests/utf8/test_utf8 - rm -f regress/unittests/misc/kexfuzz + rm -f regress/misc/kexfuzz/*.o + rm -f regress/misc/kexfuzz (cd openbsd-compat && $(MAKE) distclean) if test -d pkg ; then \ rm -fr pkg ; \ @@ -459,6 +463,10 @@ regress/check-perm$(EXEEXT): $(srcdir)/regress/check-perm.c $(REGRESSLIBS) $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/regress/check-perm.c \ $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS) +regress/mkdtemp$(EXEEXT): $(srcdir)/regress/mkdtemp.c $(REGRESSLIBS) + $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/regress/mkdtemp.c \ + $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS) + UNITTESTS_TEST_HELPER_OBJS=\ regress/unittests/test_helper/test_helper.o \ regress/unittests/test_helper/fuzz.o @@ -567,6 +575,7 @@ regress-binaries: regress/modpipe$(EXEEXT) \ regress/setuid-allowed$(EXEEXT) \ regress/netcat$(EXEEXT) \ regress/check-perm$(EXEEXT) \ + regress/mkdtemp$(EXEEXT) \ regress/unittests/sshbuf/test_sshbuf$(EXEEXT) \ regress/unittests/sshkey/test_sshkey$(EXEEXT) \ regress/unittests/bitmap/test_bitmap$(EXEEXT) \ @@ -577,8 +586,6 @@ regress-binaries: regress/modpipe$(EXEEXT) \ regress/unittests/utf8/test_utf8$(EXEEXT) \ regress/misc/kexfuzz/kexfuzz$(EXEEXT) -REGRESSTMP = "$(PWD)/regress" - tests interop-tests t-exec unit: regress-prep regress-binaries $(TARGETS) BUILDDIR=`pwd`; \ TEST_SSH_SCP="$${BUILDDIR}/scp"; \ @@ -602,7 +609,7 @@ tests interop-tests t-exec unit: regress-prep regress-binaries $(TARGETS) .OBJDIR="$${BUILDDIR}/regress" \ .CURDIR="`pwd`" \ BUILDDIR="$${BUILDDIR}" \ - OBJ="$(REGRESSTMP)" \ + OBJ="$${BUILDDIR}/regress/" \ PATH="$${BUILDDIR}:$${PATH}" \ TEST_ENV=MALLOC_OPTIONS="@TEST_MALLOC_OPTIONS@" \ TEST_MALLOC_OPTIONS="@TEST_MALLOC_OPTIONS@" \ diff --git a/OVERVIEW b/OVERVIEW index fde72c8e0..515567f45 100644 --- a/OVERVIEW +++ b/OVERVIEW @@ -23,9 +23,8 @@ these programs. - These provide an arbitrary size buffer, where data can be appended. Data can be consumed from either end. The code is used heavily - throughout ssh. The basic buffer manipulation functions are in - buffer.c (header buffer.h), and additional code to manipulate specific - data types is in bufaux.c. + throughout ssh. The buffer manipulation functions are in + sshbuf*.c (header sshbuf.h). Compression Library @@ -62,7 +61,7 @@ these programs. code in packet.c does not concern itself with packet types or their execution; it contains code to build packets, to receive them and extract data from them, and the code to compress and/or encrypt - packets. CRC code comes from crc32.c. + packets. - The code in packet.c calls the buffer manipulation routines (buffer.c, bufaux.c), compression routines (zlib), and the @@ -106,12 +105,6 @@ these programs. calls client_loop in clientloop.c. This does the real work for the session. - - The client is suid root. It tries to temporarily give up this - rights while reading the configuration data. The root - privileges are only used to make the connection (from a - privileged socket). Any extra privileges are dropped before - calling ssh_login. - Pseudo-tty manipulation and tty modes - Code to allocate and use a pseudo tty is in pty.c. Code to @@ -165,4 +158,4 @@ these programs. uidswap.c uid-swapping xmalloc.c "safe" malloc routines -$OpenBSD: OVERVIEW,v 1.12 2015/07/08 19:01:15 markus Exp $ +$OpenBSD: OVERVIEW,v 1.14 2018/07/27 03:55:22 dtucker Exp $ diff --git a/PROTOCOL b/PROTOCOL index b1fc00691..010bec92f 100644 --- a/PROTOCOL +++ b/PROTOCOL @@ -428,7 +428,7 @@ The values of the f_flag bitmask are as follows: Both the "statvfs@openssh.com" and "fstatvfs@openssh.com" extensions are advertised in the SSH_FXP_VERSION hello with version "2". -10. sftp: Extension request "hardlink@openssh.com" +3.5. sftp: Extension request "hardlink@openssh.com" This request is for creating a hard link to a regular file. This request is implemented as a SSH_FXP_EXTENDED request with the @@ -444,7 +444,7 @@ link(oldpath, newpath) and will respond with a SSH_FXP_STATUS message. This extension is advertised in the SSH_FXP_VERSION hello with version "1". -10. sftp: Extension request "fsync@openssh.com" +3.6. sftp: Extension request "fsync@openssh.com" This request asks the server to call fsync(2) on an open file handle. @@ -458,4 +458,35 @@ respond with a SSH_FXP_STATUS message. This extension is advertised in the SSH_FXP_VERSION hello with version "1". -$OpenBSD: PROTOCOL,v 1.32 2018/02/19 00:55:02 djm Exp $ +4. Miscellaneous changes + +4.1 Public key format + +OpenSSH public keys, as generated by ssh-keygen(1) and appearing in +authorized_keys files, are formatted as a single line of text consisting +of the public key algorithm name followed by a base64-encoded key blob. +The public key blob (before base64 encoding) is the same format used for +the encoding of public keys sent on the wire: as described in RFC4253 +section 6.6 for RSA and DSA keys, RFC5656 section 3.1 for ECDSA keys +and the "New public key formats" section of PROTOCOL.certkeys for the +OpenSSH certificate formats. + +4.2 Private key format + +OpenSSH private keys, as generated by ssh-keygen(1) use the format +described in PROTOCOL.key by default. As a legacy option, PEM format +(RFC7468) private keys are also supported for RSA, DSA and ECDSA keys +and were the default format before OpenSSH 7.8. + +4.3 KRL format + +OpenSSH supports a compact format for Key Revocation Lists (KRLs). This +format is described in the PROTOCOL.krl file. + +4.4 Connection multiplexing + +OpenSSH's connection multiplexing uses messages as described in +PROTOCOL.mux over a Unix domain socket for communications between a +master instance and later clients. + +$OpenBSD: PROTOCOL,v 1.35 2018/08/10 00:44:01 djm Exp $ diff --git a/PROTOCOL.certkeys b/PROTOCOL.certkeys index 64cb18700..11363fdc3 100644 --- a/PROTOCOL.certkeys +++ b/PROTOCOL.certkeys @@ -25,6 +25,10 @@ raw user keys. The ssh client will support automatic verification of acceptance of certified host keys, by adding a similar ability to specify CA keys in ~/.ssh/known_hosts. +All certificate types include certification information along with the +public key that is used to sign challenges. In OpenSSH, ssh-keygen +performs the CA signing operation. + Certified keys are represented using new key types: ssh-rsa-cert-v01@openssh.com @@ -33,9 +37,17 @@ Certified keys are represented using new key types: ecdsa-sha2-nistp384-cert-v01@openssh.com ecdsa-sha2-nistp521-cert-v01@openssh.com -These include certification information along with the public key -that is used to sign challenges. ssh-keygen performs the CA signing -operation. +Two additional types exist for RSA certificates to force use of +SHA-2 signatures (SHA-256 and SHA-512 respectively): + + rsa-sha2-256-cert-v01@openssh.com + rsa-sha2-512-cert-v01@openssh.com + +These RSA/SHA-2 types should not appear in keys at rest or transmitted +on their wire, but do appear in a SSH_MSG_KEXINIT's host-key algorithms +field or in the "public key algorithm name" field of a "publickey" +SSH_USERAUTH_REQUEST to indicate that the signature will use the +specified algorithm. Protocol extensions ------------------- @@ -174,7 +186,7 @@ certificate. Each represents a time in seconds since 1970-01-01 valid after <= current time < valid before -criticial options is a set of zero or more key options encoded as +critical options is a set of zero or more key options encoded as below. All such options are "critical" in the sense that an implementation must refuse to authorise a key that has an unrecognised option. @@ -291,4 +303,4 @@ permit-user-rc empty Flag indicating that execution of of this script will not be permitted if this option is not present. -$OpenBSD: PROTOCOL.certkeys,v 1.13 2017/11/03 02:32:19 djm Exp $ +$OpenBSD: PROTOCOL.certkeys,v 1.15 2018/07/03 11:39:54 djm Exp $ diff --git a/PROTOCOL.chacha20poly1305 b/PROTOCOL.chacha20poly1305 index 4857d3853..9ce2a1e3a 100644 --- a/PROTOCOL.chacha20poly1305 +++ b/PROTOCOL.chacha20poly1305 @@ -16,7 +16,7 @@ that computes a 128 bit integrity tag given a message and a single-use The chacha20-poly1305@openssh.com combines these two primitives into an authenticated encryption mode. The construction used is based on that proposed for TLS by Adam Langley in [3], but differs in the layout of -data passed to the MAC and in the addition of encyption of the packet +data passed to the MAC and in the addition of encryption of the packet lengths. Negotiation @@ -103,5 +103,5 @@ References [3] "ChaCha20 and Poly1305 based Cipher Suites for TLS", Adam Langley http://tools.ietf.org/html/draft-agl-tls-chacha20poly1305-03 -$OpenBSD: PROTOCOL.chacha20poly1305,v 1.3 2016/05/03 13:10:24 djm Exp $ +$OpenBSD: PROTOCOL.chacha20poly1305,v 1.4 2018/04/10 00:10:49 djm Exp $ diff --git a/PROTOCOL.krl b/PROTOCOL.krl index b9695107b..f319bad21 100644 --- a/PROTOCOL.krl +++ b/PROTOCOL.krl @@ -145,7 +145,7 @@ This section may appear multiple times. 5. KRL signature sections The KRL_SECTION_SIGNATURE section serves a different purpose to the -preceeding ones: to provide cryptographic authentication of a KRL that +preceding ones: to provide cryptographic authentication of a KRL that is retrieved over a channel that does not provide integrity protection. Its format is slightly different to the previously-described sections: in order to simplify the signature generation, it includes as a "body" @@ -166,4 +166,4 @@ Implementations that retrieve KRLs over untrusted channels must verify signatures. Signature sections are optional for KRLs distributed by trusted means. -$OpenBSD: PROTOCOL.krl,v 1.3 2015/01/30 01:10:33 djm Exp $ +$OpenBSD: PROTOCOL.krl,v 1.4 2018/04/10 00:10:49 djm Exp $ diff --git a/README b/README index 3343c0039..97fc2ef99 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -See https://www.openssh.com/releasenotes.html#7.6p1 for the release notes. +See https://www.openssh.com/releasenotes.html#7.8p1 for the release notes. Please read https://www.openssh.com/report.html for bug reporting instructions and note that we do not use Github for bug reporting or diff --git a/README.platform b/README.platform index c7be95fb6..9210e07c8 100644 --- a/README.platform +++ b/README.platform @@ -80,7 +80,7 @@ added to /etc/security/audit_event: 32800:AUE_openssh:OpenSSH login:lo The BSM audit event range available for third party TCB applications is -32768 - 65535. Event number 32800 has been choosen for AUE_openssh. +32768 - 65535. Event number 32800 has been chosen for AUE_openssh. There is no official registry of 3rd party event numbers, so if this number is already in use on your system, you may change it at build time by configure'ing --with-cflags=-DAUE_openssh=32801 then rebuilding. diff --git a/TODO b/TODO index f22c7e224..b76529c96 100644 --- a/TODO +++ b/TODO @@ -35,7 +35,7 @@ Programming: - Use different PAM service name for kbdint vs regular auth (suggest from Solar Designer) - Ability to select which ChallengeResponseAuthentications may be used - and order to try them in e.g. "ChallengeResponseAuthentication skey, pam" + and order to try them in e.g. "ChallengeResponseAuthentication pam" - Complete Tru64 SIA support - It looks like we could merge it into the password auth code to cut down @@ -57,10 +57,10 @@ Clean up configure/makefiles: - Replace the whole u_intXX_t evilness in acconfig.h with something better??? - Do it in configure.ac -- Consider splitting the u_intXX_t test for sys/bitype.h into seperate test +- Consider splitting the u_intXX_t test for sys/bitype.h into separate test to allow people to (right/wrongfully) link against Bind directly. -- Consider splitting configure.ac into seperate files which do logically +- Consider splitting configure.ac into separate files which do logically similar tests. E.g move all the type detection stuff into one file, entropy related stuff into another. diff --git a/aclocal.m4 b/aclocal.m4 index ac6b6684a..25ecc49a2 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -25,7 +25,7 @@ int main(int argc, char **argv) { } ]])], [ -if `grep -i "unrecognized option" conftest.err >/dev/null` +if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null then AC_MSG_RESULT([no]) CFLAGS="$saved_CFLAGS" @@ -63,7 +63,7 @@ int main(int argc, char **argv) { } ]])], [ -if `grep -i "unrecognized option" conftest.err >/dev/null` +if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null then AC_MSG_RESULT([no]) CFLAGS="$saved_CFLAGS" @@ -100,8 +100,15 @@ int main(int argc, char **argv) { exit(0); } ]])], - [ AC_MSG_RESULT([yes]) - LDFLAGS="$saved_LDFLAGS $_define_flag"], + [ +if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null +then + AC_MSG_RESULT([no]) + LDFLAGS="$saved_LDFLAGS" +else + AC_MSG_RESULT([yes]) + LDFLAGS="$saved_LDFLAGS $_define_flag" +fi ], [ AC_MSG_RESULT([no]) LDFLAGS="$saved_LDFLAGS" ] ) diff --git a/addrmatch.c b/addrmatch.c index 8658e105a..5a402d065 100644 --- a/addrmatch.c +++ b/addrmatch.c @@ -1,4 +1,4 @@ -/* $OpenBSD: addrmatch.c,v 1.13 2016/09/21 16:55:42 djm Exp $ */ +/* $OpenBSD: addrmatch.c,v 1.14 2018/07/31 03:07:24 djm Exp $ */ /* * Copyright (c) 2004-2008 Damien Miller @@ -205,25 +205,24 @@ addr_cmp(const struct xaddr *a, const struct xaddr *b) static int addr_pton(const char *p, struct xaddr *n) { - struct addrinfo hints, *ai; + struct addrinfo hints, *ai = NULL; + int ret = -1; memset(&hints, '\0', sizeof(hints)); hints.ai_flags = AI_NUMERICHOST; if (p == NULL || getaddrinfo(p, NULL, &hints, &ai) != 0) - return -1; - + goto out; if (ai == NULL || ai->ai_addr == NULL) - return -1; - - if (n != NULL && - addr_sa_to_xaddr(ai->ai_addr, ai->ai_addrlen, n) == -1) { + goto out; + if (n != NULL && addr_sa_to_xaddr(ai->ai_addr, ai->ai_addrlen, n) == -1) + goto out; + /* success */ + ret = 0; + out: + if (ai != NULL) freeaddrinfo(ai); - return -1; - } - - freeaddrinfo(ai); - return 0; + return ret; } /* diff --git a/audit-bsm.c b/audit-bsm.c index f8e0bea89..1409f69ae 100644 --- a/audit-bsm.c +++ b/audit-bsm.c @@ -49,7 +49,6 @@ #include "ssh.h" #include "log.h" -#include "key.h" #include "hostfile.h" #include "auth.h" #include "xmalloc.h" diff --git a/audit.c b/audit.c index 7645c1439..33a04376d 100644 --- a/audit.c +++ b/audit.c @@ -26,12 +26,12 @@ #include #include +#include #ifdef SSH_AUDIT_EVENTS #include "audit.h" #include "log.h" -#include "key.h" #include "hostfile.h" #include "auth.h" diff --git a/auth-bsdauth.c b/auth-bsdauth.c index e00718f2e..4dc5045c2 100644 --- a/auth-bsdauth.c +++ b/auth-bsdauth.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth-bsdauth.c,v 1.14 2015/10/20 23:24:25 mmcc Exp $ */ +/* $OpenBSD: auth-bsdauth.c,v 1.15 2018/07/09 21:35:50 markus Exp $ */ /* * Copyright (c) 2001 Markus Friedl. All rights reserved. * @@ -33,11 +33,11 @@ #ifdef BSD_AUTH #include "xmalloc.h" -#include "key.h" +#include "sshkey.h" +#include "sshbuf.h" #include "hostfile.h" #include "auth.h" #include "log.h" -#include "buffer.h" #ifdef GSSAPI #include "ssh-gss.h" #endif diff --git a/auth-krb5.c b/auth-krb5.c index a5a81ed2e..3096f1c8e 100644 --- a/auth-krb5.c +++ b/auth-krb5.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth-krb5.c,v 1.22 2016/05/04 14:22:33 markus Exp $ */ +/* $OpenBSD: auth-krb5.c,v 1.23 2018/07/09 21:35:50 markus Exp $ */ /* * Kerberos v5 authentication and ticket-passing routines. * @@ -38,11 +38,11 @@ #include "ssh.h" #include "packet.h" #include "log.h" -#include "buffer.h" +#include "sshbuf.h" +#include "sshkey.h" #include "misc.h" #include "servconf.h" #include "uidswap.h" -#include "key.h" #include "hostfile.h" #include "auth.h" diff --git a/auth-options.c b/auth-options.c index b528c197a..27c0eb05e 100644 --- a/auth-options.c +++ b/auth-options.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth-options.c,v 1.78 2018/03/14 05:35:40 djm Exp $ */ +/* $OpenBSD: auth-options.c,v 1.83 2018/06/19 02:59:41 djm Exp $ */ /* * Copyright (c) 2018 Damien Miller * @@ -283,6 +283,10 @@ sshauthopt_free(struct sshauthopt *opts) free(opts->permitopen[i]); free(opts->permitopen); + for (i = 0; i < opts->npermitlisten; i++) + free(opts->permitlisten[i]); + free(opts->permitlisten); + explicit_bzero(opts, sizeof(*opts)); free(opts); } @@ -304,10 +308,82 @@ sshauthopt_new_with_keys_defaults(void) return ret; } +/* + * Parse and record a permitopen/permitlisten directive. + * Return 0 on success. Return -1 on failure and sets *errstrp to error reason. + */ +static int +handle_permit(const char **optsp, int allow_bare_port, + char ***permitsp, size_t *npermitsp, const char **errstrp) +{ + char *opt, *tmp, *cp, *host, **permits = *permitsp; + size_t npermits = *npermitsp; + const char *errstr = "unknown error"; + + if (npermits > INT_MAX) { + *errstrp = "too many permission directives"; + return -1; + } + if ((opt = opt_dequote(optsp, &errstr)) == NULL) { + return -1; + } + if (allow_bare_port && strchr(opt, ':') == NULL) { + /* + * Allow a bare port number in permitlisten to indicate a + * listen_host wildcard. + */ + if (asprintf(&tmp, "*:%s", opt) < 0) { + *errstrp = "memory allocation failed"; + return -1; + } + free(opt); + opt = tmp; + } + if ((tmp = strdup(opt)) == NULL) { + free(opt); + *errstrp = "memory allocation failed"; + return -1; + } + cp = tmp; + /* validate syntax before recording it. */ + host = hpdelim(&cp); + if (host == NULL || strlen(host) >= NI_MAXHOST) { + free(tmp); + free(opt); + *errstrp = "invalid permission hostname"; + return -1; + } + /* + * don't want to use permitopen_port to avoid + * dependency on channels.[ch] here. + */ + if (cp == NULL || + (strcmp(cp, "*") != 0 && a2port(cp) <= 0)) { + free(tmp); + free(opt); + *errstrp = "invalid permission port"; + return -1; + } + /* XXX - add streamlocal support */ + free(tmp); + /* Record it */ + if ((permits = recallocarray(permits, npermits, npermits + 1, + sizeof(*permits))) == NULL) { + free(opt); + /* NB. don't update *permitsp if alloc fails */ + *errstrp = "memory allocation failed"; + return -1; + } + permits[npermits++] = opt; + *permitsp = permits; + *npermitsp = npermits; + return 0; +} + struct sshauthopt * sshauthopt_parse(const char *opts, const char **errstrp) { - char **oarray, *opt, *cp, *tmp, *host; + char **oarray, *opt, *cp, *tmp; int r; struct sshauthopt *ret = NULL; const char *errstr = "unknown error"; @@ -394,7 +470,7 @@ sshauthopt_parse(const char *opts, const char **errstrp) goto fail; } for (cp = opt; cp < tmp; cp++) { - if (!isalnum((u_char)*cp)) { + if (!isalnum((u_char)*cp) && *cp != '_') { free(opt); errstr = "invalid environment string"; goto fail; @@ -410,48 +486,13 @@ sshauthopt_parse(const char *opts, const char **errstrp) } ret->env[ret->nenv++] = opt; } else if (opt_match(&opts, "permitopen")) { - if (ret->npermitopen > INT_MAX) { - errstr = "too many permitopens"; + if (handle_permit(&opts, 0, &ret->permitopen, + &ret->npermitopen, &errstr) != 0) goto fail; - } - if ((opt = opt_dequote(&opts, &errstr)) == NULL) + } else if (opt_match(&opts, "permitlisten")) { + if (handle_permit(&opts, 1, &ret->permitlisten, + &ret->npermitlisten, &errstr) != 0) goto fail; - if ((tmp = strdup(opt)) == NULL) { - free(opt); - goto alloc_fail; - } - cp = tmp; - /* validate syntax of permitopen before recording it. */ - host = hpdelim(&cp); - if (host == NULL || strlen(host) >= NI_MAXHOST) { - free(tmp); - free(opt); - errstr = "invalid permitopen hostname"; - goto fail; - } - /* - * don't want to use permitopen_port to avoid - * dependency on channels.[ch] here. - */ - if (cp == NULL || - (strcmp(cp, "*") != 0 && a2port(cp) <= 0)) { - free(tmp); - free(opt); - errstr = "invalid permitopen port"; - goto fail; - } - /* XXX - add streamlocal support */ - free(tmp); - /* Record it */ - oarray = ret->permitopen; - if ((ret->permitopen = recallocarray(ret->permitopen, - ret->npermitopen, ret->npermitopen + 1, - sizeof(*ret->permitopen))) == NULL) { - free(opt); - ret->permitopen = oarray; - goto alloc_fail; - } - ret->permitopen[ret->npermitopen++] = opt; } else if (opt_match(&opts, "tunnel")) { if ((opt = opt_dequote(&opts, &errstr)) == NULL) goto fail; @@ -554,7 +595,10 @@ sshauthopt_merge(const struct sshauthopt *primary, if (tmp != NULL && (ret->required_from_host_keys = strdup(tmp)) == NULL) goto alloc_fail; - /* force_tun_device, permitopen and environment prefer the primary. */ + /* + * force_tun_device, permitopen/permitlisten and environment all + * prefer the primary. + */ ret->force_tun_device = primary->force_tun_device; if (ret->force_tun_device == -1) ret->force_tun_device = additional->force_tun_device; @@ -577,6 +621,16 @@ sshauthopt_merge(const struct sshauthopt *primary, goto alloc_fail; } + if (primary->npermitlisten > 0) { + if (dup_strings(&ret->permitlisten, &ret->npermitlisten, + primary->permitlisten, primary->npermitlisten) != 0) + goto alloc_fail; + } else if (additional->npermitlisten > 0) { + if (dup_strings(&ret->permitlisten, &ret->npermitlisten, + additional->permitlisten, additional->npermitlisten) != 0) + goto alloc_fail; + } + /* Flags are logical-AND (i.e. must be set in both for permission) */ #define OPTFLAG(x) ret->x = (primary->x == 1) && (additional->x == 1) OPTFLAG(permit_port_forwarding_flag); @@ -669,7 +723,9 @@ sshauthopt_copy(const struct sshauthopt *orig) if (dup_strings(&ret->env, &ret->nenv, orig->env, orig->nenv) != 0 || dup_strings(&ret->permitopen, &ret->npermitopen, - orig->permitopen, orig->npermitopen) != 0) { + orig->permitopen, orig->npermitopen) != 0 || + dup_strings(&ret->permitlisten, &ret->npermitlisten, + orig->permitlisten, orig->npermitlisten) != 0) { sshauthopt_free(ret); return NULL; } @@ -805,7 +861,9 @@ sshauthopt_serialise(const struct sshauthopt *opts, struct sshbuf *m, if ((r = serialise_array(m, opts->env, untrusted ? 0 : opts->nenv)) != 0 || (r = serialise_array(m, opts->permitopen, - untrusted ? 0 : opts->npermitopen)) != 0) + untrusted ? 0 : opts->npermitopen)) != 0 || + (r = serialise_array(m, opts->permitlisten, + untrusted ? 0 : opts->npermitlisten)) != 0) return r; /* success */ @@ -859,7 +917,9 @@ sshauthopt_deserialise(struct sshbuf *m, struct sshauthopt **optsp) /* Array options */ if ((r = deserialise_array(m, &opts->env, &opts->nenv)) != 0 || (r = deserialise_array(m, - &opts->permitopen, &opts->npermitopen)) != 0) + &opts->permitopen, &opts->npermitopen)) != 0 || + (r = deserialise_array(m, + &opts->permitlisten, &opts->npermitlisten)) != 0) goto out; /* success */ diff --git a/auth-options.h b/auth-options.h index bf59b30be..0462983b5 100644 --- a/auth-options.h +++ b/auth-options.h @@ -1,4 +1,4 @@ -/* $OpenBSD: auth-options.h,v 1.26 2018/03/12 00:52:01 djm Exp $ */ +/* $OpenBSD: auth-options.h,v 1.27 2018/06/06 18:23:32 djm Exp $ */ /* * Copyright (c) 2018 Damien Miller @@ -55,6 +55,10 @@ struct sshauthopt { size_t npermitopen; char **permitopen; + /* Permitted listens (remote forwarding) */ + size_t npermitlisten; + char **permitlisten; + /* * Permitted host/addresses (comma-separated) * Caller must check source address matches both lists (if present). diff --git a/auth-pam.c b/auth-pam.c index 00ba87775..8c0138362 100644 --- a/auth-pam.c +++ b/auth-pam.c @@ -86,8 +86,8 @@ extern char *__progname; #endif #include "xmalloc.h" -#include "buffer.h" -#include "key.h" +#include "sshbuf.h" +#include "ssherr.h" #include "hostfile.h" #include "auth.h" #include "auth-pam.h" @@ -105,7 +105,7 @@ extern char *__progname; #include "monitor_wrap.h" extern ServerOptions options; -extern Buffer loginmsg; +extern struct sshbuf *loginmsg; extern u_int utmp_len; /* so we don't silently change behaviour */ @@ -313,44 +313,54 @@ sshpam_password_change_required(int reqd) /* Import regular and PAM environment from subprocess */ static void -import_environments(Buffer *b) +import_environments(struct sshbuf *b) { char *env; - u_int i, num_env; - int err; + u_int n, i, num_env; + int r; debug3("PAM: %s entering", __func__); #ifndef UNSUPPORTED_POSIX_THREADS_HACK /* Import variables set by do_pam_account */ - sshpam_account_status = buffer_get_int(b); - sshpam_password_change_required(buffer_get_int(b)); + if ((r = sshbuf_get_u32(b, &n)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (n > INT_MAX) + fatal("%s: invalid PAM account status %u", __func__, n); + sshpam_account_status = (int)n; + if ((r = sshbuf_get_u32(b, &n)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + sshpam_password_change_required(n != 0); /* Import environment from subprocess */ - num_env = buffer_get_int(b); + if ((r = sshbuf_get_u32(b, &num_env)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); if (num_env > 1024) fatal("%s: received %u environment variables, expected <= 1024", __func__, num_env); sshpam_env = xcalloc(num_env + 1, sizeof(*sshpam_env)); debug3("PAM: num env strings %d", num_env); - for(i = 0; i < num_env; i++) - sshpam_env[i] = buffer_get_string(b, NULL); - + for(i = 0; i < num_env; i++) { + if ((r = sshbuf_get_cstring(b, &(sshpam_env[i]), NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + } sshpam_env[num_env] = NULL; /* Import PAM environment from subprocess */ - num_env = buffer_get_int(b); + if ((r = sshbuf_get_u32(b, &num_env)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); debug("PAM: num PAM env strings %d", num_env); - for(i = 0; i < num_env; i++) { - env = buffer_get_string(b, NULL); - + for (i = 0; i < num_env; i++) { + if ((r = sshbuf_get_cstring(b, &env, NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); #ifdef HAVE_PAM_PUTENV /* Errors are not fatal here */ - if ((err = pam_putenv(sshpam_handle, env)) != PAM_SUCCESS) { + if ((r = pam_putenv(sshpam_handle, env)) != PAM_SUCCESS) { error("PAM: pam_putenv: %s", - pam_strerror(sshpam_handle, sshpam_err)); + pam_strerror(sshpam_handle, r)); } #endif + /* XXX leak env? */ } #endif } @@ -362,10 +372,11 @@ static int sshpam_thread_conv(int n, sshpam_const struct pam_message **msg, struct pam_response **resp, void *data) { - Buffer buffer; + struct sshbuf *buffer; struct pam_ctxt *ctxt; struct pam_response *reply; - int i; + int r, i; + u_char status; debug3("PAM: %s entering, %d messages", __func__, n); *resp = NULL; @@ -379,38 +390,52 @@ sshpam_thread_conv(int n, sshpam_const struct pam_message **msg, return (PAM_CONV_ERR); if ((reply = calloc(n, sizeof(*reply))) == NULL) - return (PAM_CONV_ERR); + return PAM_CONV_ERR; + if ((buffer = sshbuf_new()) == NULL) { + free(reply); + return PAM_CONV_ERR; + } - buffer_init(&buffer); for (i = 0; i < n; ++i) { switch (PAM_MSG_MEMBER(msg, i, msg_style)) { case PAM_PROMPT_ECHO_OFF: case PAM_PROMPT_ECHO_ON: - buffer_put_cstring(&buffer, - PAM_MSG_MEMBER(msg, i, msg)); + if ((r = sshbuf_put_cstring(buffer, + PAM_MSG_MEMBER(msg, i, msg))) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); if (ssh_msg_send(ctxt->pam_csock, - PAM_MSG_MEMBER(msg, i, msg_style), &buffer) == -1) + PAM_MSG_MEMBER(msg, i, msg_style), buffer) == -1) goto fail; - if (ssh_msg_recv(ctxt->pam_csock, &buffer) == -1) + + if (ssh_msg_recv(ctxt->pam_csock, buffer) == -1) goto fail; - if (buffer_get_char(&buffer) != PAM_AUTHTOK) + if ((r = sshbuf_get_u8(buffer, &status)) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); + if (status != PAM_AUTHTOK) goto fail; - reply[i].resp = buffer_get_string(&buffer, NULL); + if ((r = sshbuf_get_cstring(buffer, + &reply[i].resp, NULL)) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); break; case PAM_ERROR_MSG: case PAM_TEXT_INFO: - buffer_put_cstring(&buffer, - PAM_MSG_MEMBER(msg, i, msg)); + if ((r = sshbuf_put_cstring(buffer, + PAM_MSG_MEMBER(msg, i, msg))) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); if (ssh_msg_send(ctxt->pam_csock, - PAM_MSG_MEMBER(msg, i, msg_style), &buffer) == -1) + PAM_MSG_MEMBER(msg, i, msg_style), buffer) == -1) goto fail; break; default: goto fail; } - buffer_clear(&buffer); + sshbuf_reset(buffer); } - buffer_free(&buffer); + sshbuf_free(buffer); *resp = reply; return (PAM_SUCCESS); @@ -419,7 +444,7 @@ sshpam_thread_conv(int n, sshpam_const struct pam_message **msg, free(reply[i].resp); } free(reply); - buffer_free(&buffer); + sshbuf_free(buffer); return (PAM_CONV_ERR); } @@ -430,9 +455,9 @@ static void * sshpam_thread(void *ctxtp) { struct pam_ctxt *ctxt = ctxtp; - Buffer buffer; + struct sshbuf *buffer = NULL; struct pam_conv sshpam_conv; - int flags = (options.permit_empty_passwd == 0 ? + int r, flags = (options.permit_empty_passwd == 0 ? PAM_DISALLOW_NULL_AUTHTOK : 0); #ifndef UNSUPPORTED_POSIX_THREADS_HACK extern char **environ; @@ -465,7 +490,9 @@ sshpam_thread(void *ctxtp) if (sshpam_authctxt == NULL) fatal("%s: PAM authctxt not initialized", __func__); - buffer_init(&buffer); + if ((buffer = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + sshpam_err = pam_set_item(sshpam_handle, PAM_CONV, (const void *)&sshpam_conv); if (sshpam_err != PAM_SUCCESS) @@ -488,45 +515,59 @@ sshpam_thread(void *ctxtp) sshpam_password_change_required(0); } - buffer_put_cstring(&buffer, "OK"); + if ((r = sshbuf_put_cstring(buffer, "OK")) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); #ifndef UNSUPPORTED_POSIX_THREADS_HACK /* Export variables set by do_pam_account */ - buffer_put_int(&buffer, sshpam_account_status); - buffer_put_int(&buffer, sshpam_authctxt->force_pwchange); + if ((r = sshbuf_put_u32(buffer, sshpam_account_status)) != 0 || + (r = sshbuf_put_u32(buffer, sshpam_authctxt->force_pwchange)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); /* Export any environment strings set in child */ - for(i = 0; environ[i] != NULL; i++) - ; /* Count */ - buffer_put_int(&buffer, i); - for(i = 0; environ[i] != NULL; i++) - buffer_put_cstring(&buffer, environ[i]); - + for (i = 0; environ[i] != NULL; i++) { + /* Count */ + if (i > INT_MAX) + fatal("%s: too many enviornment strings", __func__); + } + if ((r = sshbuf_put_u32(buffer, i)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + for (i = 0; environ[i] != NULL; i++) { + if ((r = sshbuf_put_cstring(buffer, environ[i])) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + } /* Export any environment strings set by PAM in child */ env_from_pam = pam_getenvlist(sshpam_handle); - for(i = 0; env_from_pam != NULL && env_from_pam[i] != NULL; i++) - ; /* Count */ - buffer_put_int(&buffer, i); - for(i = 0; env_from_pam != NULL && env_from_pam[i] != NULL; i++) - buffer_put_cstring(&buffer, env_from_pam[i]); + for (i = 0; env_from_pam != NULL && env_from_pam[i] != NULL; i++) { + /* Count */ + if (i > INT_MAX) + fatal("%s: too many PAM enviornment strings", __func__); + } + if ((r = sshbuf_put_u32(buffer, i)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + for (i = 0; env_from_pam != NULL && env_from_pam[i] != NULL; i++) { + if ((r = sshbuf_put_cstring(buffer, env_from_pam[i])) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + } #endif /* UNSUPPORTED_POSIX_THREADS_HACK */ /* XXX - can't do much about an error here */ - ssh_msg_send(ctxt->pam_csock, sshpam_err, &buffer); - buffer_free(&buffer); + ssh_msg_send(ctxt->pam_csock, sshpam_err, buffer); + sshbuf_free(buffer); pthread_exit(NULL); auth_fail: - buffer_put_cstring(&buffer, - pam_strerror(sshpam_handle, sshpam_err)); + if ((r = sshbuf_put_cstring(buffer, + pam_strerror(sshpam_handle, sshpam_err))) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); /* XXX - can't do much about an error here */ if (sshpam_err == PAM_ACCT_EXPIRED) - ssh_msg_send(ctxt->pam_csock, PAM_ACCT_EXPIRED, &buffer); + ssh_msg_send(ctxt->pam_csock, PAM_ACCT_EXPIRED, buffer); else if (sshpam_maxtries_reached) - ssh_msg_send(ctxt->pam_csock, PAM_MAXTRIES, &buffer); + ssh_msg_send(ctxt->pam_csock, PAM_MAXTRIES, buffer); else - ssh_msg_send(ctxt->pam_csock, PAM_AUTH_ERR, &buffer); - buffer_free(&buffer); + ssh_msg_send(ctxt->pam_csock, PAM_AUTH_ERR, buffer); + sshbuf_free(buffer); pthread_exit(NULL); return (NULL); /* Avoid warning for non-pthread case */ @@ -563,8 +604,7 @@ sshpam_store_conv(int n, sshpam_const struct pam_message **msg, struct pam_response **resp, void *data) { struct pam_response *reply; - int i; - size_t len; + int r, i; debug3("PAM: %s called with %d messages", __func__, n); *resp = NULL; @@ -579,9 +619,10 @@ sshpam_store_conv(int n, sshpam_const struct pam_message **msg, switch (PAM_MSG_MEMBER(msg, i, msg_style)) { case PAM_ERROR_MSG: case PAM_TEXT_INFO: - len = strlen(PAM_MSG_MEMBER(msg, i, msg)); - buffer_append(&loginmsg, PAM_MSG_MEMBER(msg, i, msg), len); - buffer_append(&loginmsg, "\n", 1 ); + if ((r = sshbuf_putf(loginmsg, "%s\n", + PAM_MSG_MEMBER(msg, i, msg))) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); reply[i].resp_retcode = PAM_SUCCESS; break; default: @@ -674,6 +715,27 @@ sshpam_init(Authctxt *authctxt) return (0); } +static void +expose_authinfo(const char *caller) +{ + char *auth_info; + + /* + * Expose authentication information to PAM. + * The environment variable is versioned. Please increment the + * version suffix if the format of session_info changes. + */ + if (sshpam_authctxt->session_info == NULL) + auth_info = xstrdup(""); + else if ((auth_info = sshbuf_dup_string( + sshpam_authctxt->session_info)) == NULL) + fatal("%s: sshbuf_dup_string failed", __func__); + + debug2("%s: auth information in SSH_AUTH_INFO_0", caller); + do_pam_putenv("SSH_AUTH_INFO_0", auth_info); + free(auth_info); +} + static void * sshpam_init_ctx(Authctxt *authctxt) { @@ -694,6 +756,7 @@ sshpam_init_ctx(Authctxt *authctxt) return (NULL); } + expose_authinfo(__func__); ctxt = xcalloc(1, sizeof *ctxt); /* Start the authentication thread */ @@ -721,25 +784,27 @@ sshpam_query(void *ctx, char **name, char **info, u_int *num, char ***prompts, u_int **echo_on) { struct ssh *ssh = active_state; /* XXX */ - Buffer buffer; + struct sshbuf *buffer; struct pam_ctxt *ctxt = ctx; size_t plen; u_char type; char *msg; size_t len, mlen; + int r; debug3("PAM: %s entering", __func__); - buffer_init(&buffer); + if ((buffer = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); *name = xstrdup(""); *info = xstrdup(""); *prompts = xmalloc(sizeof(char *)); **prompts = NULL; plen = 0; *echo_on = xmalloc(sizeof(u_int)); - while (ssh_msg_recv(ctxt->pam_psock, &buffer) == 0) { - type = buffer_get_char(&buffer); - msg = buffer_get_string(&buffer, NULL); - mlen = strlen(msg); + while (ssh_msg_recv(ctxt->pam_psock, buffer) == 0) { + if ((r = sshbuf_get_u8(buffer, &type)) != 0 || + (r = sshbuf_get_cstring(buffer, &msg, &mlen)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); switch (type) { case PAM_PROMPT_ECHO_ON: case PAM_PROMPT_ECHO_OFF: @@ -785,8 +850,10 @@ sshpam_query(void *ctx, char **name, char **info, if (**prompts != NULL) { /* drain any accumulated messages */ debug("PAM: %s", **prompts); - buffer_append(&loginmsg, **prompts, - strlen(**prompts)); + if ((r = sshbuf_put(loginmsg, **prompts, + strlen(**prompts))) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); free(**prompts); **prompts = NULL; } @@ -797,7 +864,7 @@ sshpam_query(void *ctx, char **name, char **info, fatal("Internal error: PAM auth " "succeeded when it should have " "failed"); - import_environments(&buffer); + import_environments(buffer); *num = 0; **echo_on = 0; ctxt->pam_done = 1; @@ -848,9 +915,10 @@ fake_password(const char *wire_password) static int sshpam_respond(void *ctx, u_int num, char **resp) { - Buffer buffer; + struct sshbuf *buffer; struct pam_ctxt *ctxt = ctx; char *fake; + int r; debug2("PAM: %s entering, %u responses", __func__, num); switch (ctxt->pam_done) { @@ -866,21 +934,24 @@ sshpam_respond(void *ctx, u_int num, char **resp) error("PAM: expected one response, got %u", num); return (-1); } - buffer_init(&buffer); + if ((buffer = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); if (sshpam_authctxt->valid && (sshpam_authctxt->pw->pw_uid != 0 || - options.permit_root_login == PERMIT_YES)) - buffer_put_cstring(&buffer, *resp); - else { + options.permit_root_login == PERMIT_YES)) { + if ((r = sshbuf_put_cstring(buffer, *resp)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + } else { fake = fake_password(*resp); - buffer_put_cstring(&buffer, fake); + if ((r = sshbuf_put_cstring(buffer, fake)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); free(fake); } - if (ssh_msg_send(ctxt->pam_psock, PAM_AUTHTOK, &buffer) == -1) { - buffer_free(&buffer); + if (ssh_msg_send(ctxt->pam_psock, PAM_AUTHTOK, buffer) == -1) { + sshbuf_free(buffer); return (-1); } - buffer_free(&buffer); + sshbuf_free(buffer); return (1); } @@ -935,26 +1006,6 @@ finish_pam(void) sshpam_cleanup(); } -static void -expose_authinfo(const char *caller) -{ - char *auth_info; - - /* - * Expose authentication information to PAM. - * The enviornment variable is versioned. Please increment the - * version suffix if the format of session_info changes. - */ - if (sshpam_authctxt->session_info == NULL) - auth_info = xstrdup(""); - else if ((auth_info = sshbuf_dup_string( - sshpam_authctxt->session_info)) == NULL) - fatal("%s: sshbuf_dup_string failed", __func__); - - debug2("%s: auth information in SSH_AUTH_INFO_0", caller); - do_pam_putenv("SSH_AUTH_INFO_0", auth_info); - free(auth_info); -} u_int do_pam_account(void) @@ -1174,7 +1225,7 @@ sshpam_passwd_conv(int n, sshpam_const struct pam_message **msg, struct pam_response **resp, void *data) { struct pam_response *reply; - int i; + int r, i; size_t len; debug3("PAM: %s called with %d messages", __func__, n); @@ -1200,9 +1251,10 @@ sshpam_passwd_conv(int n, sshpam_const struct pam_message **msg, case PAM_TEXT_INFO: len = strlen(PAM_MSG_MEMBER(msg, i, msg)); if (len > 0) { - buffer_append(&loginmsg, - PAM_MSG_MEMBER(msg, i, msg), len); - buffer_append(&loginmsg, "\n", 1); + if ((r = sshbuf_putf(loginmsg, "%s\n", + PAM_MSG_MEMBER(msg, i, msg))) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); } if ((reply[i].resp = strdup("")) == NULL) goto fail; diff --git a/auth-passwd.c b/auth-passwd.c index 2bb5fa54f..de1bd4645 100644 --- a/auth-passwd.c +++ b/auth-passwd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth-passwd.c,v 1.46 2018/03/03 03:15:51 djm Exp $ */ +/* $OpenBSD: auth-passwd.c,v 1.47 2018/07/09 21:26:02 markus Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -46,11 +46,12 @@ #include #include "packet.h" -#include "buffer.h" +#include "sshbuf.h" +#include "ssherr.h" #include "log.h" #include "misc.h" #include "servconf.h" -#include "key.h" +#include "sshkey.h" #include "hostfile.h" #include "auth.h" #include "auth-options.h" @@ -61,7 +62,7 @@ #include "misc_internal.h" #endif -extern Buffer loginmsg; +extern struct sshbuf *loginmsg; extern ServerOptions options; #ifdef HAVE_LOGIN_CAP @@ -137,7 +138,7 @@ auth_password(struct ssh *ssh, const char *password) static void warn_expiry(Authctxt *authctxt, auth_session_t *as) { - char buf[256]; + int r; quad_t pwtimeleft, actimeleft, daysleft, pwwarntime, acwarntime; pwwarntime = acwarntime = TWO_WEEKS; @@ -154,17 +155,17 @@ warn_expiry(Authctxt *authctxt, auth_session_t *as) #endif if (pwtimeleft != 0 && pwtimeleft < pwwarntime) { daysleft = pwtimeleft / DAY + 1; - snprintf(buf, sizeof(buf), + if ((r = sshbuf_putf(loginmsg, "Your password will expire in %lld day%s.\n", - daysleft, daysleft == 1 ? "" : "s"); - buffer_append(&loginmsg, buf, strlen(buf)); + daysleft, daysleft == 1 ? "" : "s")) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); } if (actimeleft != 0 && actimeleft < acwarntime) { daysleft = actimeleft / DAY + 1; - snprintf(buf, sizeof(buf), + if ((r = sshbuf_putf(loginmsg, "Your account will expire in %lld day%s.\n", - daysleft, daysleft == 1 ? "" : "s"); - buffer_append(&loginmsg, buf, strlen(buf)); + daysleft, daysleft == 1 ? "" : "s")) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); } } diff --git a/auth-rhosts.c b/auth-rhosts.c index ecf956f06..57296e1f6 100644 --- a/auth-rhosts.c +++ b/auth-rhosts.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth-rhosts.c,v 1.48 2016/08/13 17:47:41 markus Exp $ */ +/* $OpenBSD: auth-rhosts.c,v 1.49 2018/07/09 21:35:50 markus Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -34,8 +34,8 @@ #include "pathnames.h" #include "log.h" #include "misc.h" -#include "buffer.h" /* XXX */ -#include "key.h" /* XXX */ +#include "sshbuf.h" +#include "sshkey.h" #include "servconf.h" #include "canohost.h" #include "sshkey.h" diff --git a/auth-shadow.c b/auth-shadow.c index 219091677..c77ee8da9 100644 --- a/auth-shadow.c +++ b/auth-shadow.c @@ -30,10 +30,10 @@ #include #include -#include "key.h" #include "hostfile.h" #include "auth.h" -#include "buffer.h" +#include "sshbuf.h" +#include "ssherr.h" #include "log.h" #ifdef DAY @@ -41,7 +41,7 @@ #endif #define DAY (24L * 60 * 60) /* 1 day in seconds */ -extern Buffer loginmsg; +extern struct sshbuf *loginmsg; /* * For the account and password expiration functions, we assume the expiry @@ -57,7 +57,7 @@ auth_shadow_acctexpired(struct spwd *spw) { time_t today; int daysleft; - char buf[256]; + int r; today = time(NULL) / DAY; daysleft = spw->sp_expire - today; @@ -71,10 +71,10 @@ auth_shadow_acctexpired(struct spwd *spw) return 1; } else if (daysleft <= spw->sp_warn) { debug3("account will expire in %d days", daysleft); - snprintf(buf, sizeof(buf), + if ((r = sshbuf_putf(loginmsg, "Your account will expire in %d day%s.\n", daysleft, - daysleft == 1 ? "" : "s"); - buffer_append(&loginmsg, buf, strlen(buf)); + daysleft == 1 ? "" : "s")) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); } return 0; @@ -89,9 +89,8 @@ auth_shadow_pwexpired(Authctxt *ctxt) { struct spwd *spw = NULL; const char *user = ctxt->pw->pw_name; - char buf[256]; time_t today; - int daysleft, disabled = 0; + int r, daysleft, disabled = 0; if ((spw = getspnam((char *)user)) == NULL) { error("Could not get shadow information for %.100s", user); @@ -131,10 +130,10 @@ auth_shadow_pwexpired(Authctxt *ctxt) return 1; } else if (daysleft <= spw->sp_warn) { debug3("password will expire in %d days", daysleft); - snprintf(buf, sizeof(buf), + if ((r = sshbuf_putf(loginmsg, "Your password will expire in %d day%s.\n", daysleft, - daysleft == 1 ? "" : "s"); - buffer_append(&loginmsg, buf, strlen(buf)); + daysleft == 1 ? "" : "s")) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); } return 0; diff --git a/auth-sia.c b/auth-sia.c index 7c97f03e5..ebe9d8d12 100644 --- a/auth-sia.c +++ b/auth-sia.c @@ -37,7 +37,6 @@ #include "ssh.h" #include "ssh_api.h" -#include "key.h" #include "hostfile.h" #include "auth.h" #include "auth-sia.h" diff --git a/auth-skey.c b/auth-skey.c index 3536ec8fa..b347527f6 100644 --- a/auth-skey.c +++ b/auth-skey.c @@ -35,7 +35,6 @@ #include #include "xmalloc.h" -#include "key.h" #include "hostfile.h" #include "auth.h" #include "ssh-gss.h" diff --git a/auth.c b/auth.c index dea0a2b8b..b138303d0 100644 --- a/auth.c +++ b/auth.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth.c,v 1.127 2018/03/12 00:52:01 djm Exp $ */ +/* $OpenBSD: auth.c,v 1.132 2018/07/11 08:19:35 martijn Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * @@ -55,10 +55,10 @@ #include "match.h" #include "groupaccess.h" #include "log.h" -#include "buffer.h" +#include "sshbuf.h" #include "misc.h" #include "servconf.h" -#include "key.h" +#include "sshkey.h" #include "hostfile.h" #include "auth.h" #include "auth-options.h" @@ -80,13 +80,12 @@ /* import */ extern ServerOptions options; extern int use_privsep; -extern Buffer loginmsg; +extern struct sshbuf *loginmsg; extern struct passwd *privsep_pw; extern struct sshauthopt *auth_opts; /* Debugging messages */ -Buffer auth_debug; -int auth_debug_init; +static struct sshbuf *auth_debug; /* * Check if the user is allowed to log in via ssh. If user is listed @@ -282,7 +281,7 @@ format_method_key(Authctxt *authctxt) if (key == NULL) return NULL; - if (key_is_cert(key)) { + if (sshkey_is_cert(key)) { fp = sshkey_fingerprint(key->cert->signature_key, options.fingerprint_hash, SSH_FP_DEFAULT); xasprintf(&ret, "%s ID %s (serial %llu) CA %s %s%s%s", @@ -423,11 +422,13 @@ auth_root_allowed(struct ssh *ssh, const char *method) char * expand_authorized_keys(const char *filename, struct passwd *pw) { - char *file, ret[PATH_MAX]; + char *file, uidstr[32], ret[PATH_MAX]; int i; + snprintf(uidstr, sizeof(uidstr), "%llu", + (unsigned long long)pw->pw_uid); file = percent_expand(filename, "h", pw->pw_dir, - "u", pw->pw_name, (char *)NULL); + "u", pw->pw_name, "U", uidstr, (char *)NULL); #ifdef WINDOWS /* Return if the path is absolute. If not, prepend the '%h\\' */ @@ -701,26 +702,32 @@ auth_debug_add(const char *fmt,...) { char buf[1024]; va_list args; + int r; - if (!auth_debug_init) + if (auth_debug == NULL) return; va_start(args, fmt); vsnprintf(buf, sizeof(buf), fmt, args); va_end(args); - buffer_put_cstring(&auth_debug, buf); + if ((r = sshbuf_put_cstring(auth_debug, buf)) != 0) + fatal("%s: sshbuf_put_cstring: %s", __func__, ssh_err(r)); } void auth_debug_send(void) { + struct ssh *ssh = active_state; /* XXX */ char *msg; + int r; - if (!auth_debug_init) + if (auth_debug == NULL) return; - while (buffer_len(&auth_debug)) { - msg = buffer_get_string(&auth_debug, NULL); - packet_send_debug("%s", msg); + while (sshbuf_len(auth_debug) != 0) { + if ((r = sshbuf_get_cstring(auth_debug, &msg, NULL)) != 0) + fatal("%s: sshbuf_get_cstring: %s", + __func__, ssh_err(r)); + ssh_packet_send_debug(ssh, "%s", msg); free(msg); } } @@ -728,12 +735,10 @@ auth_debug_send(void) void auth_debug_reset(void) { - if (auth_debug_init) - buffer_clear(&auth_debug); - else { - buffer_init(&auth_debug); - auth_debug_init = 1; - } + if (auth_debug != NULL) + sshbuf_reset(auth_debug); + else if ((auth_debug = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); } struct passwd * @@ -874,7 +879,7 @@ auth_get_canonical_hostname(struct ssh *ssh, int use_dns) } /* - * Runs command in a subprocess wuth a minimal environment. + * Runs command in a subprocess with a minimal environment. * Returns pid on success, 0 on failure. * The child stdout and stderr maybe captured, left attached or sent to * /dev/null depending on the contents of flags. @@ -1034,17 +1039,20 @@ auth_log_authopts(const char *loc, const struct sshauthopt *opts, int do_remote) int do_env = options.permit_user_env && opts->nenv > 0; int do_permitopen = opts->npermitopen > 0 && (options.allow_tcp_forwarding & FORWARD_LOCAL) != 0; + int do_permitlisten = opts->npermitlisten > 0 && + (options.allow_tcp_forwarding & FORWARD_REMOTE) != 0; size_t i; char msg[1024], buf[64]; snprintf(buf, sizeof(buf), "%d", opts->force_tun_device); /* Try to keep this alphabetically sorted */ - snprintf(msg, sizeof(msg), "key options:%s%s%s%s%s%s%s%s%s%s%s%s", + snprintf(msg, sizeof(msg), "key options:%s%s%s%s%s%s%s%s%s%s%s%s%s", opts->permit_agent_forwarding_flag ? " agent-forwarding" : "", opts->force_command == NULL ? "" : " command", do_env ? " environment" : "", opts->valid_before == 0 ? "" : "expires", do_permitopen ? " permitopen" : "", + do_permitlisten ? " permitlisten" : "", opts->permit_port_forwarding_flag ? " port-forwarding" : "", opts->cert_principals == NULL ? "" : " principals", opts->permit_pty_flag ? " pty" : "", @@ -1078,12 +1086,18 @@ auth_log_authopts(const char *loc, const struct sshauthopt *opts, int do_remote) } if (opts->force_command != NULL) debug("%s: forced command: \"%s\"", loc, opts->force_command); - if ((options.allow_tcp_forwarding & FORWARD_LOCAL) != 0) { + if (do_permitopen) { for (i = 0; i < opts->npermitopen; i++) { debug("%s: permitted open: %s", loc, opts->permitopen[i]); } } + if (do_permitlisten) { + for (i = 0; i < opts->npermitlisten; i++) { + debug("%s: permitted listen: %s", + loc, opts->permitlisten[i]); + } + } } /* Activate a new set of key/cert options; merging with what is there. */ @@ -1111,6 +1125,7 @@ auth_restrict_session(struct ssh *ssh) /* A blank sshauthopt defaults to permitting nothing */ restricted = sshauthopt_new(); + restricted->permit_pty_flag = 1; restricted->restricted = 1; if (auth_activate_options(ssh, restricted) != 0) diff --git a/auth.h b/auth.h index 23ce67caf..977562f0a 100644 --- a/auth.h +++ b/auth.h @@ -1,4 +1,4 @@ -/* $OpenBSD: auth.h,v 1.95 2018/03/03 03:15:51 djm Exp $ */ +/* $OpenBSD: auth.h,v 1.96 2018/04/10 00:10:49 djm Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. @@ -89,7 +89,7 @@ struct Authctxt { struct sshkey **prev_keys; u_int nprev_keys; - /* Last used key and ancilliary information from active auth method */ + /* Last used key and ancillary information from active auth method */ struct sshkey *auth_method_key; char *auth_method_info; @@ -187,8 +187,6 @@ int auth2_challenge(struct ssh *, char *); void auth2_challenge_stop(struct ssh *); int bsdauth_query(void *, char **, char **, u_int *, char ***, u_int **); int bsdauth_respond(void *, u_int, char **); -int skey_query(void *, char **, char **, u_int *, char ***, u_int **); -int skey_respond(void *, u_int, char **); int allowed_user(struct passwd *); struct passwd * getpwnamallow(const char *user); @@ -239,8 +237,6 @@ pid_t subprocess(const char *, struct passwd *, int sys_auth_passwd(struct ssh *, const char *); -#define SKEY_PROMPT "\nS/Key Password: " - #if defined(KRB5) && !defined(HEIMDAL) #include krb5_error_code ssh_krb5_cc_gen(krb5_context, krb5_ccache *); diff --git a/auth2-chall.c b/auth2-chall.c index 11c8d31b3..2d5cff448 100644 --- a/auth2-chall.c +++ b/auth2-chall.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth2-chall.c,v 1.48 2017/05/30 14:29:59 markus Exp $ */ +/* $OpenBSD: auth2-chall.c,v 1.50 2018/07/11 18:55:11 markus Exp $ */ /* * Copyright (c) 2001 Markus Friedl. All rights reserved. * Copyright (c) 2001 Per Allansson. All rights reserved. @@ -34,12 +34,13 @@ #include "xmalloc.h" #include "ssh2.h" -#include "key.h" +#include "sshkey.h" #include "hostfile.h" #include "auth.h" -#include "buffer.h" +#include "sshbuf.h" #include "packet.h" #include "dispatch.h" +#include "ssherr.h" #include "log.h" #include "misc.h" #include "servconf.h" @@ -48,7 +49,7 @@ extern ServerOptions options; static int auth2_challenge_start(struct ssh *); -static int send_userauth_info_request(Authctxt *); +static int send_userauth_info_request(struct ssh *); static int input_userauth_info_response(int, u_int32_t, struct ssh *); #ifdef BSD_AUTH @@ -57,9 +58,6 @@ extern KbdintDevice bsdauth_device; #ifdef USE_PAM extern KbdintDevice sshpam_device; #endif -#ifdef SKEY -extern KbdintDevice skey_device; -#endif #endif KbdintDevice *devices[] = { @@ -69,9 +67,6 @@ KbdintDevice *devices[] = { #ifdef USE_PAM &sshpam_device, #endif -#ifdef SKEY - &skey_device, -#endif #endif NULL }; @@ -105,8 +100,8 @@ static KbdintAuthctxt * kbdint_alloc(const char *devs) { KbdintAuthctxt *kbdintctxt; - Buffer b; - int i; + struct sshbuf *b; + int i, r; #ifdef USE_PAM if (!options.use_pam) @@ -115,16 +110,17 @@ kbdint_alloc(const char *devs) kbdintctxt = xcalloc(1, sizeof(KbdintAuthctxt)); if (strcmp(devs, "") == 0) { - buffer_init(&b); + if ((b = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); for (i = 0; devices[i]; i++) { - if (buffer_len(&b) > 0) - buffer_append(&b, ",", 1); - buffer_append(&b, devices[i]->name, - strlen(devices[i]->name)); + if ((r = sshbuf_putf(b, "%s%s", + sshbuf_len(b) ? "," : "", devices[i]->name)) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); } - if ((kbdintctxt->devices = sshbuf_dup_string(&b)) == NULL) + if ((kbdintctxt->devices = sshbuf_dup_string(b)) == NULL) fatal("%s: sshbuf_dup_string failed", __func__); - buffer_free(&b); + sshbuf_free(b); } else { kbdintctxt->devices = xstrdup(devs); } @@ -243,7 +239,7 @@ auth2_challenge_start(struct ssh *ssh) auth2_challenge_stop(ssh); return 0; } - if (send_userauth_info_request(authctxt) == 0) { + if (send_userauth_info_request(ssh) == 0) { auth2_challenge_stop(ssh); return 0; } @@ -255,28 +251,32 @@ auth2_challenge_start(struct ssh *ssh) } static int -send_userauth_info_request(Authctxt *authctxt) +send_userauth_info_request(struct ssh *ssh) { + Authctxt *authctxt = ssh->authctxt; KbdintAuthctxt *kbdintctxt; char *name, *instr, **prompts; - u_int i, *echo_on; + u_int r, i, *echo_on; kbdintctxt = authctxt->kbdintctxt; if (kbdintctxt->device->query(kbdintctxt->ctxt, &name, &instr, &kbdintctxt->nreq, &prompts, &echo_on)) return 0; - packet_start(SSH2_MSG_USERAUTH_INFO_REQUEST); - packet_put_cstring(name); - packet_put_cstring(instr); - packet_put_cstring(""); /* language not used */ - packet_put_int(kbdintctxt->nreq); + if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_INFO_REQUEST)) != 0 || + (r = sshpkt_put_cstring(ssh, name)) != 0 || + (r = sshpkt_put_cstring(ssh, instr)) != 0 || + (r = sshpkt_put_cstring(ssh, "")) != 0 || /* language not used */ + (r = sshpkt_put_u32(ssh, kbdintctxt->nreq)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); for (i = 0; i < kbdintctxt->nreq; i++) { - packet_put_cstring(prompts[i]); - packet_put_char(echo_on[i]); + if ((r = sshpkt_put_cstring(ssh, prompts[i])) != 0 || + (r = sshpkt_put_u8(ssh, echo_on[i])) != 0) + fatal("%s: %s", __func__, ssh_err(r)); } - packet_send(); - packet_write_wait(); + if ((r = sshpkt_send(ssh)) != 0 || + (r = ssh_packet_write_wait(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); for (i = 0; i < kbdintctxt->nreq; i++) free(prompts[i]); @@ -293,6 +293,7 @@ input_userauth_info_response(int type, u_int32_t seq, struct ssh *ssh) Authctxt *authctxt = ssh->authctxt; KbdintAuthctxt *kbdintctxt; int authenticated = 0, res; + int r; u_int i, nresp; const char *devicename = NULL; char **response = NULL; @@ -306,7 +307,8 @@ input_userauth_info_response(int type, u_int32_t seq, struct ssh *ssh) fatal("input_userauth_info_response: no device"); authctxt->postponed = 0; /* reset */ - nresp = packet_get_int(); + if ((r = sshpkt_get_u32(ssh, &nresp)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); if (nresp != kbdintctxt->nreq) fatal("input_userauth_info_response: wrong number of replies"); if (nresp > 100) @@ -314,9 +316,12 @@ input_userauth_info_response(int type, u_int32_t seq, struct ssh *ssh) if (nresp > 0) { response = xcalloc(nresp, sizeof(char *)); for (i = 0; i < nresp; i++) - response[i] = packet_get_string(NULL); + if ((r = sshpkt_get_cstring(ssh, &response[i], + NULL)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); } - packet_check_eom(); + if ((r = sshpkt_get_end(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); res = kbdintctxt->device->respond(kbdintctxt->ctxt, nresp, response); @@ -333,7 +338,7 @@ input_userauth_info_response(int type, u_int32_t seq, struct ssh *ssh) break; case 1: /* Authentication needs further interaction */ - if (send_userauth_info_request(authctxt) == 1) + if (send_userauth_info_request(ssh) == 1) authctxt->postponed = 1; break; default: @@ -358,7 +363,7 @@ input_userauth_info_response(int type, u_int32_t seq, struct ssh *ssh) void privsep_challenge_enable(void) { -#if defined(BSD_AUTH) || defined(USE_PAM) || defined(SKEY) +#if defined(BSD_AUTH) || defined(USE_PAM) int n = 0; #endif #ifdef BSD_AUTH @@ -367,9 +372,6 @@ privsep_challenge_enable(void) #ifdef USE_PAM extern KbdintDevice mm_sshpam_device; #endif -#ifdef SKEY - extern KbdintDevice mm_skey_device; -#endif #ifdef BSD_AUTH devices[n++] = &mm_bsdauth_device; @@ -377,8 +379,5 @@ privsep_challenge_enable(void) #ifdef USE_PAM devices[n++] = &mm_sshpam_device; #endif -#ifdef SKEY - devices[n++] = &mm_skey_device; -#endif #endif } diff --git a/auth2-gss.c b/auth2-gss.c index 589283b72..9351e0428 100644 --- a/auth2-gss.c +++ b/auth2-gss.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth2-gss.c,v 1.26 2017/06/24 06:34:38 djm Exp $ */ +/* $OpenBSD: auth2-gss.c,v 1.29 2018/07/31 03:10:27 djm Exp $ */ /* * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. @@ -33,13 +33,14 @@ #include #include "xmalloc.h" -#include "key.h" +#include "sshkey.h" #include "hostfile.h" #include "auth.h" #include "ssh2.h" #include "log.h" #include "dispatch.h" -#include "buffer.h" +#include "sshbuf.h" +#include "ssherr.h" #include "misc.h" #include "servconf.h" #include "packet.h" @@ -63,16 +64,15 @@ userauth_gssapi(struct ssh *ssh) Authctxt *authctxt = ssh->authctxt; gss_OID_desc goid = {0, NULL}; Gssctxt *ctxt = NULL; - int mechs; - int present; + int r, present; + u_int mechs; OM_uint32 ms; - u_int len; + size_t len; u_char *doid = NULL; - if (!authctxt->valid || authctxt->user == NULL) - return (0); + if ((r = sshpkt_get_u32(ssh, &mechs)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); - mechs = packet_get_int(); if (mechs == 0) { debug("Mechanism negotiation is not supported"); return (0); @@ -84,7 +84,8 @@ userauth_gssapi(struct ssh *ssh) free(doid); present = 0; - doid = packet_get_string(&len); + if ((r = sshpkt_get_string(ssh, &doid, &len)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); if (len > 2 && doid[0] == SSH_GSS_OIDTYPE && doid[1] == len - 2) { @@ -102,6 +103,12 @@ userauth_gssapi(struct ssh *ssh) return (0); } + if (!authctxt->valid || authctxt->user == NULL) { + debug2("%s: disabled because of invalid user", __func__); + free(doid); + return (0); + } + if (GSS_ERROR(PRIVSEP(ssh_gssapi_server_ctx(&ctxt, &goid)))) { if (ctxt != NULL) ssh_gssapi_delete_ctx(&ctxt); @@ -112,12 +119,12 @@ userauth_gssapi(struct ssh *ssh) authctxt->methoddata = (void *)ctxt; - packet_start(SSH2_MSG_USERAUTH_GSSAPI_RESPONSE); - /* Return the OID that we received */ - packet_put_string(doid, len); + if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_GSSAPI_RESPONSE)) != 0 || + (r = sshpkt_put_string(ssh, doid, len)) != 0 || + (r = sshpkt_send(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); - packet_send(); free(doid); ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_TOKEN, &input_gssapi_token); @@ -135,36 +142,45 @@ input_gssapi_token(int type, u_int32_t plen, struct ssh *ssh) gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER; gss_buffer_desc recv_tok; OM_uint32 maj_status, min_status, flags; - u_int len; + u_char *p; + size_t len; + int r; if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep)) fatal("No authentication or GSSAPI context"); gssctxt = authctxt->methoddata; - recv_tok.value = packet_get_string(&len); - recv_tok.length = len; /* u_int vs. size_t */ - - packet_check_eom(); + if ((r = sshpkt_get_string(ssh, &p, &len)) != 0 || + (r = sshpkt_get_end(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); + recv_tok.value = p; + recv_tok.length = len; maj_status = PRIVSEP(ssh_gssapi_accept_ctx(gssctxt, &recv_tok, &send_tok, &flags)); - free(recv_tok.value); + free(p); if (GSS_ERROR(maj_status)) { if (send_tok.length != 0) { - packet_start(SSH2_MSG_USERAUTH_GSSAPI_ERRTOK); - packet_put_string(send_tok.value, send_tok.length); - packet_send(); + if ((r = sshpkt_start(ssh, + SSH2_MSG_USERAUTH_GSSAPI_ERRTOK)) != 0 || + (r = sshpkt_put_string(ssh, send_tok.value, + send_tok.length)) != 0 || + (r = sshpkt_send(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); } authctxt->postponed = 0; ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_TOKEN, NULL); userauth_finish(ssh, 0, "gssapi-with-mic", NULL); } else { if (send_tok.length != 0) { - packet_start(SSH2_MSG_USERAUTH_GSSAPI_TOKEN); - packet_put_string(send_tok.value, send_tok.length); - packet_send(); + if ((r = sshpkt_start(ssh, + SSH2_MSG_USERAUTH_GSSAPI_TOKEN)) != 0 || + (r = sshpkt_put_string(ssh, send_tok.value, + send_tok.length)) != 0 || + (r = sshpkt_send(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); } if (maj_status == GSS_S_COMPLETE) { ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_TOKEN, NULL); @@ -190,17 +206,20 @@ input_gssapi_errtok(int type, u_int32_t plen, struct ssh *ssh) gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER; gss_buffer_desc recv_tok; OM_uint32 maj_status; - u_int len; + int r; + u_char *p; + size_t len; if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep)) fatal("No authentication or GSSAPI context"); gssctxt = authctxt->methoddata; - recv_tok.value = packet_get_string(&len); + if ((r = sshpkt_get_string(ssh, &p, &len)) != 0 || + (r = sshpkt_get_end(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); + recv_tok.value = p; recv_tok.length = len; - packet_check_eom(); - /* Push the error token into GSSAPI to see what it says */ maj_status = PRIVSEP(ssh_gssapi_accept_ctx(gssctxt, &recv_tok, &send_tok, NULL)); @@ -227,7 +246,7 @@ static int input_gssapi_exchange_complete(int type, u_int32_t plen, struct ssh *ssh) { Authctxt *authctxt = ssh->authctxt; - int authenticated; + int r, authenticated; const char *displayname; if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep)) @@ -238,7 +257,8 @@ input_gssapi_exchange_complete(int type, u_int32_t plen, struct ssh *ssh) * the dispatcher once the exchange is complete */ - packet_check_eom(); + if ((r = sshpkt_get_end(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); authenticated = PRIVSEP(ssh_gssapi_userok(authctxt->user)); @@ -260,32 +280,37 @@ input_gssapi_mic(int type, u_int32_t plen, struct ssh *ssh) { Authctxt *authctxt = ssh->authctxt; Gssctxt *gssctxt; - int authenticated = 0; - Buffer b; + int r, authenticated = 0; + struct sshbuf *b; gss_buffer_desc mic, gssbuf; - u_int len; const char *displayname; + u_char *p; + size_t len; if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep)) fatal("No authentication or GSSAPI context"); gssctxt = authctxt->methoddata; - mic.value = packet_get_string(&len); + if ((r = sshpkt_get_string(ssh, &p, &len)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); + if ((b = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + mic.value = p; mic.length = len; - - ssh_gssapi_buildmic(&b, authctxt->user, authctxt->service, + ssh_gssapi_buildmic(b, authctxt->user, authctxt->service, "gssapi-with-mic"); - gssbuf.value = buffer_ptr(&b); - gssbuf.length = buffer_len(&b); + if ((gssbuf.value = sshbuf_mutable_ptr(b)) == NULL) + fatal("%s: sshbuf_mutable_ptr failed", __func__); + gssbuf.length = sshbuf_len(b); if (!GSS_ERROR(PRIVSEP(ssh_gssapi_checkmic(gssctxt, &gssbuf, &mic)))) authenticated = PRIVSEP(ssh_gssapi_userok(authctxt->user)); else logit("GSSAPI MIC check failed"); - buffer_free(&b); + sshbuf_free(b); free(mic.value); if ((!use_privsep || mm_is_monitor()) && diff --git a/auth2-hostbased.c b/auth2-hostbased.c index 8996f7e05..359393291 100644 --- a/auth2-hostbased.c +++ b/auth2-hostbased.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth2-hostbased.c,v 1.33 2018/01/23 05:27:21 djm Exp $ */ +/* $OpenBSD: auth2-hostbased.c,v 1.36 2018/07/31 03:10:27 djm Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * @@ -34,7 +34,7 @@ #include "xmalloc.h" #include "ssh2.h" #include "packet.h" -#include "buffer.h" +#include "sshbuf.h" #include "log.h" #include "misc.h" #include "servconf.h" @@ -67,10 +67,6 @@ userauth_hostbased(struct ssh *ssh) size_t alen, blen, slen; int r, pktype, authenticated = 0; - if (!authctxt->valid) { - debug2("%s: disabled because of invalid user", __func__); - return 0; - } /* XXX use sshkey_froms() */ if ((r = sshpkt_get_cstring(ssh, &pkalg, &alen)) != 0 || (r = sshpkt_get_string(ssh, &pkblob, &blen)) != 0 || @@ -111,13 +107,17 @@ userauth_hostbased(struct ssh *ssh) "signature format"); goto done; } - if (match_pattern_list(sshkey_ssh_name(key), - options.hostbased_key_types, 0) != 1) { + if (match_pattern_list(pkalg, options.hostbased_key_types, 0) != 1) { logit("%s: key type %s not in HostbasedAcceptedKeyTypes", __func__, sshkey_type(key)); goto done; } + if (!authctxt->valid || authctxt->user == NULL) { + debug2("%s: disabled because of invalid user", __func__); + goto done; + } + if ((b = sshbuf_new()) == NULL) fatal("%s: sshbuf_new failed", __func__); /* reconstruct packet */ diff --git a/auth2-kbdint.c b/auth2-kbdint.c index 86aad8ddc..a813b8f56 100644 --- a/auth2-kbdint.c +++ b/auth2-kbdint.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth2-kbdint.c,v 1.8 2017/05/30 14:29:59 markus Exp $ */ +/* $OpenBSD: auth2-kbdint.c,v 1.9 2018/07/09 21:35:50 markus Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * @@ -31,13 +31,12 @@ #include "xmalloc.h" #include "packet.h" -#include "key.h" #include "hostfile.h" #include "auth.h" #include "log.h" -#include "buffer.h" #include "misc.h" #include "servconf.h" +#include "ssherr.h" /* import */ extern ServerOptions options; @@ -45,12 +44,13 @@ extern ServerOptions options; static int userauth_kbdint(struct ssh *ssh) { - int authenticated = 0; + int r, authenticated = 0; char *lang, *devs; - lang = packet_get_string(NULL); - devs = packet_get_string(NULL); - packet_check_eom(); + if ((r = sshpkt_get_cstring(ssh, &lang, NULL)) != 0 || + (r = sshpkt_get_cstring(ssh, &devs, NULL)) != 0 || + (r = sshpkt_get_end(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); debug("keyboard-interactive devs %s", devs); diff --git a/auth2-none.c b/auth2-none.c index 8d4e9bb8c..dacb5fb83 100644 --- a/auth2-none.c +++ b/auth2-none.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth2-none.c,v 1.21 2018/03/03 03:15:51 djm Exp $ */ +/* $OpenBSD: auth2-none.c,v 1.22 2018/07/09 21:35:50 markus Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * @@ -42,7 +42,6 @@ #include "auth.h" #include "packet.h" #include "log.h" -#include "buffer.h" #include "misc.h" #include "servconf.h" #include "compat.h" diff --git a/auth2-passwd.c b/auth2-passwd.c index 445016aec..0395a69f4 100644 --- a/auth2-passwd.c +++ b/auth2-passwd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth2-passwd.c,v 1.15 2018/03/03 03:15:51 djm Exp $ */ +/* $OpenBSD: auth2-passwd.c,v 1.16 2018/07/09 21:35:50 markus Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * @@ -36,7 +36,6 @@ #include "sshkey.h" #include "hostfile.h" #include "auth.h" -#include "buffer.h" #ifdef GSSAPI #include "ssh-gss.h" #endif diff --git a/auth2-pubkey.c b/auth2-pubkey.c index 67b126c9f..44bead132 100644 --- a/auth2-pubkey.c +++ b/auth2-pubkey.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth2-pubkey.c,v 1.77 2018/03/03 03:15:51 djm Exp $ */ +/* $OpenBSD: auth2-pubkey.c,v 1.84 2018/08/23 03:01:08 djm Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * @@ -46,7 +46,7 @@ #include "ssh.h" #include "ssh2.h" #include "packet.h" -#include "buffer.h" +#include "sshbuf.h" #include "log.h" #include "misc.h" #include "servconf.h" @@ -106,7 +106,7 @@ userauth_pubkey(struct ssh *ssh) pktype = sshkey_type_from_name(pkalg); if (pktype == KEY_UNSPEC) { /* this is perfectly legal */ - logit("%s: unsupported public key algorithm: %s", + verbose("%s: unsupported public key algorithm: %s", __func__, pkalg); goto done; } @@ -133,8 +133,7 @@ userauth_pubkey(struct ssh *ssh) logit("refusing previously-used %s key", sshkey_type(key)); goto done; } - if (match_pattern_list(sshkey_ssh_name(key), - options.pubkey_key_types, 0) != 1) { + if (match_pattern_list(pkalg, options.pubkey_key_types, 0) != 1) { logit("%s: key type %s not in PubkeyAcceptedKeyTypes", __func__, sshkey_ssh_name(key)); goto done; @@ -189,11 +188,12 @@ userauth_pubkey(struct ssh *ssh) /* test for correct signature */ authenticated = 0; if (PRIVSEP(user_key_allowed(ssh, pw, key, 1, &authopts)) && - PRIVSEP(sshkey_verify(key, sig, slen, sshbuf_ptr(b), - sshbuf_len(b), NULL, ssh->compat)) == 0) { + PRIVSEP(sshkey_verify(key, sig, slen, + sshbuf_ptr(b), sshbuf_len(b), + (ssh->compat & SSH_BUG_SIGTYPE) == 0 ? pkalg : NULL, + ssh->compat)) == 0) { authenticated = 1; } - sshbuf_free(b); auth2_record_key(authctxt, authenticated, key); } else { debug("%s: test pkalg %s pkblob %s%s%s", @@ -204,11 +204,11 @@ userauth_pubkey(struct ssh *ssh) if ((r = sshpkt_get_end(ssh)) != 0) fatal("%s: %s", __func__, ssh_err(r)); - if (!authctxt->valid || authctxt->user == NULL) { - debug2("%s: disabled because of invalid user", - __func__); - goto done; - } + if (!authctxt->valid || authctxt->user == NULL) { + debug2("%s: disabled because of invalid user", + __func__); + goto done; + } /* XXX fake reply and always send PK_OK ? */ /* * XXX this allows testing whether a user is allowed @@ -222,9 +222,9 @@ userauth_pubkey(struct ssh *ssh) != 0 || (r = sshpkt_put_cstring(ssh, pkalg)) != 0 || (r = sshpkt_put_string(ssh, pkblob, blen)) != 0 || - (r = sshpkt_send(ssh)) != 0) + (r = sshpkt_send(ssh)) != 0 || + (r = ssh_packet_write_wait(ssh)) != 0) fatal("%s: %s", __func__, ssh_err(r)); - ssh_packet_write_wait(ssh); authctxt->postponed = 1; } } @@ -235,6 +235,7 @@ done: } debug2("%s: authenticated %d pkalg %s", __func__, authenticated, pkalg); + sshbuf_free(b); sshauthopt_free(authopts); sshkey_free(key); free(userstyle); @@ -325,14 +326,16 @@ static int process_principals(struct ssh *ssh, FILE *f, const char *file, const struct sshkey_cert *cert, struct sshauthopt **authoptsp) { - char loc[256], line[SSH_MAX_PUBKEY_BYTES], *cp, *ep; + char loc[256], *line = NULL, *cp, *ep; + size_t linesize = 0; u_long linenum = 0; u_int found_principal = 0; if (authoptsp != NULL) *authoptsp = NULL; - while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { + while (getline(&line, &linesize, f) != -1) { + linenum++; /* Always consume entire input */ if (found_principal) continue; @@ -350,6 +353,7 @@ process_principals(struct ssh *ssh, FILE *f, const char *file, if (check_principals_line(ssh, cp, cert, loc, authoptsp) == 0) found_principal = 1; } + free(line); return found_principal; } @@ -393,7 +397,7 @@ match_principals_command(struct ssh *ssh, struct passwd *user_pw, pid_t pid; char *tmp, *username = NULL, *command = NULL, **av = NULL; char *ca_fp = NULL, *key_fp = NULL, *catext = NULL, *keytext = NULL; - char serial_s[16]; + char serial_s[16], uidstr[32]; void (*osigchld)(int); if (authoptsp != NULL) @@ -453,8 +457,11 @@ match_principals_command(struct ssh *ssh, struct passwd *user_pw, } snprintf(serial_s, sizeof(serial_s), "%llu", (unsigned long long)cert->serial); + snprintf(uidstr, sizeof(uidstr), "%llu", + (unsigned long long)user_pw->pw_uid); for (i = 1; i < ac; i++) { tmp = percent_expand(av[i], + "U", uidstr, "u", user_pw->pw_name, "h", user_pw->pw_dir, "t", sshkey_ssh_name(key), @@ -690,14 +697,16 @@ static int check_authkeys_file(struct ssh *ssh, struct passwd *pw, FILE *f, char *file, struct sshkey *key, struct sshauthopt **authoptsp) { - char *cp, line[SSH_MAX_PUBKEY_BYTES], loc[256]; + char *cp, *line = NULL, loc[256]; + size_t linesize = 0; int found_key = 0; u_long linenum = 0; if (authoptsp != NULL) *authoptsp = NULL; - while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { + while (getline(&line, &linesize, f) != -1) { + linenum++; /* Always consume entire file */ if (found_key) continue; @@ -711,6 +720,7 @@ check_authkeys_file(struct ssh *ssh, struct passwd *pw, FILE *f, if (check_authkey_line(ssh, pw, key, cp, loc, authoptsp) == 0) found_key = 1; } + free(line); return found_key; } @@ -858,7 +868,7 @@ user_key_command_allowed2(struct ssh *ssh, struct passwd *user_pw, int i, uid_swapped = 0, ac = 0; pid_t pid; char *username = NULL, *key_fp = NULL, *keytext = NULL; - char *tmp, *command = NULL, **av = NULL; + char uidstr[32], *tmp, *command = NULL, **av = NULL; void (*osigchld)(int); if (authoptsp != NULL) @@ -908,8 +918,11 @@ user_key_command_allowed2(struct ssh *ssh, struct passwd *user_pw, command); goto out; } + snprintf(uidstr, sizeof(uidstr), "%llu", + (unsigned long long)user_pw->pw_uid); for (i = 1; i < ac; i++) { tmp = percent_expand(av[i], + "U", uidstr, "u", user_pw->pw_name, "h", user_pw->pw_dir, "t", sshkey_ssh_name(key), diff --git a/auth2.c b/auth2.c index e0034229a..ab8795895 100644 --- a/auth2.c +++ b/auth2.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth2.c,v 1.145 2018/03/03 03:15:51 djm Exp $ */ +/* $OpenBSD: auth2.c,v 1.149 2018/07/11 18:53:29 markus Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * @@ -41,28 +41,30 @@ #include "ssh2.h" #include "packet.h" #include "log.h" -#include "buffer.h" +#include "sshbuf.h" #include "misc.h" #include "servconf.h" #include "compat.h" -#include "key.h" +#include "sshkey.h" #include "hostfile.h" #include "auth.h" #include "dispatch.h" #include "pathnames.h" -#include "buffer.h" +#include "sshbuf.h" +#include "ssherr.h" #ifdef GSSAPI #include "ssh-gss.h" #endif #include "monitor_wrap.h" #include "ssherr.h" +#include "digest.h" /* import */ extern ServerOptions options; extern u_char *session_id2; extern u_int session_id2_len; -extern Buffer loginmsg; +extern struct sshbuf *loginmsg; /* methods */ @@ -210,6 +212,43 @@ input_service_request(int type, u_int32_t seq, struct ssh *ssh) return 0; } +#define MIN_FAIL_DELAY_SECONDS 0.005 +static double +user_specific_delay(const char *user) +{ + char b[512]; + size_t len = ssh_digest_bytes(SSH_DIGEST_SHA512); + u_char *hash = xmalloc(len); + double delay; + + (void)snprintf(b, sizeof b, "%llu%s", + (unsigned long long)options.timing_secret, user); + if (ssh_digest_memory(SSH_DIGEST_SHA512, b, strlen(b), hash, len) != 0) + fatal("%s: ssh_digest_memory", __func__); + /* 0-4.2 ms of delay */ + delay = (double)PEEK_U32(hash) / 1000 / 1000 / 1000 / 1000; + freezero(hash, len); + debug3("%s: user specific delay %0.3lfms", __func__, delay/1000); + return MIN_FAIL_DELAY_SECONDS + delay; +} + +static void +ensure_minimum_time_since(double start, double seconds) +{ + struct timespec ts; + double elapsed = monotime_double() - start, req = seconds, remain; + + /* if we've already passed the requested time, scale up */ + while ((remain = seconds - elapsed) < 0.0) + seconds *= 2; + + ts.tv_sec = remain; + ts.tv_nsec = (remain - ts.tv_sec) * 1000000000; + debug3("%s: elapsed %0.3lfms, delaying %0.3lfms (requested %0.3lfms)", + __func__, elapsed*1000, remain*1000, req*1000); + nanosleep(&ts, NULL); +} + /*ARGSUSED*/ static int input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) @@ -218,6 +257,7 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) Authmethod *m = NULL; char *user, *service, *method, *style = NULL; int authenticated = 0; + double tstart = monotime_double(); if (authctxt == NULL) fatal("input_userauth_request: no authctxt"); @@ -286,6 +326,9 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) debug2("input_userauth_request: try method %s", method); authenticated = m->userauth(ssh); } + if (!authctxt->authenticated) + ensure_minimum_time_since(tstart, + user_specific_delay(authctxt->user)); userauth_finish(ssh, authenticated, method, NULL); free(service); @@ -336,11 +379,15 @@ userauth_finish(struct ssh *ssh, int authenticated, const char *method, #ifdef USE_PAM if (options.use_pam && authenticated) { + int r; + if (!PRIVSEP(do_pam_account())) { /* if PAM returned a message, send it to the user */ - if (buffer_len(&loginmsg) > 0) { - buffer_append(&loginmsg, "\0", 1); - userauth_send_banner(buffer_ptr(&loginmsg)); + if (sshbuf_len(loginmsg) > 0) { + if ((r = sshbuf_put(loginmsg, "\0", 1)) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); + userauth_send_banner(sshbuf_ptr(loginmsg)); packet_write_wait(); } fatal("Access denied for user %s by PAM account " @@ -409,11 +456,12 @@ auth2_method_allowed(Authctxt *authctxt, const char *method, static char * authmethods_get(Authctxt *authctxt) { - Buffer b; + struct sshbuf *b; char *list; - u_int i; + int i, r; - buffer_init(&b); + if ((b = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); for (i = 0; authmethods[i] != NULL; i++) { if (strcmp(authmethods[i]->name, "none") == 0) continue; @@ -423,14 +471,13 @@ authmethods_get(Authctxt *authctxt) if (!auth2_method_allowed(authctxt, authmethods[i]->name, NULL)) continue; - if (buffer_len(&b) > 0) - buffer_append(&b, ",", 1); - buffer_append(&b, authmethods[i]->name, - strlen(authmethods[i]->name)); + if ((r = sshbuf_putf(b, "%s%s", sshbuf_len(b) ? "," : "", + authmethods[i]->name)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); } - if ((list = sshbuf_dup_string(&b)) == NULL) + if ((list = sshbuf_dup_string(b)) == NULL) fatal("%s: sshbuf_dup_string failed", __func__); - buffer_free(&b); + sshbuf_free(b); return list; } diff --git a/authfd.c b/authfd.c index 1eff7ba94..ecdd869ab 100644 --- a/authfd.c +++ b/authfd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: authfd.c,v 1.108 2018/02/23 15:58:37 markus Exp $ */ +/* $OpenBSD: authfd.c,v 1.111 2018/07/09 21:59:10 markus Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -133,7 +133,7 @@ ssh_request_reply(int sock, struct sshbuf *request, struct sshbuf *reply) /* Send the length and then the packet to the agent. */ if (atomicio(vwrite, sock, buf, 4) != 4 || - atomicio(vwrite, sock, (u_char *)sshbuf_ptr(request), + atomicio(vwrite, sock, sshbuf_mutable_ptr(request), sshbuf_len(request)) != sshbuf_len(request)) return SSH_ERR_AGENT_COMMUNICATION; /* @@ -323,7 +323,7 @@ ssh_free_identitylist(struct ssh_identitylist *idl) */ -/* encode signature algoritm in flag bits, so we can keep the msg format */ +/* encode signature algorithm in flag bits, so we can keep the msg format */ static u_int agent_encode_alg(const struct sshkey *key, const char *alg) { @@ -343,8 +343,8 @@ ssh_agent_sign(int sock, const struct sshkey *key, const u_char *data, size_t datalen, const char *alg, u_int compat) { struct sshbuf *msg; - u_char *blob = NULL, type; - size_t blen = 0, len = 0; + u_char *sig = NULL, type = 0; + size_t len = 0; u_int flags = 0; int r = SSH_ERR_INTERNAL_ERROR; @@ -355,11 +355,9 @@ ssh_agent_sign(int sock, const struct sshkey *key, return SSH_ERR_INVALID_ARGUMENT; if ((msg = sshbuf_new()) == NULL) return SSH_ERR_ALLOC_FAIL; - if ((r = sshkey_to_blob(key, &blob, &blen)) != 0) - goto out; flags |= agent_encode_alg(key, alg); if ((r = sshbuf_put_u8(msg, SSH2_AGENTC_SIGN_REQUEST)) != 0 || - (r = sshbuf_put_string(msg, blob, blen)) != 0 || + (r = sshkey_puts(key, msg)) != 0 || (r = sshbuf_put_string(msg, data, datalen)) != 0 || (r = sshbuf_put_u32(msg, flags)) != 0) goto out; @@ -374,15 +372,19 @@ ssh_agent_sign(int sock, const struct sshkey *key, r = SSH_ERR_INVALID_FORMAT; goto out; } - if ((r = sshbuf_get_string(msg, sigp, &len)) != 0) + if ((r = sshbuf_get_string(msg, &sig, &len)) != 0) goto out; + /* Check what we actually got back from the agent. */ + if ((r = sshkey_check_sigtype(sig, len, alg)) != 0) + goto out; + /* success */ + *sigp = sig; *lenp = len; + sig = NULL; + len = 0; r = 0; out: - if (blob != NULL) { - explicit_bzero(blob, blen); - free(blob); - } + freezero(sig, len); sshbuf_free(msg); return r; } diff --git a/authfd.h b/authfd.h index c9dfe249f..a990c8032 100644 --- a/authfd.h +++ b/authfd.h @@ -1,4 +1,4 @@ -/* $OpenBSD: authfd.h,v 1.43 2018/02/23 15:58:37 markus Exp $ */ +/* $OpenBSD: authfd.h,v 1.44 2018/07/12 04:35:25 djm Exp $ */ /* * Author: Tatu Ylonen @@ -36,8 +36,6 @@ int ssh_update_card(int sock, int add, const char *reader_id, const char *pin, u_int life, u_int confirm); int ssh_remove_all_identities(int sock, int version); -int ssh_decrypt_challenge(int sock, struct sshkey* key, BIGNUM *challenge, - u_char session_id[16], u_char response[16]); int ssh_agent_sign(int sock, const struct sshkey *key, u_char **sigp, size_t *lenp, const u_char *data, size_t datalen, const char *alg, u_int compat); diff --git a/authfile.c b/authfile.c index 4e6aa713a..abea0aef8 100644 --- a/authfile.c +++ b/authfile.c @@ -1,4 +1,4 @@ -/* $OpenBSD: authfile.c,v 1.128 2018/02/23 15:58:37 markus Exp $ */ +/* $OpenBSD: authfile.c,v 1.130 2018/07/09 21:59:10 markus Exp $ */ /* * Copyright (c) 2000, 2013 Markus Friedl. All rights reserved. * @@ -60,7 +60,7 @@ sshkey_save_private_blob(struct sshbuf *keybuf, const char *filename) if ((fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600)) < 0) return SSH_ERR_SYSTEM_ERROR; - if (atomicio(vwrite, fd, (u_char *)sshbuf_ptr(keybuf), + if (atomicio(vwrite, fd, sshbuf_mutable_ptr(keybuf), sshbuf_len(keybuf)) != sshbuf_len(keybuf)) { oerrno = errno; close(fd); @@ -275,17 +275,15 @@ static int sshkey_try_load_public(struct sshkey *k, const char *filename, char **commentp) { FILE *f; - char line[SSH_MAX_PUBKEY_BYTES]; - char *cp; - u_long linenum = 0; + char *line = NULL, *cp; + size_t linesize = 0; int r; if (commentp != NULL) *commentp = NULL; if ((f = fopen(filename, "r")) == NULL) return SSH_ERR_SYSTEM_ERROR; - while (read_keyfile_line(f, filename, line, sizeof(line), - &linenum) != -1) { + while (getline(&line, &linesize, f) != -1) { cp = line; switch (*cp) { case '#': @@ -309,11 +307,13 @@ sshkey_try_load_public(struct sshkey *k, const char *filename, char **commentp) if (*commentp == NULL) r = SSH_ERR_ALLOC_FAIL; } + free(line); fclose(f); return r; } } } + free(line); fclose(f); return SSH_ERR_INVALID_FORMAT; } @@ -457,19 +457,18 @@ sshkey_in_file(struct sshkey *key, const char *filename, int strict_type, int check_ca) { FILE *f; - char line[SSH_MAX_PUBKEY_BYTES]; - char *cp; - u_long linenum = 0; + char *line = NULL, *cp; + size_t linesize = 0; int r = 0; struct sshkey *pub = NULL; + int (*sshkey_compare)(const struct sshkey *, const struct sshkey *) = strict_type ? sshkey_equal : sshkey_equal_public; if ((f = fopen(filename, "r")) == NULL) return SSH_ERR_SYSTEM_ERROR; - while (read_keyfile_line(f, filename, line, sizeof(line), - &linenum) != -1) { + while (getline(&line, &linesize, f) != -1) { cp = line; /* Skip leading whitespace. */ @@ -501,6 +500,7 @@ sshkey_in_file(struct sshkey *key, const char *filename, int strict_type, } r = SSH_ERR_KEY_NOT_FOUND; out: + free(line); sshkey_free(pub); fclose(f); return r; diff --git a/bufaux.c b/bufaux.c deleted file mode 100644 index 3976896a9..000000000 --- a/bufaux.c +++ /dev/null @@ -1,259 +0,0 @@ -/* $OpenBSD: bufaux.c,v 1.60 2014/04/30 05:29:56 djm Exp $ */ -/* - * Copyright (c) 2012 Damien Miller - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* Emulation wrappers for legacy OpenSSH buffer API atop sshbuf */ - -#include "includes.h" - -#include - -#include "buffer.h" -#include "log.h" -#include "ssherr.h" - -int -buffer_get_short_ret(u_short *v, Buffer *buffer) -{ - int ret; - - if ((ret = sshbuf_get_u16(buffer, v)) != 0) { - error("%s: %s", __func__, ssh_err(ret)); - return -1; - } - return 0; -} - -u_short -buffer_get_short(Buffer *buffer) -{ - u_short ret; - - if (buffer_get_short_ret(&ret, buffer) == -1) - fatal("%s: buffer error", __func__); - - return (ret); -} - -int -buffer_get_int_ret(u_int *v, Buffer *buffer) -{ - int ret; - - if ((ret = sshbuf_get_u32(buffer, v)) != 0) { - error("%s: %s", __func__, ssh_err(ret)); - return -1; - } - return 0; -} - -u_int -buffer_get_int(Buffer *buffer) -{ - u_int ret; - - if (buffer_get_int_ret(&ret, buffer) == -1) - fatal("%s: buffer error", __func__); - - return (ret); -} - -int -buffer_get_int64_ret(u_int64_t *v, Buffer *buffer) -{ - int ret; - - if ((ret = sshbuf_get_u64(buffer, v)) != 0) { - error("%s: %s", __func__, ssh_err(ret)); - return -1; - } - return 0; -} - -u_int64_t -buffer_get_int64(Buffer *buffer) -{ - u_int64_t ret; - - if (buffer_get_int64_ret(&ret, buffer) == -1) - fatal("%s: buffer error", __func__); - - return (ret); -} - -void -buffer_put_short(Buffer *buffer, u_short value) -{ - int ret; - - if ((ret = sshbuf_put_u16(buffer, value)) != 0) - fatal("%s: %s", __func__, ssh_err(ret)); -} - -void -buffer_put_int(Buffer *buffer, u_int value) -{ - int ret; - - if ((ret = sshbuf_put_u32(buffer, value)) != 0) - fatal("%s: %s", __func__, ssh_err(ret)); -} - -void -buffer_put_int64(Buffer *buffer, u_int64_t value) -{ - int ret; - - if ((ret = sshbuf_put_u64(buffer, value)) != 0) - fatal("%s: %s", __func__, ssh_err(ret)); -} - -void * -buffer_get_string_ret(Buffer *buffer, u_int *length_ptr) -{ - size_t len; - int ret; - u_char *value; - - if ((ret = sshbuf_get_string(buffer, &value, &len)) != 0) { - error("%s: %s", __func__, ssh_err(ret)); - return NULL; - } - if (length_ptr != NULL) - *length_ptr = len; /* Safe: sshbuf never stores len > 2^31 */ - return value; -} - -void * -buffer_get_string(Buffer *buffer, u_int *length_ptr) -{ - void *ret; - - if ((ret = buffer_get_string_ret(buffer, length_ptr)) == NULL) - fatal("%s: buffer error", __func__); - return (ret); -} - -char * -buffer_get_cstring_ret(Buffer *buffer, u_int *length_ptr) -{ - size_t len; - int ret; - char *value; - - if ((ret = sshbuf_get_cstring(buffer, &value, &len)) != 0) { - error("%s: %s", __func__, ssh_err(ret)); - return NULL; - } - if (length_ptr != NULL) - *length_ptr = len; /* Safe: sshbuf never stores len > 2^31 */ - return value; -} - -char * -buffer_get_cstring(Buffer *buffer, u_int *length_ptr) -{ - char *ret; - - if ((ret = buffer_get_cstring_ret(buffer, length_ptr)) == NULL) - fatal("%s: buffer error", __func__); - return ret; -} - -const void * -buffer_get_string_ptr_ret(Buffer *buffer, u_int *length_ptr) -{ - size_t len; - int ret; - const u_char *value; - - if ((ret = sshbuf_get_string_direct(buffer, &value, &len)) != 0) { - error("%s: %s", __func__, ssh_err(ret)); - return NULL; - } - if (length_ptr != NULL) - *length_ptr = len; /* Safe: sshbuf never stores len > 2^31 */ - return value; -} - -const void * -buffer_get_string_ptr(Buffer *buffer, u_int *length_ptr) -{ - const void *ret; - - if ((ret = buffer_get_string_ptr_ret(buffer, length_ptr)) == NULL) - fatal("%s: buffer error", __func__); - return (ret); -} - -void -buffer_put_string(Buffer *buffer, const void *buf, u_int len) -{ - int ret; - - if ((ret = sshbuf_put_string(buffer, buf, len)) != 0) - fatal("%s: %s", __func__, ssh_err(ret)); -} - -void -buffer_put_cstring(Buffer *buffer, const char *s) -{ - int ret; - - if ((ret = sshbuf_put_cstring(buffer, s)) != 0) - fatal("%s: %s", __func__, ssh_err(ret)); -} - -int -buffer_get_char_ret(char *v, Buffer *buffer) -{ - int ret; - - if ((ret = sshbuf_get_u8(buffer, (u_char *)v)) != 0) { - error("%s: %s", __func__, ssh_err(ret)); - return -1; - } - return 0; -} - -int -buffer_get_char(Buffer *buffer) -{ - char ch; - - if (buffer_get_char_ret(&ch, buffer) == -1) - fatal("%s: buffer error", __func__); - return (u_char) ch; -} - -void -buffer_put_char(Buffer *buffer, int value) -{ - int ret; - - if ((ret = sshbuf_put_u8(buffer, value)) != 0) - fatal("%s: %s", __func__, ssh_err(ret)); -} - -void -buffer_put_bignum2_from_string(Buffer *buffer, const u_char *s, u_int l) -{ - int ret; - - if ((ret = sshbuf_put_bignum2_bytes(buffer, s, l)) != 0) - fatal("%s: %s", __func__, ssh_err(ret)); -} - diff --git a/bufbn.c b/bufbn.c deleted file mode 100644 index 98f9466bc..000000000 --- a/bufbn.c +++ /dev/null @@ -1,69 +0,0 @@ -/* $OpenBSD: bufbn.c,v 1.13 2017/04/30 23:23:54 djm Exp $ */ - -/* - * Copyright (c) 2012 Damien Miller - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* Emulation wrappers for legacy OpenSSH buffer API atop sshbuf */ - -#include "includes.h" - -#ifdef WITH_OPENSSL - -#include - -#include "buffer.h" -#include "log.h" -#include "ssherr.h" - -int -buffer_put_bignum2_ret(Buffer *buffer, const BIGNUM *value) -{ - int ret; - - if ((ret = sshbuf_put_bignum2(buffer, value)) != 0) { - error("%s: %s", __func__, ssh_err(ret)); - return -1; - } - return 0; -} - -void -buffer_put_bignum2(Buffer *buffer, const BIGNUM *value) -{ - if (buffer_put_bignum2_ret(buffer, value) == -1) - fatal("%s: buffer error", __func__); -} - -int -buffer_get_bignum2_ret(Buffer *buffer, BIGNUM *value) -{ - int ret; - - if ((ret = sshbuf_get_bignum2(buffer, value)) != 0) { - error("%s: %s", __func__, ssh_err(ret)); - return -1; - } - return 0; -} - -void -buffer_get_bignum2(Buffer *buffer, BIGNUM *value) -{ - if (buffer_get_bignum2_ret(buffer, value) == -1) - fatal("%s: buffer error", __func__); -} - -#endif /* WITH_OPENSSL */ diff --git a/bufec.c b/bufec.c deleted file mode 100644 index 749ce9d4c..000000000 --- a/bufec.c +++ /dev/null @@ -1,74 +0,0 @@ -/* $OpenBSD: bufec.c,v 1.4 2014/04/30 05:29:56 djm Exp $ */ - -/* - * Copyright (c) 2012 Damien Miller - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* Emulation wrappers for legacy OpenSSH buffer API atop sshbuf */ - -#include "includes.h" - -#include - -#include "buffer.h" -#include "log.h" -#include "ssherr.h" - -#ifdef OPENSSL_HAS_ECC - -int -buffer_put_ecpoint_ret(Buffer *buffer, const EC_GROUP *curve, - const EC_POINT *point) -{ - int ret; - - if ((ret = sshbuf_put_ec(buffer, point, curve)) != 0) { - error("%s: %s", __func__, ssh_err(ret)); - return -1; - } - return 0; -} - -void -buffer_put_ecpoint(Buffer *buffer, const EC_GROUP *curve, - const EC_POINT *point) -{ - if (buffer_put_ecpoint_ret(buffer, curve, point) == -1) - fatal("%s: buffer error", __func__); -} - -int -buffer_get_ecpoint_ret(Buffer *buffer, const EC_GROUP *curve, - EC_POINT *point) -{ - int ret; - - if ((ret = sshbuf_get_ec(buffer, point, curve)) != 0) { - error("%s: %s", __func__, ssh_err(ret)); - return -1; - } - return 0; -} - -void -buffer_get_ecpoint(Buffer *buffer, const EC_GROUP *curve, - EC_POINT *point) -{ - if (buffer_get_ecpoint_ret(buffer, curve, point) == -1) - fatal("%s: buffer error", __func__); -} - -#endif /* OPENSSL_HAS_ECC */ - diff --git a/buffer.c b/buffer.c deleted file mode 100644 index 8734fae26..000000000 --- a/buffer.c +++ /dev/null @@ -1,121 +0,0 @@ -/* $OpenBSD: buffer.c,v 1.36 2014/04/30 05:29:56 djm Exp $ */ - -/* - * Copyright (c) 2012 Damien Miller - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* Emulation wrappers for legacy OpenSSH buffer API atop sshbuf */ - -#include "includes.h" - -#include - -#include "buffer.h" -#include "log.h" -#include "ssherr.h" - -void -buffer_append(Buffer *buffer, const void *data, u_int len) -{ - int ret; - - if ((ret = sshbuf_put(buffer, data, len)) != 0) - fatal("%s: %s", __func__, ssh_err(ret)); -} - -void * -buffer_append_space(Buffer *buffer, u_int len) -{ - int ret; - u_char *p; - - if ((ret = sshbuf_reserve(buffer, len, &p)) != 0) - fatal("%s: %s", __func__, ssh_err(ret)); - return p; -} - -int -buffer_check_alloc(Buffer *buffer, u_int len) -{ - int ret = sshbuf_check_reserve(buffer, len); - - if (ret == 0) - return 1; - if (ret == SSH_ERR_NO_BUFFER_SPACE) - return 0; - fatal("%s: %s", __func__, ssh_err(ret)); - return -1; -} - -int -buffer_get_ret(Buffer *buffer, void *buf, u_int len) -{ - int ret; - - if ((ret = sshbuf_get(buffer, buf, len)) != 0) { - error("%s: %s", __func__, ssh_err(ret)); - return -1; - } - return 0; -} - -void -buffer_get(Buffer *buffer, void *buf, u_int len) -{ - if (buffer_get_ret(buffer, buf, len) == -1) - fatal("%s: buffer error", __func__); -} - -int -buffer_consume_ret(Buffer *buffer, u_int bytes) -{ - int ret = sshbuf_consume(buffer, bytes); - - if (ret == 0) - return 0; - if (ret == SSH_ERR_MESSAGE_INCOMPLETE) - return -1; - fatal("%s: %s", __func__, ssh_err(ret)); - return -1; -} - -void -buffer_consume(Buffer *buffer, u_int bytes) -{ - if (buffer_consume_ret(buffer, bytes) == -1) - fatal("%s: buffer error", __func__); -} - -int -buffer_consume_end_ret(Buffer *buffer, u_int bytes) -{ - int ret = sshbuf_consume_end(buffer, bytes); - - if (ret == 0) - return 0; - if (ret == SSH_ERR_MESSAGE_INCOMPLETE) - return -1; - fatal("%s: %s", __func__, ssh_err(ret)); - return -1; -} - -void -buffer_consume_end(Buffer *buffer, u_int bytes) -{ - if (buffer_consume_end_ret(buffer, bytes) == -1) - fatal("%s: buffer error", __func__); -} - - diff --git a/buffer.h b/buffer.h deleted file mode 100644 index 56174394c..000000000 --- a/buffer.h +++ /dev/null @@ -1,95 +0,0 @@ -/* $OpenBSD: buffer.h,v 1.26 2017/04/30 23:23:54 djm Exp $ */ - -/* - * Copyright (c) 2012 Damien Miller - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* Emulation wrappers for legacy OpenSSH buffer API atop sshbuf */ - -#ifndef BUFFER_H -#define BUFFER_H - -#include "sshbuf.h" - -typedef struct sshbuf Buffer; - -#define buffer_init(b) sshbuf_init(b) -#define buffer_clear(b) sshbuf_reset(b) -#define buffer_free(b) sshbuf_free(b) -#define buffer_dump(b) sshbuf_dump(b, stderr) - -/* XXX cast is safe: sshbuf never stores more than len 2^31 */ -#define buffer_len(b) ((u_int) sshbuf_len(b)) -#define buffer_ptr(b) sshbuf_mutable_ptr(b) - -void buffer_append(Buffer *, const void *, u_int); -void *buffer_append_space(Buffer *, u_int); -int buffer_check_alloc(Buffer *, u_int); -void buffer_get(Buffer *, void *, u_int); - -void buffer_consume(Buffer *, u_int); -void buffer_consume_end(Buffer *, u_int); - - -int buffer_get_ret(Buffer *, void *, u_int); -int buffer_consume_ret(Buffer *, u_int); -int buffer_consume_end_ret(Buffer *, u_int); - -#include -#include -void buffer_put_bignum2(Buffer *, const BIGNUM *); -void buffer_get_bignum2(Buffer *, BIGNUM *); -void buffer_put_bignum2_from_string(Buffer *, const u_char *, u_int); - -u_short buffer_get_short(Buffer *); -void buffer_put_short(Buffer *, u_short); - -u_int buffer_get_int(Buffer *); -void buffer_put_int(Buffer *, u_int); - -u_int64_t buffer_get_int64(Buffer *); -void buffer_put_int64(Buffer *, u_int64_t); - -int buffer_get_char(Buffer *); -void buffer_put_char(Buffer *, int); - -void *buffer_get_string(Buffer *, u_int *); -const void *buffer_get_string_ptr(Buffer *, u_int *); -void buffer_put_string(Buffer *, const void *, u_int); -char *buffer_get_cstring(Buffer *, u_int *); -void buffer_put_cstring(Buffer *, const char *); - -#define buffer_skip_string(b) (void)buffer_get_string_ptr(b, NULL); - -int buffer_put_bignum2_ret(Buffer *, const BIGNUM *); -int buffer_get_bignum2_ret(Buffer *, BIGNUM *); -int buffer_get_short_ret(u_short *, Buffer *); -int buffer_get_int_ret(u_int *, Buffer *); -int buffer_get_int64_ret(u_int64_t *, Buffer *); -void *buffer_get_string_ret(Buffer *, u_int *); -char *buffer_get_cstring_ret(Buffer *, u_int *); -const void *buffer_get_string_ptr_ret(Buffer *, u_int *); -int buffer_get_char_ret(char *, Buffer *); - -#ifdef OPENSSL_HAS_ECC -#include -int buffer_put_ecpoint_ret(Buffer *, const EC_GROUP *, const EC_POINT *); -void buffer_put_ecpoint(Buffer *, const EC_GROUP *, const EC_POINT *); -int buffer_get_ecpoint_ret(Buffer *, const EC_GROUP *, EC_POINT *); -void buffer_get_ecpoint(Buffer *, const EC_GROUP *, EC_POINT *); -#endif - -#endif /* BUFFER_H */ - diff --git a/channels.c b/channels.c index cb094a8b5..9ebe09844 100644 --- a/channels.c +++ b/channels.c @@ -1,4 +1,4 @@ -/* $OpenBSD: channels.c,v 1.379 2018/02/05 05:36:49 tb Exp $ */ +/* $OpenBSD: channels.c,v 1.384 2018/07/27 12:03:17 markus Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -79,9 +79,10 @@ #include "channels.h" #include "compat.h" #include "canohost.h" -#include "key.h" +#include "sshkey.h" #include "authfd.h" #include "pathnames.h" +#include "match.h" /* -- agent forwarding */ #define NUM_SOCKS 10 @@ -97,6 +98,10 @@ /* Maximum number of fake X11 displays to try. */ #define MAX_DISPLAYS 1000 +/* Per-channel callback for pre/post select() actions */ +typedef void chan_fn(struct ssh *, Channel *c, + fd_set *readset, fd_set *writeset); + /* * Data structure for storing which hosts are permitted for forward requests. * The local sides of any remote forwards are stored in this array to prevent @@ -106,17 +111,40 @@ /* XXX: streamlocal wants a path instead of host:port */ /* Overload host_to_connect; we could just make this match Forward */ /* XXX - can we use listen_host instead of listen_path? */ -typedef struct { +struct permission { char *host_to_connect; /* Connect to 'host'. */ int port_to_connect; /* Connect to 'port'. */ char *listen_host; /* Remote side should listen address. */ char *listen_path; /* Remote side should listen path. */ int listen_port; /* Remote side should listen port. */ Channel *downstream; /* Downstream mux*/ -} ForwardPermission; +}; -typedef void chan_fn(struct ssh *, Channel *c, - fd_set *readset, fd_set *writeset); +/* + * Stores the forwarding permission state for a single direction (local or + * remote). + */ +struct permission_set { + /* + * List of all local permitted host/port pairs to allow for the + * user. + */ + u_int num_permitted_user; + struct permission *permitted_user; + + /* + * List of all permitted host/port pairs to allow for the admin. + */ + u_int num_permitted_admin; + struct permission *permitted_admin; + + /* + * If this is true, all opens/listens are permitted. This is the + * case on the server on which we have to trust the client anyway, + * and the user could do anything after logging in. + */ + int all_permitted; +}; /* Master structure for channels state */ struct ssh_channels { @@ -149,31 +177,8 @@ struct ssh_channels { chan_fn **channel_post; /* -- tcp forwarding */ - - /* List of all permitted host/port pairs to connect by the user. */ - ForwardPermission *permitted_opens; - - /* List of all permitted host/port pairs to connect by the admin. */ - ForwardPermission *permitted_adm_opens; - - /* - * Number of permitted host/port pairs in the array permitted by - * the user. - */ - u_int num_permitted_opens; - - /* - * Number of permitted host/port pair in the array permitted by - * the admin. - */ - u_int num_adm_permitted_opens; - - /* - * If this is true, all opens are permitted. This is the case on - * the server on which we have to trust the client anyway, and the - * user could do anything after logging in anyway. - */ - int all_opens_permitted; + struct permission_set local_perms; + struct permission_set remote_perms; /* -- X11 forwarding */ @@ -448,50 +453,95 @@ channel_close_fds(struct ssh *ssh, Channel *c) } static void -fwd_perm_clear(ForwardPermission *fp) +fwd_perm_clear(struct permission *perm) { - free(fp->host_to_connect); - free(fp->listen_host); - free(fp->listen_path); - bzero(fp, sizeof(*fp)); + free(perm->host_to_connect); + free(perm->listen_host); + free(perm->listen_path); + bzero(perm, sizeof(*perm)); } -enum { FWDPERM_USER, FWDPERM_ADMIN }; +/* Returns an printable name for the specified forwarding permission list */ +static const char * +fwd_ident(int who, int where) +{ + if (who == FORWARD_ADM) { + if (where == FORWARD_LOCAL) + return "admin local"; + else if (where == FORWARD_REMOTE) + return "admin remote"; + } else if (who == FORWARD_USER) { + if (where == FORWARD_LOCAL) + return "user local"; + else if (where == FORWARD_REMOTE) + return "user remote"; + } + fatal("Unknown forward permission list %d/%d", who, where); +} +/* Returns the forwarding permission list for the specified direction */ +static struct permission_set * +permission_set_get(struct ssh *ssh, int where) +{ + struct ssh_channels *sc = ssh->chanctxt; + + switch (where) { + case FORWARD_LOCAL: + return &sc->local_perms; + break; + case FORWARD_REMOTE: + return &sc->remote_perms; + break; + default: + fatal("%s: invalid forwarding direction %d", __func__, where); + } +} + +/* Reutrns pointers to the specified forwarding list and its element count */ +static void +permission_set_get_array(struct ssh *ssh, int who, int where, + struct permission ***permpp, u_int **npermpp) +{ + struct permission_set *pset = permission_set_get(ssh, where); + + switch (who) { + case FORWARD_USER: + *permpp = &pset->permitted_user; + *npermpp = &pset->num_permitted_user; + break; + case FORWARD_ADM: + *permpp = &pset->permitted_admin; + *npermpp = &pset->num_permitted_admin; + break; + default: + fatal("%s: invalid forwarding client %d", __func__, who); + } +} + +/* Adds an entry to the spcified forwarding list */ static int -fwd_perm_list_add(struct ssh *ssh, int which, +permission_set_add(struct ssh *ssh, int who, int where, const char *host_to_connect, int port_to_connect, const char *listen_host, const char *listen_path, int listen_port, Channel *downstream) { - ForwardPermission **fpl; - u_int n, *nfpl; + struct permission **permp; + u_int n, *npermp; - switch (which) { - case FWDPERM_USER: - fpl = &ssh->chanctxt->permitted_opens; - nfpl = &ssh->chanctxt->num_permitted_opens; - break; - case FWDPERM_ADMIN: - fpl = &ssh->chanctxt->permitted_adm_opens; - nfpl = &ssh->chanctxt->num_adm_permitted_opens; - break; - default: - fatal("%s: invalid list %d", __func__, which); - } + permission_set_get_array(ssh, who, where, &permp, &npermp); - if (*nfpl >= INT_MAX) - fatal("%s: overflow", __func__); + if (*npermp >= INT_MAX) + fatal("%s: %s overflow", __func__, fwd_ident(who, where)); - *fpl = xrecallocarray(*fpl, *nfpl, *nfpl + 1, sizeof(**fpl)); - n = (*nfpl)++; + *permp = xrecallocarray(*permp, *npermp, *npermp + 1, sizeof(**permp)); + n = (*npermp)++; #define MAYBE_DUP(s) ((s == NULL) ? NULL : xstrdup(s)) - (*fpl)[n].host_to_connect = MAYBE_DUP(host_to_connect); - (*fpl)[n].port_to_connect = port_to_connect; - (*fpl)[n].listen_host = MAYBE_DUP(listen_host); - (*fpl)[n].listen_path = MAYBE_DUP(listen_path); - (*fpl)[n].listen_port = listen_port; - (*fpl)[n].downstream = downstream; + (*permp)[n].host_to_connect = MAYBE_DUP(host_to_connect); + (*permp)[n].port_to_connect = port_to_connect; + (*permp)[n].listen_host = MAYBE_DUP(listen_host); + (*permp)[n].listen_path = MAYBE_DUP(listen_path); + (*permp)[n].listen_port = listen_port; + (*permp)[n].downstream = downstream; #undef MAYBE_DUP return (int)n; } @@ -500,30 +550,31 @@ static void mux_remove_remote_forwardings(struct ssh *ssh, Channel *c) { struct ssh_channels *sc = ssh->chanctxt; - ForwardPermission *fp; + struct permission_set *pset = &sc->local_perms; + struct permission *perm; int r; u_int i; - for (i = 0; i < sc->num_permitted_opens; i++) { - fp = &sc->permitted_opens[i]; - if (fp->downstream != c) + for (i = 0; i < pset->num_permitted_user; i++) { + perm = &pset->permitted_user[i]; + if (perm->downstream != c) continue; /* cancel on the server, since mux client is gone */ debug("channel %d: cleanup remote forward for %s:%u", - c->self, fp->listen_host, fp->listen_port); + c->self, perm->listen_host, perm->listen_port); if ((r = sshpkt_start(ssh, SSH2_MSG_GLOBAL_REQUEST)) != 0 || (r = sshpkt_put_cstring(ssh, "cancel-tcpip-forward")) != 0 || (r = sshpkt_put_u8(ssh, 0)) != 0 || (r = sshpkt_put_cstring(ssh, - channel_rfwd_bind_host(fp->listen_host))) != 0 || - (r = sshpkt_put_u32(ssh, fp->listen_port)) != 0 || + channel_rfwd_bind_host(perm->listen_host))) != 0 || + (r = sshpkt_put_u32(ssh, perm->listen_port)) != 0 || (r = sshpkt_send(ssh)) != 0) { fatal("%s: channel %i: %s", __func__, c->self, ssh_err(r)); } - fwd_perm_clear(fp); /* unregister */ + fwd_perm_clear(perm); /* unregister */ } } @@ -557,9 +608,11 @@ channel_free(struct ssh *ssh, Channel *c) if (c->type == SSH_CHANNEL_MUX_CLIENT) mux_remove_remote_forwardings(ssh, c); - s = channel_open_message(ssh); - debug3("channel %d: status: %s", c->self, s); - free(s); + if (log_level_get() >= SYSLOG_LEVEL_DEBUG3) { + s = channel_open_message(ssh); + debug3("channel %d: status: %s", c->self, s); + free(s); + } channel_close_fds(ssh, c); sshbuf_free(c->input); @@ -2601,7 +2654,7 @@ channel_output_poll(struct ssh *ssh) * SSH_CHANNEL_MUX_PROXY channel and replace the mux clients ID * with the newly allocated channel ID. * 2) Upstream messages are received by matching SSH_CHANNEL_MUX_PROXY - * channels and procesed by channel_proxy_upstream(). The local channel ID + * channels and processed by channel_proxy_upstream(). The local channel ID * is then translated back to the original mux client ID. * 3) In both cases we need to keep track of matching SSH2_MSG_CHANNEL_CLOSE * messages so we can clean up SSH_CHANNEL_MUX_PROXY channels. @@ -2612,7 +2665,7 @@ channel_output_poll(struct ssh *ssh) * channel. E.g. client_request_forwarded_tcpip() needs to figure * out whether the request is addressed to the local client or a * specific downstream client based on the listen-address/port. - * 6) Agent and X11-Forwarding have a similar problem and are currenly + * 6) Agent and X11-Forwarding have a similar problem and are currently * not supported as the matching session/channel cannot be identified * easily. */ @@ -2731,7 +2784,7 @@ channel_proxy_downstream(struct ssh *ssh, Channel *downstream) goto out; } /* Record that connection to this host/port is permitted. */ - fwd_perm_list_add(ssh, FWDPERM_USER, "", -1, + permission_set_add(ssh, FORWARD_USER, FORWARD_LOCAL, "", -1, listen_host, NULL, (int)listen_port, downstream); listen_host = NULL; break; @@ -2789,7 +2842,7 @@ channel_proxy_upstream(Channel *c, int type, u_int32_t seq, struct ssh *ssh) /* * When receiving packets from the peer we need to check whether we * need to forward the packets to the mux client. In this case we - * restore the orignal channel id and keep track of CLOSE messages, + * restore the original channel id and keep track of CLOSE messages, * so we can cleanup the channel. */ if (c == NULL || c->type != SSH_CHANNEL_MUX_PROXY) @@ -3639,11 +3692,78 @@ channel_setup_local_fwd_listener(struct ssh *ssh, } } +/* Matches a remote forwarding permission against a requested forwarding */ +static int +remote_open_match(struct permission *allowed_open, struct Forward *fwd) +{ + int ret; + char *lhost; + + /* XXX add ACLs for streamlocal */ + if (fwd->listen_path != NULL) + return 1; + + if (fwd->listen_host == NULL || allowed_open->listen_host == NULL) + return 0; + + if (allowed_open->listen_port != FWD_PERMIT_ANY_PORT && + allowed_open->listen_port != fwd->listen_port) + return 0; + + /* Match hostnames case-insensitively */ + lhost = xstrdup(fwd->listen_host); + lowercase(lhost); + ret = match_pattern(lhost, allowed_open->listen_host); + free(lhost); + + return ret; +} + +/* Checks whether a requested remote forwarding is permitted */ +static int +check_rfwd_permission(struct ssh *ssh, struct Forward *fwd) +{ + struct ssh_channels *sc = ssh->chanctxt; + struct permission_set *pset = &sc->remote_perms; + u_int i, permit, permit_adm = 1; + struct permission *perm; + + /* XXX apply GatewayPorts override before checking? */ + + permit = pset->all_permitted; + if (!permit) { + for (i = 0; i < pset->num_permitted_user; i++) { + perm = &pset->permitted_user[i]; + if (remote_open_match(perm, fwd)) { + permit = 1; + break; + } + } + } + + if (pset->num_permitted_admin > 0) { + permit_adm = 0; + for (i = 0; i < pset->num_permitted_admin; i++) { + perm = &pset->permitted_admin[i]; + if (remote_open_match(perm, fwd)) { + permit_adm = 1; + break; + } + } + } + + return permit && permit_adm; +} + /* protocol v2 remote port fwd, used by sshd */ int channel_setup_remote_fwd_listener(struct ssh *ssh, struct Forward *fwd, int *allocated_listen_port, struct ForwardOptions *fwd_opts) { + if (!check_rfwd_permission(ssh, fwd)) { + packet_send_debug("port forwarding refused"); + return 0; + } if (fwd->listen_path != NULL) { return channel_setup_fwd_listener_streamlocal(ssh, SSH_CHANNEL_RUNIX_LISTENER, fwd, fwd_opts); @@ -3673,7 +3793,7 @@ channel_rfwd_bind_host(const char *listen_host) * Initiate forwarding of connections to port "port" on remote host through * the secure channel to host:port from local side. * Returns handle (index) for updating the dynamic listen port with - * channel_update_permitted_opens(). + * channel_update_permission(). */ int channel_request_remote_forwarding(struct ssh *ssh, struct Forward *fwd) @@ -3726,7 +3846,7 @@ channel_request_remote_forwarding(struct ssh *ssh, struct Forward *fwd) listen_host = xstrdup(fwd->listen_host); listen_port = fwd->listen_port; } - idx = fwd_perm_list_add(ssh, FWDPERM_USER, + idx = permission_set_add(ssh, FORWARD_USER, FORWARD_LOCAL, host_to_connect, port_to_connect, listen_host, listen_path, listen_port, NULL); } @@ -3734,7 +3854,7 @@ channel_request_remote_forwarding(struct ssh *ssh, struct Forward *fwd) } static int -open_match(ForwardPermission *allowed_open, const char *requestedhost, +open_match(struct permission *allowed_open, const char *requestedhost, int requestedport) { if (allowed_open->host_to_connect == NULL) @@ -3755,7 +3875,7 @@ open_match(ForwardPermission *allowed_open, const char *requestedhost, * and what we've sent to the remote server (channel_rfwd_bind_host) */ static int -open_listen_match_tcpip(ForwardPermission *allowed_open, +open_listen_match_tcpip(struct permission *allowed_open, const char *requestedhost, u_short requestedport, int translate) { const char *allowed_host; @@ -3770,14 +3890,14 @@ open_listen_match_tcpip(ForwardPermission *allowed_open, allowed_host = translate ? channel_rfwd_bind_host(allowed_open->listen_host) : allowed_open->listen_host; - if (allowed_host == NULL || + if (allowed_host == NULL || requestedhost == NULL || strcmp(allowed_host, requestedhost) != 0) return 0; return 1; } static int -open_listen_match_streamlocal(ForwardPermission *allowed_open, +open_listen_match_streamlocal(struct permission *allowed_open, const char *requestedpath) { if (allowed_open->host_to_connect == NULL) @@ -3799,17 +3919,18 @@ channel_request_rforward_cancel_tcpip(struct ssh *ssh, const char *host, u_short port) { struct ssh_channels *sc = ssh->chanctxt; + struct permission_set *pset = &sc->local_perms; int r; u_int i; - ForwardPermission *fp; + struct permission *perm; - for (i = 0; i < sc->num_permitted_opens; i++) { - fp = &sc->permitted_opens[i]; - if (open_listen_match_tcpip(fp, host, port, 0)) + for (i = 0; i < pset->num_permitted_user; i++) { + perm = &pset->permitted_user[i]; + if (open_listen_match_tcpip(perm, host, port, 0)) break; - fp = NULL; + perm = NULL; } - if (fp == NULL) { + if (perm == NULL) { debug("%s: requested forward not found", __func__); return -1; } @@ -3821,7 +3942,7 @@ channel_request_rforward_cancel_tcpip(struct ssh *ssh, (r = sshpkt_send(ssh)) != 0) fatal("%s: send cancel: %s", __func__, ssh_err(r)); - fwd_perm_clear(fp); /* unregister */ + fwd_perm_clear(perm); /* unregister */ return 0; } @@ -3834,17 +3955,18 @@ static int channel_request_rforward_cancel_streamlocal(struct ssh *ssh, const char *path) { struct ssh_channels *sc = ssh->chanctxt; + struct permission_set *pset = &sc->local_perms; int r; u_int i; - ForwardPermission *fp; + struct permission *perm; - for (i = 0; i < sc->num_permitted_opens; i++) { - fp = &sc->permitted_opens[i]; - if (open_listen_match_streamlocal(fp, path)) + for (i = 0; i < pset->num_permitted_user; i++) { + perm = &pset->permitted_user[i]; + if (open_listen_match_streamlocal(perm, path)) break; - fp = NULL; + perm = NULL; } - if (fp == NULL) { + if (perm == NULL) { debug("%s: requested forward not found", __func__); return -1; } @@ -3856,7 +3978,7 @@ channel_request_rforward_cancel_streamlocal(struct ssh *ssh, const char *path) (r = sshpkt_send(ssh)) != 0) fatal("%s: send cancel: %s", __func__, ssh_err(r)); - fwd_perm_clear(fp); /* unregister */ + fwd_perm_clear(perm); /* unregister */ return 0; } @@ -3878,25 +4000,64 @@ channel_request_rforward_cancel(struct ssh *ssh, struct Forward *fwd) } /* - * Permits opening to any host/port if permitted_opens[] is empty. This is + * Permits opening to any host/port if permitted_user[] is empty. This is * usually called by the server, because the user could connect to any port * anyway, and the server has no way to know but to trust the client anyway. */ void -channel_permit_all_opens(struct ssh *ssh) +channel_permit_all(struct ssh *ssh, int where) { - if (ssh->chanctxt->num_permitted_opens == 0) - ssh->chanctxt->all_opens_permitted = 1; + struct permission_set *pset = permission_set_get(ssh, where); + + if (pset->num_permitted_user == 0) + pset->all_permitted = 1; } +/* + * Permit the specified host/port for forwarding. + */ void -channel_add_permitted_opens(struct ssh *ssh, char *host, int port) +channel_add_permission(struct ssh *ssh, int who, int where, + char *host, int port) { - struct ssh_channels *sc = ssh->chanctxt; + int local = where == FORWARD_LOCAL; + struct permission_set *pset = permission_set_get(ssh, where); - debug("allow port forwarding to host %s port %d", host, port); - fwd_perm_list_add(ssh, FWDPERM_USER, host, port, NULL, NULL, 0, NULL); - sc->all_opens_permitted = 0; + debug("allow %s forwarding to host %s port %d", + fwd_ident(who, where), host, port); + /* + * Remote forwards set listen_host/port, local forwards set + * host/port_to_connect. + */ + permission_set_add(ssh, who, where, + local ? host : 0, local ? port : 0, + local ? NULL : host, NULL, local ? 0 : port, NULL); + pset->all_permitted = 0; +} + +/* + * Administratively disable forwarding. + */ +void +channel_disable_admin(struct ssh *ssh, int where) +{ + channel_clear_permission(ssh, FORWARD_ADM, where); + permission_set_add(ssh, FORWARD_ADM, where, + NULL, 0, NULL, NULL, 0, NULL); +} + +/* + * Clear a list of permitted opens. + */ +void +channel_clear_permission(struct ssh *ssh, int who, int where) +{ + struct permission **permp; + u_int *npermp; + + permission_set_get_array(ssh, who, where, &permp, &npermp); + *permp = xrecallocarray(*permp, *npermp, 0, sizeof(**permp)); + *npermp = 0; } /* @@ -3905,63 +4066,28 @@ channel_add_permitted_opens(struct ssh *ssh, char *host, int port) * passed then they entry will be invalidated. */ void -channel_update_permitted_opens(struct ssh *ssh, int idx, int newport) +channel_update_permission(struct ssh *ssh, int idx, int newport) { - struct ssh_channels *sc = ssh->chanctxt; + struct permission_set *pset = &ssh->chanctxt->local_perms; - if (idx < 0 || (u_int)idx >= sc->num_permitted_opens) { - debug("%s: index out of range: %d num_permitted_opens %d", - __func__, idx, sc->num_permitted_opens); + if (idx < 0 || (u_int)idx >= pset->num_permitted_user) { + debug("%s: index out of range: %d num_permitted_user %d", + __func__, idx, pset->num_permitted_user); return; } debug("%s allowed port %d for forwarding to host %s port %d", newport > 0 ? "Updating" : "Removing", newport, - sc->permitted_opens[idx].host_to_connect, - sc->permitted_opens[idx].port_to_connect); + pset->permitted_user[idx].host_to_connect, + pset->permitted_user[idx].port_to_connect); if (newport <= 0) - fwd_perm_clear(&sc->permitted_opens[idx]); + fwd_perm_clear(&pset->permitted_user[idx]); else { - sc->permitted_opens[idx].listen_port = + pset->permitted_user[idx].listen_port = (datafellows & SSH_BUG_DYNAMIC_RPORT) ? 0 : newport; } } -int -channel_add_adm_permitted_opens(struct ssh *ssh, char *host, int port) -{ - debug("config allows port forwarding to host %s port %d", host, port); - return fwd_perm_list_add(ssh, FWDPERM_ADMIN, host, port, - NULL, NULL, 0, NULL); -} - -void -channel_disable_adm_local_opens(struct ssh *ssh) -{ - channel_clear_adm_permitted_opens(ssh); - fwd_perm_list_add(ssh, FWDPERM_ADMIN, NULL, 0, NULL, NULL, 0, NULL); -} - -void -channel_clear_permitted_opens(struct ssh *ssh) -{ - struct ssh_channels *sc = ssh->chanctxt; - - sc->permitted_opens = xrecallocarray(sc->permitted_opens, - sc->num_permitted_opens, 0, sizeof(*sc->permitted_opens)); - sc->num_permitted_opens = 0; -} - -void -channel_clear_adm_permitted_opens(struct ssh *ssh) -{ - struct ssh_channels *sc = ssh->chanctxt; - - sc->permitted_adm_opens = xrecallocarray(sc->permitted_adm_opens, - sc->num_adm_permitted_opens, 0, sizeof(*sc->permitted_adm_opens)); - sc->num_adm_permitted_opens = 0; -} - /* returns port number, FWD_PERMIT_ANY_PORT or -1 on error */ int permitopen_port(const char *p) @@ -4150,19 +4276,21 @@ channel_connect_by_listen_address(struct ssh *ssh, const char *listen_host, u_short listen_port, char *ctype, char *rname) { struct ssh_channels *sc = ssh->chanctxt; + struct permission_set *pset = &sc->local_perms; u_int i; - ForwardPermission *fp; + struct permission *perm; - for (i = 0; i < sc->num_permitted_opens; i++) { - fp = &sc->permitted_opens[i]; - if (open_listen_match_tcpip(fp, listen_host, listen_port, 1)) { - if (fp->downstream) - return fp->downstream; - if (fp->port_to_connect == 0) + for (i = 0; i < pset->num_permitted_user; i++) { + perm = &pset->permitted_user[i]; + if (open_listen_match_tcpip(perm, + listen_host, listen_port, 1)) { + if (perm->downstream) + return perm->downstream; + if (perm->port_to_connect == 0) return rdynamic_connect_prepare(ssh, ctype, rname); return connect_to(ssh, - fp->host_to_connect, fp->port_to_connect, + perm->host_to_connect, perm->port_to_connect, ctype, rname); } } @@ -4176,14 +4304,15 @@ channel_connect_by_listen_path(struct ssh *ssh, const char *path, char *ctype, char *rname) { struct ssh_channels *sc = ssh->chanctxt; + struct permission_set *pset = &sc->local_perms; u_int i; - ForwardPermission *fp; + struct permission *perm; - for (i = 0; i < sc->num_permitted_opens; i++) { - fp = &sc->permitted_opens[i]; - if (open_listen_match_streamlocal(fp, path)) { + for (i = 0; i < pset->num_permitted_user; i++) { + perm = &pset->permitted_user[i]; + if (open_listen_match_streamlocal(perm, path)) { return connect_to(ssh, - fp->host_to_connect, fp->port_to_connect, + perm->host_to_connect, perm->port_to_connect, ctype, rname); } } @@ -4198,28 +4327,29 @@ channel_connect_to_port(struct ssh *ssh, const char *host, u_short port, char *ctype, char *rname, int *reason, const char **errmsg) { struct ssh_channels *sc = ssh->chanctxt; + struct permission_set *pset = &sc->local_perms; struct channel_connect cctx; Channel *c; u_int i, permit, permit_adm = 1; int sock; - ForwardPermission *fp; + struct permission *perm; - permit = sc->all_opens_permitted; + permit = pset->all_permitted; if (!permit) { - for (i = 0; i < sc->num_permitted_opens; i++) { - fp = &sc->permitted_opens[i]; - if (open_match(fp, host, port)) { + for (i = 0; i < pset->num_permitted_user; i++) { + perm = &pset->permitted_user[i]; + if (open_match(perm, host, port)) { permit = 1; break; } } } - if (sc->num_adm_permitted_opens > 0) { + if (pset->num_permitted_admin > 0) { permit_adm = 0; - for (i = 0; i < sc->num_adm_permitted_opens; i++) { - fp = &sc->permitted_adm_opens[i]; - if (open_match(fp, host, port)) { + for (i = 0; i < pset->num_permitted_admin; i++) { + perm = &pset->permitted_admin[i]; + if (open_match(perm, host, port)) { permit_adm = 1; break; } @@ -4257,25 +4387,26 @@ channel_connect_to_path(struct ssh *ssh, const char *path, char *ctype, char *rname) { struct ssh_channels *sc = ssh->chanctxt; + struct permission_set *pset = &sc->local_perms; u_int i, permit, permit_adm = 1; - ForwardPermission *fp; + struct permission *perm; - permit = sc->all_opens_permitted; + permit = pset->all_permitted; if (!permit) { - for (i = 0; i < sc->num_permitted_opens; i++) { - fp = &sc->permitted_opens[i]; - if (open_match(fp, path, PORT_STREAMLOCAL)) { + for (i = 0; i < pset->num_permitted_user; i++) { + perm = &pset->permitted_user[i]; + if (open_match(perm, path, PORT_STREAMLOCAL)) { permit = 1; break; } } } - if (sc->num_adm_permitted_opens > 0) { + if (pset->num_permitted_admin > 0) { permit_adm = 0; - for (i = 0; i < sc->num_adm_permitted_opens; i++) { - fp = &sc->permitted_adm_opens[i]; - if (open_match(fp, path, PORT_STREAMLOCAL)) { + for (i = 0; i < pset->num_permitted_admin; i++) { + perm = &pset->permitted_admin[i]; + if (open_match(perm, path, PORT_STREAMLOCAL)) { permit_adm = 1; break; } diff --git a/channels.h b/channels.h index 126b04345..1aeafe94e 100644 --- a/channels.h +++ b/channels.h @@ -1,4 +1,4 @@ -/* $OpenBSD: channels.h,v 1.130 2017/09/21 19:16:53 markus Exp $ */ +/* $OpenBSD: channels.h,v 1.131 2018/06/06 18:22:41 djm Exp $ */ /* * Author: Tatu Ylonen @@ -63,6 +63,15 @@ #define CHANNEL_CANCEL_PORT_STATIC -1 +/* TCP forwarding */ +#define FORWARD_DENY 0 +#define FORWARD_REMOTE (1) +#define FORWARD_LOCAL (1<<1) +#define FORWARD_ALLOW (FORWARD_REMOTE|FORWARD_LOCAL) + +#define FORWARD_ADM 0x100 +#define FORWARD_USER 0x101 + struct ssh; struct Channel; typedef struct Channel Channel; @@ -283,16 +292,11 @@ int channel_find_open(struct ssh *); struct Forward; struct ForwardOptions; void channel_set_af(struct ssh *, int af); -void channel_permit_all_opens(struct ssh *); -void channel_add_permitted_opens(struct ssh *, char *, int); -int channel_add_adm_permitted_opens(struct ssh *, char *, int); -void channel_copy_adm_permitted_opens(struct ssh *, - const struct fwd_perm_list *); -void channel_disable_adm_local_opens(struct ssh *); -void channel_update_permitted_opens(struct ssh *, int, int); -void channel_clear_permitted_opens(struct ssh *); -void channel_clear_adm_permitted_opens(struct ssh *); -void channel_print_adm_permitted_opens(struct ssh *); +void channel_permit_all(struct ssh *, int); +void channel_add_permission(struct ssh *, int, int, char *, int); +void channel_clear_permission(struct ssh *, int, int); +void channel_disable_admin(struct ssh *, int); +void channel_update_permission(struct ssh *, int, int); Channel *channel_connect_to_port(struct ssh *, const char *, u_short, char *, char *, int *, const char **); Channel *channel_connect_to_path(struct ssh *, const char *, char *, char *); diff --git a/cipher.c b/cipher.c index 578763616..a72682a82 100644 --- a/cipher.c +++ b/cipher.c @@ -82,7 +82,9 @@ struct sshcipher { static const struct sshcipher ciphers[] = { #ifdef WITH_OPENSSL +#ifndef OPENSSL_NO_DES { "3des-cbc", 8, 24, 0, 0, CFLAG_CBC, EVP_des_ede3_cbc }, +#endif { "aes128-cbc", 16, 16, 0, 0, CFLAG_CBC, EVP_aes_128_cbc }, { "aes192-cbc", 16, 24, 0, 0, CFLAG_CBC, EVP_aes_192_cbc }, { "aes256-cbc", 16, 32, 0, 0, CFLAG_CBC, EVP_aes_256_cbc }, diff --git a/clientloop.c b/clientloop.c index 569386de8..e3f57e6a9 100644 --- a/clientloop.c +++ b/clientloop.c @@ -1,4 +1,4 @@ -/* $OpenBSD: clientloop.c,v 1.311 2018/02/11 21:16:56 dtucker Exp $ */ +/* $OpenBSD: clientloop.c,v 1.317 2018/07/11 18:53:29 markus Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -91,11 +91,11 @@ #include "ssh.h" #include "ssh2.h" #include "packet.h" -#include "buffer.h" +#include "sshbuf.h" #include "compat.h" #include "channels.h" #include "dispatch.h" -#include "key.h" +#include "sshkey.h" #include "cipher.h" #include "kex.h" #include "myproposal.h" @@ -153,7 +153,7 @@ static time_t control_persist_exit_time = 0; volatile sig_atomic_t quit_pending; /* Set non-zero to quit the loop. */ static int last_was_cr; /* Last character was a newline. */ static int exit_status; /* Used to store the command exit status. */ -static Buffer stderr_buffer; /* Used for final exit message. */ +static struct sshbuf *stderr_buffer; /* Used for final exit message. */ static int connection_in; /* Connection to server (input). */ static int connection_out; /* Connection to server (output). */ static int need_rekeying; /* Set to non-zero if rekeying is requested. */ @@ -188,7 +188,7 @@ TAILQ_HEAD(global_confirms, global_confirm); static struct global_confirms global_confirms = TAILQ_HEAD_INITIALIZER(global_confirms); -void ssh_process_session2_setup(int, int, int, Buffer *); +void ssh_process_session2_setup(int, int, int, struct sshbuf *); /* Restores stdin to blocking mode. */ @@ -493,7 +493,7 @@ client_wait_until_can_do_something(struct ssh *ssh, struct timeval tv, *tvp; int timeout_secs; time_t minwait_secs = 0, server_alive_time = 0, now = monotime(); - int ret; + int r, ret; /* Add any selections by the channel mechanism. */ channel_prepare_select(active_state, readsetp, writesetp, maxfdp, @@ -546,8 +546,6 @@ client_wait_until_can_do_something(struct ssh *ssh, ret = select((*maxfdp)+1, *readsetp, *writesetp, NULL, tvp); if (ret < 0) { - char buf[100]; - /* * We have to clear the select masks, because we return. * We have to return, because the mainloop checks for the flags @@ -559,8 +557,9 @@ client_wait_until_can_do_something(struct ssh *ssh, if (errno == EINTR) return; /* Note: we might still have data in the buffers. */ - snprintf(buf, sizeof buf, "select: %s\r\n", strerror(errno)); - buffer_append(&stderr_buffer, buf, strlen(buf)); + if ((r = sshbuf_putf(stderr_buffer, + "select: %s\r\n", strerror(errno))) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); quit_pending = 1; } else if (ret == 0) { /* @@ -574,15 +573,15 @@ client_wait_until_can_do_something(struct ssh *ssh, } static void -client_suspend_self(Buffer *bin, Buffer *bout, Buffer *berr) +client_suspend_self(struct sshbuf *bin, struct sshbuf *bout, struct sshbuf *berr) { /* Flush stdout and stderr buffers. */ - if (buffer_len(bout) > 0) - atomicio(vwrite, fileno(stdout), buffer_ptr(bout), - buffer_len(bout)); - if (buffer_len(berr) > 0) - atomicio(vwrite, fileno(stderr), buffer_ptr(berr), - buffer_len(berr)); + if (sshbuf_len(bout) > 0) + atomicio(vwrite, fileno(stdout), sshbuf_mutable_ptr(bout), + sshbuf_len(bout)); + if (sshbuf_len(berr) > 0) + atomicio(vwrite, fileno(stderr), sshbuf_mutable_ptr(berr), + sshbuf_len(berr)); leave_raw_mode(options.request_tty == REQUEST_TTY_FORCE); @@ -602,8 +601,8 @@ client_suspend_self(Buffer *bin, Buffer *bout, Buffer *berr) static void client_process_net_input(fd_set *readset) { - int len; char buf[SSH_IOBUFSZ]; + int r, len; /* * Read input from the server, and add any such data to the buffer of @@ -617,10 +616,11 @@ client_process_net_input(fd_set *readset) * Received EOF. The remote host has closed the * connection. */ - snprintf(buf, sizeof buf, + if ((r = sshbuf_putf(stderr_buffer, "Connection to %.300s closed by remote host.\r\n", - host); - buffer_append(&stderr_buffer, buf, strlen(buf)); + host)) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); quit_pending = 1; return; } @@ -637,10 +637,11 @@ client_process_net_input(fd_set *readset) * An error has encountered. Perhaps there is a * network problem. */ - snprintf(buf, sizeof buf, + if ((r = sshbuf_putf(stderr_buffer, "Read from remote host %.300s: %.100s\r\n", - host, strerror(errno)); - buffer_append(&stderr_buffer, buf, strlen(buf)); + host, strerror(errno))) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); quit_pending = 1; return; } @@ -653,7 +654,7 @@ client_status_confirm(struct ssh *ssh, int type, Channel *c, void *ctx) { struct channel_reply_ctx *cr = (struct channel_reply_ctx *)ctx; char errmsg[256]; - int tochan; + int r, tochan; /* * If a TTY was explicitly requested, then a failure to allocate @@ -664,7 +665,7 @@ client_status_confirm(struct ssh *ssh, int type, Channel *c, void *ctx) options.request_tty == REQUEST_TTY_YES)) cr->action = CONFIRM_CLOSE; - /* XXX supress on mux _client_ quietmode */ + /* XXX suppress on mux _client_ quietmode */ tochan = options.log_level >= SYSLOG_LEVEL_ERROR && c->ctl_chan != -1 && c->extended_usage == CHAN_EXTENDED_WRITE; @@ -688,7 +689,10 @@ client_status_confirm(struct ssh *ssh, int type, Channel *c, void *ctx) * their stderr. */ if (tochan) { - buffer_append(c->extended, errmsg, strlen(errmsg)); + if ((r = sshbuf_put(c->extended, errmsg, + strlen(errmsg))) != 0) + fatal("%s: buffer error %s", __func__, + ssh_err(r)); } else error("%s", errmsg); if (cr->action == CONFIRM_TTY) { @@ -892,14 +896,15 @@ static struct escape_help_text esc_txt[] = { }; static void -print_escape_help(Buffer *b, int escape_char, int mux_client, int using_stderr) +print_escape_help(struct sshbuf *b, int escape_char, int mux_client, + int using_stderr) { unsigned int i, suppress_flags; - char string[1024]; + int r; - snprintf(string, sizeof string, "%c?\r\n" - "Supported escape sequences:\r\n", escape_char); - buffer_append(b, string, strlen(string)); + if ((r = sshbuf_putf(b, + "%c?\r\nSupported escape sequences:\r\n", escape_char)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); suppress_flags = (mux_client ? SUPPRESS_MUXCLIENT : 0) | @@ -909,29 +914,28 @@ print_escape_help(Buffer *b, int escape_char, int mux_client, int using_stderr) for (i = 0; i < sizeof(esc_txt)/sizeof(esc_txt[0]); i++) { if (esc_txt[i].flags & suppress_flags) continue; - snprintf(string, sizeof string, " %c%-3s - %s\r\n", - escape_char, esc_txt[i].cmd, esc_txt[i].text); - buffer_append(b, string, strlen(string)); + if ((r = sshbuf_putf(b, " %c%-3s - %s\r\n", + escape_char, esc_txt[i].cmd, esc_txt[i].text)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); } - snprintf(string, sizeof string, + if ((r = sshbuf_putf(b, " %c%c - send the escape character by typing it twice\r\n" "(Note that escapes are only recognized immediately after " - "newline.)\r\n", escape_char, escape_char); - buffer_append(b, string, strlen(string)); + "newline.)\r\n", escape_char, escape_char)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); } -/* +/* * Process the characters one by one. */ static int process_escapes(struct ssh *ssh, Channel *c, - Buffer *bin, Buffer *bout, Buffer *berr, + struct sshbuf *bin, struct sshbuf *bout, struct sshbuf *berr, char *buf, int len) { - char string[1024]; pid_t pid; - int bytes = 0; + int r, bytes = 0; u_int i; u_char ch; char *s; @@ -940,7 +944,7 @@ process_escapes(struct ssh *ssh, Channel *c, if (c->filter_ctx == NULL) return 0; - + if (len <= 0) return (0); @@ -957,10 +961,10 @@ process_escapes(struct ssh *ssh, Channel *c, switch (ch) { case '.': /* Terminate the connection. */ - snprintf(string, sizeof string, "%c.\r\n", - efc->escape_char); - buffer_append(berr, string, strlen(string)); - + if ((r = sshbuf_putf(berr, "%c.\r\n", + efc->escape_char)) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); if (c && c->ctl_chan != -1) { chan_read_failed(ssh, c); chan_write_failed(ssh, c); @@ -969,7 +973,7 @@ process_escapes(struct ssh *ssh, Channel *c, c->self, NULL); } c->type = SSH_CHANNEL_ABANDONED; - buffer_clear(c->input); + sshbuf_reset(c->input); chan_ibuf_empty(ssh, c); return 0; } else @@ -985,18 +989,20 @@ process_escapes(struct ssh *ssh, Channel *c, snprintf(b, sizeof b, "^Z"); else snprintf(b, sizeof b, "%c", ch); - snprintf(string, sizeof string, + if ((r = sshbuf_putf(berr, "%c%s escape not available to " "multiplexed sessions\r\n", - efc->escape_char, b); - buffer_append(berr, string, - strlen(string)); + efc->escape_char, b)) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); continue; } /* Suspend the program. Inform the user */ - snprintf(string, sizeof string, - "%c^Z [suspend ssh]\r\n", efc->escape_char); - buffer_append(berr, string, strlen(string)); + if ((r = sshbuf_putf(berr, + "%c^Z [suspend ssh]\r\n", + efc->escape_char)) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); /* Restore terminal modes and suspend. */ client_suspend_self(bin, bout, berr); @@ -1005,12 +1011,15 @@ process_escapes(struct ssh *ssh, Channel *c, continue; case 'B': - snprintf(string, sizeof string, - "%cB\r\n", efc->escape_char); - buffer_append(berr, string, strlen(string)); + if ((r = sshbuf_putf(berr, + "%cB\r\n", efc->escape_char)) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); channel_request_start(ssh, c->self, "break", 0); - packet_put_int(1000); - packet_send(); + if ((r = sshpkt_put_u32(ssh, 1000)) != 0 || + (r = sshpkt_send(ssh)) != 0) + fatal("%s: %s", __func__, + ssh_err(r)); continue; case 'R': @@ -1027,11 +1036,11 @@ process_escapes(struct ssh *ssh, Channel *c, if (c && c->ctl_chan != -1) goto noescape; if (!log_is_on_stderr()) { - snprintf(string, sizeof string, + if ((r = sshbuf_putf(berr, "%c%c [Logging to syslog]\r\n", - efc->escape_char, ch); - buffer_append(berr, string, - strlen(string)); + efc->escape_char, ch)) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); continue; } if (ch == 'V' && options.log_level > @@ -1040,11 +1049,12 @@ process_escapes(struct ssh *ssh, Channel *c, if (ch == 'v' && options.log_level < SYSLOG_LEVEL_DEBUG3) log_change_level(++options.log_level); - snprintf(string, sizeof string, + if ((r = sshbuf_putf(berr, "%c%c [LogLevel %s]\r\n", efc->escape_char, ch, - log_level_name(options.log_level)); - buffer_append(berr, string, strlen(string)); + log_level_name(options.log_level))) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); continue; case '&': @@ -1065,9 +1075,11 @@ process_escapes(struct ssh *ssh, Channel *c, /* Stop listening for new connections. */ channel_stop_listening(ssh); - snprintf(string, sizeof string, - "%c& [backgrounded]\n", efc->escape_char); - buffer_append(berr, string, strlen(string)); + if ((r = sshbuf_putf(berr, + "%c& [backgrounded]\n", efc->escape_char)) + != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); /* Fork into background. */ pid = fork(); @@ -1080,8 +1092,10 @@ process_escapes(struct ssh *ssh, Channel *c, exit(0); } /* The child continues serving connections. */ - buffer_append(bin, "\004", 1); /* fake EOF on stdin */ + if ((r = sshbuf_put_u8(bin, 4)) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); return -1; #endif /* !WINDOWS */ case '?': @@ -1091,11 +1105,14 @@ process_escapes(struct ssh *ssh, Channel *c, continue; case '#': - snprintf(string, sizeof string, "%c#\r\n", - efc->escape_char); - buffer_append(berr, string, strlen(string)); + if ((r = sshbuf_putf(berr, "%c#\r\n", + efc->escape_char)) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); s = channel_open_message(ssh); - buffer_append(berr, s, strlen(s)); + if ((r = sshbuf_put(berr, s, strlen(s))) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); free(s); continue; @@ -1107,7 +1124,10 @@ process_escapes(struct ssh *ssh, Channel *c, default: if (ch != efc->escape_char) { - buffer_put_char(bin, efc->escape_char); + if ((r = sshbuf_put_u8(bin, + efc->escape_char)) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); bytes++; } /* Escaped characters fall through here */ @@ -1133,7 +1153,8 @@ process_escapes(struct ssh *ssh, Channel *c, * and append it to the buffer. */ last_was_cr = (ch == '\r' || ch == '\n'); - buffer_put_char(bin, ch); + if ((r = sshbuf_put_u8(bin, ch)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); bytes++; } return bytes; @@ -1257,8 +1278,9 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg, quit_pending = 0; - /* Initialize buffers. */ - buffer_init(&stderr_buffer); + /* Initialize buffer. */ + if ((stderr_buffer = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); client_init_dispatch(); @@ -1415,24 +1437,25 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg, * that the connection has been closed. */ if (have_pty && options.log_level != SYSLOG_LEVEL_QUIET) { - snprintf(buf, sizeof buf, - "Connection to %.64s closed.\r\n", host); - buffer_append(&stderr_buffer, buf, strlen(buf)); + if ((r = sshbuf_putf(stderr_buffer, + "Connection to %.64s closed.\r\n", host)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); } /* Output any buffered data for stderr. */ - if (buffer_len(&stderr_buffer) > 0) { + if (sshbuf_len(stderr_buffer) > 0) { len = atomicio(vwrite, fileno(stderr), - buffer_ptr(&stderr_buffer), buffer_len(&stderr_buffer)); - if (len < 0 || (u_int)len != buffer_len(&stderr_buffer)) + (u_char *)sshbuf_ptr(stderr_buffer), + sshbuf_len(stderr_buffer)); + if (len < 0 || (u_int)len != sshbuf_len(stderr_buffer)) error("Write failed flushing stderr buffer."); - else - buffer_consume(&stderr_buffer, len); + else if ((r = sshbuf_consume(stderr_buffer, len)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); } /* Clear and free any buffers. */ explicit_bzero(buf, sizeof(buf)); - buffer_free(&stderr_buffer); + sshbuf_free(stderr_buffer); /* Report bytes transferred, and transfer rates. */ total_time = monotime_double() - start_time; @@ -1750,7 +1773,7 @@ struct hostkeys_update_ctx { */ struct sshkey **keys; int *keys_seen; - size_t nkeys, nnew; + size_t nkeys, nnew; /* * Keys that are in known_hosts, but were not present in the update @@ -2160,9 +2183,11 @@ client_input_global_request(int type, u_int32_t seq, struct ssh *ssh) void client_session2_setup(struct ssh *ssh, int id, int want_tty, int want_subsystem, - const char *term, struct termios *tiop, int in_fd, Buffer *cmd, char **env) + const char *term, struct termios *tiop, int in_fd, struct sshbuf *cmd, + char **env) { - int len; + int i, j, matched, len; + char *name, *val; Channel *c = NULL; debug2("%s: id %d", __func__, id); @@ -2189,7 +2214,7 @@ client_session2_setup(struct ssh *ssh, int id, int want_tty, int want_subsystem, packet_put_int((u_int)ws.ws_ypixel); if (tiop == NULL) tiop = get_saved_tio(); - tty_make_modes(-1, tiop); + ssh_tty_make_modes(ssh, -1, tiop); packet_send(); /* XXX wait for reply */ c->client_tty = 1; @@ -2197,9 +2222,6 @@ client_session2_setup(struct ssh *ssh, int id, int want_tty, int want_subsystem, /* Transfer any environment variables from client to server */ if (options.num_send_env != 0 && env != NULL) { - int i, j, matched; - char *name, *val; - debug("Sending environment."); for (i = 0; env[i] != NULL; i++) { /* Split */ @@ -2231,24 +2253,40 @@ client_session2_setup(struct ssh *ssh, int id, int want_tty, int want_subsystem, free(name); } } + for (i = 0; i < options.num_setenv; i++) { + /* Split */ + name = xstrdup(options.setenv[i]); + if ((val = strchr(name, '=')) == NULL) { + free(name); + continue; + } + *val++ = '\0'; - len = buffer_len(cmd); + debug("Setting env %s = %s", name, val); + channel_request_start(ssh, id, "env", 0); + packet_put_cstring(name); + packet_put_cstring(val); + packet_send(); + free(name); + } + + len = sshbuf_len(cmd); if (len > 0) { if (len > 900) len = 900; if (want_subsystem) { debug("Sending subsystem: %.*s", - len, (u_char*)buffer_ptr(cmd)); + len, (const u_char*)sshbuf_ptr(cmd)); channel_request_start(ssh, id, "subsystem", 1); client_expect_confirm(ssh, id, "subsystem", CONFIRM_CLOSE); } else { debug("Sending command: %.*s", - len, (u_char*)buffer_ptr(cmd)); + len, (const u_char*)sshbuf_ptr(cmd)); channel_request_start(ssh, id, "exec", 1); client_expect_confirm(ssh, id, "exec", CONFIRM_CLOSE); } - packet_put_string(buffer_ptr(cmd), buffer_len(cmd)); + packet_put_string(sshbuf_ptr(cmd), sshbuf_len(cmd)); packet_send(); } else { channel_request_start(ssh, id, "shell", 1); diff --git a/clientloop.h b/clientloop.h index 8d1f0bff6..bf79c87bf 100644 --- a/clientloop.h +++ b/clientloop.h @@ -1,4 +1,4 @@ -/* $OpenBSD: clientloop.h,v 1.35 2017/10/23 05:08:00 djm Exp $ */ +/* $OpenBSD: clientloop.h,v 1.36 2018/07/09 21:03:30 markus Exp $ */ /* * Author: Tatu Ylonen @@ -45,7 +45,7 @@ int client_x11_get_proto(struct ssh *, const char *, const char *, u_int, u_int, char **, char **); void client_global_request_reply_fwd(int, u_int32_t, void *); void client_session2_setup(struct ssh *, int, int, int, - const char *, struct termios *, int, Buffer *, char **); + const char *, struct termios *, int, struct sshbuf *, char **); char *client_request_tun_fwd(struct ssh *, int, int, int); void client_stop_mux(void); diff --git a/compat.c b/compat.c index 861e9e21f..0624dc6de 100644 --- a/compat.c +++ b/compat.c @@ -1,4 +1,4 @@ -/* $OpenBSD: compat.c,v 1.106 2018/02/16 04:43:11 dtucker Exp $ */ +/* $OpenBSD: compat.c,v 1.113 2018/08/13 02:41:05 djm Exp $ */ /* * Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved. * @@ -32,7 +32,6 @@ #include #include "xmalloc.h" -#include "buffer.h" #include "packet.h" #include "compat.h" #include "log.h" @@ -52,16 +51,28 @@ compat_datafellows(const char *version) } check[] = { { "OpenSSH_2.*," "OpenSSH_3.0*," - "OpenSSH_3.1*", SSH_BUG_EXTEOF|SSH_OLD_FORWARD_ADDR}, - { "OpenSSH_3.*", SSH_OLD_FORWARD_ADDR }, - { "Sun_SSH_1.0*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF}, + "OpenSSH_3.1*", SSH_BUG_EXTEOF|SSH_OLD_FORWARD_ADDR| + SSH_BUG_SIGTYPE}, + { "OpenSSH_3.*", SSH_OLD_FORWARD_ADDR|SSH_BUG_SIGTYPE }, + { "Sun_SSH_1.0*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF| + SSH_BUG_SIGTYPE}, { "OpenSSH_2*," "OpenSSH_3*," - "OpenSSH_4*", 0 }, - { "OpenSSH_5*", SSH_NEW_OPENSSH|SSH_BUG_DYNAMIC_RPORT}, - { "OpenSSH_6.6.1*", SSH_NEW_OPENSSH}, + "OpenSSH_4*", SSH_BUG_SIGTYPE }, + { "OpenSSH_5*", SSH_NEW_OPENSSH|SSH_BUG_DYNAMIC_RPORT| + SSH_BUG_SIGTYPE}, + { "OpenSSH_6.6.1*", SSH_NEW_OPENSSH|SSH_BUG_SIGTYPE}, { "OpenSSH_6.5*," - "OpenSSH_6.6*", SSH_NEW_OPENSSH|SSH_BUG_CURVE25519PAD}, + "OpenSSH_6.6*", SSH_NEW_OPENSSH|SSH_BUG_CURVE25519PAD| + SSH_BUG_SIGTYPE}, + { "OpenSSH_7.0*," + "OpenSSH_7.1*," + "OpenSSH_7.2*," + "OpenSSH_7.3*," + "OpenSSH_7.4*," + "OpenSSH_7.5*," + "OpenSSH_7.6*," + "OpenSSH_7.7*", SSH_NEW_OPENSSH|SSH_BUG_SIGTYPE}, { "OpenSSH*", SSH_NEW_OPENSSH }, { "*MindTerm*", 0 }, { "3.0.*", SSH_BUG_DEBUG }, @@ -128,6 +139,8 @@ compat_datafellows(const char *version) SSH_OLD_DHGEX }, { "ConfD-*", SSH_BUG_UTF8TTYMODE }, + { "Twisted_*", 0 }, + { "Twisted*", SSH_BUG_DEBUG }, { NULL, 0 } }; @@ -176,8 +189,8 @@ compat_cipher_proposal(char *cipher_prop) if (!(datafellows & SSH_BUG_BIGENDIANAES)) return cipher_prop; debug2("%s: original cipher proposal: %s", __func__, cipher_prop); - if ((cipher_prop = match_filter_list(cipher_prop, "aes*")) == NULL) - fatal("match_filter_list failed"); + if ((cipher_prop = match_filter_blacklist(cipher_prop, "aes*")) == NULL) + fatal("match_filter_blacklist failed"); debug2("%s: compat cipher proposal: %s", __func__, cipher_prop); if (*cipher_prop == '\0') fatal("No supported ciphers found"); @@ -190,8 +203,8 @@ compat_pkalg_proposal(char *pkalg_prop) if (!(datafellows & SSH_BUG_RSASIGMD5)) return pkalg_prop; debug2("%s: original public key proposal: %s", __func__, pkalg_prop); - if ((pkalg_prop = match_filter_list(pkalg_prop, "ssh-rsa")) == NULL) - fatal("match_filter_list failed"); + if ((pkalg_prop = match_filter_blacklist(pkalg_prop, "ssh-rsa")) == NULL) + fatal("match_filter_blacklist failed"); debug2("%s: compat public key proposal: %s", __func__, pkalg_prop); if (*pkalg_prop == '\0') fatal("No supported PK algorithms found"); @@ -205,14 +218,14 @@ compat_kex_proposal(char *p) return p; debug2("%s: original KEX proposal: %s", __func__, p); if ((datafellows & SSH_BUG_CURVE25519PAD) != 0) - if ((p = match_filter_list(p, + if ((p = match_filter_blacklist(p, "curve25519-sha256@libssh.org")) == NULL) - fatal("match_filter_list failed"); + fatal("match_filter_blacklist failed"); if ((datafellows & SSH_OLD_DHGEX) != 0) { - if ((p = match_filter_list(p, + if ((p = match_filter_blacklist(p, "diffie-hellman-group-exchange-sha256," "diffie-hellman-group-exchange-sha1")) == NULL) - fatal("match_filter_list failed"); + fatal("match_filter_blacklist failed"); } debug2("%s: compat KEX proposal: %s", __func__, p); if (*p == '\0') diff --git a/compat.h b/compat.h index 4fee3495a..d611d33e7 100644 --- a/compat.h +++ b/compat.h @@ -1,4 +1,4 @@ -/* $OpenBSD: compat.h,v 1.51 2018/02/16 04:43:11 dtucker Exp $ */ +/* $OpenBSD: compat.h,v 1.54 2018/08/13 02:41:05 djm Exp $ */ /* * Copyright (c) 1999, 2000, 2001 Markus Friedl. All rights reserved. @@ -33,7 +33,7 @@ #define SSH_PROTO_2 0x04 #define SSH_BUG_UTF8TTYMODE 0x00000001 -/* #define unused 0x00000002 */ +#define SSH_BUG_SIGTYPE 0x00000002 /* #define unused 0x00000004 */ /* #define unused 0x00000008 */ #define SSH_OLD_SESSIONID 0x00000010 diff --git a/configure.ac b/configure.ac index 663062bef..83e530750 100644 --- a/configure.ac +++ b/configure.ac @@ -83,9 +83,11 @@ if test ! -z "$PATH_PASSWD_PROG" ; then [Full path of your "passwd" program]) fi -if test -z "$LD" ; then - LD=$CC -fi +dnl Since autoconf doesn't support it very well, we no longer allow users to +dnl override LD, however keeping the hook here for now in case there's a use +dnl use case we overlooked and someone needs to re-enable it. Unless a good +dnl reason is found we'll be removing this in future. +LD="$CC" AC_SUBST([LD]) AC_C_INLINE @@ -162,8 +164,15 @@ if test "$GCC" = "yes" || test "$GCC" = "egcs"; then OSSH_CHECK_CFLAG_COMPILE([-Wunused-result], [-Wno-unused-result]) OSSH_CHECK_CFLAG_COMPILE([-fno-strict-aliasing]) if test "x$use_toolchain_hardening" = "x1"; then - OSSH_CHECK_CFLAG_COMPILE([-mfunction-return=thunk]) # gcc - OSSH_CHECK_CFLAG_COMPILE([-mindirect-branch=thunk]) # gcc + # Cygwin GCC 7.x allows thunking on the CLI, but produces non-working + # code. Unfortunately you only notice this at link time. + case "$host" in + *-*-cygwin*) ;; + *) + OSSH_CHECK_CFLAG_COMPILE([-mfunction-return=thunk]) # gcc + OSSH_CHECK_CFLAG_COMPILE([-mindirect-branch=thunk]) # gcc + ;; + esac OSSH_CHECK_CFLAG_COMPILE([-mretpoline]) # clang OSSH_CHECK_LDFLAG_LINK([-Wl,-z,retpolineplt]) OSSH_CHECK_CFLAG_COMPILE([-D_FORTIFY_SOURCE=2]) @@ -274,7 +283,7 @@ typedef void foo(const char *, ...) __attribute__((format(printf, 1, 2)));]], [ AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) AC_DEFINE(NO_ATTRIBUTE_ON_PROTOTYPE_ARGS, 1, - [compiler does not accept __attribute__ on protoype args]) ] + [compiler does not accept __attribute__ on prototype args]) ] ) if test "x$no_attrib_nonnull" != "x1" ; then @@ -413,6 +422,7 @@ AC_CHECK_HEADERS([ \ sys/prctl.h \ sys/pstat.h \ sys/ptrace.h \ + sys/random.h \ sys/select.h \ sys/stat.h \ sys/stream.h \ @@ -514,7 +524,7 @@ case "$host" in # Some versions of VAC won't allow macro redefinitions at # -qlanglevel=ansi, and autoconf 2.60 sometimes insists on using that # particularly with older versions of vac or xlc. - # It also throws errors about null macro argments, but these are + # It also throws errors about null macro arguments, but these are # not fatal. AC_MSG_CHECKING([if compiler allows macro redefinitions]) AC_COMPILE_IFELSE( @@ -525,7 +535,6 @@ case "$host" in [ AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) CC="`echo $CC | sed 's/-qlanglvl\=ansi//g'`" - LD="`echo $LD | sed 's/-qlanglvl\=ansi//g'`" CFLAGS="`echo $CFLAGS | sed 's/-qlanglvl\=ansi//g'`" CPPFLAGS="`echo $CPPFLAGS | sed 's/-qlanglvl\=ansi//g'`" ] @@ -753,7 +762,7 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) PATH="$PATH:/usr/etc" AC_DEFINE([WITH_IRIX_ARRAY], [1], [Define if you have/want arrays - (cluster-wide session managment, not C arrays)]) + (cluster-wide session management, not C arrays)]) AC_DEFINE([WITH_IRIX_PROJECT], [1], [Define if you want IRIX project management]) AC_DEFINE([WITH_IRIX_AUDIT], [1], @@ -1398,7 +1407,7 @@ AC_RUN_IFELSE( ) AC_MSG_RESULT([$func_calloc_0_nonnull]) -if test "x$func_calloc_0_nonnull" == "xyes"; then +if test "x$func_calloc_0_nonnull" = "xyes"; then AC_DEFINE(HAVE_CALLOC, 1, [calloc(0, x) returns non-null]) else AC_DEFINE(HAVE_CALLOC, 0, [calloc(0, x) returns NULL]) @@ -1493,55 +1502,6 @@ else AC_MSG_RESULT([no]) fi -# Check whether user wants S/Key support -SKEY_MSG="no" -AC_ARG_WITH([skey], - [ --with-skey[[=PATH]] Enable S/Key support (optionally in PATH)], - [ - if test "x$withval" != "xno" ; then - - if test "x$withval" != "xyes" ; then - CPPFLAGS="$CPPFLAGS -I${withval}/include" - LDFLAGS="$LDFLAGS -L${withval}/lib" - fi - - AC_DEFINE([SKEY], [1], [Define if you want S/Key support]) - LIBS="-lskey $LIBS" - SKEY_MSG="yes" - - AC_MSG_CHECKING([for s/key support]) - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([[ -#include -#include - ]], [[ - char *ff = skey_keyinfo(""); ff=""; - exit(0); - ]])], - [AC_MSG_RESULT([yes])], - [ - AC_MSG_RESULT([no]) - AC_MSG_ERROR([** Incomplete or missing s/key libraries.]) - ]) - AC_MSG_CHECKING([if skeychallenge takes 4 arguments]) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -#include -#include - ]], [[ - (void)skeychallenge(NULL,"name","",0); - ]])], - [ - AC_MSG_RESULT([yes]) - AC_DEFINE([SKEYCHALLENGE_4ARG], [1], - [Define if your skeychallenge() - function takes 4 arguments (NetBSD)])], - [ - AC_MSG_RESULT([no]) - ]) - fi - ] -) - # Check whether user wants to use ldns LDNS_MSG="no" AC_ARG_WITH(ldns, @@ -1778,6 +1738,7 @@ AC_CHECK_FUNCS([ \ getaddrinfo \ getcwd \ getgrouplist \ + getline \ getnameinfo \ getopt \ getpagesize \ @@ -1786,6 +1747,7 @@ AC_CHECK_FUNCS([ \ getpgid \ _getpty \ getrlimit \ + getrandom \ getsid \ getttyent \ glob \ @@ -3005,7 +2967,7 @@ LIBS="$saved_LIBS" ### Configure cryptographic random number support -# Check wheter OpenSSL seeds itself +# Check whether OpenSSL seeds itself if test "x$openssl" = "xyes" ; then AC_MSG_CHECKING([whether OpenSSL's PRNG is internally seeded]) AC_RUN_IFELSE( @@ -3904,7 +3866,7 @@ fi AC_CHECK_TYPES([struct timespec]) -# We need int64_t or else certian parts of the compile will fail. +# We need int64_t or else certain parts of the compile will fail. if test "x$ac_cv_have_int64_t" = "xno" && \ test "x$ac_cv_sizeof_long_int" != "x8" && \ test "x$ac_cv_sizeof_long_long_int" = "x0" ; then @@ -5215,7 +5177,6 @@ echo " PAM support: $PAM_MSG" echo " OSF SIA support: $SIA_MSG" echo " KerberosV support: $KRB5_MSG" echo " SELinux support: $SELINUX_MSG" -echo " S/KEY support: $SKEY_MSG" echo " MD5 password support: $MD5_MSG" echo " libedit support: $LIBEDIT_MSG" echo " libldns support: $LDNS_MSG" diff --git a/contrib/aix/buildbff.sh b/contrib/aix/buildbff.sh index 00b384dc7..55113d9d3 100755 --- a/contrib/aix/buildbff.sh +++ b/contrib/aix/buildbff.sh @@ -240,21 +240,7 @@ echo # Generate keys unless they already exist echo Creating host keys if required. -if [ -f "$sysconfdir/ssh_host_key" ] ; then - echo "$sysconfdir/ssh_host_key already exists, skipping." -else - $bindir/ssh-keygen -t rsa1 -f $sysconfdir/ssh_host_key -N "" -fi -if [ -f $sysconfdir/ssh_host_dsa_key ] ; then - echo "$sysconfdir/ssh_host_dsa_key already exists, skipping." -else - $bindir/ssh-keygen -t dsa -f $sysconfdir/ssh_host_dsa_key -N "" -fi -if [ -f $sysconfdir/ssh_host_rsa_key ] ; then - echo "$sysconfdir/ssh_host_rsa_key already exists, skipping." -else - $bindir/ssh-keygen -t rsa -f $sysconfdir/ssh_host_rsa_key -N "" -fi +$bindir/ssh-keygen -A echo # Set startup command depending on SRC support diff --git a/contrib/cygwin/ssh-host-config b/contrib/cygwin/ssh-host-config index db6aaa08a..261020af3 100644 --- a/contrib/cygwin/ssh-host-config +++ b/contrib/cygwin/ssh-host-config @@ -22,7 +22,7 @@ CSIH_SCRIPT=/usr/share/csih/cygwin-service-installation-helper.sh -# List of apps used. This is checkad for existance in csih_sanity_check +# List of apps used. This is checkad for existence in csih_sanity_check # Don't use *any* transient commands before sourcing the csih helper script, # otherwise the sanity checks are short-circuited. declare -a csih_required_commands=( diff --git a/contrib/cygwin/ssh-user-config b/contrib/cygwin/ssh-user-config index 33dc0cbea..6fa4bb3ea 100644 --- a/contrib/cygwin/ssh-user-config +++ b/contrib/cygwin/ssh-user-config @@ -127,7 +127,7 @@ readonly -f check_user_homedir check_user_dot_ssh_dir() { if [ -e "${pwdhome}/.ssh" -a ! -d "${pwdhome}/.ssh" ] then - csih_error "${pwdhome}/.ssh is existant but not a directory. Cannot create user identity files." + csih_error "${pwdhome}/.ssh is existent but not a directory. Cannot create user identity files." fi if [ ! -e "${pwdhome}/.ssh" ] diff --git a/contrib/redhat/openssh.spec b/contrib/redhat/openssh.spec index 90c7aaea5..8e9594d9c 100644 --- a/contrib/redhat/openssh.spec +++ b/contrib/redhat/openssh.spec @@ -1,4 +1,4 @@ -%define ver 7.6p1 +%define ver 7.8p1 %define rel 1%{?dist} # OpenSSH privilege separation requires a user & group ID diff --git a/contrib/solaris/README b/contrib/solaris/README index fefdd4b53..cabecaa1a 100644 --- a/contrib/solaris/README +++ b/contrib/solaris/README @@ -5,7 +5,7 @@ SVR4 style package tools. The build process is called a 'dummy install'.. Which means the software does a "make install-nokeys DESTDIR=[fakeroot]". This way all manpages should -be handled correctly and key are defered until the first time the sshd +be handled correctly and key are deferred until the first time the sshd is started. Directions: diff --git a/contrib/suse/openssh.spec b/contrib/suse/openssh.spec index fdb3578cb..9a1168f01 100644 --- a/contrib/suse/openssh.spec +++ b/contrib/suse/openssh.spec @@ -13,7 +13,7 @@ Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation Name: openssh -Version: 7.6p1 +Version: 7.8p1 URL: https://www.openssh.com/ Release: 1 Source0: openssh-%{version}.tar.gz @@ -56,7 +56,7 @@ arbitrary TCP/IP ports can also be forwarded over the secure channel. OpenSSH is OpenBSD's rework of the last free version of SSH, bringing it up to date in terms of security and features, as well as removing all -patented algorithms to seperate libraries (OpenSSL). +patented algorithms to separate libraries (OpenSSL). This package includes all files necessary for both the OpenSSH client and server. @@ -70,7 +70,7 @@ arbitrary TCP/IP ports can also be forwarded over the secure channel. OpenSSH is OpenBSD's rework of the last free version of SSH, bringing it up to date in terms of security and features, as well as removing all -patented algorithms to seperate libraries (OpenSSL). +patented algorithms to separate libraries (OpenSSL). This package contains an X Window System passphrase dialog for OpenSSH. diff --git a/defines.h b/defines.h index c6666a0cd..acb02e161 100644 --- a/defines.h +++ b/defines.h @@ -660,12 +660,6 @@ struct winsize { # define krb5_get_err_text(context,code) error_message(code) #endif -#if defined(SKEYCHALLENGE_4ARG) -# define _compat_skeychallenge(a,b,c,d) skeychallenge(a,b,c,d) -#else -# define _compat_skeychallenge(a,b,c,d) skeychallenge(a,b,c) -#endif - /* Maximum number of file descriptors available */ #ifdef HAVE_SYSCONF # define SSH_SYSFDMAX sysconf(_SC_OPEN_MAX) diff --git a/dh.c b/dh.c index 46afba033..ac8d5a0ae 100644 --- a/dh.c +++ b/dh.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dh.c,v 1.63 2018/02/07 02:06:50 jsing Exp $ */ +/* $OpenBSD: dh.c,v 1.66 2018/08/04 00:55:06 djm Exp $ */ /* * Copyright (c) 2000 Niels Provos. All rights reserved. * @@ -145,9 +145,9 @@ DH * choose_dh(int min, int wantbits, int max) { FILE *f; - char line[4096]; - int best, bestcount, which; - int linenum; + char *line = NULL; + size_t linesize = 0; + int best, bestcount, which, linenum; struct dhgroup dhg; if ((f = fopen(_PATH_DH_MODULI, "r")) == NULL) { @@ -158,7 +158,7 @@ choose_dh(int min, int wantbits, int max) linenum = 0; best = bestcount = 0; - while (fgets(line, sizeof(line), f)) { + while (getline(&line, &linesize, f) != -1) { linenum++; if (!parse_prime(linenum, line, &dhg)) continue; @@ -176,6 +176,9 @@ choose_dh(int min, int wantbits, int max) if (dhg.size == best) bestcount++; } + free(line); + line = NULL; + linesize = 0; rewind(f); if (bestcount == 0) { @@ -186,7 +189,7 @@ choose_dh(int min, int wantbits, int max) linenum = 0; which = arc4random_uniform(bestcount); - while (fgets(line, sizeof(line), f)) { + while (getline(&line, &linesize, f) != -1) { if (!parse_prime(linenum, line, &dhg)) continue; if ((dhg.size > max || dhg.size < min) || @@ -198,6 +201,8 @@ choose_dh(int min, int wantbits, int max) } break; } + free(line); + line = NULL; fclose(f); if (linenum != which+1) { logit("WARNING: line %d disappeared in %s, giving up", @@ -274,6 +279,7 @@ dh_gen_key(DH *dh, int need) if (DH_generate_key(dh) == 0 || !dh_pub_is_valid(dh, dh->pub_key)) { BN_clear_free(dh->priv_key); + dh->priv_key = NULL; return SSH_ERR_LIBCRYPTO_ERROR; } return 0; diff --git a/entropy.c b/entropy.c index 14b98f188..c178c00cf 100644 --- a/entropy.c +++ b/entropy.c @@ -53,7 +53,8 @@ #include "atomicio.h" #include "pathnames.h" #include "log.h" -#include "buffer.h" +#include "sshbuf.h" +#include "ssherr.h" /* * Portable OpenSSH PRNG seeding: @@ -181,29 +182,34 @@ seed_from_prngd(unsigned char *buf, size_t bytes) } void -rexec_send_rng_seed(Buffer *m) +rexec_send_rng_seed(struct sshbuf *m) { u_char buf[RANDOM_SEED_SIZE]; + size_t len = sizeof(buf); + int r; if (RAND_bytes(buf, sizeof(buf)) <= 0) { error("Couldn't obtain random bytes (error %ld)", ERR_get_error()); - buffer_put_string(m, "", 0); - } else - buffer_put_string(m, buf, sizeof(buf)); + len = 0; + } + if ((r = sshbuf_put_string(m, buf, len)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + explicit_bzero(buf, sizeof(buf)); } void -rexec_recv_rng_seed(Buffer *m) +rexec_recv_rng_seed(struct sshbuf *m) { - u_char *buf; - u_int len; + u_char *buf = NULL; + size_t len = 0; + int r; - buf = buffer_get_string_ret(m, &len); - if (buf != NULL) { - debug3("rexec_recv_rng_seed: seeding rng with %u bytes", len); - RAND_add(buf, len, len); - } + if ((r = sshbuf_get_string_direct(m, &buf, &len)) != 0 + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + + debug3("rexec_recv_rng_seed: seeding rng with %u bytes", len); + RAND_add(buf, len, len); } #endif /* OPENSSL_PRNG_ONLY */ diff --git a/entropy.h b/entropy.h index 9d5285b29..870164d30 100644 --- a/entropy.h +++ b/entropy.h @@ -25,11 +25,10 @@ #ifndef _RANDOMS_H #define _RANDOMS_H -#include "buffer.h" +struct sshbuf; void seed_rng(void); - -void rexec_send_rng_seed(Buffer *); -void rexec_recv_rng_seed(Buffer *); +void rexec_send_rng_seed(struct sshbuf *); +void rexec_recv_rng_seed(struct sshbuf *); #endif /* _RANDOMS_H */ diff --git a/gss-genr.c b/gss-genr.c index 62559ed9e..d56257b4a 100644 --- a/gss-genr.c +++ b/gss-genr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: gss-genr.c,v 1.24 2016/09/12 01:22:38 deraadt Exp $ */ +/* $OpenBSD: gss-genr.c,v 1.26 2018/07/10 09:13:30 djm Exp $ */ /* * Copyright (c) 2001-2007 Simon Wilkinson. All rights reserved. @@ -37,7 +37,8 @@ #include #include "xmalloc.h" -#include "buffer.h" +#include "ssherr.h" +#include "sshbuf.h" #include "log.h" #include "ssh2.h" @@ -46,6 +47,21 @@ extern u_char *session_id2; extern u_int session_id2_len; +/* sshbuf_get for gss_buffer_desc */ +int +ssh_gssapi_get_buffer_desc(struct sshbuf *b, gss_buffer_desc *g) +{ + int r; + u_char *p; + size_t len; + + if ((r = sshbuf_get_string(b, &p, &len)) != 0) + return r; + g->value = p; + g->length = len; + return 0; +} + /* Check that the OID in a data stream matches that in the context */ int ssh_gssapi_check_oid(Gssctxt *ctx, void *data, size_t len) @@ -94,10 +110,12 @@ ssh_gssapi_last_error(Gssctxt *ctxt, OM_uint32 *major_status, OM_uint32 lmin; gss_buffer_desc msg = GSS_C_EMPTY_BUFFER; OM_uint32 ctx; - Buffer b; + struct sshbuf *b; char *ret; + int r; - buffer_init(&b); + if ((b = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); if (major_status != NULL) *major_status = ctxt->major; @@ -110,8 +128,9 @@ ssh_gssapi_last_error(Gssctxt *ctxt, OM_uint32 *major_status, gss_display_status(&lmin, ctxt->major, GSS_C_GSS_CODE, ctxt->oid, &ctx, &msg); - buffer_append(&b, msg.value, msg.length); - buffer_put_char(&b, '\n'); + if ((r = sshbuf_put(b, msg.value, msg.length)) != 0 || + (r = sshbuf_put_u8(b, '\n')) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); gss_release_buffer(&lmin, &msg); } while (ctx != 0); @@ -121,16 +140,17 @@ ssh_gssapi_last_error(Gssctxt *ctxt, OM_uint32 *major_status, gss_display_status(&lmin, ctxt->minor, GSS_C_MECH_CODE, ctxt->oid, &ctx, &msg); - buffer_append(&b, msg.value, msg.length); - buffer_put_char(&b, '\n'); + if ((r = sshbuf_put(b, msg.value, msg.length)) != 0 || + (r = sshbuf_put_u8(b, '\n')) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); gss_release_buffer(&lmin, &msg); } while (ctx != 0); - buffer_put_char(&b, '\0'); - ret = xmalloc(buffer_len(&b)); - buffer_get(&b, ret, buffer_len(&b)); - buffer_free(&b); + if ((r = sshbuf_put_u8(b, '\n')) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + ret = xstrdup((const char *)sshbuf_ptr(b)); + sshbuf_free(b); return (ret); } @@ -238,15 +258,18 @@ ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_t buffer, gss_buffer_t hash) } void -ssh_gssapi_buildmic(Buffer *b, const char *user, const char *service, +ssh_gssapi_buildmic(struct sshbuf *b, const char *user, const char *service, const char *context) { - buffer_init(b); - buffer_put_string(b, session_id2, session_id2_len); - buffer_put_char(b, SSH2_MSG_USERAUTH_REQUEST); - buffer_put_cstring(b, user); - buffer_put_cstring(b, service); - buffer_put_cstring(b, context); + int r; + + sshbuf_reset(b); + if ((r = sshbuf_put_string(b, session_id2, session_id2_len)) != 0 || + (r = sshbuf_put_u8(b, SSH2_MSG_USERAUTH_REQUEST)) != 0 || + (r = sshbuf_put_cstring(b, user)) != 0 || + (r = sshbuf_put_cstring(b, service)) != 0 || + (r = sshbuf_put_cstring(b, context)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); } int diff --git a/gss-serv-krb5.c b/gss-serv-krb5.c index 795992d9f..a151bc1e4 100644 --- a/gss-serv-krb5.c +++ b/gss-serv-krb5.c @@ -1,4 +1,4 @@ -/* $OpenBSD: gss-serv-krb5.c,v 1.8 2013/07/20 01:55:13 djm Exp $ */ +/* $OpenBSD: gss-serv-krb5.c,v 1.9 2018/07/09 21:37:55 markus Exp $ */ /* * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. @@ -35,14 +35,13 @@ #include #include "xmalloc.h" -#include "key.h" +#include "sshkey.h" #include "hostfile.h" #include "auth.h" #include "log.h" #include "misc.h" #include "servconf.h" -#include "buffer.h" #include "ssh-gss.h" extern ServerOptions options; diff --git a/gss-serv.c b/gss-serv.c index 6cae720e5..ab3a15f0f 100644 --- a/gss-serv.c +++ b/gss-serv.c @@ -1,4 +1,4 @@ -/* $OpenBSD: gss-serv.c,v 1.30 2017/06/24 06:34:38 djm Exp $ */ +/* $OpenBSD: gss-serv.c,v 1.31 2018/07/09 21:37:55 markus Exp $ */ /* * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. @@ -36,8 +36,7 @@ #include "openbsd-compat/sys-queue.h" #include "xmalloc.h" -#include "buffer.h" -#include "key.h" +#include "sshkey.h" #include "hostfile.h" #include "auth.h" #include "log.h" diff --git a/hostfile.c b/hostfile.c index 12f174ff9..e1f826bdd 100644 --- a/hostfile.c +++ b/hostfile.c @@ -1,4 +1,4 @@ -/* $OpenBSD: hostfile.c,v 1.71 2017/05/31 09:15:42 deraadt Exp $ */ +/* $OpenBSD: hostfile.c,v 1.73 2018/07/16 03:09:13 djm Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -663,14 +663,14 @@ hostkeys_foreach(const char *path, hostkeys_foreach_fn *callback, void *ctx, const char *host, const char *ip, u_int options) { FILE *f; - char line[8192], oline[8192], ktype[128]; + char *line = NULL, ktype[128]; u_long linenum = 0; char *cp, *cp2; u_int kbits; int hashed; int s, r = 0; struct hostkey_foreach_line lineinfo; - size_t l; + size_t linesize = 0, l; memset(&lineinfo, 0, sizeof(lineinfo)); if (host == NULL && (options & HKF_WANT_MATCH) != 0) @@ -679,15 +679,16 @@ hostkeys_foreach(const char *path, hostkeys_foreach_fn *callback, void *ctx, return SSH_ERR_SYSTEM_ERROR; debug3("%s: reading file \"%s\"", __func__, path); - while (read_keyfile_line(f, path, line, sizeof(line), &linenum) == 0) { + while (getline(&line, &linesize, f) != -1) { + linenum++; line[strcspn(line, "\n")] = '\0'; - strlcpy(oline, line, sizeof(oline)); + free(lineinfo.line); sshkey_free(lineinfo.key); memset(&lineinfo, 0, sizeof(lineinfo)); lineinfo.path = path; lineinfo.linenum = linenum; - lineinfo.line = oline; + lineinfo.line = xstrdup(line); lineinfo.marker = MRK_NONE; lineinfo.status = HKF_STATUS_OK; lineinfo.keytype = KEY_UNSPEC; @@ -826,6 +827,8 @@ hostkeys_foreach(const char *path, hostkeys_foreach_fn *callback, void *ctx, break; } sshkey_free(lineinfo.key); + free(lineinfo.line); + free(line); fclose(f); return r; } diff --git a/kex.c b/kex.c index 15ea28b07..25f9f66f6 100644 --- a/kex.c +++ b/kex.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kex.c,v 1.136 2018/02/07 02:06:50 jsing Exp $ */ +/* $OpenBSD: kex.c,v 1.141 2018/07/09 13:37:10 sf Exp $ */ /* * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. * @@ -174,7 +174,7 @@ kex_names_cat(const char *a, const char *b) size_t len; if (a == NULL || *a == '\0') - return NULL; + return strdup(b); if (b == NULL || *b == '\0') return strdup(a); if (strlen(b) > 1024*1024) @@ -209,27 +209,88 @@ kex_names_cat(const char *a, const char *b) * specified names should be removed. */ int -kex_assemble_names(const char *def, char **list) +kex_assemble_names(char **listp, const char *def, const char *all) { - char *ret; + char *cp, *tmp, *patterns; + char *list = NULL, *ret = NULL, *matching = NULL, *opatterns = NULL; + int r = SSH_ERR_INTERNAL_ERROR; - if (list == NULL || *list == NULL || **list == '\0') { - *list = strdup(def); + if (listp == NULL || *listp == NULL || **listp == '\0') { + if ((*listp = strdup(def)) == NULL) + return SSH_ERR_ALLOC_FAIL; return 0; } - if (**list == '+') { - if ((ret = kex_names_cat(def, *list + 1)) == NULL) - return SSH_ERR_ALLOC_FAIL; - free(*list); - *list = ret; - } else if (**list == '-') { - if ((ret = match_filter_list(def, *list + 1)) == NULL) - return SSH_ERR_ALLOC_FAIL; - free(*list); - *list = ret; + + list = *listp; + *listp = NULL; + if (*list == '+') { + /* Append names to default list */ + if ((tmp = kex_names_cat(def, list + 1)) == NULL) { + r = SSH_ERR_ALLOC_FAIL; + goto fail; + } + free(list); + list = tmp; + } else if (*list == '-') { + /* Remove names from default list */ + if ((*listp = match_filter_blacklist(def, list + 1)) == NULL) { + r = SSH_ERR_ALLOC_FAIL; + goto fail; + } + free(list); + /* filtering has already been done */ + return 0; + } else { + /* Explicit list, overrides default - just use "list" as is */ } - return 0; + /* + * The supplied names may be a pattern-list. For the -list case, + * the patterns are applied above. For the +list and explicit list + * cases we need to do it now. + */ + ret = NULL; + if ((patterns = opatterns = strdup(list)) == NULL) { + r = SSH_ERR_ALLOC_FAIL; + goto fail; + } + /* Apply positive (i.e. non-negated) patterns from the list */ + while ((cp = strsep(&patterns, ",")) != NULL) { + if (*cp == '!') { + /* negated matches are not supported here */ + r = SSH_ERR_INVALID_ARGUMENT; + goto fail; + } + free(matching); + if ((matching = match_filter_whitelist(all, cp)) == NULL) { + r = SSH_ERR_ALLOC_FAIL; + goto fail; + } + if ((tmp = kex_names_cat(ret, matching)) == NULL) { + r = SSH_ERR_ALLOC_FAIL; + goto fail; + } + free(ret); + ret = tmp; + } + if (ret == NULL || *ret == '\0') { + /* An empty name-list is an error */ + /* XXX better error code? */ + r = SSH_ERR_INVALID_ARGUMENT; + goto fail; + } + + /* success */ + *listp = ret; + ret = NULL; + r = 0; + + fail: + free(matching); + free(opatterns); + free(list); + free(ret); + return r; } /* put algorithm proposal into buffer */ @@ -342,6 +403,7 @@ kex_send_ext_info(struct ssh *ssh) if ((algs = sshkey_alg_list(0, 1, 1, ',')) == NULL) return SSH_ERR_ALLOC_FAIL; + /* XXX filter algs list by allowed pubkey/hostbased types */ if ((r = sshpkt_start(ssh, SSH2_MSG_EXT_INFO)) != 0 || (r = sshpkt_put_u32(ssh, 1)) != 0 || (r = sshpkt_put_cstring(ssh, "server-sig-algs")) != 0 || @@ -378,7 +440,7 @@ kex_input_ext_info(int type, u_int32_t seq, struct ssh *ssh) { struct kex *kex = ssh->kex; u_int32_t i, ninfo; - char *name, *found; + char *name; u_char *val; size_t vlen; int r; @@ -401,16 +463,8 @@ kex_input_ext_info(int type, u_int32_t seq, struct ssh *ssh) return SSH_ERR_INVALID_FORMAT; } debug("%s: %s=<%s>", __func__, name, val); - found = match_list("rsa-sha2-256", val, NULL); - if (found) { - kex->rsa_sha2 = 256; - free(found); - } - found = match_list("rsa-sha2-512", val, NULL); - if (found) { - kex->rsa_sha2 = 512; - free(found); - } + kex->server_sig_algs = val; + val = NULL; } else debug("%s: %s (unrecognised)", __func__, name); free(name); diff --git a/kex.h b/kex.h index 01bb3986a..593de1208 100644 --- a/kex.h +++ b/kex.h @@ -1,4 +1,4 @@ -/* $OpenBSD: kex.h,v 1.83 2017/05/30 14:23:52 markus Exp $ */ +/* $OpenBSD: kex.h,v 1.91 2018/07/11 18:53:29 markus Exp $ */ /* * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. @@ -27,8 +27,6 @@ #define KEX_H #include "mac.h" -#include "buffer.h" /* XXX for typedef */ -#include "key.h" /* XXX for typedef */ #ifdef WITH_LEAKMALLOC #include "leakmalloc.h" @@ -43,6 +41,8 @@ # define EC_POINT void # endif /* OPENSSL_HAS_ECC */ #else /* WITH_OPENSSL */ +# define DH void +# define BIGNUM void # define EC_KEY void # define EC_GROUP void # define EC_POINT void @@ -64,6 +64,7 @@ #define KEX_CURVE25519_SHA256_OLD "curve25519-sha256@libssh.org" #define COMP_NONE 0 +/* pre-auth compression (COMP_ZLIB) is only supported in the client */ #define COMP_ZLIB 1 #define COMP_DELAYED 2 @@ -139,7 +140,7 @@ struct kex { int hostkey_type; int hostkey_nid; u_int kex_type; - int rsa_sha2; + char *server_sig_algs; int ext_info_c; struct sshbuf *my; struct sshbuf *peer; @@ -169,7 +170,7 @@ struct kex { int kex_names_valid(const char *); char *kex_alg_list(char); char *kex_names_cat(const char *, const char *); -int kex_assemble_names(const char *, char **); +int kex_assemble_names(char **, const char *, const char *); int kex_new(struct ssh *, char *[PROPOSAL_MAX], struct kex **); int kex_setup(struct ssh *, char *[PROPOSAL_MAX]); diff --git a/kexdhs.c b/kexdhs.c index da8f4c439..5dfca0a24 100644 --- a/kexdhs.c +++ b/kexdhs.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kexdhs.c,v 1.26 2018/02/07 02:06:51 jsing Exp $ */ +/* $OpenBSD: kexdhs.c,v 1.27 2018/04/10 00:10:49 djm Exp $ */ /* * Copyright (c) 2001 Markus Friedl. All rights reserved. * @@ -194,7 +194,7 @@ input_kex_dh_init(int type, u_int32_t seq, struct ssh *ssh) /* destroy_sensitive_data(); */ - /* send server hostkey, DH pubkey 'f' and singed H */ + /* send server hostkey, DH pubkey 'f' and signed H */ if ((r = sshpkt_start(ssh, SSH2_MSG_KEXDH_REPLY)) != 0 || (r = sshpkt_put_string(ssh, server_host_key_blob, sbloblen)) != 0 || (r = sshpkt_put_bignum2(ssh, kex->dh->pub_key)) != 0 || /* f */ diff --git a/kexgexs.c b/kexgexs.c index d7b48ea88..f6983fd69 100644 --- a/kexgexs.c +++ b/kexgexs.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kexgexs.c,v 1.32 2018/02/07 02:06:51 jsing Exp $ */ +/* $OpenBSD: kexgexs.c,v 1.33 2018/04/10 00:10:49 djm Exp $ */ /* * Copyright (c) 2000 Niels Provos. All rights reserved. * Copyright (c) 2001 Markus Friedl. All rights reserved. @@ -224,7 +224,7 @@ input_kex_dh_gex_init(int type, u_int32_t seq, struct ssh *ssh) /* destroy_sensitive_data(); */ - /* send server hostkey, DH pubkey 'f' and singed H */ + /* send server hostkey, DH pubkey 'f' and signed H */ if ((r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_REPLY)) != 0 || (r = sshpkt_put_string(ssh, server_host_key_blob, sbloblen)) != 0 || (r = sshpkt_put_bignum2(ssh, kex->dh->pub_key)) != 0 || /* f */ diff --git a/key.c b/key.c deleted file mode 100644 index a05fdd3c0..000000000 --- a/key.c +++ /dev/null @@ -1,236 +0,0 @@ -/* $OpenBSD: key.c,v 1.132 2017/12/18 02:25:15 djm Exp $ */ -/* - * placed in the public domain - */ - -#include "includes.h" - -#include -#include -#include -#include -#include - -#define SSH_KEY_NO_DEFINE -#include "key.h" - -#include "compat.h" -#include "sshkey.h" -#include "ssherr.h" -#include "log.h" -#include "authfile.h" - -static void -fatal_on_fatal_errors(int r, const char *func, int extra_fatal) -{ - if (r == SSH_ERR_INTERNAL_ERROR || - r == SSH_ERR_ALLOC_FAIL || - (extra_fatal != 0 && r == extra_fatal)) - fatal("%s: %s", func, ssh_err(r)); -} - -Key * -key_from_blob(const u_char *blob, u_int blen) -{ - int r; - Key *ret = NULL; - - if ((r = sshkey_from_blob(blob, blen, &ret)) != 0) { - fatal_on_fatal_errors(r, __func__, 0); - error("%s: %s", __func__, ssh_err(r)); - return NULL; - } - return ret; -} - -int -key_to_blob(const Key *key, u_char **blobp, u_int *lenp) -{ - u_char *blob; - size_t blen; - int r; - - if (blobp != NULL) - *blobp = NULL; - if (lenp != NULL) - *lenp = 0; - if ((r = sshkey_to_blob(key, &blob, &blen)) != 0) { - fatal_on_fatal_errors(r, __func__, 0); - error("%s: %s", __func__, ssh_err(r)); - return 0; - } - if (blen > INT_MAX) - fatal("%s: giant len %zu", __func__, blen); - if (blobp != NULL) - *blobp = blob; - if (lenp != NULL) - *lenp = blen; - return blen; -} - -int -key_sign(const Key *key, u_char **sigp, u_int *lenp, - const u_char *data, u_int datalen, const char *alg) -{ - int r; - u_char *sig; - size_t siglen; - - if (sigp != NULL) - *sigp = NULL; - if (lenp != NULL) - *lenp = 0; - if ((r = sshkey_sign(key, &sig, &siglen, - data, datalen, alg, datafellows)) != 0) { - fatal_on_fatal_errors(r, __func__, 0); - error("%s: %s", __func__, ssh_err(r)); - return -1; - } - if (siglen > INT_MAX) - fatal("%s: giant len %zu", __func__, siglen); - if (sigp != NULL) - *sigp = sig; - if (lenp != NULL) - *lenp = siglen; - return 0; -} - -Key * -key_demote(const Key *k) -{ - int r; - Key *ret = NULL; - - if ((r = sshkey_demote(k, &ret)) != 0) - fatal("%s: %s", __func__, ssh_err(r)); - return ret; -} - -int -key_drop_cert(Key *k) -{ - int r; - - if ((r = sshkey_drop_cert(k)) != 0) { - fatal_on_fatal_errors(r, __func__, 0); - error("%s: %s", __func__, ssh_err(r)); - return -1; - } - return 0; -} - -int -key_cert_check_authority(const Key *k, int want_host, int require_principal, - const char *name, const char **reason) -{ - int r; - - if ((r = sshkey_cert_check_authority(k, want_host, require_principal, - name, reason)) != 0) { - fatal_on_fatal_errors(r, __func__, 0); - error("%s: %s", __func__, ssh_err(r)); - return -1; - } - return 0; -} - -/* authfile.c */ - -Key * -key_load_cert(const char *filename) -{ - int r; - Key *ret = NULL; - - if ((r = sshkey_load_cert(filename, &ret)) != 0) { - fatal_on_fatal_errors(r, __func__, SSH_ERR_LIBCRYPTO_ERROR); - /* Old authfile.c ignored all file errors. */ - if (r == SSH_ERR_SYSTEM_ERROR) - debug("%s: %s", __func__, ssh_err(r)); - else - error("%s: %s", __func__, ssh_err(r)); - return NULL; - } - return ret; - -} - -Key * -key_load_public(const char *filename, char **commentp) -{ - int r; - Key *ret = NULL; - - if ((r = sshkey_load_public(filename, &ret, commentp)) != 0) { - fatal_on_fatal_errors(r, __func__, SSH_ERR_LIBCRYPTO_ERROR); - /* Old authfile.c ignored all file errors. */ - if (r == SSH_ERR_SYSTEM_ERROR) - debug("%s: %s", __func__, ssh_err(r)); - else - error("%s: %s", __func__, ssh_err(r)); - return NULL; - } - return ret; -} - -Key * -key_load_private(const char *path, const char *passphrase, - char **commentp) -{ - int r; - Key *ret = NULL; - - if ((r = sshkey_load_private(path, passphrase, &ret, commentp)) != 0) { - fatal_on_fatal_errors(r, __func__, SSH_ERR_LIBCRYPTO_ERROR); - /* Old authfile.c ignored all file errors. */ - if (r == SSH_ERR_SYSTEM_ERROR || - r == SSH_ERR_KEY_WRONG_PASSPHRASE) - debug("%s: %s", __func__, ssh_err(r)); - else - error("%s: %s", __func__, ssh_err(r)); - return NULL; - } - return ret; -} - -Key * -key_load_private_cert(int type, const char *filename, const char *passphrase, - int *perm_ok) -{ - int r; - Key *ret = NULL; - - if ((r = sshkey_load_private_cert(type, filename, passphrase, - &ret, perm_ok)) != 0) { - fatal_on_fatal_errors(r, __func__, SSH_ERR_LIBCRYPTO_ERROR); - /* Old authfile.c ignored all file errors. */ - if (r == SSH_ERR_SYSTEM_ERROR || - r == SSH_ERR_KEY_WRONG_PASSPHRASE) - debug("%s: %s", __func__, ssh_err(r)); - else - error("%s: %s", __func__, ssh_err(r)); - return NULL; - } - return ret; -} - -Key * -key_load_private_type(int type, const char *filename, const char *passphrase, - char **commentp, int *perm_ok) -{ - int r; - Key *ret = NULL; - - if ((r = sshkey_load_private_type(type, filename, passphrase, - &ret, commentp, perm_ok)) != 0) { - fatal_on_fatal_errors(r, __func__, SSH_ERR_LIBCRYPTO_ERROR); - /* Old authfile.c ignored all file errors. */ - if (r == SSH_ERR_SYSTEM_ERROR || - (r == SSH_ERR_KEY_WRONG_PASSPHRASE)) - debug("%s: %s", __func__, ssh_err(r)); - else - error("%s: %s", __func__, ssh_err(r)); - return NULL; - } - return ret; -} diff --git a/key.h b/key.h deleted file mode 100644 index fd59cbf54..000000000 --- a/key.h +++ /dev/null @@ -1,69 +0,0 @@ -/* $OpenBSD: key.h,v 1.52 2017/12/18 02:25:15 djm Exp $ */ - -/* - * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef KEY_H -#define KEY_H - -#include "sshkey.h" - -typedef struct sshkey Key; - -#define types sshkey_types -#define fp_type sshkey_fp_type -#define fp_rep sshkey_fp_rep - -#ifndef SSH_KEY_NO_DEFINE -#define key_free sshkey_free -#define key_equal_public sshkey_equal_public -#define key_equal sshkey_equal -#define key_type sshkey_type -#define key_ssh_name sshkey_ssh_name -#define key_ssh_name_plain sshkey_ssh_name_plain -#define key_type_from_name sshkey_type_from_name -#define key_is_cert sshkey_is_cert -#define key_type_plain sshkey_type_plain -#endif - -void key_free(Key *); -Key *key_demote(const Key *); - -int key_drop_cert(Key *); -int key_cert_check_authority(const Key *, int, int, const char *, - const char **); - -Key *key_from_blob(const u_char *, u_int); -int key_to_blob(const Key *, u_char **, u_int *); - -int key_sign(const Key *, u_char **, u_int *, const u_char *, u_int, - const char *); - -/* authfile.c */ -Key *key_load_cert(const char *); -Key *key_load_public(const char *, char **); -Key *key_load_private(const char *, const char *, char **); -Key *key_load_private_cert(int, const char *, const char *, int *); -Key *key_load_private_type(int, const char *, const char *, char **, int *); - -#endif diff --git a/log.c b/log.c index 99450dd12..d9c2d136c 100644 --- a/log.c +++ b/log.c @@ -1,4 +1,4 @@ -/* $OpenBSD: log.c,v 1.50 2017/05/17 01:24:17 djm Exp $ */ +/* $OpenBSD: log.c,v 1.51 2018/07/27 12:03:17 markus Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -105,6 +105,12 @@ static struct { { NULL, SYSLOG_LEVEL_NOT_SET } }; +LogLevel +log_level_get(void) +{ + return log_level; +} + SyslogFacility log_facility_number(char *name) { diff --git a/log.h b/log.h index 78221046c..ef7bea7e1 100644 --- a/log.h +++ b/log.h @@ -1,4 +1,4 @@ -/* $OpenBSD: log.h,v 1.22 2017/05/17 01:24:17 djm Exp $ */ +/* $OpenBSD: log.h,v 1.23 2018/07/27 12:03:17 markus Exp $ */ /* * Author: Tatu Ylonen @@ -49,6 +49,7 @@ typedef enum { typedef void (log_handler_fn)(LogLevel, const char *, void *); void log_init(char *, LogLevel, SyslogFacility, int); +LogLevel log_level_get(void); int log_change_level(LogLevel); int log_is_on_stderr(void); void log_redirect_stderr_to(const char *); diff --git a/loginrec.c b/loginrec.c index 1b52b9a8d..e51d0c724 100644 --- a/loginrec.c +++ b/loginrec.c @@ -168,7 +168,7 @@ #include #include "xmalloc.h" -#include "key.h" +#include "sshkey.h" #include "hostfile.h" #include "ssh.h" #include "loginrec.h" @@ -177,7 +177,8 @@ #include "packet.h" #include "canohost.h" #include "auth.h" -#include "buffer.h" +#include "sshbuf.h" +#include "ssherr.h" #ifdef HAVE_UTIL_H # include @@ -210,7 +211,7 @@ int utmpx_get_entry(struct logininfo *li); int wtmp_get_entry(struct logininfo *li); int wtmpx_get_entry(struct logininfo *li); -extern Buffer loginmsg; +extern struct sshbuf *loginmsg; /* pick the shortest string */ #define MIN_SIZEOF(s1,s2) (sizeof(s1) < sizeof(s2) ? sizeof(s1) : sizeof(s2)) diff --git a/match.c b/match.c index 3cf40306b..bb3e95f67 100644 --- a/match.c +++ b/match.c @@ -1,4 +1,4 @@ -/* $OpenBSD: match.c,v 1.37 2017/03/10 04:24:55 djm Exp $ */ +/* $OpenBSD: match.c,v 1.38 2018/07/04 13:49:31 djm Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -294,16 +294,20 @@ match_list(const char *client, const char *server, u_int *next) } /* - * Filters a comma-separated list of strings, excluding any entry matching - * the 'filter' pattern list. Caller must free returned string. + * Filter proposal using pattern-list filter. + * "blacklist" determines sense of filter: + * non-zero indicates that items matching filter should be excluded. + * zero indicates that only items matching filter should be included. + * returns NULL on allocation error, otherwise caller must free result. */ -char * -match_filter_list(const char *proposal, const char *filter) +static char * +filter_list(const char *proposal, const char *filter, int blacklist) { size_t len = strlen(proposal) + 1; char *fix_prop = malloc(len); char *orig_prop = strdup(proposal); char *cp, *tmp; + int r; if (fix_prop == NULL || orig_prop == NULL) { free(orig_prop); @@ -314,7 +318,8 @@ match_filter_list(const char *proposal, const char *filter) tmp = orig_prop; *fix_prop = '\0'; while ((cp = strsep(&tmp, ",")) != NULL) { - if (match_pattern_list(cp, filter, 0) != 1) { + r = match_pattern_list(cp, filter, 0); + if ((blacklist && r != 1) || (!blacklist && r == 1)) { if (*fix_prop != '\0') strlcat(fix_prop, ",", len); strlcat(fix_prop, cp, len); @@ -324,3 +329,22 @@ match_filter_list(const char *proposal, const char *filter) return fix_prop; } +/* + * Filters a comma-separated list of strings, excluding any entry matching + * the 'filter' pattern list. Caller must free returned string. + */ +char * +match_filter_blacklist(const char *proposal, const char *filter) +{ + return filter_list(proposal, filter, 1); +} + +/* + * Filters a comma-separated list of strings, including only entries matching + * the 'filter' pattern list. Caller must free returned string. + */ +char * +match_filter_whitelist(const char *proposal, const char *filter) +{ + return filter_list(proposal, filter, 0); +} diff --git a/match.h b/match.h index 937ba0412..852b1a5cb 100644 --- a/match.h +++ b/match.h @@ -1,4 +1,4 @@ -/* $OpenBSD: match.h,v 1.17 2017/02/03 23:01:19 djm Exp $ */ +/* $OpenBSD: match.h,v 1.18 2018/07/04 13:49:31 djm Exp $ */ /* * Author: Tatu Ylonen @@ -20,7 +20,8 @@ int match_hostname(const char *, const char *); int match_host_and_ip(const char *, const char *, const char *); int match_user(const char *, const char *, const char *, const char *); char *match_list(const char *, const char *, u_int *); -char *match_filter_list(const char *, const char *); +char *match_filter_blacklist(const char *, const char *); +char *match_filter_whitelist(const char *, const char *); /* addrmatch.c */ int addr_match_list(const char *, const char *); diff --git a/misc.c b/misc.c index 160d2127e..7b95f5819 100644 --- a/misc.c +++ b/misc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: misc.c,v 1.127 2018/03/12 00:52:01 djm Exp $ */ +/* $OpenBSD: misc.c,v 1.131 2018/07/27 05:13:02 dtucker Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * Copyright (c) 2005,2006 Damien Miller. All rights reserved. @@ -69,7 +69,6 @@ #include "ssh.h" #include "sshbuf.h" #include "ssherr.h" -#include "uidswap.h" #include "platform.h" /* remove newline at end of string */ @@ -239,8 +238,8 @@ set_rdomain(int fd, const char *name) #define QUOTE "\"" /* return next token in configuration line */ -char * -strdelim(char **s) +static char * +strdelim_internal(char **s, int split_equals) { char *old; int wspace = 0; @@ -250,7 +249,8 @@ strdelim(char **s) old = *s; - *s = strpbrk(*s, WHITESPACE QUOTE "="); + *s = strpbrk(*s, + split_equals ? WHITESPACE QUOTE "=" : WHITESPACE QUOTE); if (*s == NULL) return (old); @@ -267,18 +267,37 @@ strdelim(char **s) } /* Allow only one '=' to be skipped */ - if (*s[0] == '=') + if (split_equals && *s[0] == '=') wspace = 1; *s[0] = '\0'; /* Skip any extra whitespace after first token */ *s += strspn(*s + 1, WHITESPACE) + 1; - if (*s[0] == '=' && !wspace) + if (split_equals && *s[0] == '=' && !wspace) *s += strspn(*s + 1, WHITESPACE) + 1; return (old); } +/* + * Return next token in configuration line; splts on whitespace or a + * single '=' character. + */ +char * +strdelim(char **s) +{ + return strdelim_internal(s, 1); +} + +/* + * Return next token in configuration line; splts on whitespace only. + */ +char * +strdelimw(char **s) +{ + return strdelim_internal(s, 0); +} + struct passwd * pwcopy(struct passwd *pw) { @@ -1027,31 +1046,6 @@ percent_expand(const char *string, ...) #undef EXPAND_MAX_KEYS } -/* - * Read an entire line from a public key file into a static buffer, discarding - * lines that exceed the buffer size. Returns 0 on success, -1 on failure. - */ -int -read_keyfile_line(FILE *f, const char *filename, char *buf, size_t bufsz, - u_long *lineno) -{ - while (fgets(buf, bufsz, f) != NULL) { - if (buf[0] == '\0') - continue; - (*lineno)++; - if (buf[strlen(buf) - 1] == '\n' || feof(f)) { - return 0; - } else { - debug("%s: %s line %lu exceeds size limit", __func__, - filename, *lineno); - /* discard remainder of line */ - while (fgetc(f) != '\n' && !feof(f)) - ; /* nothing */ - } - } - return -1; -} - int tun_open(int tun, int mode, char **ifname) { @@ -1604,15 +1598,6 @@ forward_equals(const struct Forward *a, const struct Forward *b) return 1; } -/* returns 1 if bind to specified port by specified user is permitted */ -int -bind_permitted(int port, uid_t uid) -{ - if (port < IPPORT_RESERVED && uid != 0) - return 0; - return 1; -} - /* returns 1 if process is already daemonized, 0 otherwise */ #ifdef WINDOWS /* This should go away once sshd platform specific startup code is refactored */ diff --git a/misc.h b/misc.h index cdafea735..6be289fd2 100644 --- a/misc.h +++ b/misc.h @@ -1,4 +1,4 @@ -/* $OpenBSD: misc.h,v 1.71 2018/03/12 00:52:01 djm Exp $ */ +/* $OpenBSD: misc.h,v 1.74 2018/07/27 05:13:02 dtucker Exp $ */ /* * Author: Tatu Ylonen @@ -31,7 +31,6 @@ struct Forward { }; int forward_equals(const struct Forward *, const struct Forward *); -int bind_permitted(int, uid_t); int daemonized(void); /* Common server and client forwarding options. */ @@ -45,6 +44,7 @@ struct ForwardOptions { char *chop(char *); char *strdelim(char **); +char *strdelimw(char **); int set_nonblock(int); int unset_nonblock(int); void set_nodelay(int); @@ -166,7 +166,6 @@ int safe_path_fd(int, const char *, struct passwd *, char *read_passphrase(const char *, int); int ask_permission(const char *, ...) __attribute__((format(printf, 1, 2))); -int read_keyfile_line(FILE *, const char *, char *, size_t, u_long *); #define MINIMUM(a, b) (((a) < (b)) ? (a) : (b)) #define MAXIMUM(a, b) (((a) > (b)) ? (a) : (b)) diff --git a/moduli b/moduli index cf28bd36b..780b2b975 100644 --- a/moduli +++ b/moduli @@ -1,407 +1,438 @@ -# $OpenBSD: moduli,v 1.20 2017/11/29 05:49:54 dtucker Exp $ +# $OpenBSD: moduli,v 1.21 2018/04/03 02:14:08 dtucker Exp $ # Time Type Tests Tries Size Generator Modulus -20170623034823 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAE4E76CB -20170623034906 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAEB63283 -20170623034928 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAEE49C27 -20170623034936 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAEF2BE1B -20170623034957 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAF22F2D7 -20170623035029 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAF68D3A7 -20170623035052 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAF9A9793 -20170623035228 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB085C01B -20170623035326 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB1140217 -20170623035332 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB11ACBD7 -20170623035408 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB16AD187 -20170623035414 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB1737B53 -20170623035442 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB1B1C483 -20170623035454 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB1C8B93B -20170623035510 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB1EAD06B -20170623035525 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB208DA8B -20170623035553 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB2498F17 -20170623035604 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB25D82D3 -20170623035609 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB262420F -20170623035735 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB3376DEF -20170623035801 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB370E193 -20170623035916 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB426D9CF -20170623035935 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB44E559B -20170623035955 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB4777177 -20170623040012 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB4995E77 -20170623040023 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB4ACAF8B -20170623040032 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB4BB1ADB -20170623040120 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB52D4F1F -20170623040131 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB542306B -20170623040202 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB5899CB7 -20170623040216 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB5A317FB -20170623040224 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB5AEBE43 -20170623040246 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB5E190BF -20170623040254 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB5EBE533 -20170623040334 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB649ECAF -20170623040448 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C4B50D13 -20170623040459 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C4C9F477 -20170623040510 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C4DDC50B -20170623040603 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C55E2BE7 -20170623040614 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C5715757 -20170623040626 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C58A0617 -20170623040632 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C5910FF7 -20170623040709 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C5E85ABB -20170623040729 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C61714B7 -20170623040745 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C6362DF7 -20170623040759 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C64F9EEB -20170623040829 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C6949627 -20170623040836 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C69F6763 -20170623040925 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C712B23B -20170623040941 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C7336C6F -20170623041004 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C76418FB -20170623041040 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C7B6A153 -20170623041049 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C7C6F12F -20170623041059 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C7D798EF -20170623041129 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C81D54F3 -20170623041311 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C919987F -20170623041314 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C91A831B -20170623041341 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C95422FF -20170623041350 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C9646B7F -20170623041354 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C9662E87 -20170623041503 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CA105123 -20170623041522 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CA3BE707 -20170623041541 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CA620DAB -20170623041546 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CA66FFC3 -20170623041620 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CAB69493 -20170623041704 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CB1C2B4B -20170623041709 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CB1FD10B -20170623041747 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CB7550DB -20170623041822 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CBC63D2B -20170623041830 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CBD499AB -20170623043901 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5508B03E93 -20170623044452 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5509C5C937 -20170623044600 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5509F436FB -20170623044825 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550A640733 -20170623045050 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550AD6755B -20170623045124 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550AE93B43 -20170623045420 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550B6F1ED3 -20170623045805 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550C20298F -20170623045930 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550C5914BF -20170623050341 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550D1A1773 -20170623050720 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550DC219FB -20170623051801 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550FBDD1AF -20170623052216 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5510842093 -20170623052416 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5510DBFCD7 -20170623052526 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55110BB843 -20170623052831 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB551196B36B -20170623053119 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB551217A237 -20170623053458 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5512C20307 -20170623053734 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55133990CB -20170623054412 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5514721AB3 -20170623054517 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55149F4D0B -20170623055017 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB551583DD9B -20170623055422 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55163A7903 -20170623055449 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5516475E5F -20170623055516 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5516556F37 -20170623055539 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55165F8F67 -20170623055716 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5516A5CA13 -20170623055812 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5516C8A4A3 -20170623055846 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5516DBF96B -20170623060438 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5517E20F03 -20170623060534 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB551803F1D7 -20170623060551 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55180824C7 -20170623060759 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5518622977 -20170623061152 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55190DD957 -20170623061950 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EBBB813F -20170623062054 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EBE73A63 -20170623062250 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EC3B7BBB -20170623062850 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21ED5538D7 -20170623063051 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EDADBD87 -20170623063106 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EDB14127 -20170623063228 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EDEBD58B -20170623063242 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EDEE14B3 -20170623063301 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EDF542E7 -20170623063538 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EE64F8A3 -20170623063759 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EEC9D597 -20170623064815 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F0A8EB1F -20170623065609 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F21F5CB7 -20170623070150 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F32604CB -20170623070933 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F48C5ED3 -20170623071215 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F5044ECB -20170623071504 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F5815613 -20170623071625 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F5B8F8AB -20170623071723 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F5DE3F7B -20170623071945 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F645009B -20170623072445 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F721A837 -20170623072516 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F731AF17 -20170623073343 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F8B6F58F -20170623073442 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F8DA7A47 -20170623073826 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F983F783 -20170623074239 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FA40B7CF -20170623074307 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FA4F193B -20170623074345 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FA61D323 -20170623074648 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FAEB991B -20170623074919 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FB5876F7 -20170623075011 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FB79557F -20170623075040 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FB88E5F7 -20170623075211 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FBC86DF3 -20170623075233 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FBD19D1B -20170623075313 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FBE8A97F -20170623080026 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FD35417B -20170623082844 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069919E3F0A3 -20170623084111 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906991AE37AEB -20170623091322 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906991D857A5F -20170623095654 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699210172E7 -20170623095828 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069921188C6B -20170623095901 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699211B667F -20170623100423 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069921818383 -20170623101338 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699223C1F3B -20170623101757 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699228B3683 -20170623104910 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699250221BB -20170623110231 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699260AC373 -20170623110814 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992672C113 -20170623113826 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069928D90D4F -20170623120249 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992AC1BA3F -20170623121815 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992BFC1B7B -20170623122456 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992C7EB0CF -20170623123432 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992D3D886B -20170623125910 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992F34AA0B -20170623130350 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992F8B1CFF -20170623131900 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069930BE28FB -20170623132006 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069930CCBBC3 -20170623134400 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069932B40887 -20170623134659 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069932E77127 -20170623140059 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069934031953 -20170623140936 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069934AC3B0F -20170623142309 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069935BCCF33 -20170623142743 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906993611A26B -20170623150027 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069938A6965B -20170623150107 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069938AB78CB -20170623150738 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699392AA267 -20170623152234 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DA657F33 -20170623152823 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DAD58DFF -20170623153243 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DB1F719B -20170623153719 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DB76316F -20170623154606 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DC289BA3 -20170623155435 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DCCFF757 -20170623161905 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DEC7BD43 -20170623163928 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E064A38B -20170623164410 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E0BD160B -20170623172908 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E467E87B -20170623174045 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E54CE16F -20170623175902 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E6CA185F -20170623180229 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E706D14B -20170623180811 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E76F7CD3 -20170623180923 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E77E8123 -20170623182724 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E8D82A2B -20170623185420 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988EAF9DAE7 -20170623195226 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988EFA2202B -20170623195633 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988EFEED5BF -20170623201051 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F10F59CB -20170623202959 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F2921927 -20170623203734 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F32287EB -20170623204218 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F37F8B03 -20170623204329 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F38F411F -20170623204840 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F3EE7B13 -20170623205709 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F493374B -20170623205814 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F4A24813 -20170623210627 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F53F787B -20170623210958 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F57EC8EB -20170623211248 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F5B1A9D7 -20170623213826 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F7B2A7AF -20170623213924 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F7BDBA73 -20170623214723 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F8513E37 -20170623233949 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D915376BC3 -20170624020214 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D918FF036F -20170624030028 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D91A80668F -20170624033630 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D91B697BC3 -20170624052652 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D91E5556DB -20170624075515 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D922262F73 -20170624103157 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92638CCD7 -20170624120558 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92895C273 -20170624130210 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92A0429E7 -20170624131317 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92A441063 -20170624132538 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92A8E794F -20170624133715 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92AD26E07 -20170624145051 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92CB7412F -20170624163751 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92F668E7B -20170624172739 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D930A8FC4B -20170624174055 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D930F6B80B -20170624185924 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D932ED85B7 -20170624220917 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D937BF2B3B -20170624222456 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D9381B839B -20170625033902 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94007305B -20170625053719 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D942F8C1E7 -20170625062259 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D944178FAB -20170625072908 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D945B1B3DF -20170625075138 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D9463A10C3 -20170625080610 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94691AE5B -20170625112146 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94B5B8CDB -20170625113648 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94BB43777 -20170625131459 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94E2020A7 -20170625141110 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94F7F2B87 -20170625144415 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D9504A46D3 -20170625145639 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D9508CDF97 -20170625203254 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D958CDC1DB -20170625215049 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D95AA6BE13 -20170625220255 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D95AE8D4FF -20170626000351 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A06777EB -20170626010044 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A1E685DB -20170626011405 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A237A0AB -20170626020723 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A39C76DB -20170626021405 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A3C0D837 -20170626025354 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A4CB1E73 -20170626025848 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A4E33427 -20170626034407 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A60D840F -20170626042648 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A7271AD3 -20170626063327 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973AA7A8227 -20170626073301 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973AC001F7B -20170626073912 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973AC204247 -20170626083935 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973ADB29CEF -20170626085130 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973ADFA675B -20170626103016 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973B0702723 -20170626110918 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973B1648BFF -20170626113343 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973B1F924B3 -20170626150922 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973B78B107B -20170626162428 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973B972EB6B -20170626171558 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973BAC16547 -20170626231518 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973C3C4E533 -20170627001636 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973C53DC917 -20170627023229 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973C8A24E33 -20170627055348 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973CDB0A037 -20170627085558 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973D234059B -20170627111046 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973D57B1B3B -20170627114331 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973D63E6527 -20170627143549 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DA76351B -20170627150713 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DB2FF40B -20170627151417 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DB566CC3 -20170627162358 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DD096627 -20170627175138 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DF2B3477 -20170627180034 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DF5CD463 -20170627192816 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973E16B337B -20170627194138 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973E1B23A4B -20170627235654 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CE22848CB -20170628025708 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CE4C7FC03 -20170628090844 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CEA316C0F -20170628104935 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CEB9D111B -20170628114328 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CEC57837B -20170628155547 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CEFEB085F -20170628161354 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CF024A37B -20170629103301 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CF75BD46F -20170629121023 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CF8B74F97 -20170630003105 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D0331EC63 -20170630052003 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D04F2C61B -20170630145450 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D0CF7BF93 -20170701010810 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D1578081F -20170701015400 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D161119BF -20170701082405 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D1B5FB48B -20170701092427 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D1C2B0E47 -20170701161137 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D21ABD21B -20170702022204 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D29CF7033 -20170702023811 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D29FB9AAF -20170702062241 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D2CED4213 -20170702082528 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D2E88DA5F -20170702151719 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D33FAA757 -20170702175101 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D360021F3 -20170702200102 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D37A9C6C7 -20170703011731 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D3BCD4977 -20170703155054 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D431F42D3 -20170704184253 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936A2722BB3 -20170704204537 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936A4446CCB -20170705051520 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936ABC7F083 -20170705084652 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936AED1CC73 -20170705094007 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936AF8A26FF -20170705115139 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936B15913CF -20170705123819 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936B1FD105B -20170705150548 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936B411305B -20170705152103 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936B43D87FB -20170705174143 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936B637D557 -20170706120313 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936C5C0BE63 -20170706131942 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936C6CA2F0F -20170706141404 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936C781A68B -20170706153843 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936C8A1C2AB -20170706173242 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936CA322EEF -20170706183451 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936CB02939B -20170706184330 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936CB163C7B -20170706195815 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936CC15613B -20170707002909 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936CFBE39B3 -20170707012259 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936D06F0ADF -20170707064939 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936D4E0A703 -20170707065604 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936D4EE0BAF -20170707120623 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936D9082CA3 -20170707121752 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936D928FC67 -20170707164931 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936DCD75823 -20170707220455 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E0F28243 -20170707233018 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E20BF7B3 -20170708014205 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E3C89587 -20170708023140 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E469C123 -20170708053646 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E6DBCAE7 -20170708071735 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E8297A7F -20170708072409 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E836D247 -20170708102649 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936EA984FCF -20170708144918 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936EE06AB6B -20170708163647 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936EF6DD803 -20170708181531 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936F0B07D83 -20170708234000 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936F4E4D5BF -20170709023719 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936F727B0C3 -20170709063946 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936FA3DA1B3 -20170709093311 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936FC71EB57 -20170709151341 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D14593700D34957 -20170709162318 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D14593701B3041F -20170709184215 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D1459370374B3A3 -20170709215933 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D14593705ED75E7 -20170710000252 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145937077174C3 -20170710052851 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D1459370B975DE3 -20170710074510 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C8898200FD23 -20170710114649 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C88984F315BB -20170711033842 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C88990A1C3A7 -20170711064933 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C88992F18383 -20170711070835 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C8899321BE1B -20170712081942 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889A5694573 -20170712175235 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889AC1C9503 -20170712184856 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889ACBA643B -20170712224446 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889AF76B1E3 -20170713034208 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889B2F38EEF -20170713034622 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889B2F6567F -20170713071216 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889B55B411B -20170713222010 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889BFD2C803 -20170714013005 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889C1EF6397 -20170714094721 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889C7A27293 -20170714141853 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889CAA42B27 -20170714204505 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889CEF31E77 -20170714205139 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889CEFD860B -20170714214942 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889CF9B7253 -20170714230801 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889D071D153 -20170715054028 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889D4C6B33F -20170715152910 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889DB4248D3 -20170715213011 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889DF38680B -20170716095854 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889E75F9737 -20170716115603 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889E896321F -20170717072754 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889F528B29F -20170718103850 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889FB304F4F -20170718123146 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889FC58729F -20170718203220 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C88A012AA89B -20170718211015 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C88A0186FF33 -20170719070720 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225378FA20B88F -20170719080355 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225378FABF2F5B -20170719081323 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225378FAD37237 -20170719083433 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225378FB0C1BEB -20170719124018 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225378FDE8D93F -20170720083815 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253790C2785C7 -20170720203303 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379147CF99B -20170721064950 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253791BAF7AFB -20170721151849 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379217C124F -20170721220636 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379260D3263 -20170722033935 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537929DAE9CB -20170722155118 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379320A3B27 -20170722181755 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537933A7A623 -20170722212038 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379359D2C63 -20170722230812 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537936C5DA37 -20170723005838 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537937F9469F -20170723041453 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253793A1DBF1B -20170723051250 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253793AB9FC9B -20170723112206 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253793EBF09F7 -20170723140224 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253794072005B -20170723170945 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379427689A7 -20170724050156 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253794A23E407 -20170724065019 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253794B47E553 -20170725032628 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379588A6BE3 -20170725142722 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253795F8CFE9B -20170725192821 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537962B35BAB -20170726032919 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537967BE1D7F -20170726062511 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537969930233 -20170726073958 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253796A4B8B7B -20170726144150 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253796EA9D3DF -20170726150548 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253796EE14A73 +20171129060817 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65210B1E863 +20171129060830 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65210C3D8AF +20171129060835 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65210C56383 +20171129060853 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65210E2A407 +20171129060928 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652112864BB +20171129060940 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652113A4B2F +20171129061019 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652118756EB +20171129061110 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65211ECF08B +20171129061125 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521205BFC7 +20171129061139 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652121B156B +20171129061144 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652121DB6C7 +20171129061155 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652122E3A4B +20171129061219 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521258E75B +20171129061248 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652128E21EB +20171129061255 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521294FDC3 +20171129061331 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65212DB195B +20171129061336 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65212DD4653 +20171129061427 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521341B5DF +20171129061437 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652134DD68B +20171129061446 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652135A0283 +20171129061500 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652136FF967 +20171129061601 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65213E379AF +20171129061606 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65213E53213 +20171129061704 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521459419B +20171129061720 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521471A4D7 +20171129061822 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65214F0057F +20171129061829 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65214F60057 +20171129061843 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652150D5E63 +20171129061855 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65215200027 +20171129061901 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521525622F +20171129061942 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521578C59F +20171129061951 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521582692B +20171129062008 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652159DB0EF +20171129062015 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65215A1F453 +20171129062045 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65215DD99B7 +20171129062054 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65215E9E31F +20171129062130 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652162FE18F +20171129062138 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521639C1E7 +20171129062159 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652165F37BB +20171129062221 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65216873C97 +20171129062228 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652168EBECB +20171129062350 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521738FF13 +20171129062433 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652178ED13F +20171129062446 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65217A15C2F +20171129062541 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652181044FB +20171129062603 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521837D78F +20171129062624 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652185C9EDF +20171129062634 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652186C3473 +20171129062650 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65218888AC7 +20171129062658 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65218915923 +20171129062719 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADAB68F23 +20171129062852 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADB8020BB +20171129062857 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADB83D6A7 +20171129062904 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADB8A117B +20171129062913 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADB95C4A7 +20171129063020 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADC1E13B7 +20171129063054 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADC606493 +20171129063136 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADCB2F54F +20171129063229 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADD20E077 +20171129063237 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADD2BAEB3 +20171129063257 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADD51762F +20171129063345 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADDB29C0B +20171129063402 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADDD1340F +20171129063440 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADE1D2F13 +20171129063453 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADE32DC9B +20171129063513 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADE56C75F +20171129063518 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADE5898EF +20171129063545 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADE8E3FC7 +20171129063559 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADEA2F2AB +20171129063613 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADEB8D03F +20171129063626 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADECF0D4F +20171129063639 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADEE3F9DB +20171129063648 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADEECDD2B +20171129063728 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADF3B2B1F +20171129063831 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADFB933CB +20171129063954 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE05FFACF +20171129064044 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE0C83FEB +20171129064109 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE0F81483 +20171129064127 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE1194DFB +20171129064141 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE12EBF3B +20171129064157 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE14B8657 +20171129064308 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE1DFF6A3 +20171129064313 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE1E37B6F +20171129064345 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE21EA40B +20171129064404 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE23F19DB +20171129064429 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE26AA1A3 +20171129070339 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8656503B +20171129070431 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8673A5D7 +20171129070444 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8674FE3B +20171129070802 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D86F9B0D3 +20171129071143 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8790794F +20171129072038 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D890948AB +20171129072201 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D893CA93B +20171129072633 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D89FA04BB +20171129072704 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8A081C83 +20171129073026 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8A94313F +20171129073736 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8BBF2F57 +20171129073811 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8BD07FFB +20171129074006 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8C1A2AAF +20171129074244 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8C85024B +20171129074339 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8CA238BB +20171129074739 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8D485DB3 +20171129074856 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8D771FB3 +20171129075003 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8D9E294F +20171129075124 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8DCE88FB +20171129080839 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D90AB02AB +20171129080910 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D90B81087 +20171129081213 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D91332803 +20171129081802 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D9223D76B +20171129082038 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D928D0B97 +20171129082101 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D92957057 +20171129082300 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D92DF3C23 +20171129082841 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D93CA39BB +20171129083100 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D94254653 +20171129083144 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D943C67CF +20171129083314 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D9472895F +20171129083902 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D955FDEA3 +20171129084024 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D9591B8D3 +20171129084309 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D96010007 +20171129084528 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D9659DC3B +20171129084819 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D96CA1933 +20171129084937 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D96F8F0FF +20171129085037 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D971A1D57 +20171129085105 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D97264D63 +20171129085212 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D974AC317 +20171129085529 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D97CB27FB +20171129085643 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D97F5D31F +20171129085754 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D981F137F +20171129085925 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851948CD513EF +20171129090650 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851948E0DB457 +20171129090703 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851948E0E411B +20171129091339 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851948F218A93 +20171129092140 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519490711E0F +20171129092229 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD606275579785194908BB287 +20171129092532 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519491098743 +20171129092609 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD606275579785194911B52CF +20171129092912 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519491979D17 +20171129093038 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519491CBE28B +20171129093318 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519492326CF7 +20171129093513 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD606275579785194927B907B +20171129093638 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519492B0BBB7 +20171129094059 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519493646CBB +20171129094240 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD606275579785194939F7823 +20171129094307 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519493AB8EBB +20171129094439 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519493E34B3F +20171129094532 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519493FF8E7F +20171129094653 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519494307873 +20171129094922 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519494921E2F +20171129094940 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949496EE1B +20171129095758 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519495F23CAF +20171129100214 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD606275579785194969CC5B7 +20171129101245 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519498540453 +20171129101539 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519498C81ACB +20171129101618 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519498DC4FEB +20171129101802 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD606275579785194991CB3FB +20171129102023 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD606275579785194997603BB +20171129102105 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD606275579785194998A9683 +20171129102314 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519499DEC1C7 +20171129102700 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949A7663FF +20171129102831 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949AADA95B +20171129103048 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949B0592FB +20171129103239 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949B4D9C73 +20171129103850 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949C57B5F7 +20171129104512 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949D60C7AB +20171129105020 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949E393D6B +20171129105252 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949E9CF297 +20171129114245 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC980424F9ADB +20171129114850 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC98042BB88F3 +20171129121702 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC98044D9C36B +20171129124238 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC98046CAF153 +20171129125253 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC980478C8AA3 +20171129130704 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC980489794E7 +20171129133140 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9804A64C06B +20171129140253 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9804C68CB3F +20171129144402 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9804F74F3CB +20171129145354 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC980502DC987 +20171129150624 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805112DBB3 +20171129150654 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805113FE53 +20171129151512 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC98051AA1CA7 +20171129153640 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805342345F +20171129160526 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC980555FD073 +20171129163211 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC980575A8F7B +20171129165338 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC98058EDA363 +20171129171055 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC98059F788C7 +20171129171346 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805A15681B +20171129171648 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805A3C890F +20171129173802 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805B983947 +20171129174541 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805C1B745B +20171129182644 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805EF8CFA7 +20171129183105 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805F423DD7 +20171129183151 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805F48127B +20171129183501 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805F7A0D7B +20171129184425 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC980601F06C7 +20171129190009 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED907E91691F +20171129190047 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED907E94D7B3 +20171129191357 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED907F80F827 +20171129191536 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED907F970063 +20171129201007 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9083AC9B87 +20171129202520 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9084C8A5FF +20171129202732 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9084EB4BAF +20171129203556 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9085801D57 +20171129204816 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908664D7C3 +20171129205307 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9086BA916B +20171129211738 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9088852733 +20171129212245 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9088DFD4A3 +20171129212444 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9088FEF233 +20171129213520 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9089C4756B +20171129214659 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908A9732EF +20171129215106 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908ADCE773 +20171129215630 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908B3A5BEF +20171129220756 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908C0BB263 +20171129221730 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908CB5663B +20171129223322 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908DDCC3A3 +20171129224236 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908E85C73B +20171129224324 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908E8D9E2F +20171129225233 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908F379CB3 +20171129225757 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908F98DCDB +20171129231535 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9090E1233F +20171129232541 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED909198027B +20171129233438 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED90923CF07B +20171129233904 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED90928C0D7B +20171129235019 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED90935B1963 +20171130000155 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED90942FB1FB +20171130000803 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED90949B573B +20171130003235 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED90966596E7 +20171130005040 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9097B63323 +20171130005620 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED909818E76F +20171130012144 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9099F4FB5F +20171130014001 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED909B4379EB +20171130014931 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED909BF25ABB +20171130015813 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED909C91146B +20171130055239 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431DB8C972F +20171130062757 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431DC5AB557 +20171130090503 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431E0222F57 +20171130104830 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431E2966E47 +20171130131919 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431E65A304B +20171130151632 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431E9314BFB +20171130154516 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431E9DF731F +20171130170406 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431EBBC2FF3 +20171130200258 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431EFD0ED9B +20171130222515 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431F32CBD03 +20171130230654 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431F4224A5B +20171130235630 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431F549CCE3 +20171203125416 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431FC1A85BF +20171203150512 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431FF1C415F +20171203162042 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF48043200E63AC7 +20171203162245 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF48043200EA5A8B +20171203172127 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804320235B727 +20171203181636 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804320364E433 +20171203183124 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF48043203B31AB7 +20171203185109 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF48043204236403 +20171203190034 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804320453C2BF +20171203192853 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF48043204F5D0C3 +20171203234953 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804320B184C73 +20171204012939 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804320D6A5B1F +20171204015042 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804320DDD6F5B +20171204040850 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480432110E46BF +20171204060221 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480432139A662F +20171204093759 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF48043218861E53 +20171204110909 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804321AA18B6B +20171204112744 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804321B0A25B3 +20171204113618 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804321B357127 +20171204120614 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804321BE218DB +20171204122520 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804321C47FCD3 +20171204125750 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804321CFEB977 +20171204133934 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804321DF18F77 +20171204174709 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7517467E2B +20171204175707 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE75177CF673 +20171204201457 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE751ADCB617 +20171205043550 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE752748419B +20171205051645 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7528400323 +20171205062021 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7529BA43F7 +20171205073410 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE752B7A9EB3 +20171205074444 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE752BB3FF13 +20171205101150 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE752F440E8B +20171205115054 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7531576573 +20171205121540 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7531E8F173 +20171205130945 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE75332BD36B +20171205141051 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE753499FF7B +20171205144900 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE75357B36FB +20171205154530 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7536CFC643 +20171205175129 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE75398C8CC3 +20171205180055 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7539B7B69B +20171205191334 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE753B4A4AD3 +20171205223915 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE754018391B +20171206002554 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE75429F0B5F +20171206024048 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7545C299D7 +20171206032820 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7546E1FE43 +20171206033917 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE75471CD4D7 +20171206045008 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7548C1EC97 +20171206052722 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7549823083 +20171206065709 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE754B6C9C7F +20171206083216 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE754D96E15F +20171206085625 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE754E17B6B7 +20171206134251 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7554BF8FF3 +20171206161018 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7558211DF7 +20171206195122 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634801E6B61B +20171206235707 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A6348054D6277 +20171207033003 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634808323A27 +20171207054441 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634809E6C2F7 +20171207104116 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63480D5E19B3 +20171207110410 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63480DA1758F +20171207170628 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634812866F03 +20171207183951 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634813B1BBCF +20171207212011 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634815D9070F +20171208005123 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A6348189250C7 +20171208011303 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634818D35CE3 +20171208021235 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63481996D303 +20171208133603 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634822901357 +20171208151649 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634823DEBFBB +20171208175501 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634825D190FB +20171208193058 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634826F30FB7 +20171209011341 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63482B5BD51B +20171209030814 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63482CD52277 +20171209040411 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63482D874DDB +20171209121718 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634833C845DB +20171209182655 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A6348386E2CD7 +20171209190603 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634838DD3487 +20171209234111 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63483C59DD8B +20171210084529 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A6348432B34CB +20171210100748 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63484426B89F +20171211113225 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634856D74BDF +20171211183528 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63485BE7C88F +20171211220143 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63485E59F1D3 +20171212002701 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634860299B67 +20171212043247 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A6348632526BF +20171212143825 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63486A53EDEF +20171212144749 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63486A6818FB +20171212180038 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63486CA4B787 +20171213010731 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F5561319BBF +20171213020125 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F5561E7621B +20171213022044 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F556220C81B +20171213024903 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55627C3CE7 +20171213030139 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F5562A0B013 +20171213055041 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F5564BC168F +20171213060909 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F5564E9CBA3 +20171213072312 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F5565D64617 +20171214093125 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F557B083E83 +20171214095927 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F557B5C6367 +20171214222602 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F5585408053 +20171214233609 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55862A758B +20171215214134 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F559742D26B +20171216043116 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F559C858AD7 +20171216061211 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F559DBA299F +20171216061646 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F559DBFD57B +20171216094255 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55A0524813 +20171216110833 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55A15D5D1F +20171216171002 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55A5EC1993 +20171216211154 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55A8EA2ED7 +20171217022713 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55ACD2DE8F +20171217032242 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55AD80002F +20171217074522 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55B0B564D7 +20171217095738 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55B254E7FB +20171217120716 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55B3EDC9EB +20171217153508 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55B680123B +20171217162942 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55B727103B +20171218014406 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55BDE7E6A3 +20171218033011 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55BF2DBDBB +20171218052822 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55C08EEBC7 +20171218071736 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55C1D36F8B +20171218072625 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55C1E549DB +20171218081603 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55C2747B77 +20171218163834 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55C883ECE7 +20171218165317 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55C8AA3DD3 +20171218195505 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55CABFB253 +20171219124324 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203ABF9DA753 +20171220012557 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203AC87B0257 +20171220113159 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203ACF6BF797 +20171220172848 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203AD382D913 +20171220184955 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203AD4620FCF +20171220232754 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203AD788C3AF +20171221050933 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203ADADA05AF +20171221135413 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203AE091EA4F +20171221220649 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203AE5EFB017 +20171223020323 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203AF8256AAB +20171223193520 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B035D92A3 +20171223214753 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B04C1A663 +20171224021554 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B078E9D33 +20171224034823 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B087DB16B +20171224121415 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B0DB70677 +20171224130232 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B0E3090C7 +20171224135245 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B0EAF8073 +20171224212046 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B133C2B4F +20171224212702 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B13441743 +20171225003349 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B152CE5AB +20171225004348 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B153F6807 +20171225041057 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B176011EF +20171225091911 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B1A71C743 +20171225162026 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B1EB91123 +20171225192243 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B20715EBB +20171225215524 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B21F31B1B +20171226063458 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B272E398F +20171226064036 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B27337437 +20171226213456 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B302C487F +20171227055343 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B35235327 +20171227125423 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B393B67F3 +20171227150248 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B3A81A89B +20171227165129 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C3FF14E17B +20171227193939 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C400F55F3F +20171228032103 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4065CE64B +20171228115824 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C40C43BAB7 +20171228124603 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C40CCD6483 +20171228164850 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C40F99437B +20171228210323 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4126F1FDB +20171229030717 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4169A7847 +20171229061209 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4189CEBF3 +20171229071940 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C419560A6F +20171229082351 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C41A003293 +20171229091948 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C41A97B0B3 +20171229152509 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C41EA78513 +20171229193934 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4216FDF1B +20171230082815 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C429E6D743 +20171230095722 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C42ADAFEC3 +20171231000503 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4341E820B +20171231123324 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C43C20726B +20171231133810 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C43CC9B38F +20180101034650 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C445D1D6AF +20180102021859 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C453E3A923 +20180102095212 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4589223B3 +20180102194603 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C45EA32E73 +20180102224522 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4606F2AEB +20180103002357 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4617220D3 +20180103011455 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C461EEC227 +20180103044126 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4640ADAFF +20180103102958 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4678F8743 +20180103153131 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C46AA4F9DF +20180103175311 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C46C14249B +20180103210214 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C46DF36E37 +20180103214256 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C46E5524BB +20180103224847 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C46EF5AD73 +20180104072036 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C473F7759B +20180104112937 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C47658C257 +20180104122132 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C476D82313 +20180104192013 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C47AEEE017 +20180104234458 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C47D812CC3 +20180105001530 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C47DC6C2E7 diff --git a/monitor.c b/monitor.c index e8ca777f2..4a5efef43 100644 --- a/monitor.c +++ b/monitor.c @@ -1,4 +1,4 @@ -/* $OpenBSD: monitor.c,v 1.180 2018/03/03 03:15:51 djm Exp $ */ +/* $OpenBSD: monitor.c,v 1.186 2018/07/20 03:46:34 djm Exp $ */ /* * Copyright 2002 Niels Provos * Copyright 2002 Markus Friedl @@ -56,10 +56,6 @@ # endif #endif -#ifdef SKEY -#include -#endif - #ifdef WITH_OPENSSL #include #endif @@ -68,21 +64,14 @@ #include "atomicio.h" #include "xmalloc.h" #include "ssh.h" -#include "key.h" -#include "buffer.h" +#include "sshkey.h" +#include "sshbuf.h" #include "hostfile.h" #include "auth.h" #include "cipher.h" #include "kex.h" #include "dh.h" #include "auth-pam.h" -#ifdef TARGET_OS_MAC /* XXX Broken krb5 headers on Mac */ -#undef TARGET_OS_MAC -#include "zlib.h" -#define TARGET_OS_MAC 1 -#else -#include "zlib.h" -#endif #include "packet.h" #include "auth-options.h" #include "sshpty.h" @@ -113,9 +102,7 @@ static Gssctxt *gsscontext = NULL; extern ServerOptions options; extern u_int utmp_len; extern u_char session_id[]; -extern Buffer auth_debug; -extern int auth_debug_init; -extern Buffer loginmsg; +extern struct sshbuf *loginmsg; extern struct sshauthopt *auth_opts; /* XXX move to permanent ssh->authctxt? */ /* State exported from the child */ @@ -123,46 +110,44 @@ static struct sshbuf *child_state; /* Functions on the monitor that answer unprivileged requests */ -int mm_answer_moduli(int, Buffer *); -int mm_answer_sign(int, Buffer *); -int mm_answer_pwnamallow(int, Buffer *); -int mm_answer_auth2_read_banner(int, Buffer *); -int mm_answer_authserv(int, Buffer *); -int mm_answer_authpassword(int, Buffer *); -int mm_answer_bsdauthquery(int, Buffer *); -int mm_answer_bsdauthrespond(int, Buffer *); -int mm_answer_skeyquery(int, Buffer *); -int mm_answer_skeyrespond(int, Buffer *); -int mm_answer_keyallowed(int, Buffer *); -int mm_answer_keyverify(int, Buffer *); -int mm_answer_pty(int, Buffer *); -int mm_answer_pty_cleanup(int, Buffer *); -int mm_answer_term(int, Buffer *); -int mm_answer_rsa_keyallowed(int, Buffer *); -int mm_answer_rsa_challenge(int, Buffer *); -int mm_answer_rsa_response(int, Buffer *); -int mm_answer_sesskey(int, Buffer *); -int mm_answer_sessid(int, Buffer *); +int mm_answer_moduli(int, struct sshbuf *); +int mm_answer_sign(int, struct sshbuf *); +int mm_answer_pwnamallow(int, struct sshbuf *); +int mm_answer_auth2_read_banner(int, struct sshbuf *); +int mm_answer_authserv(int, struct sshbuf *); +int mm_answer_authpassword(int, struct sshbuf *); +int mm_answer_bsdauthquery(int, struct sshbuf *); +int mm_answer_bsdauthrespond(int, struct sshbuf *); +int mm_answer_keyallowed(int, struct sshbuf *); +int mm_answer_keyverify(int, struct sshbuf *); +int mm_answer_pty(int, struct sshbuf *); +int mm_answer_pty_cleanup(int, struct sshbuf *); +int mm_answer_term(int, struct sshbuf *); +int mm_answer_rsa_keyallowed(int, struct sshbuf *); +int mm_answer_rsa_challenge(int, struct sshbuf *); +int mm_answer_rsa_response(int, struct sshbuf *); +int mm_answer_sesskey(int, struct sshbuf *); +int mm_answer_sessid(int, struct sshbuf *); #ifdef USE_PAM -int mm_answer_pam_start(int, Buffer *); -int mm_answer_pam_account(int, Buffer *); -int mm_answer_pam_init_ctx(int, Buffer *); -int mm_answer_pam_query(int, Buffer *); -int mm_answer_pam_respond(int, Buffer *); -int mm_answer_pam_free_ctx(int, Buffer *); +int mm_answer_pam_start(int, struct sshbuf *); +int mm_answer_pam_account(int, struct sshbuf *); +int mm_answer_pam_init_ctx(int, struct sshbuf *); +int mm_answer_pam_query(int, struct sshbuf *); +int mm_answer_pam_respond(int, struct sshbuf *); +int mm_answer_pam_free_ctx(int, struct sshbuf *); #endif #ifdef GSSAPI -int mm_answer_gss_setup_ctx(int, Buffer *); -int mm_answer_gss_accept_ctx(int, Buffer *); -int mm_answer_gss_userok(int, Buffer *); -int mm_answer_gss_checkmic(int, Buffer *); +int mm_answer_gss_setup_ctx(int, struct sshbuf *); +int mm_answer_gss_accept_ctx(int, struct sshbuf *); +int mm_answer_gss_userok(int, struct sshbuf *); +int mm_answer_gss_checkmic(int, struct sshbuf *); #endif #ifdef SSH_AUDIT_EVENTS -int mm_answer_audit_event(int, Buffer *); -int mm_answer_audit_command(int, Buffer *); +int mm_answer_audit_event(int, struct sshbuf *); +int mm_answer_audit_command(int, struct sshbuf *); #endif static int monitor_read_log(struct monitor *); @@ -171,7 +156,7 @@ static Authctxt *authctxt; /* local state for key verify */ static u_char *key_blob = NULL; -static u_int key_bloblen = 0; +static size_t key_bloblen = 0; static int key_blobtype = MM_NOKEY; static struct sshauthopt *key_opts = NULL; static char *hostbased_cuser = NULL; @@ -185,7 +170,7 @@ static pid_t monitor_child_pid; struct mon_table { enum monitor_reqtype type; int flags; - int (*f)(int, Buffer *); + int (*f)(int, struct sshbuf *); }; #define MON_ISAUTH 0x0004 /* Required for Authentication */ @@ -220,10 +205,6 @@ struct mon_table mon_dispatch_proto20[] = { #ifdef BSD_AUTH {MONITOR_REQ_BSDAUTHQUERY, MON_ISAUTH, mm_answer_bsdauthquery}, {MONITOR_REQ_BSDAUTHRESPOND, MON_AUTH, mm_answer_bsdauthrespond}, -#endif -#ifdef SKEY - {MONITOR_REQ_SKEYQUERY, MON_ISAUTH, mm_answer_skeyquery}, - {MONITOR_REQ_SKEYRESPOND, MON_AUTH, mm_answer_skeyrespond}, #endif {MONITOR_REQ_KEYALLOWED, MON_ISAUTH, mm_answer_keyallowed}, {MONITOR_REQ_KEYVERIFY, MON_AUTH, mm_answer_keyverify}, @@ -300,7 +281,7 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor) memset(authctxt, 0, sizeof(*authctxt)); ssh->authctxt = authctxt; - authctxt->loginmsg = &loginmsg; + authctxt->loginmsg = loginmsg; mon_dispatch = mon_dispatch_proto20; /* Permit requests for moduli and signatures */ @@ -338,13 +319,16 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor) #ifdef USE_PAM /* PAM needs to perform account checks after auth */ if (options.use_pam && authenticated) { - Buffer m; + struct sshbuf *m; - buffer_init(&m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", + __func__); mm_request_receive_expect(pmonitor->m_sendfd, - MONITOR_REQ_PAM_ACCOUNT, &m); - authenticated = mm_answer_pam_account(pmonitor->m_sendfd, &m); - buffer_free(&m); + MONITOR_REQ_PAM_ACCOUNT, m); + authenticated = mm_answer_pam_account( + pmonitor->m_sendfd, m); + sshbuf_free(m); } #endif } @@ -428,18 +412,21 @@ monitor_child_postauth(struct monitor *pmonitor) static int monitor_read_log(struct monitor *pmonitor) { - Buffer logmsg; + struct sshbuf *logmsg; u_int len, level; char *msg; + u_char *p; + int r; - buffer_init(&logmsg); + if ((logmsg = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); /* Read length */ - buffer_append_space(&logmsg, 4); - if (atomicio(read, pmonitor->m_log_recvfd, - buffer_ptr(&logmsg), buffer_len(&logmsg)) != buffer_len(&logmsg)) { + if ((r = sshbuf_reserve(logmsg, 4, &p)) != 0) + fatal("%s: reserve: %s", __func__, ssh_err(r)); + if (atomicio(read, pmonitor->m_log_recvfd, p, 4) != 4) { if (errno == EPIPE) { - buffer_free(&logmsg); + sshbuf_free(logmsg); debug("%s: child log fd closed", __func__); close(pmonitor->m_log_recvfd); pmonitor->m_log_recvfd = -1; @@ -447,26 +434,28 @@ monitor_read_log(struct monitor *pmonitor) } fatal("%s: log fd read: %s", __func__, strerror(errno)); } - len = buffer_get_int(&logmsg); + if ((r = sshbuf_get_u32(logmsg, &len)) != 0) + fatal("%s: get len: %s", __func__, ssh_err(r)); if (len <= 4 || len > 8192) fatal("%s: invalid log message length %u", __func__, len); /* Read severity, message */ - buffer_clear(&logmsg); - buffer_append_space(&logmsg, len); - if (atomicio(read, pmonitor->m_log_recvfd, - buffer_ptr(&logmsg), buffer_len(&logmsg)) != buffer_len(&logmsg)) + sshbuf_reset(logmsg); + if ((r = sshbuf_reserve(logmsg, len, &p)) != 0) + fatal("%s: reserve: %s", __func__, ssh_err(r)); + if (atomicio(read, pmonitor->m_log_recvfd, p, len) != len) fatal("%s: log fd read: %s", __func__, strerror(errno)); + if ((r = sshbuf_get_u32(logmsg, &level)) != 0 || + (r = sshbuf_get_cstring(logmsg, &msg, NULL)) != 0) + fatal("%s: decode: %s", __func__, ssh_err(r)); /* Log it */ - level = buffer_get_int(&logmsg); - msg = buffer_get_string(&logmsg, NULL); if (log_level_name(level) == NULL) fatal("%s: invalid log level %u (corrupted message?)", __func__, level); do_log2(level, "%s [preauth]", msg); - buffer_free(&logmsg); + sshbuf_free(logmsg); free(msg); return 0; @@ -476,8 +465,8 @@ int monitor_read(struct monitor *pmonitor, struct mon_table *ent, struct mon_table **pent) { - Buffer m; - int ret; + struct sshbuf *m; + int r, ret; u_char type; struct pollfd pfd[2]; @@ -504,10 +493,12 @@ monitor_read(struct monitor *pmonitor, struct mon_table *ent, break; /* Continues below */ } - buffer_init(&m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); - mm_request_receive(pmonitor->m_sendfd, &m); - type = buffer_get_char(&m); + mm_request_receive(pmonitor->m_sendfd, m); + if ((r = sshbuf_get_u8(m, &type)) != 0) + fatal("%s: decode: %s", __func__, ssh_err(r)); debug3("%s: checking request %d", __func__, type); @@ -521,8 +512,8 @@ monitor_read(struct monitor *pmonitor, struct mon_table *ent, if (!(ent->flags & MON_PERMIT)) fatal("%s: unpermitted request %d", __func__, type); - ret = (*ent->f)(pmonitor->m_sendfd, &m); - buffer_free(&m); + ret = (*ent->f)(pmonitor->m_sendfd, m); + sshbuf_free(m); /* The child may use this request only once, disable it */ if (ent->flags & MON_ONCE) { @@ -572,14 +563,16 @@ monitor_reset_key_state(void) #ifdef WITH_OPENSSL int -mm_answer_moduli(int sock, Buffer *m) +mm_answer_moduli(int sock, struct sshbuf *m) { DH *dh; - int min, want, max; + int r; + u_int min, want, max; - min = buffer_get_int(m); - want = buffer_get_int(m); - max = buffer_get_int(m); + if ((r = sshbuf_get_u32(m, &min)) != 0 || + (r = sshbuf_get_u32(m, &want)) != 0 || + (r = sshbuf_get_u32(m, &max)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); debug3("%s: got parameters: %d %d %d", __func__, min, want, max); @@ -588,17 +581,19 @@ mm_answer_moduli(int sock, Buffer *m) fatal("%s: bad parameters: %d %d %d", __func__, min, want, max); - buffer_clear(m); + sshbuf_reset(m); dh = choose_dh(min, want, max); if (dh == NULL) { - buffer_put_char(m, 0); + if ((r = sshbuf_put_u8(m, 0)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); return (0); } else { /* Send first bignum */ - buffer_put_char(m, 1); - buffer_put_bignum2(m, dh->p); - buffer_put_bignum2(m, dh->g); + if ((r = sshbuf_put_u8(m, 1)) != 0 || + (r = sshbuf_put_bignum2(m, dh->p)) != 0 || + (r = sshbuf_put_bignum2(m, dh->g)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); DH_free(dh); } @@ -608,7 +603,7 @@ mm_answer_moduli(int sock, Buffer *m) #endif int -mm_answer_sign(int sock, Buffer *m) +mm_answer_sign(int sock, struct sshbuf *m) { struct ssh *ssh = active_state; /* XXX */ extern int auth_sock; /* XXX move to state struct? */ @@ -618,14 +613,15 @@ mm_answer_sign(int sock, Buffer *m) char *alg = NULL; size_t datlen, siglen, alglen; int r, is_proof = 0; - u_int keyid; + u_int keyid, compat; const char proof_req[] = "hostkeys-prove-00@openssh.com"; debug3("%s", __func__); if ((r = sshbuf_get_u32(m, &keyid)) != 0 || (r = sshbuf_get_string(m, &p, &datlen)) != 0 || - (r = sshbuf_get_cstring(m, &alg, &alglen)) != 0) + (r = sshbuf_get_cstring(m, &alg, &alglen)) != 0 || + (r = sshbuf_get_u32(m, &compat)) != 0) fatal("%s: buffer error: %s", __func__, ssh_err(r)); if (keyid > INT_MAX) fatal("%s: invalid key ID", __func__); @@ -675,13 +671,13 @@ mm_answer_sign(int sock, Buffer *m) if ((key = get_hostkey_by_index(keyid)) != NULL) { if ((r = sshkey_sign(key, &signature, &siglen, p, datlen, alg, - datafellows)) != 0) + compat)) != 0) fatal("%s: sshkey_sign failed: %s", __func__, ssh_err(r)); } else if ((key = get_hostkey_public_by_index(keyid, ssh)) != NULL && auth_sock > 0) { if ((r = ssh_agent_sign(auth_sock, key, &signature, &siglen, - p, datlen, alg, datafellows)) != 0) { + p, datlen, alg, compat)) != 0) { fatal("%s: ssh_agent_sign failed: %s", __func__, ssh_err(r)); } @@ -710,12 +706,12 @@ mm_answer_sign(int sock, Buffer *m) /* Retrieves the password entry and also checks if the user is permitted */ int -mm_answer_pwnamallow(int sock, Buffer *m) +mm_answer_pwnamallow(int sock, struct sshbuf *m) { struct ssh *ssh = active_state; /* XXX */ char *username; struct passwd *pwent; - int allowed = 0; + int r, allowed = 0; u_int i; debug3("%s", __func__); @@ -723,7 +719,8 @@ mm_answer_pwnamallow(int sock, Buffer *m) if (authctxt->attempt++ != 0) fatal("%s: multiple attempts for getpwnam", __func__); - username = buffer_get_string(m, NULL); + if ((r = sshbuf_get_cstring(m, &username, NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); pwent = getpwnamallow(username); @@ -731,10 +728,11 @@ mm_answer_pwnamallow(int sock, Buffer *m) setproctitle("%s [priv]", pwent ? username : "unknown"); free(username); - buffer_clear(m); + sshbuf_reset(m); if (pwent == NULL) { - buffer_put_char(m, 0); + if ((r = sshbuf_put_u8(m, 0)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); authctxt->pw = fakepw(); goto out; } @@ -743,31 +741,40 @@ mm_answer_pwnamallow(int sock, Buffer *m) authctxt->pw = pwent; authctxt->valid = 1; - buffer_put_char(m, 1); - buffer_put_string(m, pwent, sizeof(struct passwd)); - buffer_put_cstring(m, pwent->pw_name); - buffer_put_cstring(m, "*"); + /* XXX don't sent pwent to unpriv; send fake class/dir/shell too */ + if ((r = sshbuf_put_u8(m, 1)) != 0 || + (r = sshbuf_put_string(m, pwent, sizeof(*pwent))) != 0 || + (r = sshbuf_put_cstring(m, pwent->pw_name)) != 0 || + (r = sshbuf_put_cstring(m, "*")) != 0 || #ifdef HAVE_STRUCT_PASSWD_PW_GECOS - buffer_put_cstring(m, pwent->pw_gecos); + (r = sshbuf_put_cstring(m, pwent->pw_gecos)) != 0 || #endif #ifdef HAVE_STRUCT_PASSWD_PW_CLASS - buffer_put_cstring(m, pwent->pw_class); + (r = sshbuf_put_cstring(m, pwent->pw_class)) != 0 || #endif - buffer_put_cstring(m, pwent->pw_dir); - buffer_put_cstring(m, pwent->pw_shell); + (r = sshbuf_put_cstring(m, pwent->pw_dir)) != 0 || + (r = sshbuf_put_cstring(m, pwent->pw_shell)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); out: ssh_packet_set_log_preamble(ssh, "%suser %s", authctxt->valid ? "authenticating" : "invalid ", authctxt->user); - buffer_put_string(m, &options, sizeof(options)); + if ((r = sshbuf_put_string(m, &options, sizeof(options))) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); #define M_CP_STROPT(x) do { \ - if (options.x != NULL) \ - buffer_put_cstring(m, options.x); \ + if (options.x != NULL) { \ + if ((r = sshbuf_put_cstring(m, options.x)) != 0) \ + fatal("%s: buffer error: %s", \ + __func__, ssh_err(r)); \ + } \ } while (0) #define M_CP_STRARRAYOPT(x, nx) do { \ - for (i = 0; i < options.nx; i++) \ - buffer_put_cstring(m, options.x[i]); \ + for (i = 0; i < options.nx; i++) { \ + if ((r = sshbuf_put_cstring(m, options.x[i])) != 0) \ + fatal("%s: buffer error: %s", \ + __func__, ssh_err(r)); \ + } \ } while (0) /* See comment in servconf.h */ COPY_MATCH_STRING_OPTS(); @@ -799,13 +806,15 @@ mm_answer_pwnamallow(int sock, Buffer *m) return (0); } -int mm_answer_auth2_read_banner(int sock, Buffer *m) +int mm_answer_auth2_read_banner(int sock, struct sshbuf *m) { char *banner; + int r; - buffer_clear(m); + sshbuf_reset(m); banner = auth2_read_banner(); - buffer_put_cstring(m, banner != NULL ? banner : ""); + if ((r = sshbuf_put_cstring(m, banner != NULL ? banner : "")) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); mm_request_send(sock, MONITOR_ANS_AUTH2_READ_BANNER, m); free(banner); @@ -813,12 +822,15 @@ int mm_answer_auth2_read_banner(int sock, Buffer *m) } int -mm_answer_authserv(int sock, Buffer *m) +mm_answer_authserv(int sock, struct sshbuf *m) { + int r; + monitor_permit_authentications(1); - authctxt->service = buffer_get_string(m, NULL); - authctxt->style = buffer_get_string(m, NULL); + if ((r = sshbuf_get_cstring(m, &authctxt->service, NULL)) != 0 || + (r = sshbuf_get_cstring(m, &authctxt->style, NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); debug3("%s: service=%s, style=%s", __func__, authctxt->service, authctxt->style); @@ -831,27 +843,30 @@ mm_answer_authserv(int sock, Buffer *m) } int -mm_answer_authpassword(int sock, Buffer *m) +mm_answer_authpassword(int sock, struct sshbuf *m) { struct ssh *ssh = active_state; /* XXX */ static int call_count; char *passwd; - int authenticated; - u_int plen; + int r, authenticated; + size_t plen; if (!options.password_authentication) fatal("%s: password authentication not enabled", __func__); - passwd = buffer_get_string(m, &plen); + if ((r = sshbuf_get_cstring(m, &passwd, &plen)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); /* Only authenticate if the context is valid */ authenticated = options.password_authentication && auth_password(ssh, passwd); - explicit_bzero(passwd, strlen(passwd)); + explicit_bzero(passwd, plen); free(passwd); - buffer_clear(m); - buffer_put_int(m, authenticated); + sshbuf_reset(m); + if ((r = sshbuf_put_u32(m, authenticated)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); #ifdef USE_PAM - buffer_put_int(m, sshpam_get_maxtries_reached()); + if ((r = sshbuf_put_u32(m, sshpam_get_maxtries_reached())) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); #endif debug3("%s: sending result %d", __func__, authenticated); @@ -869,23 +884,25 @@ mm_answer_authpassword(int sock, Buffer *m) #ifdef BSD_AUTH int -mm_answer_bsdauthquery(int sock, Buffer *m) +mm_answer_bsdauthquery(int sock, struct sshbuf *m) { char *name, *infotxt; - u_int numprompts; - u_int *echo_on; + u_int numprompts, *echo_on, success; char **prompts; - u_int success; + int r; if (!options.kbd_interactive_authentication) fatal("%s: kbd-int authentication not enabled", __func__); success = bsdauth_query(authctxt, &name, &infotxt, &numprompts, &prompts, &echo_on) < 0 ? 0 : 1; - buffer_clear(m); - buffer_put_int(m, success); - if (success) - buffer_put_cstring(m, prompts[0]); + sshbuf_reset(m); + if ((r = sshbuf_put_u32(m, success)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (success) { + if ((r = sshbuf_put_cstring(m, prompts[0])) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + } debug3("%s: sending challenge success: %u", __func__, success); mm_request_send(sock, MONITOR_ANS_BSDAUTHQUERY, m); @@ -901,25 +918,27 @@ mm_answer_bsdauthquery(int sock, Buffer *m) } int -mm_answer_bsdauthrespond(int sock, Buffer *m) +mm_answer_bsdauthrespond(int sock, struct sshbuf *m) { char *response; - int authok; + int r, authok; if (!options.kbd_interactive_authentication) fatal("%s: kbd-int authentication not enabled", __func__); if (authctxt->as == NULL) fatal("%s: no bsd auth session", __func__); - response = buffer_get_string(m, NULL); + if ((r = sshbuf_get_cstring(m, &response, NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); authok = options.challenge_response_authentication && auth_userresponse(authctxt->as, response, 0); authctxt->as = NULL; debug3("%s: <%s> = <%d>", __func__, response, authok); free(response); - buffer_clear(m); - buffer_put_int(m, authok); + sshbuf_reset(m); + if ((r = sshbuf_put_u32(m, authok)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); debug3("%s: sending authenticated: %d", __func__, authok); mm_request_send(sock, MONITOR_ANS_BSDAUTHRESPOND, m); @@ -931,59 +950,9 @@ mm_answer_bsdauthrespond(int sock, Buffer *m) } #endif -#ifdef SKEY -int -mm_answer_skeyquery(int sock, Buffer *m) -{ - struct skey skey; - char challenge[1024]; - u_int success; - - success = _compat_skeychallenge(&skey, authctxt->user, challenge, - sizeof(challenge)) < 0 ? 0 : 1; - - buffer_clear(m); - buffer_put_int(m, success); - if (success) - buffer_put_cstring(m, challenge); - - debug3("%s: sending challenge success: %u", __func__, success); - mm_request_send(sock, MONITOR_ANS_SKEYQUERY, m); - - return (0); -} - -int -mm_answer_skeyrespond(int sock, Buffer *m) -{ - char *response; - int authok; - - response = buffer_get_string(m, NULL); - - authok = (options.challenge_response_authentication && - authctxt->valid && - skey_haskey(authctxt->pw->pw_name) == 0 && - skey_passcheck(authctxt->pw->pw_name, response) != -1); - - free(response); - - buffer_clear(m); - buffer_put_int(m, authok); - - debug3("%s: sending authenticated: %d", __func__, authok); - mm_request_send(sock, MONITOR_ANS_SKEYRESPOND, m); - - auth_method = "keyboard-interactive"; - auth_submethod = "skey"; - - return (authok != 0); -} -#endif - #ifdef USE_PAM int -mm_answer_pam_start(int sock, Buffer *m) +mm_answer_pam_start(int sock, struct sshbuf *m) { if (!options.use_pam) fatal("UsePAM not set, but ended up in %s anyway", __func__); @@ -998,17 +967,19 @@ mm_answer_pam_start(int sock, Buffer *m) } int -mm_answer_pam_account(int sock, Buffer *m) +mm_answer_pam_account(int sock, struct sshbuf *m) { u_int ret; + int r; if (!options.use_pam) fatal("%s: PAM not enabled", __func__); ret = do_pam_account(); - buffer_put_int(m, ret); - buffer_put_string(m, buffer_ptr(&loginmsg), buffer_len(&loginmsg)); + if ((r = sshbuf_put_u32(m, ret)) != 0 || + (r = sshbuf_put_stringb(m, loginmsg)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); mm_request_send(sock, MONITOR_ANS_PAM_ACCOUNT, m); @@ -1019,8 +990,11 @@ static void *sshpam_ctxt, *sshpam_authok; extern KbdintDevice sshpam_device; int -mm_answer_pam_init_ctx(int sock, Buffer *m) +mm_answer_pam_init_ctx(int sock, struct sshbuf *m) { + u_int ok = 0; + int r; + debug3("%s", __func__); if (!options.kbd_interactive_authentication) fatal("%s: kbd-int authentication not enabled", __func__); @@ -1028,24 +1002,24 @@ mm_answer_pam_init_ctx(int sock, Buffer *m) fatal("%s: already called", __func__); sshpam_ctxt = (sshpam_device.init_ctx)(authctxt); sshpam_authok = NULL; - buffer_clear(m); + sshbuf_reset(m); if (sshpam_ctxt != NULL) { monitor_permit(mon_dispatch, MONITOR_REQ_PAM_FREE_CTX, 1); monitor_permit(mon_dispatch, MONITOR_REQ_PAM_QUERY, 1); - buffer_put_int(m, 1); - } else { - buffer_put_int(m, 0); + ok = 1; } + if ((r = sshbuf_put_u32(m, ok)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); mm_request_send(sock, MONITOR_ANS_PAM_INIT_CTX, m); return (0); } int -mm_answer_pam_query(int sock, Buffer *m) +mm_answer_pam_query(int sock, struct sshbuf *m) { char *name = NULL, *info = NULL, **prompts = NULL; u_int i, num = 0, *echo_on = 0; - int ret; + int r, ret; debug3("%s", __func__); sshpam_authok = NULL; @@ -1058,18 +1032,20 @@ mm_answer_pam_query(int sock, Buffer *m) if (num > 1 || name == NULL || info == NULL) fatal("sshpam_device.query failed"); monitor_permit(mon_dispatch, MONITOR_REQ_PAM_RESPOND, 1); - buffer_clear(m); - buffer_put_int(m, ret); - buffer_put_cstring(m, name); + sshbuf_reset(m); + if ((r = sshbuf_put_u32(m, ret)) != 0 || + (r = sshbuf_put_cstring(m, name)) != 0 || + (r = sshbuf_put_cstring(m, info)) != 0 || + (r = sshbuf_put_u32(m, sshpam_get_maxtries_reached())) != 0 || + (r = sshbuf_put_u32(m, num)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); free(name); - buffer_put_cstring(m, info); free(info); - buffer_put_int(m, sshpam_get_maxtries_reached()); - buffer_put_int(m, num); for (i = 0; i < num; ++i) { - buffer_put_cstring(m, prompts[i]); + if ((r = sshbuf_put_cstring(m, prompts[i])) != 0 || + (r = sshbuf_put_u32(m, echo_on[i])) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); free(prompts[i]); - buffer_put_int(m, echo_on[i]); } free(prompts); free(echo_on); @@ -1080,21 +1056,25 @@ mm_answer_pam_query(int sock, Buffer *m) } int -mm_answer_pam_respond(int sock, Buffer *m) +mm_answer_pam_respond(int sock, struct sshbuf *m) { char **resp; u_int i, num; - int ret; + int r, ret; debug3("%s", __func__); if (sshpam_ctxt == NULL) fatal("%s: no context", __func__); sshpam_authok = NULL; - num = buffer_get_int(m); + if ((r = sshbuf_get_u32(m, &num)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); if (num > 0) { resp = xcalloc(num, sizeof(char *)); - for (i = 0; i < num; ++i) - resp[i] = buffer_get_string(m, NULL); + for (i = 0; i < num; ++i) { + if ((r = sshbuf_get_cstring(m, &(resp[i]), NULL)) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); + } ret = (sshpam_device.respond)(sshpam_ctxt, num, resp); for (i = 0; i < num; ++i) free(resp[i]); @@ -1102,8 +1082,9 @@ mm_answer_pam_respond(int sock, Buffer *m) } else { ret = (sshpam_device.respond)(sshpam_ctxt, num, NULL); } - buffer_clear(m); - buffer_put_int(m, ret); + sshbuf_reset(m); + if ((r = sshbuf_put_u32(m, ret)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); mm_request_send(sock, MONITOR_ANS_PAM_RESPOND, m); auth_method = "keyboard-interactive"; auth_submethod = "pam"; @@ -1113,7 +1094,7 @@ mm_answer_pam_respond(int sock, Buffer *m) } int -mm_answer_pam_free_ctx(int sock, Buffer *m) +mm_answer_pam_free_ctx(int sock, struct sshbuf *m) { int r = sshpam_authok != NULL && sshpam_authok == sshpam_ctxt; @@ -1122,7 +1103,7 @@ mm_answer_pam_free_ctx(int sock, Buffer *m) fatal("%s: no context", __func__); (sshpam_device.free_ctx)(sshpam_ctxt); sshpam_ctxt = sshpam_authok = NULL; - buffer_clear(m); + sshbuf_reset(m); mm_request_send(sock, MONITOR_ANS_PAM_FREE_CTX, m); /* Allow another attempt */ monitor_permit(mon_dispatch, MONITOR_REQ_PAM_INIT_CTX, 1); @@ -1133,31 +1114,29 @@ mm_answer_pam_free_ctx(int sock, Buffer *m) #endif int -mm_answer_keyallowed(int sock, Buffer *m) +mm_answer_keyallowed(int sock, struct sshbuf *m) { struct ssh *ssh = active_state; /* XXX */ - struct sshkey *key; + struct sshkey *key = NULL; char *cuser, *chost; - u_char *blob; - u_int bloblen, pubkey_auth_attempt; + u_int pubkey_auth_attempt; enum mm_keytype type = 0; int r, allowed = 0; struct sshauthopt *opts = NULL; debug3("%s entering", __func__); - type = buffer_get_int(m); - cuser = buffer_get_string(m, NULL); - chost = buffer_get_string(m, NULL); - blob = buffer_get_string(m, &bloblen); - pubkey_auth_attempt = buffer_get_int(m); - - key = key_from_blob(blob, bloblen); + if ((r = sshbuf_get_u32(m, &type)) != 0 || + (r = sshbuf_get_cstring(m, &cuser, NULL)) != 0 || + (r = sshbuf_get_cstring(m, &chost, NULL)) != 0 || + (r = sshkey_froms(m, &key)) != 0 || + (r = sshbuf_get_u32(m, &pubkey_auth_attempt)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); debug3("%s: key_from_blob: %p", __func__, key); if (key != NULL && authctxt->valid) { /* These should not make it past the privsep child */ - if (key_type_plain(key->type) == KEY_RSA && + if (sshkey_type_plain(key->type) == KEY_RSA && (datafellows & SSH_BUG_RSASIGMD5) != 0) fatal("%s: passed a SSH_BUG_RSASIGMD5 key", __func__); @@ -1201,15 +1180,14 @@ mm_answer_keyallowed(int sock, Buffer *m) allowed ? "allowed" : "not allowed"); auth2_record_key(authctxt, 0, key); - sshkey_free(key); /* clear temporarily storage (used by verify) */ monitor_reset_key_state(); if (allowed) { /* Save temporarily for comparison in verify */ - key_blob = blob; - key_bloblen = bloblen; + if ((r = sshkey_to_blob(key, &key_blob, &key_bloblen)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); key_blobtype = type; key_opts = opts; hostbased_cuser = cuser; @@ -1217,13 +1195,14 @@ mm_answer_keyallowed(int sock, Buffer *m) } else { /* Log failed attempt */ auth_log(authctxt, 0, 0, auth_method, NULL); - free(blob); free(cuser); free(chost); } + sshkey_free(key); - buffer_clear(m); - buffer_put_int(m, allowed); + sshbuf_reset(m); + if ((r = sshbuf_put_u32(m, allowed)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); if (opts != NULL && (r = sshauthopt_serialise(opts, m, 1)) != 0) fatal("%s: sshauthopt_serialise: %s", __func__, ssh_err(r)); mm_request_send(sock, MONITOR_ANS_KEYALLOWED, m); @@ -1237,34 +1216,41 @@ mm_answer_keyallowed(int sock, Buffer *m) static int monitor_valid_userblob(u_char *data, u_int datalen) { - Buffer b; - u_char *p; + struct sshbuf *b; + const u_char *p; char *userstyle, *cp; - u_int len; - int fail = 0; + size_t len; + u_char type; + int r, fail = 0; - buffer_init(&b); - buffer_append(&b, data, datalen); + if ((b = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); + if ((r = sshbuf_put(b, data, datalen)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); if (datafellows & SSH_OLD_SESSIONID) { - p = buffer_ptr(&b); - len = buffer_len(&b); + p = sshbuf_ptr(b); + len = sshbuf_len(b); if ((session_id2 == NULL) || (len < session_id2_len) || (timingsafe_bcmp(p, session_id2, session_id2_len) != 0)) fail++; - buffer_consume(&b, session_id2_len); + if ((r = sshbuf_consume(b, session_id2_len)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); } else { - p = buffer_get_string(&b, &len); + if ((r = sshbuf_get_string_direct(b, &p, &len)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); if ((session_id2 == NULL) || (len != session_id2_len) || (timingsafe_bcmp(p, session_id2, session_id2_len) != 0)) fail++; - free(p); } - if (buffer_get_char(&b) != SSH2_MSG_USERAUTH_REQUEST) + if ((r = sshbuf_get_u8(b, &type)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (type != SSH2_MSG_USERAUTH_REQUEST) fail++; - cp = buffer_get_cstring(&b, NULL); + if ((r = sshbuf_get_cstring(b, &cp, NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); xasprintf(&userstyle, "%s%s%s", authctxt->user, authctxt->style ? ":" : "", authctxt->style ? authctxt->style : ""); @@ -1275,18 +1261,22 @@ monitor_valid_userblob(u_char *data, u_int datalen) } free(userstyle); free(cp); - buffer_skip_string(&b); - cp = buffer_get_cstring(&b, NULL); + if ((r = sshbuf_skip_string(b)) != 0 || /* service */ + (r = sshbuf_get_cstring(b, &cp, NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); if (strcmp("publickey", cp) != 0) fail++; free(cp); - if (!buffer_get_char(&b)) + if ((r = sshbuf_get_u8(b, &type)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (type == 0) fail++; - buffer_skip_string(&b); - buffer_skip_string(&b); - if (buffer_len(&b) != 0) + if ((r = sshbuf_skip_string(b)) != 0 || /* pkalg */ + (r = sshbuf_skip_string(b)) != 0) /* pkblob */ + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (sshbuf_len(b) != 0) fail++; - buffer_free(&b); + sshbuf_free(b); return (fail == 0); } @@ -1294,59 +1284,69 @@ static int monitor_valid_hostbasedblob(u_char *data, u_int datalen, char *cuser, char *chost) { - Buffer b; - char *p, *userstyle; - u_int len; - int fail = 0; + struct sshbuf *b; + const u_char *p; + char *cp, *userstyle; + size_t len; + int r, fail = 0; + u_char type; - buffer_init(&b); - buffer_append(&b, data, datalen); + if ((b = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); + if ((r = sshbuf_put(b, data, datalen)) != 0 || + (r = sshbuf_get_string_direct(b, &p, &len)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - p = buffer_get_string(&b, &len); if ((session_id2 == NULL) || (len != session_id2_len) || (timingsafe_bcmp(p, session_id2, session_id2_len) != 0)) fail++; - free(p); - if (buffer_get_char(&b) != SSH2_MSG_USERAUTH_REQUEST) + if ((r = sshbuf_get_u8(b, &type)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (type != SSH2_MSG_USERAUTH_REQUEST) fail++; - p = buffer_get_cstring(&b, NULL); + if ((r = sshbuf_get_cstring(b, &cp, NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); xasprintf(&userstyle, "%s%s%s", authctxt->user, authctxt->style ? ":" : "", authctxt->style ? authctxt->style : ""); - if (strcmp(userstyle, p) != 0) { - logit("wrong user name passed to monitor: expected %s != %.100s", - userstyle, p); + if (strcmp(userstyle, cp) != 0) { + logit("wrong user name passed to monitor: " + "expected %s != %.100s", userstyle, cp); fail++; } free(userstyle); - free(p); - buffer_skip_string(&b); /* service */ - p = buffer_get_cstring(&b, NULL); - if (strcmp(p, "hostbased") != 0) + free(cp); + if ((r = sshbuf_skip_string(b)) != 0 || /* service */ + (r = sshbuf_get_cstring(b, &cp, NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (strcmp(cp, "hostbased") != 0) fail++; - free(p); - buffer_skip_string(&b); /* pkalg */ - buffer_skip_string(&b); /* pkblob */ + free(cp); + if ((r = sshbuf_skip_string(b)) != 0 || /* pkalg */ + (r = sshbuf_skip_string(b)) != 0) /* pkblob */ + fatal("%s: buffer error: %s", __func__, ssh_err(r)); /* verify client host, strip trailing dot if necessary */ - p = buffer_get_string(&b, NULL); - if (((len = strlen(p)) > 0) && p[len - 1] == '.') - p[len - 1] = '\0'; - if (strcmp(p, chost) != 0) + if ((r = sshbuf_get_cstring(b, &cp, NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (((len = strlen(cp)) > 0) && cp[len - 1] == '.') + cp[len - 1] = '\0'; + if (strcmp(cp, chost) != 0) fail++; - free(p); + free(cp); /* verify client user */ - p = buffer_get_string(&b, NULL); - if (strcmp(p, cuser) != 0) + if ((r = sshbuf_get_cstring(b, &cp, NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (strcmp(cp, cuser) != 0) fail++; - free(p); + free(cp); - if (buffer_len(&b) != 0) + if (sshbuf_len(b) != 0) fail++; - buffer_free(&b); + sshbuf_free(b); return (fail == 0); } @@ -1462,15 +1462,15 @@ mm_session_close(Session *s) } int -mm_answer_pty(int sock, Buffer *m) +mm_answer_pty(int sock, struct sshbuf *m) { extern struct monitor *pmonitor; Session *s; - int res, fd0; + int r, res, fd0; debug3("%s entering", __func__); - buffer_clear(m); + sshbuf_reset(m); s = session_new(); if (s == NULL) goto error; @@ -1482,8 +1482,9 @@ mm_answer_pty(int sock, Buffer *m) goto error; pty_setowner(authctxt->pw, s->tty); - buffer_put_int(m, 1); - buffer_put_cstring(m, s->tty); + if ((r = sshbuf_put_u32(m, 1)) != 0 || + (r = sshbuf_put_cstring(m, s->tty)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); /* We need to trick ttyslot */ if (dup2(s->ttyfd, 0) == -1) @@ -1495,8 +1496,9 @@ mm_answer_pty(int sock, Buffer *m) close(0); /* send messages generated by record_login */ - buffer_put_string(m, buffer_ptr(&loginmsg), buffer_len(&loginmsg)); - buffer_clear(&loginmsg); + if ((r = sshbuf_put_stringb(m, loginmsg)) != 0) + fatal("%s: put login message: %s", __func__, ssh_err(r)); + sshbuf_reset(loginmsg); mm_request_send(sock, MONITOR_ANS_PTY, m); @@ -1523,29 +1525,32 @@ mm_answer_pty(int sock, Buffer *m) error: if (s != NULL) mm_session_close(s); - buffer_put_int(m, 0); + if ((r = sshbuf_put_u32(m, 0)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); mm_request_send(sock, MONITOR_ANS_PTY, m); return (0); } int -mm_answer_pty_cleanup(int sock, Buffer *m) +mm_answer_pty_cleanup(int sock, struct sshbuf *m) { Session *s; char *tty; + int r; debug3("%s entering", __func__); - tty = buffer_get_string(m, NULL); + if ((r = sshbuf_get_cstring(m, &tty, NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); if ((s = session_by_tty(tty)) != NULL) mm_session_close(s); - buffer_clear(m); + sshbuf_reset(m); free(tty); return (0); } int -mm_answer_term(int sock, Buffer *req) +mm_answer_term(int sock, struct sshbuf *req) { struct ssh *ssh = active_state; /* XXX */ extern struct monitor *pmonitor; @@ -1574,14 +1579,18 @@ mm_answer_term(int sock, Buffer *req) #ifdef SSH_AUDIT_EVENTS /* Report that an audit event occurred */ int -mm_answer_audit_event(int socket, Buffer *m) +mm_answer_audit_event(int socket, struct sshbuf *m) { + u_int n; ssh_audit_event_t event; + int r; debug3("%s entering", __func__); - event = buffer_get_int(m); - switch(event) { + if ((r = sshbuf_get_u32(m, &n)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + event = (ssh_audit_event_t)n; + switch (event) { case SSH_AUTH_FAIL_PUBKEY: case SSH_AUTH_FAIL_HOSTBASED: case SSH_AUTH_FAIL_GSSAPI: @@ -1599,13 +1608,14 @@ mm_answer_audit_event(int socket, Buffer *m) } int -mm_answer_audit_command(int socket, Buffer *m) +mm_answer_audit_command(int socket, struct sshbuf *m) { - u_int len; char *cmd; + int r; debug3("%s entering", __func__); - cmd = buffer_get_string(m, &len); + if ((r = sshbuf_get_cstring(m, &cmd, NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); /* sanity check command, if so how? */ audit_run_command(cmd); free(cmd); @@ -1808,24 +1818,29 @@ monitor_reinit(struct monitor *mon) #ifdef GSSAPI int -mm_answer_gss_setup_ctx(int sock, Buffer *m) +mm_answer_gss_setup_ctx(int sock, struct sshbuf *m) { gss_OID_desc goid; OM_uint32 major; - u_int len; + size_t len; + u_char *p; + int r; if (!options.gss_authentication) fatal("%s: GSSAPI authentication not enabled", __func__); - goid.elements = buffer_get_string(m, &len); + if ((r = sshbuf_get_string(m, &p, &len)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + goid.elements = p; goid.length = len; major = ssh_gssapi_server_ctx(&gsscontext, &goid); free(goid.elements); - buffer_clear(m); - buffer_put_int(m, major); + sshbuf_reset(m); + if ((r = sshbuf_put_u32(m, major)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); mm_request_send(sock, MONITOR_ANS_GSSSETUP, m); @@ -1836,26 +1851,27 @@ mm_answer_gss_setup_ctx(int sock, Buffer *m) } int -mm_answer_gss_accept_ctx(int sock, Buffer *m) +mm_answer_gss_accept_ctx(int sock, struct sshbuf *m) { gss_buffer_desc in; gss_buffer_desc out = GSS_C_EMPTY_BUFFER; OM_uint32 major, minor; OM_uint32 flags = 0; /* GSI needs this */ - u_int len; + int r; if (!options.gss_authentication) fatal("%s: GSSAPI authentication not enabled", __func__); - in.value = buffer_get_string(m, &len); - in.length = len; + if ((r = ssh_gssapi_get_buffer_desc(m, &in)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); major = ssh_gssapi_accept_ctx(gsscontext, &in, &out, &flags); free(in.value); - buffer_clear(m); - buffer_put_int(m, major); - buffer_put_string(m, out.value, out.length); - buffer_put_int(m, flags); + sshbuf_reset(m); + if ((r = sshbuf_put_u32(m, major)) != 0 || + (r = sshbuf_put_string(m, out.value, out.length)) != 0 || + (r = sshbuf_put_u32(m, flags)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); mm_request_send(sock, MONITOR_ANS_GSSSTEP, m); gss_release_buffer(&minor, &out); @@ -1869,27 +1885,27 @@ mm_answer_gss_accept_ctx(int sock, Buffer *m) } int -mm_answer_gss_checkmic(int sock, Buffer *m) +mm_answer_gss_checkmic(int sock, struct sshbuf *m) { gss_buffer_desc gssbuf, mic; OM_uint32 ret; - u_int len; + int r; if (!options.gss_authentication) fatal("%s: GSSAPI authentication not enabled", __func__); - gssbuf.value = buffer_get_string(m, &len); - gssbuf.length = len; - mic.value = buffer_get_string(m, &len); - mic.length = len; + if ((r = ssh_gssapi_get_buffer_desc(m, &gssbuf)) != 0 || + (r = ssh_gssapi_get_buffer_desc(m, &mic)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); ret = ssh_gssapi_checkmic(gsscontext, &gssbuf, &mic); free(gssbuf.value); free(mic.value); - buffer_clear(m); - buffer_put_int(m, ret); + sshbuf_reset(m); + if ((r = sshbuf_put_u32(m, ret)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); mm_request_send(sock, MONITOR_ANS_GSSCHECKMIC, m); @@ -1900,9 +1916,9 @@ mm_answer_gss_checkmic(int sock, Buffer *m) } int -mm_answer_gss_userok(int sock, Buffer *m) +mm_answer_gss_userok(int sock, struct sshbuf *m) { - int authenticated; + int r, authenticated; const char *displayname; if (!options.gss_authentication) @@ -1910,8 +1926,9 @@ mm_answer_gss_userok(int sock, Buffer *m) authenticated = authctxt->valid && ssh_gssapi_userok(authctxt->user); - buffer_clear(m); - buffer_put_int(m, authenticated); + sshbuf_reset(m); + if ((r = sshbuf_put_u32(m, authenticated)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); debug3("%s: sending result %d", __func__, authenticated); mm_request_send(sock, MONITOR_ANS_GSSUSEROK, m); diff --git a/monitor.h b/monitor.h index d68f67458..16047299f 100644 --- a/monitor.h +++ b/monitor.h @@ -1,4 +1,4 @@ -/* $OpenBSD: monitor.h,v 1.20 2016/09/28 16:33:07 djm Exp $ */ +/* $OpenBSD: monitor.h,v 1.21 2018/07/09 21:53:45 markus Exp $ */ /* * Copyright 2002 Niels Provos @@ -39,8 +39,6 @@ enum monitor_reqtype { MONITOR_REQ_AUTHPASSWORD = 12, MONITOR_ANS_AUTHPASSWORD = 13, MONITOR_REQ_BSDAUTHQUERY = 14, MONITOR_ANS_BSDAUTHQUERY = 15, MONITOR_REQ_BSDAUTHRESPOND = 16, MONITOR_ANS_BSDAUTHRESPOND = 17, - MONITOR_REQ_SKEYQUERY = 18, MONITOR_ANS_SKEYQUERY = 19, - MONITOR_REQ_SKEYRESPOND = 20, MONITOR_ANS_SKEYRESPOND = 21, MONITOR_REQ_KEYALLOWED = 22, MONITOR_ANS_KEYALLOWED = 23, MONITOR_REQ_KEYVERIFY = 24, MONITOR_ANS_KEYVERIFY = 25, MONITOR_REQ_KEYEXPORT = 26, @@ -87,8 +85,8 @@ struct mon_table; int monitor_read(struct monitor*, struct mon_table *, struct mon_table **); /* Prototypes for request sending and receiving */ -void mm_request_send(int, enum monitor_reqtype, Buffer *); -void mm_request_receive(int, Buffer *); -void mm_request_receive_expect(int, enum monitor_reqtype, Buffer *); +void mm_request_send(int, enum monitor_reqtype, struct sshbuf *); +void mm_request_receive(int, struct sshbuf *); +void mm_request_receive_expect(int, enum monitor_reqtype, struct sshbuf *); #endif /* _MONITOR_H_ */ diff --git a/monitor_wrap.c b/monitor_wrap.c index 9666bda4b..732fb3476 100644 --- a/monitor_wrap.c +++ b/monitor_wrap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: monitor_wrap.c,v 1.99 2018/03/03 03:15:51 djm Exp $ */ +/* $OpenBSD: monitor_wrap.c,v 1.107 2018/07/20 03:46:34 djm Exp $ */ /* * Copyright 2002 Niels Provos * Copyright 2002 Markus Friedl @@ -50,8 +50,8 @@ #ifdef WITH_OPENSSL #include "dh.h" #endif -#include "buffer.h" -#include "key.h" +#include "sshbuf.h" +#include "sshkey.h" #include "cipher.h" #include "kex.h" #include "hostfile.h" @@ -61,13 +61,6 @@ #include "mac.h" #include "log.h" #include "auth-pam.h" -#ifdef TARGET_OS_MAC /* XXX Broken krb5 headers on Mac */ -#undef TARGET_OS_MAC -#include "zlib.h" -#define TARGET_OS_MAC 1 -#else -#include "zlib.h" -#endif #include "monitor.h" #ifdef GSSAPI #include "ssh-gss.h" @@ -84,36 +77,35 @@ #include "ssherr.h" /* Imports */ -extern z_stream incoming_stream; -extern z_stream outgoing_stream; extern struct monitor *pmonitor; -extern Buffer loginmsg; +extern struct sshbuf *loginmsg; extern ServerOptions options; void mm_log_handler(LogLevel level, const char *msg, void *ctx) { - Buffer log_msg; + struct sshbuf *log_msg; struct monitor *mon = (struct monitor *)ctx; + int r; + size_t len; if (mon->m_log_sendfd == -1) fatal("%s: no log channel", __func__); - buffer_init(&log_msg); - /* - * Placeholder for packet length. Will be filled in with the actual - * packet length once the packet has been constucted. This saves - * fragile math. - */ - buffer_put_int(&log_msg, 0); + if ((log_msg = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); - buffer_put_int(&log_msg, level); - buffer_put_cstring(&log_msg, msg); - put_u32(buffer_ptr(&log_msg), buffer_len(&log_msg) - 4); - if (atomicio(vwrite, mon->m_log_sendfd, buffer_ptr(&log_msg), - buffer_len(&log_msg)) != buffer_len(&log_msg)) + if ((r = sshbuf_put_u32(log_msg, 0)) != 0 || /* length; filled below */ + (r = sshbuf_put_u32(log_msg, level)) != 0 || + (r = sshbuf_put_cstring(log_msg, msg)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if ((len = sshbuf_len(log_msg)) < 4 || len > 0xffffffff) + fatal("%s: bad length %zu", __func__, len); + POKE_U32(sshbuf_mutable_ptr(log_msg), len - 4); + if (atomicio(vwrite, mon->m_log_sendfd, + sshbuf_mutable_ptr(log_msg), len) != len) fatal("%s: write: %s", __func__, strerror(errno)); - buffer_free(&log_msg); + sshbuf_free(log_msg); } int @@ -127,26 +119,29 @@ mm_is_monitor(void) } void -mm_request_send(int sock, enum monitor_reqtype type, Buffer *m) +mm_request_send(int sock, enum monitor_reqtype type, struct sshbuf *m) { - u_int mlen = buffer_len(m); + size_t mlen = sshbuf_len(m); u_char buf[5]; debug3("%s entering: type %d", __func__, type); - put_u32(buf, mlen + 1); + if (mlen >= 0xffffffff) + fatal("%s: bad length %zu", __func__, mlen); + POKE_U32(buf, mlen + 1); buf[4] = (u_char) type; /* 1st byte of payload is mesg-type */ if (atomicio(vwrite, sock, buf, sizeof(buf)) != sizeof(buf)) fatal("%s: write: %s", __func__, strerror(errno)); - if (atomicio(vwrite, sock, buffer_ptr(m), mlen) != mlen) + if (atomicio(vwrite, sock, sshbuf_mutable_ptr(m), mlen) != mlen) fatal("%s: write: %s", __func__, strerror(errno)); } void -mm_request_receive(int sock, Buffer *m) +mm_request_receive(int sock, struct sshbuf *m) { - u_char buf[4]; + u_char buf[4], *p = NULL; u_int msg_len; + int r; debug3("%s entering", __func__); @@ -155,24 +150,27 @@ mm_request_receive(int sock, Buffer *m) cleanup_exit(255); fatal("%s: read: %s", __func__, strerror(errno)); } - msg_len = get_u32(buf); + msg_len = PEEK_U32(buf); if (msg_len > 256 * 1024) fatal("%s: read: bad msg_len %d", __func__, msg_len); - buffer_clear(m); - buffer_append_space(m, msg_len); - if (atomicio(read, sock, buffer_ptr(m), msg_len) != msg_len) + sshbuf_reset(m); + if ((r = sshbuf_reserve(m, msg_len, &p)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (atomicio(read, sock, p, msg_len) != msg_len) fatal("%s: read: %s", __func__, strerror(errno)); } void -mm_request_receive_expect(int sock, enum monitor_reqtype type, Buffer *m) +mm_request_receive_expect(int sock, enum monitor_reqtype type, struct sshbuf *m) { u_char rtype; + int r; debug3("%s entering: type %d", __func__, type); mm_request_receive(sock, m); - rtype = buffer_get_char(m); + if ((r = sshbuf_get_u8(m, &rtype)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); if (rtype != type) fatal("%s: read: rtype %d != type %d", __func__, rtype, type); @@ -183,20 +181,24 @@ DH * mm_choose_dh(int min, int nbits, int max) { BIGNUM *p, *g; - int success = 0; - Buffer m; + int r; + u_char success = 0; + struct sshbuf *m; - buffer_init(&m); - buffer_put_int(&m, min); - buffer_put_int(&m, nbits); - buffer_put_int(&m, max); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_u32(m, min)) != 0 || + (r = sshbuf_put_u32(m, nbits)) != 0 || + (r = sshbuf_put_u32(m, max)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_MODULI, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_MODULI, m); debug3("%s: waiting for MONITOR_ANS_MODULI", __func__); - mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_MODULI, &m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_MODULI, m); - success = buffer_get_char(&m); + if ((r = sshbuf_get_u8(m, &success)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); if (success == 0) fatal("%s: MONITOR_ANS_MODULI failed", __func__); @@ -204,36 +206,43 @@ mm_choose_dh(int min, int nbits, int max) fatal("%s: BN_new failed", __func__); if ((g = BN_new()) == NULL) fatal("%s: BN_new failed", __func__); - buffer_get_bignum2(&m, p); - buffer_get_bignum2(&m, g); + if ((r = sshbuf_get_bignum2(m, p)) != 0 || + (r = sshbuf_get_bignum2(m, g)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - debug3("%s: remaining %d", __func__, buffer_len(&m)); - buffer_free(&m); + debug3("%s: remaining %zu", __func__, sshbuf_len(m)); + sshbuf_free(m); return (dh_new_group(g, p)); } #endif int -mm_key_sign(struct sshkey *key, u_char **sigp, u_int *lenp, - const u_char *data, u_int datalen, const char *hostkey_alg) +mm_sshkey_sign(struct sshkey *key, u_char **sigp, size_t *lenp, + const u_char *data, size_t datalen, const char *hostkey_alg, u_int compat) { struct kex *kex = *pmonitor->m_pkex; - Buffer m; + struct sshbuf *m; + u_int ndx = kex->host_key_index(key, 0, active_state); + int r; debug3("%s entering", __func__); - buffer_init(&m); - buffer_put_int(&m, kex->host_key_index(key, 0, active_state)); - buffer_put_string(&m, data, datalen); - buffer_put_cstring(&m, hostkey_alg); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_u32(m, ndx)) != 0 || + (r = sshbuf_put_string(m, data, datalen)) != 0 || + (r = sshbuf_put_cstring(m, hostkey_alg)) != 0 || + (r = sshbuf_put_u32(m, compat)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SIGN, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SIGN, m); debug3("%s: waiting for MONITOR_ANS_SIGN", __func__); - mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_SIGN, &m); - *sigp = buffer_get_string(&m, lenp); - buffer_free(&m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_SIGN, m); + if ((r = sshbuf_get_string(m, sigp, lenp)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + sshbuf_free(m); return (0); } @@ -242,54 +251,80 @@ struct passwd * mm_getpwnamallow(const char *username) { struct ssh *ssh = active_state; /* XXX */ - Buffer m; + struct sshbuf *m; struct passwd *pw; - u_int len, i; + size_t len; + u_int i; ServerOptions *newopts; + int r; + u_char ok; + const u_char *p; debug3("%s entering", __func__); - buffer_init(&m); - buffer_put_cstring(&m, username); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_cstring(m, username)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PWNAM, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PWNAM, m); debug3("%s: waiting for MONITOR_ANS_PWNAM", __func__); - mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PWNAM, &m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PWNAM, m); - if (buffer_get_char(&m) == 0) { + if ((r = sshbuf_get_u8(m, &ok)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (ok == 0) { pw = NULL; goto out; } - pw = buffer_get_string(&m, &len); - if (len != sizeof(struct passwd)) + + /* XXX don't like passing struct passwd like this */ + pw = xcalloc(sizeof(*pw), 1); + if ((r = sshbuf_get_string_direct(m, &p, &len)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (len != sizeof(*pw)) fatal("%s: struct passwd size mismatch", __func__); - pw->pw_name = buffer_get_string(&m, NULL); - pw->pw_passwd = buffer_get_string(&m, NULL); + memcpy(pw, p, sizeof(*pw)); + + if ((r = sshbuf_get_cstring(m, &pw->pw_name, NULL)) != 0 || + (r = sshbuf_get_cstring(m, &pw->pw_passwd, NULL)) != 0 || #ifdef HAVE_STRUCT_PASSWD_PW_GECOS - pw->pw_gecos = buffer_get_string(&m, NULL); + (r = sshbuf_get_cstring(m, &pw->pw_gecos, NULL)) != 0 || #endif #ifdef HAVE_STRUCT_PASSWD_PW_CLASS - pw->pw_class = buffer_get_string(&m, NULL); + (r = sshbuf_get_cstring(m, &pw->pw_class, NULL)) != 0 || #endif - pw->pw_dir = buffer_get_string(&m, NULL); - pw->pw_shell = buffer_get_string(&m, NULL); + (r = sshbuf_get_cstring(m, &pw->pw_dir, NULL)) != 0 || + (r = sshbuf_get_cstring(m, &pw->pw_shell, NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); out: /* copy options block as a Match directive may have changed some */ - newopts = buffer_get_string(&m, &len); + if ((r = sshbuf_get_string_direct(m, &p, &len)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); if (len != sizeof(*newopts)) fatal("%s: option block size mismatch", __func__); + newopts = xcalloc(sizeof(*newopts), 1); + memcpy(newopts, p, sizeof(*newopts)); #define M_CP_STROPT(x) do { \ - if (newopts->x != NULL) \ - newopts->x = buffer_get_string(&m, NULL); \ + if (newopts->x != NULL) { \ + if ((r = sshbuf_get_cstring(m, \ + &newopts->x, NULL)) != 0) \ + fatal("%s: buffer error: %s", \ + __func__, ssh_err(r)); \ + } \ } while (0) #define M_CP_STRARRAYOPT(x, nx) do { \ newopts->x = newopts->nx == 0 ? \ NULL : xcalloc(newopts->nx, sizeof(*newopts->x)); \ - for (i = 0; i < newopts->nx; i++) \ - newopts->x[i] = buffer_get_string(&m, NULL); \ + for (i = 0; i < newopts->nx; i++) { \ + if ((r = sshbuf_get_cstring(m, \ + &newopts->x[i], NULL)) != 0) \ + fatal("%s: buffer error: %s", \ + __func__, ssh_err(r)); \ + } \ } while (0) /* See comment in servconf.h */ COPY_MATCH_STRING_OPTS(); @@ -301,7 +336,7 @@ out: process_permitopen(ssh, &options); free(newopts); - buffer_free(&m); + sshbuf_free(m); return (pw); } @@ -309,19 +344,22 @@ out: char * mm_auth2_read_banner(void) { - Buffer m; + struct sshbuf *m; char *banner; + int r; debug3("%s entering", __func__); - buffer_init(&m); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTH2_READ_BANNER, &m); - buffer_clear(&m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTH2_READ_BANNER, m); + sshbuf_reset(m); mm_request_receive_expect(pmonitor->m_recvfd, - MONITOR_ANS_AUTH2_READ_BANNER, &m); - banner = buffer_get_string(&m, NULL); - buffer_free(&m); + MONITOR_ANS_AUTH2_READ_BANNER, m); + if ((r = sshbuf_get_cstring(m, &banner, NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + sshbuf_free(m); /* treat empty banner as missing banner */ if (strlen(banner) == 0) { @@ -336,41 +374,55 @@ mm_auth2_read_banner(void) void mm_inform_authserv(char *service, char *style) { - Buffer m; + struct sshbuf *m; + int r; debug3("%s entering", __func__); - buffer_init(&m); - buffer_put_cstring(&m, service); - buffer_put_cstring(&m, style ? style : ""); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_cstring(m, service)) != 0 || + (r = sshbuf_put_cstring(m, style ? style : "")) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHSERV, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHSERV, m); - buffer_free(&m); + sshbuf_free(m); } /* Do the password authentication */ int mm_auth_password(struct ssh *ssh, char *password) { - Buffer m; - int authenticated = 0; + struct sshbuf *m; + int r, authenticated = 0; +#ifdef USE_PAM + u_int maxtries = 0; +#endif debug3("%s entering", __func__); - buffer_init(&m); - buffer_put_cstring(&m, password); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHPASSWORD, &m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_cstring(m, password)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHPASSWORD, m); debug3("%s: waiting for MONITOR_ANS_AUTHPASSWORD", __func__); - mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_AUTHPASSWORD, &m); + mm_request_receive_expect(pmonitor->m_recvfd, + MONITOR_ANS_AUTHPASSWORD, m); - authenticated = buffer_get_int(&m); + if ((r = sshbuf_get_u32(m, &authenticated)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); #ifdef USE_PAM - sshpam_set_maxtries_reached(buffer_get_int(&m)); + if ((r = sshbuf_get_u32(m, &maxtries)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (maxtries > INT_MAX) + fatal("%s: bad maxtries %u", __func__, maxtries); + sshpam_set_maxtries_reached(maxtries); #endif - buffer_free(&m); + sshbuf_free(m); debug3("%s: user %sauthenticated", __func__, authenticated ? "" : "not "); @@ -396,9 +448,7 @@ int mm_key_allowed(enum mm_keytype type, const char *user, const char *host, struct sshkey *key, int pubkey_auth_attempt, struct sshauthopt **authoptp) { - Buffer m; - u_char *blob; - u_int len; + struct sshbuf *m; int r, allowed = 0; struct sshauthopt *opts = NULL; @@ -407,31 +457,29 @@ mm_key_allowed(enum mm_keytype type, const char *user, const char *host, if (authoptp != NULL) *authoptp = NULL; - /* Convert the key to a blob and the pass it over */ - if (!key_to_blob(key, &blob, &len)) - return 0; + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_u32(m, type)) != 0 || + (r = sshbuf_put_cstring(m, user ? user : "")) != 0 || + (r = sshbuf_put_cstring(m, host ? host : "")) != 0 || + (r = sshkey_puts(key, m)) != 0 || + (r = sshbuf_put_u32(m, pubkey_auth_attempt)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - buffer_init(&m); - buffer_put_int(&m, type); - buffer_put_cstring(&m, user ? user : ""); - buffer_put_cstring(&m, host ? host : ""); - buffer_put_string(&m, blob, len); - buffer_put_int(&m, pubkey_auth_attempt); - free(blob); - - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYALLOWED, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYALLOWED, m); debug3("%s: waiting for MONITOR_ANS_KEYALLOWED", __func__); mm_request_receive_expect(pmonitor->m_recvfd, - MONITOR_ANS_KEYALLOWED, &m); + MONITOR_ANS_KEYALLOWED, m); - allowed = buffer_get_int(&m); + if ((r = sshbuf_get_u32(m, &allowed)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); if (allowed && type == MM_USERKEY) { - if ((r = sshauthopt_deserialise(&m, &opts)) != 0) + if ((r = sshauthopt_deserialise(m, &opts)) != 0) fatal("%s: sshauthopt_deserialise: %s", __func__, ssh_err(r)); } - buffer_free(&m); + sshbuf_free(m); if (authoptp != NULL) { *authoptp = opts; @@ -452,32 +500,31 @@ int mm_sshkey_verify(const struct sshkey *key, const u_char *sig, size_t siglen, const u_char *data, size_t datalen, const char *sigalg, u_int compat) { - Buffer m; - u_char *blob; - u_int len; + struct sshbuf *m; u_int encoded_ret = 0; + int r; debug3("%s entering", __func__); - /* Convert the key to a blob and the pass it over */ - if (!key_to_blob(key, &blob, &len)) - return (0); - buffer_init(&m); - buffer_put_string(&m, blob, len); - buffer_put_string(&m, sig, siglen); - buffer_put_string(&m, data, datalen); - buffer_put_cstring(&m, sigalg == NULL ? "" : sigalg); - free(blob); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshkey_puts(key, m)) != 0 || + (r = sshbuf_put_string(m, sig, siglen)) != 0 || + (r = sshbuf_put_string(m, data, datalen)) != 0 || + (r = sshbuf_put_cstring(m, sigalg == NULL ? "" : sigalg)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYVERIFY, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYVERIFY, m); debug3("%s: waiting for MONITOR_ANS_KEYVERIFY", __func__); - mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_KEYVERIFY, &m); + mm_request_receive_expect(pmonitor->m_recvfd, + MONITOR_ANS_KEYVERIFY, m); - encoded_ret = buffer_get_int(&m); + if ((r = sshbuf_get_u32(m, &encoded_ret)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - buffer_free(&m); + sshbuf_free(m); if (encoded_ret != 0) return SSH_ERR_SIGNATURE_INVALID; @@ -504,9 +551,9 @@ mm_send_keystate(struct monitor *monitor) int mm_pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, size_t namebuflen) { - Buffer m; + struct sshbuf *m; char *p, *msg; - int success = 0, tmp1 = -1, tmp2 = -1; + int success = 0, tmp1 = -1, tmp2 = -1, r; /* Kludge: ensure there are fds free to receive the pty/tty */ if ((tmp1 = dup(pmonitor->m_recvfd)) == -1 || @@ -521,26 +568,30 @@ mm_pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, size_t namebuflen) close(tmp1); close(tmp2); - buffer_init(&m); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PTY, &m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PTY, m); debug3("%s: waiting for MONITOR_ANS_PTY", __func__); - mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PTY, &m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PTY, m); - success = buffer_get_int(&m); + if ((r = sshbuf_get_u32(m, &success)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); if (success == 0) { debug3("%s: pty alloc failed", __func__); - buffer_free(&m); + sshbuf_free(m); return (0); } - p = buffer_get_string(&m, NULL); - msg = buffer_get_string(&m, NULL); - buffer_free(&m); + if ((r = sshbuf_get_cstring(m, &p, NULL)) != 0 || + (r = sshbuf_get_cstring(m, &msg, NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + sshbuf_free(m); strlcpy(namebuf, p, namebuflen); /* Possible truncation */ free(p); - buffer_append(&loginmsg, msg, strlen(msg)); + if ((r = sshbuf_put(loginmsg, msg, strlen(msg))) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); free(msg); if ((*ptyfd = mm_receive_fd(pmonitor->m_recvfd)) == -1 || @@ -554,14 +605,17 @@ mm_pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, size_t namebuflen) void mm_session_pty_cleanup2(Session *s) { - Buffer m; + struct sshbuf *m; + int r; if (s->ttyfd == -1) return; - buffer_init(&m); - buffer_put_cstring(&m, s->tty); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PTYCLEANUP, &m); - buffer_free(&m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_cstring(m, s->tty)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PTYCLEANUP, m); + sshbuf_free(m); /* closed dup'ed master */ if (s->ptymaster != -1 && close(s->ptymaster) < 0) @@ -576,40 +630,44 @@ mm_session_pty_cleanup2(Session *s) void mm_start_pam(Authctxt *authctxt) { - Buffer m; + struct sshbuf *m; debug3("%s entering", __func__); if (!options.use_pam) fatal("UsePAM=no, but ended up in %s anyway", __func__); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_START, m); - buffer_init(&m); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_START, &m); - - buffer_free(&m); + sshbuf_free(m); } u_int mm_do_pam_account(void) { - Buffer m; + struct sshbuf *m; u_int ret; char *msg; + size_t msglen; + int r; debug3("%s entering", __func__); if (!options.use_pam) fatal("UsePAM=no, but ended up in %s anyway", __func__); - buffer_init(&m); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_ACCOUNT, &m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_ACCOUNT, m); mm_request_receive_expect(pmonitor->m_recvfd, - MONITOR_ANS_PAM_ACCOUNT, &m); - ret = buffer_get_int(&m); - msg = buffer_get_string(&m, NULL); - buffer_append(&loginmsg, msg, strlen(msg)); - free(msg); + MONITOR_ANS_PAM_ACCOUNT, m); + if ((r = sshbuf_get_u32(m, &ret)) != 0 || + (r = sshbuf_get_cstring(m, &msg, &msglen)) != 0 || + (r = sshbuf_put(loginmsg, msg, msglen)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - buffer_free(&m); + free(msg); + sshbuf_free(m); debug3("%s returning %d", __func__, ret); @@ -619,21 +677,24 @@ mm_do_pam_account(void) void * mm_sshpam_init_ctx(Authctxt *authctxt) { - Buffer m; - int success; + struct sshbuf *m; + int r, success; debug3("%s", __func__); - buffer_init(&m); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_INIT_CTX, &m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_INIT_CTX, m); debug3("%s: waiting for MONITOR_ANS_PAM_INIT_CTX", __func__); - mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PAM_INIT_CTX, &m); - success = buffer_get_int(&m); + mm_request_receive_expect(pmonitor->m_recvfd, + MONITOR_ANS_PAM_INIT_CTX, m); + if ((r = sshbuf_get_u32(m, &success)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); if (success == 0) { debug3("%s: pam_init_ctx failed", __func__); - buffer_free(&m); + sshbuf_free(m); return (NULL); } - buffer_free(&m); + sshbuf_free(m); return (authctxt); } @@ -641,66 +702,79 @@ int mm_sshpam_query(void *ctx, char **name, char **info, u_int *num, char ***prompts, u_int **echo_on) { - Buffer m; - u_int i; - int ret; + struct sshbuf *m; + u_int i, n; + int r, ret; debug3("%s", __func__); - buffer_init(&m); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_QUERY, &m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_QUERY, m); debug3("%s: waiting for MONITOR_ANS_PAM_QUERY", __func__); - mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PAM_QUERY, &m); - ret = buffer_get_int(&m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PAM_QUERY, m); + if ((r = sshbuf_get_u32(m, &ret)) != 0 || + (r = sshbuf_get_cstring(m, name, NULL)) != 0 || + (r = sshbuf_get_cstring(m, info, NULL)) != 0 || + (r = sshbuf_get_u32(m, &n)) != 0 || + (r = sshbuf_get_u32(m, num)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); debug3("%s: pam_query returned %d", __func__, ret); - *name = buffer_get_string(&m, NULL); - *info = buffer_get_string(&m, NULL); - sshpam_set_maxtries_reached(buffer_get_int(&m)); - *num = buffer_get_int(&m); + sshpam_set_maxtries_reached(n); if (*num > PAM_MAX_NUM_MSG) - fatal("%s: recieved %u PAM messages, expected <= %u", + fatal("%s: received %u PAM messages, expected <= %u", __func__, *num, PAM_MAX_NUM_MSG); *prompts = xcalloc((*num + 1), sizeof(char *)); *echo_on = xcalloc((*num + 1), sizeof(u_int)); for (i = 0; i < *num; ++i) { - (*prompts)[i] = buffer_get_string(&m, NULL); - (*echo_on)[i] = buffer_get_int(&m); + if ((r = sshbuf_get_cstring(m, &((*prompts)[i]), NULL)) != 0 || + (r = sshbuf_get_u32(m, &((*echo_on)[i]))) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); } - buffer_free(&m); + sshbuf_free(m); return (ret); } int mm_sshpam_respond(void *ctx, u_int num, char **resp) { - Buffer m; - u_int i; - int ret; + struct sshbuf *m; + u_int n, i; + int r, ret; debug3("%s", __func__); - buffer_init(&m); - buffer_put_int(&m, num); - for (i = 0; i < num; ++i) - buffer_put_cstring(&m, resp[i]); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_RESPOND, &m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_u32(m, num)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + for (i = 0; i < num; ++i) { + if ((r = sshbuf_put_cstring(m, resp[i])) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + } + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_RESPOND, m); debug3("%s: waiting for MONITOR_ANS_PAM_RESPOND", __func__); - mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PAM_RESPOND, &m); - ret = buffer_get_int(&m); + mm_request_receive_expect(pmonitor->m_recvfd, + MONITOR_ANS_PAM_RESPOND, m); + if ((r = sshbuf_get_u32(m, &n)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + ret = (int)n; /* XXX */ debug3("%s: pam_respond returned %d", __func__, ret); - buffer_free(&m); + sshbuf_free(m); return (ret); } void mm_sshpam_free_ctx(void *ctxtp) { - Buffer m; + struct sshbuf *m; debug3("%s", __func__); - buffer_init(&m); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_FREE_CTX, &m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_FREE_CTX, m); debug3("%s: waiting for MONITOR_ANS_PAM_FREE_CTX", __func__); - mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PAM_FREE_CTX, &m); - buffer_free(&m); + mm_request_receive_expect(pmonitor->m_recvfd, + MONITOR_ANS_PAM_FREE_CTX, m); + sshbuf_free(m); } #endif /* USE_PAM */ @@ -709,11 +783,12 @@ mm_sshpam_free_ctx(void *ctxtp) void mm_terminate(void) { - Buffer m; + struct sshbuf *m; - buffer_init(&m); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_TERM, &m); - buffer_free(&m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_TERM, m); + sshbuf_free(m); } static void @@ -732,27 +807,31 @@ int mm_bsdauth_query(void *ctx, char **name, char **infotxt, u_int *numprompts, char ***prompts, u_int **echo_on) { - Buffer m; + struct sshbuf *m; u_int success; char *challenge; + int r; debug3("%s: entering", __func__); - buffer_init(&m); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_BSDAUTHQUERY, &m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_BSDAUTHQUERY, m); - mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_BSDAUTHQUERY, - &m); - success = buffer_get_int(&m); + mm_request_receive_expect(pmonitor->m_recvfd, + MONITOR_ANS_BSDAUTHQUERY, m); + if ((r = sshbuf_get_u32(m, &success)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); if (success == 0) { debug3("%s: no challenge", __func__); - buffer_free(&m); + sshbuf_free(m); return (-1); } /* Get the challenge, and format the response */ - challenge = buffer_get_string(&m, NULL); - buffer_free(&m); + if ((r = sshbuf_get_cstring(m, &challenge, NULL)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + sshbuf_free(m); mm_chall_setup(name, infotxt, numprompts, prompts, echo_on); (*prompts)[0] = challenge; @@ -765,114 +844,62 @@ mm_bsdauth_query(void *ctx, char **name, char **infotxt, int mm_bsdauth_respond(void *ctx, u_int numresponses, char **responses) { - Buffer m; - int authok; + struct sshbuf *m; + int r, authok; debug3("%s: entering", __func__); if (numresponses != 1) return (-1); - buffer_init(&m); - buffer_put_cstring(&m, responses[0]); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_BSDAUTHRESPOND, &m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_cstring(m, responses[0])) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_BSDAUTHRESPOND, m); mm_request_receive_expect(pmonitor->m_recvfd, - MONITOR_ANS_BSDAUTHRESPOND, &m); + MONITOR_ANS_BSDAUTHRESPOND, m); - authok = buffer_get_int(&m); - buffer_free(&m); + if ((r = sshbuf_get_u32(m, &authok)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + sshbuf_free(m); return ((authok == 0) ? -1 : 0); } -#ifdef SKEY -int -mm_skey_query(void *ctx, char **name, char **infotxt, - u_int *numprompts, char ***prompts, u_int **echo_on) -{ - Buffer m; - u_int success; - char *challenge; - - debug3("%s: entering", __func__); - - buffer_init(&m); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SKEYQUERY, &m); - - mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_SKEYQUERY, - &m); - success = buffer_get_int(&m); - if (success == 0) { - debug3("%s: no challenge", __func__); - buffer_free(&m); - return (-1); - } - - /* Get the challenge, and format the response */ - challenge = buffer_get_string(&m, NULL); - buffer_free(&m); - - debug3("%s: received challenge: %s", __func__, challenge); - - mm_chall_setup(name, infotxt, numprompts, prompts, echo_on); - - xasprintf(*prompts, "%s%s", challenge, SKEY_PROMPT); - free(challenge); - - return (0); -} - -int -mm_skey_respond(void *ctx, u_int numresponses, char **responses) -{ - Buffer m; - int authok; - - debug3("%s: entering", __func__); - if (numresponses != 1) - return (-1); - - buffer_init(&m); - buffer_put_cstring(&m, responses[0]); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SKEYRESPOND, &m); - - mm_request_receive_expect(pmonitor->m_recvfd, - MONITOR_ANS_SKEYRESPOND, &m); - - authok = buffer_get_int(&m); - buffer_free(&m); - - return ((authok == 0) ? -1 : 0); -} -#endif /* SKEY */ - #ifdef SSH_AUDIT_EVENTS void mm_audit_event(ssh_audit_event_t event) { - Buffer m; + struct sshbuf *m; + int r; debug3("%s entering", __func__); - buffer_init(&m); - buffer_put_int(&m, event); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_u32(m, event)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUDIT_EVENT, &m); - buffer_free(&m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUDIT_EVENT, m); + sshbuf_free(m); } void mm_audit_run_command(const char *command) { - Buffer m; + struct sshbuf *m; + int r; debug3("%s entering command %s", __func__, command); - buffer_init(&m); - buffer_put_cstring(&m, command); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_cstring(m, command)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUDIT_COMMAND, &m); - buffer_free(&m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUDIT_COMMAND, m); + sshbuf_free(m); } #endif /* SSH_AUDIT_EVENTS */ @@ -880,45 +907,55 @@ mm_audit_run_command(const char *command) OM_uint32 mm_ssh_gssapi_server_ctx(Gssctxt **ctx, gss_OID goid) { - Buffer m; + struct sshbuf *m; OM_uint32 major; + int r; /* Client doesn't get to see the context */ *ctx = NULL; - buffer_init(&m); - buffer_put_string(&m, goid->elements, goid->length); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_string(m, goid->elements, goid->length)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSSETUP, &m); - mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSSETUP, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSSETUP, m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSSETUP, m); - major = buffer_get_int(&m); + if ((r = sshbuf_get_u32(m, &major)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - buffer_free(&m); + sshbuf_free(m); return (major); } OM_uint32 mm_ssh_gssapi_accept_ctx(Gssctxt *ctx, gss_buffer_desc *in, - gss_buffer_desc *out, OM_uint32 *flags) + gss_buffer_desc *out, OM_uint32 *flagsp) { - Buffer m; + struct sshbuf *m; OM_uint32 major; - u_int len; + u_int flags; + int r; - buffer_init(&m); - buffer_put_string(&m, in->value, in->length); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_string(m, in->value, in->length)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSSTEP, &m); - mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSSTEP, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSSTEP, m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSSTEP, m); - major = buffer_get_int(&m); - out->value = buffer_get_string(&m, &len); - out->length = len; - if (flags) - *flags = buffer_get_int(&m); + if ((r = sshbuf_get_u32(m, &major)) != 0 || + (r = ssh_gssapi_get_buffer_desc(m, out)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (flagsp != NULL) { + if ((r = sshbuf_get_u32(m, &flags)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + *flagsp = flags; + } - buffer_free(&m); + sshbuf_free(m); return (major); } @@ -926,39 +963,44 @@ mm_ssh_gssapi_accept_ctx(Gssctxt *ctx, gss_buffer_desc *in, OM_uint32 mm_ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic) { - Buffer m; + struct sshbuf *m; OM_uint32 major; + int r; - buffer_init(&m); - buffer_put_string(&m, gssbuf->value, gssbuf->length); - buffer_put_string(&m, gssmic->value, gssmic->length); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_string(m, gssbuf->value, gssbuf->length)) != 0 || + (r = sshbuf_put_string(m, gssmic->value, gssmic->length)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSCHECKMIC, &m); - mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSCHECKMIC, - &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSCHECKMIC, m); + mm_request_receive_expect(pmonitor->m_recvfd, + MONITOR_ANS_GSSCHECKMIC, m); - major = buffer_get_int(&m); - buffer_free(&m); + if ((r = sshbuf_get_u32(m, &major)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + sshbuf_free(m); return(major); } int mm_ssh_gssapi_userok(char *user) { - Buffer m; - int authenticated = 0; + struct sshbuf *m; + int r, authenticated = 0; - buffer_init(&m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); - mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSUSEROK, &m); - mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSUSEROK, - &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSUSEROK, m); + mm_request_receive_expect(pmonitor->m_recvfd, + MONITOR_ANS_GSSUSEROK, m); - authenticated = buffer_get_int(&m); + if ((r = sshbuf_get_u32(m, &authenticated)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); - buffer_free(&m); + sshbuf_free(m); debug3("%s: user %sauthenticated",__func__, authenticated ? "" : "not "); return (authenticated); } #endif /* GSSAPI */ - diff --git a/monitor_wrap.h b/monitor_wrap.h index 762332704..644da081d 100644 --- a/monitor_wrap.h +++ b/monitor_wrap.h @@ -1,4 +1,4 @@ -/* $OpenBSD: monitor_wrap.h,v 1.37 2018/03/03 03:15:51 djm Exp $ */ +/* $OpenBSD: monitor_wrap.h,v 1.38 2018/07/11 18:53:29 markus Exp $ */ /* * Copyright 2002 Niels Provos @@ -41,8 +41,8 @@ struct sshauthopt; void mm_log_handler(LogLevel, const char *, void *); int mm_is_monitor(void); DH *mm_choose_dh(int, int, int); -int mm_key_sign(struct sshkey *, u_char **, u_int *, const u_char *, u_int, - const char *); +int mm_sshkey_sign(struct sshkey *, u_char **, size_t *, const u_char *, size_t, + const char *, u_int compat); void mm_inform_authserv(char *, char *); struct passwd *mm_getpwnamallow(const char *); char *mm_auth2_read_banner(void); @@ -97,8 +97,4 @@ void mm_send_keystate(struct monitor*); int mm_bsdauth_query(void *, char **, char **, u_int *, char ***, u_int **); int mm_bsdauth_respond(void *, u_int, char **); -/* skey */ -int mm_skey_query(void *, char **, char **, u_int *, char ***, u_int **); -int mm_skey_respond(void *, u_int, char **); - #endif /* _MM_WRAP_H_ */ diff --git a/msg.c b/msg.c index 5a7b8ca91..1bd20f3d3 100644 --- a/msg.c +++ b/msg.c @@ -1,4 +1,4 @@ -/* $OpenBSD: msg.c,v 1.16 2015/01/15 09:40:00 djm Exp $ */ +/* $OpenBSD: msg.c,v 1.17 2018/07/09 21:59:10 markus Exp $ */ /* * Copyright (c) 2002 Markus Friedl. All rights reserved. * @@ -55,7 +55,7 @@ ssh_msg_send(int fd, u_char type, struct sshbuf *m) error("ssh_msg_send: write"); return (-1); } - if (atomicio(vwrite, fd, (u_char *)sshbuf_ptr(m), mlen) != mlen) { + if (atomicio(vwrite, fd, sshbuf_mutable_ptr(m), mlen) != mlen) { error("ssh_msg_send: write"); return (-1); } diff --git a/mux.c b/mux.c index 5ae454410..e607acd08 100644 --- a/mux.c +++ b/mux.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mux.c,v 1.69 2017/09/20 05:19:00 dtucker Exp $ */ +/* $OpenBSD: mux.c,v 1.75 2018/07/31 03:07:24 djm Exp $ */ /* * Copyright (c) 2002-2008 Damien Miller * @@ -70,13 +70,13 @@ #include "pathnames.h" #include "misc.h" #include "match.h" -#include "buffer.h" +#include "sshbuf.h" #include "channels.h" #include "msg.h" #include "packet.h" #include "monitor_fdpass.h" #include "sshpty.h" -#include "key.h" +#include "sshkey.h" #include "readconf.h" #include "clientloop.h" #include "ssherr.h" @@ -87,7 +87,7 @@ extern Options options; extern int stdin_null_flag; extern char *host; extern int subsystem_flag; -extern Buffer command; +extern struct sshbuf *command; extern volatile sig_atomic_t quit_pending; /* Context for session open confirmation callback */ @@ -96,7 +96,7 @@ struct mux_session_confirm_ctx { u_int want_subsys; u_int want_x_fwd; u_int want_agent_fwd; - Buffer cmd; + struct sshbuf *cmd; char *term; struct termios tio; char **env; @@ -279,10 +279,11 @@ env_permitted(char *env) static int process_mux_master_hello(struct ssh *ssh, u_int rid, - Channel *c, Buffer *m, Buffer *r) + Channel *c, struct sshbuf *m, struct sshbuf *reply) { u_int ver; struct mux_master_state *state = (struct mux_master_state *)c->mux_ctx; + int r; if (state == NULL) fatal("%s: channel %d: c->mux_ctx == NULL", __func__, c->self); @@ -290,9 +291,8 @@ process_mux_master_hello(struct ssh *ssh, u_int rid, error("%s: HELLO received twice", __func__); return -1; } - if (buffer_get_int_ret(&ver, m) != 0) { - malf: - error("%s: malformed message", __func__); + if ((r = sshbuf_get_u32(m, &ver)) != 0) { + error("%s: malformed message: %s", __func__, ssh_err(r)); return -1; } if (ver != SSHMUX_VER) { @@ -303,51 +303,72 @@ process_mux_master_hello(struct ssh *ssh, u_int rid, debug2("%s: channel %d slave version %u", __func__, c->self, ver); /* No extensions are presently defined */ - while (buffer_len(m) > 0) { - char *name = buffer_get_string_ret(m, NULL); - char *value = buffer_get_string_ret(m, NULL); + while (sshbuf_len(m) > 0) { + char *name = NULL; - if (name == NULL || value == NULL) { - free(name); - free(value); - goto malf; + if ((r = sshbuf_get_cstring(m, &name, NULL)) != 0 || + (r = sshbuf_skip_string(m)) != 0) { /* value */ + error("%s: malformed extension: %s", + __func__, ssh_err(r)); + return -1; } debug2("Unrecognised slave extension \"%s\"", name); free(name); - free(value); } state->hello_rcvd = 1; return 0; } +/* Enqueue a "ok" response to the reply buffer */ +static void +reply_ok(struct sshbuf *reply, u_int rid) +{ + int r; + + if ((r = sshbuf_put_u32(reply, MUX_S_OK)) != 0 || + (r = sshbuf_put_u32(reply, rid)) != 0) + fatal("%s: reply: %s", __func__, ssh_err(r)); +} + +/* Enqueue an error response to the reply buffer */ +static void +reply_error(struct sshbuf *reply, u_int type, u_int rid, const char *msg) +{ + int r; + + if ((r = sshbuf_put_u32(reply, type)) != 0 || + (r = sshbuf_put_u32(reply, rid)) != 0 || + (r = sshbuf_put_cstring(reply, msg)) != 0) + fatal("%s: reply: %s", __func__, ssh_err(r)); +} + static int process_mux_new_session(struct ssh *ssh, u_int rid, - Channel *c, Buffer *m, Buffer *r) + Channel *c, struct sshbuf *m, struct sshbuf *reply) { Channel *nc; struct mux_session_confirm_ctx *cctx; - char *reserved, *cmd, *cp; - u_int i, j, len, env_len, escape_char, window, packetmax; - int new_fd[3]; + char *cmd, *cp; + u_int i, j, env_len, escape_char, window, packetmax; + int r, new_fd[3]; /* Reply for SSHMUX_COMMAND_OPEN */ cctx = xcalloc(1, sizeof(*cctx)); cctx->term = NULL; cctx->rid = rid; - cmd = reserved = NULL; + cmd = NULL; cctx->env = NULL; env_len = 0; - if ((reserved = buffer_get_string_ret(m, NULL)) == NULL || - buffer_get_int_ret(&cctx->want_tty, m) != 0 || - buffer_get_int_ret(&cctx->want_x_fwd, m) != 0 || - buffer_get_int_ret(&cctx->want_agent_fwd, m) != 0 || - buffer_get_int_ret(&cctx->want_subsys, m) != 0 || - buffer_get_int_ret(&escape_char, m) != 0 || - (cctx->term = buffer_get_string_ret(m, &len)) == NULL || - (cmd = buffer_get_string_ret(m, &len)) == NULL) { + if ((r = sshbuf_skip_string(m)) != 0 || /* reserved */ + (r = sshbuf_get_u32(m, &cctx->want_tty)) != 0 || + (r = sshbuf_get_u32(m, &cctx->want_x_fwd)) != 0 || + (r = sshbuf_get_u32(m, &cctx->want_agent_fwd)) != 0 || + (r = sshbuf_get_u32(m, &cctx->want_subsys)) != 0 || + (r = sshbuf_get_u32(m, &escape_char)) != 0 || + (r = sshbuf_get_cstring(m, &cctx->term, NULL)) != 0 || + (r = sshbuf_get_cstring(m, &cmd, NULL)) != 0) { malf: free(cmd); - free(reserved); for (j = 0; j < env_len; j++) free(cctx->env[j]); free(cctx->env); @@ -356,12 +377,10 @@ process_mux_new_session(struct ssh *ssh, u_int rid, error("%s: malformed message", __func__); return -1; } - free(reserved); - reserved = NULL; - while (buffer_len(m) > 0) { #define MUX_MAX_ENV_VARS 4096 - if ((cp = buffer_get_string_ret(m, &len)) == NULL) + while (sshbuf_len(m) > 0) { + if ((r = sshbuf_get_cstring(m, &cp, NULL)) != 0) goto malf; if (!env_permitted(cp)) { free(cp); @@ -383,8 +402,10 @@ process_mux_new_session(struct ssh *ssh, u_int rid, cctx->want_tty, cctx->want_x_fwd, cctx->want_agent_fwd, cctx->want_subsys, cctx->term, cmd, env_len); - buffer_init(&cctx->cmd); - buffer_append(&cctx->cmd, cmd, strlen(cmd)); + if ((cctx->cmd = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); + if ((r = sshbuf_put(cctx->cmd, cmd, strlen(cmd))) != 0) + fatal("%s: sshbuf_put: %s", __func__, ssh_err(r)); free(cmd); cmd = NULL; @@ -399,13 +420,9 @@ process_mux_new_session(struct ssh *ssh, u_int rid, free(cctx->env[j]); free(cctx->env); free(cctx->term); - buffer_free(&cctx->cmd); + sshbuf_free(cctx->cmd); free(cctx); - - /* prepare reply */ - buffer_put_int(r, MUX_S_FAILURE); - buffer_put_int(r, rid); - buffer_put_cstring(r, + reply_error(reply, MUX_S_FAILURE, rid, "did not receive file descriptors"); return -1; } @@ -417,10 +434,8 @@ process_mux_new_session(struct ssh *ssh, u_int rid, /* XXX support multiple child sessions in future */ if (c->have_remote_id) { debug2("%s: session already open", __func__); - /* prepare reply */ - buffer_put_int(r, MUX_S_FAILURE); - buffer_put_int(r, rid); - buffer_put_cstring(r, "Multiple sessions not supported"); + reply_error(reply, MUX_S_FAILURE, rid, + "Multiple sessions not supported"); cleanup: close(new_fd[0]); close(new_fd[1]); @@ -431,7 +446,7 @@ process_mux_new_session(struct ssh *ssh, u_int rid, free(cctx->env[i]); free(cctx->env); } - buffer_free(&cctx->cmd); + sshbuf_free(cctx->cmd); free(cctx); return 0; } @@ -440,10 +455,8 @@ process_mux_new_session(struct ssh *ssh, u_int rid, options.control_master == SSHCTL_MASTER_AUTO_ASK) { if (!ask_permission("Allow shared connection to %s? ", host)) { debug2("%s: session refused by user", __func__); - /* prepare reply */ - buffer_put_int(r, MUX_S_PERMISSION_DENIED); - buffer_put_int(r, rid); - buffer_put_cstring(r, "Permission denied"); + reply_error(reply, MUX_S_PERMISSION_DENIED, rid, + "Permission denied"); goto cleanup; } } @@ -497,21 +510,24 @@ process_mux_new_session(struct ssh *ssh, u_int rid, static int process_mux_alive_check(struct ssh *ssh, u_int rid, - Channel *c, Buffer *m, Buffer *r) + Channel *c, struct sshbuf *m, struct sshbuf *reply) { + int r; + debug2("%s: channel %d: alive check", __func__, c->self); /* prepare reply */ - buffer_put_int(r, MUX_S_ALIVE); - buffer_put_int(r, rid); - buffer_put_int(r, (u_int)getpid()); + if ((r = sshbuf_put_u32(reply, MUX_S_ALIVE)) != 0 || + (r = sshbuf_put_u32(reply, rid)) != 0 || + (r = sshbuf_put_u32(reply, (u_int)getpid())) != 0) + fatal("%s: reply: %s", __func__, ssh_err(r)); return 0; } static int process_mux_terminate(struct ssh *ssh, u_int rid, - Channel *c, Buffer *m, Buffer *r) + Channel *c, struct sshbuf *m, struct sshbuf *reply) { debug2("%s: channel %d: terminate request", __func__, c->self); @@ -520,16 +536,14 @@ process_mux_terminate(struct ssh *ssh, u_int rid, if (!ask_permission("Terminate shared connection to %s? ", host)) { debug2("%s: termination refused by user", __func__); - buffer_put_int(r, MUX_S_PERMISSION_DENIED); - buffer_put_int(r, rid); - buffer_put_cstring(r, "Permission denied"); + reply_error(reply, MUX_S_PERMISSION_DENIED, rid, + "Permission denied"); return 0; } } quit_pending = 1; - buffer_put_int(r, MUX_S_OK); - buffer_put_int(r, rid); + reply_ok(reply, rid); /* XXX exit happens too soon - message never makes it to client */ return 0; } @@ -606,14 +620,16 @@ mux_confirm_remote_forward(struct ssh *ssh, int type, u_int32_t seq, void *ctxt) char *failmsg = NULL; struct Forward *rfwd; Channel *c; - Buffer out; + struct sshbuf *out; + int r; if ((c = channel_by_id(ssh, fctx->cid)) == NULL) { /* no channel for reply */ error("%s: unknown channel", __func__); return; } - buffer_init(&out); + if ((out = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); if (fctx->fid >= options.num_remote_forwards || (options.remote_forwards[fctx->fid].connect_path == NULL && options.remote_forwards[fctx->fid].connect_host == NULL)) { @@ -631,19 +647,21 @@ mux_confirm_remote_forward(struct ssh *ssh, int type, u_int32_t seq, void *ctxt) debug("Allocated port %u for mux remote forward" " to %s:%d", rfwd->allocated_port, rfwd->connect_host, rfwd->connect_port); - buffer_put_int(&out, MUX_S_REMOTE_PORT); - buffer_put_int(&out, fctx->rid); - buffer_put_int(&out, rfwd->allocated_port); - channel_update_permitted_opens(ssh, rfwd->handle, + if ((r = sshbuf_put_u32(out, + MUX_S_REMOTE_PORT)) != 0 || + (r = sshbuf_put_u32(out, fctx->rid)) != 0 || + (r = sshbuf_put_u32(out, + rfwd->allocated_port)) != 0) + fatal("%s: reply: %s", __func__, ssh_err(r)); + channel_update_permission(ssh, rfwd->handle, rfwd->allocated_port); } else { - buffer_put_int(&out, MUX_S_OK); - buffer_put_int(&out, fctx->rid); + reply_ok(out, fctx->rid); } goto out; } else { if (rfwd->listen_port == 0) - channel_update_permitted_opens(ssh, rfwd->handle, -1); + channel_update_permission(ssh, rfwd->handle, -1); if (rfwd->listen_path != NULL) xasprintf(&failmsg, "remote port forwarding failed for " "listen path %s", rfwd->listen_path); @@ -664,13 +682,12 @@ mux_confirm_remote_forward(struct ssh *ssh, int type, u_int32_t seq, void *ctxt) } fail: error("%s: %s", __func__, failmsg); - buffer_put_int(&out, MUX_S_FAILURE); - buffer_put_int(&out, fctx->rid); - buffer_put_cstring(&out, failmsg); + reply_error(out, MUX_S_FAILURE, fctx->rid, failmsg); free(failmsg); out: - buffer_put_string(c->output, buffer_ptr(&out), buffer_len(&out)); - buffer_free(&out); + if ((r = sshbuf_put_stringb(c->output, out)) != 0) + fatal("%s: sshbuf_put_stringb: %s", __func__, ssh_err(r)); + sshbuf_free(out); if (c->mux_pause <= 0) fatal("%s: mux_pause %d", __func__, c->mux_pause); c->mux_pause = 0; /* start processing messages again */ @@ -678,23 +695,23 @@ mux_confirm_remote_forward(struct ssh *ssh, int type, u_int32_t seq, void *ctxt) static int process_mux_open_fwd(struct ssh *ssh, u_int rid, - Channel *c, Buffer *m, Buffer *r) + Channel *c, struct sshbuf *m, struct sshbuf *reply) { struct Forward fwd; char *fwd_desc = NULL; char *listen_addr, *connect_addr; u_int ftype; u_int lport, cport; - int i, ret = 0, freefwd = 1; + int r, i, ret = 0, freefwd = 1; memset(&fwd, 0, sizeof(fwd)); /* XXX - lport/cport check redundant */ - if (buffer_get_int_ret(&ftype, m) != 0 || - (listen_addr = buffer_get_string_ret(m, NULL)) == NULL || - buffer_get_int_ret(&lport, m) != 0 || - (connect_addr = buffer_get_string_ret(m, NULL)) == NULL || - buffer_get_int_ret(&cport, m) != 0 || + if ((r = sshbuf_get_u32(m, &ftype)) != 0 || + (r = sshbuf_get_cstring(m, &listen_addr, NULL)) != 0 || + (r = sshbuf_get_u32(m, &lport)) != 0 || + (r = sshbuf_get_cstring(m, &connect_addr, NULL)) != 0 || + (r = sshbuf_get_u32(m, &cport)) != 0 || (lport != (u_int)PORT_STREAMLOCAL && lport > 65535) || (cport != (u_int)PORT_STREAMLOCAL && cport > 65535)) { error("%s: malformed message", __func__); @@ -731,9 +748,8 @@ process_mux_open_fwd(struct ssh *ssh, u_int rid, invalid: free(listen_addr); free(connect_addr); - buffer_put_int(r, MUX_S_FAILURE); - buffer_put_int(r, rid); - buffer_put_cstring(r, "Invalid forwarding request"); + reply_error(reply, MUX_S_FAILURE, rid, + "Invalid forwarding request"); return 0; } if (ftype == MUX_FWD_DYNAMIC && fwd.listen_path) { @@ -770,26 +786,25 @@ process_mux_open_fwd(struct ssh *ssh, u_int rid, exists: debug2("%s: found existing forwarding", __func__); - buffer_put_int(r, MUX_S_OK); - buffer_put_int(r, rid); + reply_ok(reply, rid); goto out; } } break; case MUX_FWD_REMOTE: for (i = 0; i < options.num_remote_forwards; i++) { - if (compare_forward(&fwd, - options.remote_forwards + i)) { - if (fwd.listen_port != 0) - goto exists; - debug2("%s: found allocated port", - __func__); - buffer_put_int(r, MUX_S_REMOTE_PORT); - buffer_put_int(r, rid); - buffer_put_int(r, - options.remote_forwards[i].allocated_port); - goto out; - } + if (!compare_forward(&fwd, options.remote_forwards + i)) + continue; + if (fwd.listen_port != 0) + goto exists; + debug2("%s: found allocated port", __func__); + if ((r = sshbuf_put_u32(reply, + MUX_S_REMOTE_PORT)) != 0 || + (r = sshbuf_put_u32(reply, rid)) != 0 || + (r = sshbuf_put_u32(reply, + options.remote_forwards[i].allocated_port)) != 0) + fatal("%s: reply: %s", __func__, ssh_err(r)); + goto out; } break; } @@ -798,9 +813,8 @@ process_mux_open_fwd(struct ssh *ssh, u_int rid, options.control_master == SSHCTL_MASTER_AUTO_ASK) { if (!ask_permission("Open %s on %s?", fwd_desc, host)) { debug2("%s: forwarding refused by user", __func__); - buffer_put_int(r, MUX_S_PERMISSION_DENIED); - buffer_put_int(r, rid); - buffer_put_cstring(r, "Permission denied"); + reply_error(reply, MUX_S_PERMISSION_DENIED, rid, + "Permission denied"); goto out; } } @@ -810,9 +824,8 @@ process_mux_open_fwd(struct ssh *ssh, u_int rid, &options.fwd_opts)) { fail: logit("slave-requested %s failed", fwd_desc); - buffer_put_int(r, MUX_S_FAILURE); - buffer_put_int(r, rid); - buffer_put_cstring(r, "Port forwarding failed"); + reply_error(reply, MUX_S_FAILURE, rid, + "Port forwarding failed"); goto out; } add_local_forward(&options, &fwd); @@ -835,8 +848,7 @@ process_mux_open_fwd(struct ssh *ssh, u_int rid, /* delayed reply in mux_confirm_remote_forward */ goto out; } - buffer_put_int(r, MUX_S_OK); - buffer_put_int(r, rid); + reply_ok(reply, rid); out: free(fwd_desc); if (freefwd) { @@ -850,23 +862,23 @@ process_mux_open_fwd(struct ssh *ssh, u_int rid, static int process_mux_close_fwd(struct ssh *ssh, u_int rid, - Channel *c, Buffer *m, Buffer *r) + Channel *c, struct sshbuf *m, struct sshbuf *reply) { struct Forward fwd, *found_fwd; char *fwd_desc = NULL; const char *error_reason = NULL; char *listen_addr = NULL, *connect_addr = NULL; u_int ftype; - int i, ret = 0; + int r, i, ret = 0; u_int lport, cport; memset(&fwd, 0, sizeof(fwd)); - if (buffer_get_int_ret(&ftype, m) != 0 || - (listen_addr = buffer_get_string_ret(m, NULL)) == NULL || - buffer_get_int_ret(&lport, m) != 0 || - (connect_addr = buffer_get_string_ret(m, NULL)) == NULL || - buffer_get_int_ret(&cport, m) != 0 || + if ((r = sshbuf_get_u32(m, &ftype)) != 0 || + (r = sshbuf_get_cstring(m, &listen_addr, NULL)) != 0 || + (r = sshbuf_get_u32(m, &lport)) != 0 || + (r = sshbuf_get_cstring(m, &connect_addr, NULL)) != 0 || + (r = sshbuf_get_u32(m, &cport)) != 0 || (lport != (u_int)PORT_STREAMLOCAL && lport > 65535) || (cport != (u_int)PORT_STREAMLOCAL && cport > 65535)) { error("%s: malformed message", __func__); @@ -940,10 +952,10 @@ process_mux_close_fwd(struct ssh *ssh, u_int rid, error_reason = "port not found"; } - if (error_reason == NULL) { - buffer_put_int(r, MUX_S_OK); - buffer_put_int(r, rid); - + if (error_reason != NULL) + reply_error(reply, MUX_S_FAILURE, rid, error_reason); + else { + reply_ok(reply, rid); free(found_fwd->listen_host); free(found_fwd->listen_path); free(found_fwd->connect_host); @@ -951,10 +963,6 @@ process_mux_close_fwd(struct ssh *ssh, u_int rid, found_fwd->listen_host = found_fwd->connect_host = NULL; found_fwd->listen_path = found_fwd->connect_path = NULL; found_fwd->listen_port = found_fwd->connect_port = 0; - } else { - buffer_put_int(r, MUX_S_FAILURE); - buffer_put_int(r, rid); - buffer_put_cstring(r, error_reason); } out: free(fwd_desc); @@ -966,24 +974,21 @@ process_mux_close_fwd(struct ssh *ssh, u_int rid, static int process_mux_stdio_fwd(struct ssh *ssh, u_int rid, - Channel *c, Buffer *m, Buffer *r) + Channel *c, struct sshbuf *m, struct sshbuf *reply) { Channel *nc; - char *reserved, *chost; + char *chost = NULL; u_int cport, i, j; - int new_fd[2]; + int r, new_fd[2]; struct mux_stdio_confirm_ctx *cctx; - chost = reserved = NULL; - if ((reserved = buffer_get_string_ret(m, NULL)) == NULL || - (chost = buffer_get_string_ret(m, NULL)) == NULL || - buffer_get_int_ret(&cport, m) != 0) { - free(reserved); + if ((r = sshbuf_skip_string(m)) != 0 || /* reserved */ + (r = sshbuf_get_cstring(m, &chost, NULL)) != 0 || + (r = sshbuf_get_u32(m, &cport)) != 0) { free(chost); error("%s: malformed message", __func__); return -1; } - free(reserved); debug2("%s: channel %d: request stdio fwd to %s:%u", __func__, c->self, chost, cport); @@ -998,9 +1003,7 @@ process_mux_stdio_fwd(struct ssh *ssh, u_int rid, free(chost); /* prepare reply */ - buffer_put_int(r, MUX_S_FAILURE); - buffer_put_int(r, rid); - buffer_put_cstring(r, + reply_error(reply, MUX_S_FAILURE, rid, "did not receive file descriptors"); return -1; } @@ -1012,10 +1015,8 @@ process_mux_stdio_fwd(struct ssh *ssh, u_int rid, /* XXX support multiple child sessions in future */ if (c->have_remote_id) { debug2("%s: session already open", __func__); - /* prepare reply */ - buffer_put_int(r, MUX_S_FAILURE); - buffer_put_int(r, rid); - buffer_put_cstring(r, "Multiple sessions not supported"); + reply_error(reply, MUX_S_FAILURE, rid, + "Multiple sessions not supported"); cleanup: close(new_fd[0]); close(new_fd[1]); @@ -1028,10 +1029,8 @@ process_mux_stdio_fwd(struct ssh *ssh, u_int rid, if (!ask_permission("Allow forward to %s:%u? ", chost, cport)) { debug2("%s: stdio fwd refused by user", __func__); - /* prepare reply */ - buffer_put_int(r, MUX_S_PERMISSION_DENIED); - buffer_put_int(r, rid); - buffer_put_cstring(r, "Permission denied"); + reply_error(reply, MUX_S_PERMISSION_DENIED, rid, + "Permission denied"); goto cleanup; } } @@ -1043,6 +1042,7 @@ process_mux_stdio_fwd(struct ssh *ssh, u_int rid, set_nonblock(new_fd[1]); nc = channel_connect_stdio_fwd(ssh, chost, cport, new_fd[0], new_fd[1]); + free(chost); nc->ctl_chan = c->self; /* link session -> control channel */ c->remote_id = nc->self; /* link control -> session channel */ @@ -1069,7 +1069,8 @@ mux_stdio_confirm(struct ssh *ssh, int id, int success, void *arg) { struct mux_stdio_confirm_ctx *cctx = arg; Channel *c, *cc; - Buffer reply; + struct sshbuf *reply; + int r; if (cctx == NULL) fatal("%s: cctx == NULL", __func__); @@ -1078,28 +1079,29 @@ mux_stdio_confirm(struct ssh *ssh, int id, int success, void *arg) if ((cc = channel_by_id(ssh, c->ctl_chan)) == NULL) fatal("%s: channel %d lacks control channel %d", __func__, id, c->ctl_chan); + if ((reply = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); if (!success) { debug3("%s: sending failure reply", __func__); + reply_error(reply, MUX_S_FAILURE, cctx->rid, + "Session open refused by peer"); /* prepare reply */ - buffer_init(&reply); - buffer_put_int(&reply, MUX_S_FAILURE); - buffer_put_int(&reply, cctx->rid); - buffer_put_cstring(&reply, "Session open refused by peer"); goto done; } debug3("%s: sending success reply", __func__); /* prepare reply */ - buffer_init(&reply); - buffer_put_int(&reply, MUX_S_SESSION_OPENED); - buffer_put_int(&reply, cctx->rid); - buffer_put_int(&reply, c->self); + if ((r = sshbuf_put_u32(reply, MUX_S_SESSION_OPENED)) != 0 || + (r = sshbuf_put_u32(reply, cctx->rid)) != 0 || + (r = sshbuf_put_u32(reply, c->self)) != 0) + fatal("%s: reply: %s", __func__, ssh_err(r)); done: /* Send reply */ - buffer_put_string(cc->output, buffer_ptr(&reply), buffer_len(&reply)); - buffer_free(&reply); + if ((r = sshbuf_put_stringb(cc->output, reply)) != 0) + fatal("%s: sshbuf_put_stringb: %s", __func__, ssh_err(r)); + sshbuf_free(reply); if (cc->mux_pause <= 0) fatal("%s: mux_pause %d", __func__, cc->mux_pause); @@ -1110,7 +1112,7 @@ mux_stdio_confirm(struct ssh *ssh, int id, int success, void *arg) static int process_mux_stop_listening(struct ssh *ssh, u_int rid, - Channel *c, Buffer *m, Buffer *r) + Channel *c, struct sshbuf *m, struct sshbuf *reply) { debug("%s: channel %d: stop listening", __func__, c->self); @@ -1119,9 +1121,8 @@ process_mux_stop_listening(struct ssh *ssh, u_int rid, if (!ask_permission("Disable further multiplexing on shared " "connection to %s? ", host)) { debug2("%s: stop listen refused by user", __func__); - buffer_put_int(r, MUX_S_PERMISSION_DENIED); - buffer_put_int(r, rid); - buffer_put_cstring(r, "Permission denied"); + reply_error(reply, MUX_S_PERMISSION_DENIED, rid, + "Permission denied"); return 0; } } @@ -1135,22 +1136,22 @@ process_mux_stop_listening(struct ssh *ssh, u_int rid, muxserver_sock = -1; } - /* prepare reply */ - buffer_put_int(r, MUX_S_OK); - buffer_put_int(r, rid); - + reply_ok(reply, rid); return 0; } static int process_mux_proxy(struct ssh *ssh, u_int rid, - Channel *c, Buffer *m, Buffer *r) + Channel *c, struct sshbuf *m, struct sshbuf *reply) { + int r; + debug("%s: channel %d: proxy request", __func__, c->self); c->mux_rcb = channel_proxy_downstream; - buffer_put_int(r, MUX_S_PROXY); - buffer_put_int(r, rid); + if ((r = sshbuf_put_u32(reply, MUX_S_PROXY)) != 0 || + (r = sshbuf_put_u32(reply, rid)) != 0) + fatal("%s: reply: %s", __func__, ssh_err(r)); return 0; } @@ -1160,10 +1161,12 @@ static int mux_master_read_cb(struct ssh *ssh, Channel *c) { struct mux_master_state *state = (struct mux_master_state *)c->mux_ctx; - Buffer in, out; - const u_char *ptr; - u_int type, rid, have, i; - int ret = -1; + struct sshbuf *in = NULL, *out = NULL; + u_int type, rid, i; + int r, ret = -1; + + if ((out = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); /* Setup ctx and */ if (c->mux_ctx == NULL) { @@ -1173,32 +1176,29 @@ mux_master_read_cb(struct ssh *ssh, Channel *c) mux_master_control_cleanup_cb, 0); /* Send hello */ - buffer_init(&out); - buffer_put_int(&out, MUX_MSG_HELLO); - buffer_put_int(&out, SSHMUX_VER); + if ((r = sshbuf_put_u32(out, MUX_MSG_HELLO)) != 0 || + (r = sshbuf_put_u32(out, SSHMUX_VER)) != 0) + fatal("%s: reply: %s", __func__, ssh_err(r)); /* no extensions */ - buffer_put_string(c->output, buffer_ptr(&out), - buffer_len(&out)); - buffer_free(&out); + if ((r = sshbuf_put_stringb(c->output, out)) != 0) + fatal("%s: sshbuf_put_stringb: %s", + __func__, ssh_err(r)); debug3("%s: channel %d: hello sent", __func__, c->self); - return 0; + ret = 0; + goto out; } - buffer_init(&in); - buffer_init(&out); - /* Channel code ensures that we receive whole packets */ - if ((ptr = buffer_get_string_ptr_ret(c->input, &have)) == NULL) { + if ((r = sshbuf_froms(c->input, &in)) != 0) { malf: error("%s: malformed message", __func__); goto out; } - buffer_append(&in, ptr, have); - if (buffer_get_int_ret(&type, &in) != 0) + if ((r = sshbuf_get_u32(in, &type)) != 0) goto malf; - debug3("%s: channel %d packet type 0x%08x len %u", - __func__, c->self, type, buffer_len(&in)); + debug3("%s: channel %d packet type 0x%08x len %zu", + __func__, c->self, type, sshbuf_len(in)); if (type == MUX_MSG_HELLO) rid = 0; @@ -1208,40 +1208,40 @@ mux_master_read_cb(struct ssh *ssh, Channel *c) "received 0x%08x", __func__, MUX_MSG_HELLO, type); goto out; } - if (buffer_get_int_ret(&rid, &in) != 0) + if ((r = sshbuf_get_u32(in, &rid)) != 0) goto malf; } for (i = 0; mux_master_handlers[i].handler != NULL; i++) { if (type == mux_master_handlers[i].type) { ret = mux_master_handlers[i].handler(ssh, rid, - c, &in, &out); + c, in, out); break; } } if (mux_master_handlers[i].handler == NULL) { error("%s: unsupported mux message 0x%08x", __func__, type); - buffer_put_int(&out, MUX_S_FAILURE); - buffer_put_int(&out, rid); - buffer_put_cstring(&out, "unsupported request"); + reply_error(out, MUX_S_FAILURE, rid, "unsupported request"); ret = 0; } /* Enqueue reply packet */ - if (buffer_len(&out) != 0) { - buffer_put_string(c->output, buffer_ptr(&out), - buffer_len(&out)); + if (sshbuf_len(out) != 0) { + if ((r = sshbuf_put_stringb(c->output, out)) != 0) + fatal("%s: sshbuf_put_stringb: %s", + __func__, ssh_err(r)); } out: - buffer_free(&in); - buffer_free(&out); + sshbuf_free(in); + sshbuf_free(out); return ret; } void mux_exit_message(struct ssh *ssh, Channel *c, int exitval) { - Buffer m; + struct sshbuf *m; Channel *mux_chan; + int r; debug3("%s: channel %d: exit message, exitval %d", __func__, c->self, exitval); @@ -1251,20 +1251,22 @@ mux_exit_message(struct ssh *ssh, Channel *c, int exitval) __func__, c->self, c->ctl_chan); /* Append exit message packet to control socket output queue */ - buffer_init(&m); - buffer_put_int(&m, MUX_S_EXIT_MESSAGE); - buffer_put_int(&m, c->self); - buffer_put_int(&m, exitval); - - buffer_put_string(mux_chan->output, buffer_ptr(&m), buffer_len(&m)); - buffer_free(&m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); + if ((r = sshbuf_put_u32(m, MUX_S_EXIT_MESSAGE)) != 0 || + (r = sshbuf_put_u32(m, c->self)) != 0 || + (r = sshbuf_put_u32(m, exitval)) != 0 || + (r = sshbuf_put_stringb(mux_chan->output, m)) != 0) + fatal("%s: reply: %s", __func__, ssh_err(r)); + sshbuf_free(m); } void mux_tty_alloc_failed(struct ssh *ssh, Channel *c) { - Buffer m; + struct sshbuf *m; Channel *mux_chan; + int r; debug3("%s: channel %d: TTY alloc failed", __func__, c->self); @@ -1273,12 +1275,13 @@ mux_tty_alloc_failed(struct ssh *ssh, Channel *c) __func__, c->self, c->ctl_chan); /* Append exit message packet to control socket output queue */ - buffer_init(&m); - buffer_put_int(&m, MUX_S_TTY_ALLOC_FAIL); - buffer_put_int(&m, c->self); - - buffer_put_string(mux_chan->output, buffer_ptr(&m), buffer_len(&m)); - buffer_free(&m); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); + if ((r = sshbuf_put_u32(m, MUX_S_TTY_ALLOC_FAIL)) != 0 || + (r = sshbuf_put_u32(m, c->self)) != 0 || + (r = sshbuf_put_stringb(mux_chan->output, m)) != 0) + fatal("%s: reply: %s", __func__, ssh_err(r)); + sshbuf_free(m); } /* Prepare a mux master to listen on a Unix domain socket. */ @@ -1372,8 +1375,8 @@ mux_session_confirm(struct ssh *ssh, int id, int success, void *arg) struct mux_session_confirm_ctx *cctx = arg; const char *display; Channel *c, *cc; - int i; - Buffer reply; + int i, r; + struct sshbuf *reply; if (cctx == NULL) fatal("%s: cctx == NULL", __func__); @@ -1382,14 +1385,13 @@ mux_session_confirm(struct ssh *ssh, int id, int success, void *arg) if ((cc = channel_by_id(ssh, c->ctl_chan)) == NULL) fatal("%s: channel %d lacks control channel %d", __func__, id, c->ctl_chan); + if ((reply = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); if (!success) { debug3("%s: sending failure reply", __func__); - /* prepare reply */ - buffer_init(&reply); - buffer_put_int(&reply, MUX_S_FAILURE); - buffer_put_int(&reply, cctx->rid); - buffer_put_cstring(&reply, "Session open refused by peer"); + reply_error(reply, MUX_S_FAILURE, cctx->rid, + "Session open refused by peer"); goto done; } @@ -1419,25 +1421,26 @@ mux_session_confirm(struct ssh *ssh, int id, int success, void *arg) } client_session2_setup(ssh, id, cctx->want_tty, cctx->want_subsys, - cctx->term, &cctx->tio, c->rfd, &cctx->cmd, cctx->env); + cctx->term, &cctx->tio, c->rfd, cctx->cmd, cctx->env); debug3("%s: sending success reply", __func__); /* prepare reply */ - buffer_init(&reply); - buffer_put_int(&reply, MUX_S_SESSION_OPENED); - buffer_put_int(&reply, cctx->rid); - buffer_put_int(&reply, c->self); + if ((r = sshbuf_put_u32(reply, MUX_S_SESSION_OPENED)) != 0 || + (r = sshbuf_put_u32(reply, cctx->rid)) != 0 || + (r = sshbuf_put_u32(reply, c->self)) != 0) + fatal("%s: reply: %s", __func__, ssh_err(r)); done: /* Send reply */ - buffer_put_string(cc->output, buffer_ptr(&reply), buffer_len(&reply)); - buffer_free(&reply); + if ((r = sshbuf_put_stringb(cc->output, reply)) != 0) + fatal("%s: sshbuf_put_stringb: %s", __func__, ssh_err(r)); + sshbuf_free(reply); if (cc->mux_pause <= 0) fatal("%s: mux_pause %d", __func__, cc->mux_pause); cc->mux_pause = 0; /* start processing messages again */ c->open_confirm_ctx = NULL; - buffer_free(&cctx->cmd); + sshbuf_free(cctx->cmd); free(cctx->term); if (cctx->env != NULL) { for (i = 0; cctx->env[i] != NULL; i++) @@ -1472,16 +1475,18 @@ control_client_sigrelay(int signo) } static int -mux_client_read(int fd, Buffer *b, u_int need) +mux_client_read(int fd, struct sshbuf *b, size_t need) { - u_int have; + size_t have; ssize_t len; u_char *p; struct pollfd pfd; + int r; pfd.fd = fd; pfd.events = POLLIN; - p = buffer_append_space(b, need); + if ((r = sshbuf_reserve(b, need, &p)) != 0) + fatal("%s: reserve: %s", __func__, ssh_err(r)); for (have = 0; have < need; ) { if (muxclient_terminate) { errno = EINTR; @@ -1506,31 +1511,33 @@ mux_client_read(int fd, Buffer *b, u_int need) errno = EPIPE; return -1; } - have += (u_int)len; + have += (size_t)len; } return 0; } static int -mux_client_write_packet(int fd, Buffer *m) +mux_client_write_packet(int fd, struct sshbuf *m) { - Buffer queue; + struct sshbuf *queue; u_int have, need; - int oerrno, len; - u_char *ptr; + int r, oerrno, len; + const u_char *ptr; struct pollfd pfd; pfd.fd = fd; pfd.events = POLLOUT; - buffer_init(&queue); - buffer_put_string(&queue, buffer_ptr(m), buffer_len(m)); + if ((queue = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); + if ((r = sshbuf_put_stringb(queue, m)) != 0) + fatal("%s: sshbuf_put_stringb: %s", __func__, ssh_err(r)); - need = buffer_len(&queue); - ptr = buffer_ptr(&queue); + need = sshbuf_len(queue); + ptr = sshbuf_ptr(queue); for (have = 0; have < need; ) { if (muxclient_terminate) { - buffer_free(&queue); + sshbuf_free(queue); errno = EINTR; return -1; } @@ -1547,85 +1554,91 @@ mux_client_write_packet(int fd, Buffer *m) continue; default: oerrno = errno; - buffer_free(&queue); + sshbuf_free(queue); errno = oerrno; return -1; } } if (len == 0) { - buffer_free(&queue); + sshbuf_free(queue); errno = EPIPE; return -1; } have += (u_int)len; } - buffer_free(&queue); + sshbuf_free(queue); return 0; } static int -mux_client_read_packet(int fd, Buffer *m) +mux_client_read_packet(int fd, struct sshbuf *m) { - Buffer queue; - u_int need, have; + struct sshbuf *queue; + size_t need, have; const u_char *ptr; - int oerrno; + int r, oerrno; - buffer_init(&queue); - if (mux_client_read(fd, &queue, 4) != 0) { + if ((queue = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); + if (mux_client_read(fd, queue, 4) != 0) { if ((oerrno = errno) == EPIPE) debug3("%s: read header failed: %s", __func__, strerror(errno)); - buffer_free(&queue); + sshbuf_free(queue); errno = oerrno; return -1; } - need = get_u32(buffer_ptr(&queue)); - if (mux_client_read(fd, &queue, need) != 0) { + need = PEEK_U32(sshbuf_ptr(queue)); + if (mux_client_read(fd, queue, need) != 0) { oerrno = errno; debug3("%s: read body failed: %s", __func__, strerror(errno)); - buffer_free(&queue); + sshbuf_free(queue); errno = oerrno; return -1; } - ptr = buffer_get_string_ptr(&queue, &have); - buffer_append(m, ptr, have); - buffer_free(&queue); + if ((r = sshbuf_get_string_direct(queue, &ptr, &have)) != 0 || + (r = sshbuf_put(m, ptr, have)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + sshbuf_free(queue); return 0; } static int mux_client_hello_exchange(int fd) { - Buffer m; + struct sshbuf *m; u_int type, ver; - int ret = -1; + int r, ret = -1; - buffer_init(&m); - buffer_put_int(&m, MUX_MSG_HELLO); - buffer_put_int(&m, SSHMUX_VER); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); + if ((r = sshbuf_put_u32(m, MUX_MSG_HELLO)) != 0 || + (r = sshbuf_put_u32(m, SSHMUX_VER)) != 0) + fatal("%s: hello: %s", __func__, ssh_err(r)); /* no extensions */ - if (mux_client_write_packet(fd, &m) != 0) { + if (mux_client_write_packet(fd, m) != 0) { debug("%s: write packet: %s", __func__, strerror(errno)); goto out; } - buffer_clear(&m); + sshbuf_reset(m); /* Read their HELLO */ - if (mux_client_read_packet(fd, &m) != 0) { + if (mux_client_read_packet(fd, m) != 0) { debug("%s: read packet failed", __func__); goto out; } - type = buffer_get_int(&m); + if ((r = sshbuf_get_u32(m, &type)) != 0) + fatal("%s: decode type: %s", __func__, ssh_err(r)); if (type != MUX_MSG_HELLO) { error("%s: expected HELLO (%u) received %u", __func__, MUX_MSG_HELLO, type); goto out; } - ver = buffer_get_int(&m); + if ((r = sshbuf_get_u32(m, &ver)) != 0) + fatal("%s: decode version: %s", __func__, ssh_err(r)); if (ver != SSHMUX_VER) { error("Unsupported multiplexing protocol version %d " "(expected %d)", ver, SSHMUX_VER); @@ -1633,56 +1646,68 @@ mux_client_hello_exchange(int fd) } debug2("%s: master version %u", __func__, ver); /* No extensions are presently defined */ - while (buffer_len(&m) > 0) { - char *name = buffer_get_string(&m, NULL); - char *value = buffer_get_string(&m, NULL); + while (sshbuf_len(m) > 0) { + char *name = NULL; + if ((r = sshbuf_get_cstring(m, &name, NULL)) != 0 || + (r = sshbuf_skip_string(m)) != 0) { /* value */ + error("%s: malformed extension: %s", + __func__, ssh_err(r)); + goto out; + } debug2("Unrecognised master extension \"%s\"", name); free(name); - free(value); } /* success */ ret = 0; out: - buffer_free(&m); + sshbuf_free(m); return ret; } static u_int mux_client_request_alive(int fd) { - Buffer m; + struct sshbuf *m; char *e; u_int pid, type, rid; + int r; debug3("%s: entering", __func__); - buffer_init(&m); - buffer_put_int(&m, MUX_C_ALIVE_CHECK); - buffer_put_int(&m, muxclient_request_id); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); + if ((r = sshbuf_put_u32(m, MUX_C_ALIVE_CHECK)) != 0 || + (r = sshbuf_put_u32(m, muxclient_request_id)) != 0) + fatal("%s: request: %s", __func__, ssh_err(r)); - if (mux_client_write_packet(fd, &m) != 0) + if (mux_client_write_packet(fd, m) != 0) fatal("%s: write packet: %s", __func__, strerror(errno)); - buffer_clear(&m); + sshbuf_reset(m); /* Read their reply */ - if (mux_client_read_packet(fd, &m) != 0) { - buffer_free(&m); + if (mux_client_read_packet(fd, m) != 0) { + sshbuf_free(m); return 0; } - type = buffer_get_int(&m); + if ((r = sshbuf_get_u32(m, &type)) != 0) + fatal("%s: decode type: %s", __func__, ssh_err(r)); if (type != MUX_S_ALIVE) { - e = buffer_get_string(&m, NULL); + if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0) + fatal("%s: decode error: %s", __func__, ssh_err(r)); fatal("%s: master returned error: %s", __func__, e); } - if ((rid = buffer_get_int(&m)) != muxclient_request_id) + if ((r = sshbuf_get_u32(m, &rid)) != 0) + fatal("%s: decode remote ID: %s", __func__, ssh_err(r)); + if (rid != muxclient_request_id) fatal("%s: out of sequence reply: my id %u theirs %u", __func__, muxclient_request_id, rid); - pid = buffer_get_int(&m); - buffer_free(&m); + if ((r = sshbuf_get_u32(m, &pid)) != 0) + fatal("%s: decode PID: %s", __func__, ssh_err(r)); + sshbuf_free(m); debug3("%s: done pid = %u", __func__, pid); @@ -1694,107 +1719,128 @@ mux_client_request_alive(int fd) static void mux_client_request_terminate(int fd) { - Buffer m; + struct sshbuf *m; char *e; u_int type, rid; + int r; debug3("%s: entering", __func__); - buffer_init(&m); - buffer_put_int(&m, MUX_C_TERMINATE); - buffer_put_int(&m, muxclient_request_id); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); + if ((r = sshbuf_put_u32(m, MUX_C_TERMINATE)) != 0 || + (r = sshbuf_put_u32(m, muxclient_request_id)) != 0) + fatal("%s: request: %s", __func__, ssh_err(r)); - if (mux_client_write_packet(fd, &m) != 0) + if (mux_client_write_packet(fd, m) != 0) fatal("%s: write packet: %s", __func__, strerror(errno)); - buffer_clear(&m); + sshbuf_reset(m); /* Read their reply */ - if (mux_client_read_packet(fd, &m) != 0) { + if (mux_client_read_packet(fd, m) != 0) { /* Remote end exited already */ if (errno == EPIPE) { - buffer_free(&m); + sshbuf_free(m); return; } fatal("%s: read from master failed: %s", __func__, strerror(errno)); } - type = buffer_get_int(&m); - if ((rid = buffer_get_int(&m)) != muxclient_request_id) + if ((r = sshbuf_get_u32(m, &type)) != 0 || + (r = sshbuf_get_u32(m, &rid)) != 0) + fatal("%s: decode: %s", __func__, ssh_err(r)); + if (rid != muxclient_request_id) fatal("%s: out of sequence reply: my id %u theirs %u", __func__, muxclient_request_id, rid); switch (type) { case MUX_S_OK: break; case MUX_S_PERMISSION_DENIED: - e = buffer_get_string(&m, NULL); + if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0) + fatal("%s: decode error: %s", __func__, ssh_err(r)); fatal("Master refused termination request: %s", e); case MUX_S_FAILURE: - e = buffer_get_string(&m, NULL); + if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0) + fatal("%s: decode error: %s", __func__, ssh_err(r)); fatal("%s: termination request failed: %s", __func__, e); default: fatal("%s: unexpected response from master 0x%08x", __func__, type); } - buffer_free(&m); + sshbuf_free(m); muxclient_request_id++; } static int mux_client_forward(int fd, int cancel_flag, u_int ftype, struct Forward *fwd) { - Buffer m; + struct sshbuf *m; char *e, *fwd_desc; + const char *lhost, *chost; u_int type, rid; + int r; fwd_desc = format_forward(ftype, fwd); debug("Requesting %s %s", cancel_flag ? "cancellation of" : "forwarding of", fwd_desc); free(fwd_desc); - buffer_init(&m); - buffer_put_int(&m, cancel_flag ? MUX_C_CLOSE_FWD : MUX_C_OPEN_FWD); - buffer_put_int(&m, muxclient_request_id); - buffer_put_int(&m, ftype); - if (fwd->listen_path != NULL) { - buffer_put_cstring(&m, fwd->listen_path); - } else { - buffer_put_cstring(&m, - fwd->listen_host == NULL ? "" : - (*fwd->listen_host == '\0' ? "*" : fwd->listen_host)); - } - buffer_put_int(&m, fwd->listen_port); - if (fwd->connect_path != NULL) { - buffer_put_cstring(&m, fwd->connect_path); - } else { - buffer_put_cstring(&m, - fwd->connect_host == NULL ? "" : fwd->connect_host); - } - buffer_put_int(&m, fwd->connect_port); + type = cancel_flag ? MUX_C_CLOSE_FWD : MUX_C_OPEN_FWD; + if (fwd->listen_path != NULL) + lhost = fwd->listen_path; + else if (fwd->listen_host == NULL) + lhost = ""; + else if (*fwd->listen_host == '\0') + lhost = "*"; + else + lhost = fwd->listen_host; - if (mux_client_write_packet(fd, &m) != 0) + if (fwd->connect_path != NULL) + chost = fwd->connect_path; + else if (fwd->connect_host == NULL) + chost = ""; + else + chost = fwd->connect_host; + + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); + if ((r = sshbuf_put_u32(m, type)) != 0 || + (r = sshbuf_put_u32(m, muxclient_request_id)) != 0 || + (r = sshbuf_put_u32(m, ftype)) != 0 || + (r = sshbuf_put_cstring(m, lhost)) != 0 || + (r = sshbuf_put_u32(m, fwd->listen_port)) != 0 || + (r = sshbuf_put_cstring(m, chost)) != 0 || + (r = sshbuf_put_u32(m, fwd->connect_port)) != 0) + fatal("%s: request: %s", __func__, ssh_err(r)); + + if (mux_client_write_packet(fd, m) != 0) fatal("%s: write packet: %s", __func__, strerror(errno)); - buffer_clear(&m); + sshbuf_reset(m); /* Read their reply */ - if (mux_client_read_packet(fd, &m) != 0) { - buffer_free(&m); + if (mux_client_read_packet(fd, m) != 0) { + sshbuf_free(m); return -1; } - type = buffer_get_int(&m); - if ((rid = buffer_get_int(&m)) != muxclient_request_id) + if ((r = sshbuf_get_u32(m, &type)) != 0 || + (r = sshbuf_get_u32(m, &rid)) != 0) + fatal("%s: decode: %s", __func__, ssh_err(r)); + if (rid != muxclient_request_id) fatal("%s: out of sequence reply: my id %u theirs %u", __func__, muxclient_request_id, rid); + switch (type) { case MUX_S_OK: break; case MUX_S_REMOTE_PORT: if (cancel_flag) fatal("%s: got MUX_S_REMOTE_PORT for cancel", __func__); - fwd->allocated_port = buffer_get_int(&m); + if ((r = sshbuf_get_u32(m, &fwd->allocated_port)) != 0) + fatal("%s: decode port: %s", __func__, ssh_err(r)); verbose("Allocated port %u for remote forward to %s:%d", fwd->allocated_port, fwd->connect_host ? fwd->connect_host : "", @@ -1803,20 +1849,22 @@ mux_client_forward(int fd, int cancel_flag, u_int ftype, struct Forward *fwd) fprintf(stdout, "%i\n", fwd->allocated_port); break; case MUX_S_PERMISSION_DENIED: - e = buffer_get_string(&m, NULL); - buffer_free(&m); + if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0) + fatal("%s: decode error: %s", __func__, ssh_err(r)); + sshbuf_free(m); error("Master refused forwarding request: %s", e); return -1; case MUX_S_FAILURE: - e = buffer_get_string(&m, NULL); - buffer_free(&m); + if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0) + fatal("%s: decode error: %s", __func__, ssh_err(r)); + sshbuf_free(m); error("%s: forwarding request failed: %s", __func__, e); return -1; default: fatal("%s: unexpected response from master 0x%08x", __func__, type); } - buffer_free(&m); + sshbuf_free(m); muxclient_request_id++; return 0; @@ -1850,11 +1898,12 @@ mux_client_forwards(int fd, int cancel_flag) static int mux_client_request_session(int fd) { - Buffer m; - char *e, *term; - u_int i, rid, sid, esid, exitval, type, exitval_seen; + struct sshbuf *m; + char *e; + const char *term; + u_int echar, rid, sid, esid, exitval, type, exitval_seen; extern char **environ; - int devnull, rawmode; + int r, i, devnull, rawmode; debug3("%s: entering", __func__); @@ -1874,31 +1923,41 @@ mux_client_request_session(int fd) close(devnull); } - term = getenv("TERM"); + if ((term = getenv("TERM")) == NULL) + term = ""; + echar = 0xffffffff; + if (options.escape_char != SSH_ESCAPECHAR_NONE) + echar = (u_int)options.escape_char; - buffer_init(&m); - buffer_put_int(&m, MUX_C_NEW_SESSION); - buffer_put_int(&m, muxclient_request_id); - buffer_put_cstring(&m, ""); /* reserved */ - buffer_put_int(&m, tty_flag); - buffer_put_int(&m, options.forward_x11); - buffer_put_int(&m, options.forward_agent); - buffer_put_int(&m, subsystem_flag); - buffer_put_int(&m, options.escape_char == SSH_ESCAPECHAR_NONE ? - 0xffffffff : (u_int)options.escape_char); - buffer_put_cstring(&m, term == NULL ? "" : term); - buffer_put_string(&m, buffer_ptr(&command), buffer_len(&command)); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); + if ((r = sshbuf_put_u32(m, MUX_C_NEW_SESSION)) != 0 || + (r = sshbuf_put_u32(m, muxclient_request_id)) != 0 || + (r = sshbuf_put_string(m, NULL, 0)) != 0 || /* reserved */ + (r = sshbuf_put_u32(m, tty_flag)) != 0 || + (r = sshbuf_put_u32(m, options.forward_x11)) != 0 || + (r = sshbuf_put_u32(m, options.forward_agent)) != 0 || + (r = sshbuf_put_u32(m, subsystem_flag)) != 0 || + (r = sshbuf_put_u32(m, echar)) != 0 || + (r = sshbuf_put_cstring(m, term)) != 0 || + (r = sshbuf_put_stringb(m, command)) != 0) + fatal("%s: request: %s", __func__, ssh_err(r)); + /* Pass environment */ if (options.num_send_env > 0 && environ != NULL) { - /* Pass environment */ for (i = 0; environ[i] != NULL; i++) { - if (env_permitted(environ[i])) { - buffer_put_cstring(&m, environ[i]); - } + if (!env_permitted(environ[i])) + continue; + if ((r = sshbuf_put_cstring(m, environ[i])) != 0) + fatal("%s: request: %s", __func__, ssh_err(r)); } } + for (i = 0; i < options.num_setenv; i++) { + if ((r = sshbuf_put_cstring(m, options.setenv[i])) != 0) + fatal("%s: request: %s", __func__, ssh_err(r)); + } - if (mux_client_write_packet(fd, &m) != 0) + if (mux_client_write_packet(fd, m) != 0) fatal("%s: write packet: %s", __func__, strerror(errno)); /* Send the stdio file descriptors */ @@ -1910,35 +1969,40 @@ mux_client_request_session(int fd) debug3("%s: session request sent", __func__); /* Read their reply */ - buffer_clear(&m); - if (mux_client_read_packet(fd, &m) != 0) { + sshbuf_reset(m); + if (mux_client_read_packet(fd, m) != 0) { error("%s: read from master failed: %s", __func__, strerror(errno)); - buffer_free(&m); + sshbuf_free(m); return -1; } - type = buffer_get_int(&m); - if ((rid = buffer_get_int(&m)) != muxclient_request_id) + if ((r = sshbuf_get_u32(m, &type)) != 0 || + (r = sshbuf_get_u32(m, &rid)) != 0) + fatal("%s: decode: %s", __func__, ssh_err(r)); + if (rid != muxclient_request_id) fatal("%s: out of sequence reply: my id %u theirs %u", __func__, muxclient_request_id, rid); + switch (type) { case MUX_S_SESSION_OPENED: - sid = buffer_get_int(&m); - debug("%s: master session id: %u", __func__, sid); + if ((r = sshbuf_get_u32(m, &sid)) != 0) + fatal("%s: decode ID: %s", __func__, ssh_err(r)); break; case MUX_S_PERMISSION_DENIED: - e = buffer_get_string(&m, NULL); - buffer_free(&m); + if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0) + fatal("%s: decode error: %s", __func__, ssh_err(r)); error("Master refused session request: %s", e); + sshbuf_free(m); return -1; case MUX_S_FAILURE: - e = buffer_get_string(&m, NULL); - buffer_free(&m); + if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0) + fatal("%s: decode error: %s", __func__, ssh_err(r)); error("%s: session request failed: %s", __func__, e); + sshbuf_free(m); return -1; default: - buffer_free(&m); + sshbuf_free(m); error("%s: unexpected response from master 0x%08x", __func__, type); return -1; @@ -1966,13 +2030,17 @@ mux_client_request_session(int fd) * terminate early too (possibly losing data). */ for (exitval = 255, exitval_seen = 0;;) { - buffer_clear(&m); - if (mux_client_read_packet(fd, &m) != 0) + sshbuf_reset(m); + if (mux_client_read_packet(fd, m) != 0) break; - type = buffer_get_int(&m); + if ((r = sshbuf_get_u32(m, &type)) != 0) + fatal("%s: decode type: %s", __func__, ssh_err(r)); switch (type) { case MUX_S_TTY_ALLOC_FAIL: - if ((esid = buffer_get_int(&m)) != sid) + if ((r = sshbuf_get_u32(m, &esid)) != 0) + fatal("%s: decode ID: %s", + __func__, ssh_err(r)); + if (esid != sid) fatal("%s: tty alloc fail on unknown session: " "my id %u theirs %u", __func__, sid, esid); @@ -1981,17 +2049,24 @@ mux_client_request_session(int fd) rawmode = 0; continue; case MUX_S_EXIT_MESSAGE: - if ((esid = buffer_get_int(&m)) != sid) + if ((r = sshbuf_get_u32(m, &esid)) != 0) + fatal("%s: decode ID: %s", + __func__, ssh_err(r)); + if (esid != sid) fatal("%s: exit on unknown session: " "my id %u theirs %u", __func__, sid, esid); if (exitval_seen) fatal("%s: exitval sent twice", __func__); - exitval = buffer_get_int(&m); + if ((r = sshbuf_get_u32(m, &exitval)) != 0) + fatal("%s: decode exit value: %s", + __func__, ssh_err(r)); exitval_seen = 1; continue; default: - e = buffer_get_string(&m, NULL); + if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0) + fatal("%s: decode error: %s", + __func__, ssh_err(r)); fatal("%s: master returned error: %s", __func__, e); } } @@ -2018,32 +2093,38 @@ mux_client_request_session(int fd) static int mux_client_proxy(int fd) { - Buffer m; + struct sshbuf *m; char *e; u_int type, rid; + int r; - buffer_init(&m); - buffer_put_int(&m, MUX_C_PROXY); - buffer_put_int(&m, muxclient_request_id); - if (mux_client_write_packet(fd, &m) != 0) + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); + if ((r = sshbuf_put_u32(m, MUX_C_PROXY)) != 0 || + (r = sshbuf_put_u32(m, muxclient_request_id)) != 0) + fatal("%s: request: %s", __func__, ssh_err(r)); + if (mux_client_write_packet(fd, m) != 0) fatal("%s: write packet: %s", __func__, strerror(errno)); - buffer_clear(&m); + sshbuf_reset(m); /* Read their reply */ - if (mux_client_read_packet(fd, &m) != 0) { - buffer_free(&m); + if (mux_client_read_packet(fd, m) != 0) { + sshbuf_free(m); return 0; } - type = buffer_get_int(&m); - if (type != MUX_S_PROXY) { - e = buffer_get_string(&m, NULL); - fatal("%s: master returned error: %s", __func__, e); - } - if ((rid = buffer_get_int(&m)) != muxclient_request_id) + if ((r = sshbuf_get_u32(m, &type)) != 0 || + (r = sshbuf_get_u32(m, &rid)) != 0) + fatal("%s: decode: %s", __func__, ssh_err(r)); + if (rid != muxclient_request_id) fatal("%s: out of sequence reply: my id %u theirs %u", __func__, muxclient_request_id, rid); - buffer_free(&m); + if (type != MUX_S_PROXY) { + if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0) + fatal("%s: decode error: %s", __func__, ssh_err(r)); + fatal("%s: master returned error: %s", __func__, e); + } + sshbuf_free(m); debug3("%s: done", __func__); muxclient_request_id++; @@ -2053,10 +2134,10 @@ mux_client_proxy(int fd) static int mux_client_request_stdio_fwd(int fd) { - Buffer m; + struct sshbuf *m; char *e; u_int type, rid, sid; - int devnull; + int r, devnull; debug3("%s: entering", __func__); @@ -2076,14 +2157,16 @@ mux_client_request_stdio_fwd(int fd) close(devnull); } - buffer_init(&m); - buffer_put_int(&m, MUX_C_NEW_STDIO_FWD); - buffer_put_int(&m, muxclient_request_id); - buffer_put_cstring(&m, ""); /* reserved */ - buffer_put_cstring(&m, options.stdio_forward_host); - buffer_put_int(&m, options.stdio_forward_port); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); + if ((r = sshbuf_put_u32(m, MUX_C_NEW_STDIO_FWD)) != 0 || + (r = sshbuf_put_u32(m, muxclient_request_id)) != 0 || + (r = sshbuf_put_string(m, NULL, 0)) != 0 || /* reserved */ + (r = sshbuf_put_cstring(m, options.stdio_forward_host)) != 0 || + (r = sshbuf_put_u32(m, options.stdio_forward_port)) != 0) + fatal("%s: request: %s", __func__, ssh_err(r)); - if (mux_client_write_packet(fd, &m) != 0) + if (mux_client_write_packet(fd, m) != 0) fatal("%s: write packet: %s", __func__, strerror(errno)); /* Send the stdio file descriptors */ @@ -2098,34 +2181,39 @@ mux_client_request_stdio_fwd(int fd) debug3("%s: stdio forward request sent", __func__); /* Read their reply */ - buffer_clear(&m); + sshbuf_reset(m); - if (mux_client_read_packet(fd, &m) != 0) { + if (mux_client_read_packet(fd, m) != 0) { error("%s: read from master failed: %s", __func__, strerror(errno)); - buffer_free(&m); + sshbuf_free(m); return -1; } - type = buffer_get_int(&m); - if ((rid = buffer_get_int(&m)) != muxclient_request_id) + if ((r = sshbuf_get_u32(m, &type)) != 0 || + (r = sshbuf_get_u32(m, &rid)) != 0) + fatal("%s: decode: %s", __func__, ssh_err(r)); + if (rid != muxclient_request_id) fatal("%s: out of sequence reply: my id %u theirs %u", __func__, muxclient_request_id, rid); switch (type) { case MUX_S_SESSION_OPENED: - sid = buffer_get_int(&m); + if ((r = sshbuf_get_u32(m, &sid)) != 0) + fatal("%s: decode ID: %s", __func__, ssh_err(r)); debug("%s: master session id: %u", __func__, sid); break; case MUX_S_PERMISSION_DENIED: - e = buffer_get_string(&m, NULL); - buffer_free(&m); + if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0) + fatal("%s: decode error: %s", __func__, ssh_err(r)); + sshbuf_free(m); fatal("Master refused stdio forwarding request: %s", e); case MUX_S_FAILURE: - e = buffer_get_string(&m, NULL); - buffer_free(&m); + if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0) + fatal("%s: decode error: %s", __func__, ssh_err(r)); + sshbuf_free(m); fatal("Stdio forwarding request failed: %s", e); default: - buffer_free(&m); + sshbuf_free(m); error("%s: unexpected response from master 0x%08x", __func__, type); return -1; @@ -2140,8 +2228,8 @@ mux_client_request_stdio_fwd(int fd) /* * Stick around until the controlee closes the client_fd. */ - buffer_clear(&m); - if (mux_client_read_packet(fd, &m) != 0) { + sshbuf_reset(m); + if (mux_client_read_packet(fd, m) != 0) { if (errno == EPIPE || (errno == EINTR && muxclient_terminate != 0)) return 0; @@ -2154,44 +2242,52 @@ mux_client_request_stdio_fwd(int fd) static void mux_client_request_stop_listening(int fd) { - Buffer m; + struct sshbuf *m; char *e; u_int type, rid; + int r; debug3("%s: entering", __func__); - buffer_init(&m); - buffer_put_int(&m, MUX_C_STOP_LISTENING); - buffer_put_int(&m, muxclient_request_id); + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new", __func__); + if ((r = sshbuf_put_u32(m, MUX_C_STOP_LISTENING)) != 0 || + (r = sshbuf_put_u32(m, muxclient_request_id)) != 0) + fatal("%s: request: %s", __func__, ssh_err(r)); - if (mux_client_write_packet(fd, &m) != 0) + if (mux_client_write_packet(fd, m) != 0) fatal("%s: write packet: %s", __func__, strerror(errno)); - buffer_clear(&m); + sshbuf_reset(m); /* Read their reply */ - if (mux_client_read_packet(fd, &m) != 0) + if (mux_client_read_packet(fd, m) != 0) fatal("%s: read from master failed: %s", __func__, strerror(errno)); - type = buffer_get_int(&m); - if ((rid = buffer_get_int(&m)) != muxclient_request_id) + if ((r = sshbuf_get_u32(m, &type)) != 0 || + (r = sshbuf_get_u32(m, &rid)) != 0) + fatal("%s: decode: %s", __func__, ssh_err(r)); + if (rid != muxclient_request_id) fatal("%s: out of sequence reply: my id %u theirs %u", __func__, muxclient_request_id, rid); + switch (type) { case MUX_S_OK: break; case MUX_S_PERMISSION_DENIED: - e = buffer_get_string(&m, NULL); + if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0) + fatal("%s: decode error: %s", __func__, ssh_err(r)); fatal("Master refused stop listening request: %s", e); case MUX_S_FAILURE: - e = buffer_get_string(&m, NULL); + if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0) + fatal("%s: decode error: %s", __func__, ssh_err(r)); fatal("%s: stop listening request failed: %s", __func__, e); default: fatal("%s: unexpected response from master 0x%08x", __func__, type); } - buffer_free(&m); + sshbuf_free(m); muxclient_request_id++; } diff --git a/myproposal.h b/myproposal.h index 825a5bb9a..d4fff96de 100644 --- a/myproposal.h +++ b/myproposal.h @@ -1,4 +1,4 @@ -/* $OpenBSD: myproposal.h,v 1.55 2017/05/07 23:13:42 djm Exp $ */ +/* $OpenBSD: myproposal.h,v 1.56 2018/07/03 11:39:54 djm Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. @@ -107,6 +107,8 @@ #define KEX_DEFAULT_PK_ALG \ HOSTKEY_ECDSA_CERT_METHODS \ "ssh-ed25519-cert-v01@openssh.com," \ + "rsa-sha2-512-cert-v01@openssh.com," \ + "rsa-sha2-256-cert-v01@openssh.com," \ "ssh-rsa-cert-v01@openssh.com," \ HOSTKEY_ECDSA_METHODS \ "ssh-ed25519," \ diff --git a/opacket.c b/opacket.c index fca48e5f5..e637d7a71 100644 --- a/opacket.c +++ b/opacket.c @@ -3,6 +3,8 @@ #include "includes.h" +#include + #include "ssherr.h" #include "packet.h" #include "log.h" diff --git a/opacket.h b/opacket.h index b2c2e7f6a..f92fe586e 100644 --- a/opacket.h +++ b/opacket.h @@ -1,4 +1,4 @@ -/* $OpenBSD: opacket.h,v 1.12 2017/10/20 01:56:39 djm Exp $ */ +/* $OpenBSD: opacket.h,v 1.13 2018/07/06 09:03:02 sf Exp $ */ #ifndef _OPACKET_H /* Written by Markus Friedl. Placed in the public domain. */ @@ -59,8 +59,6 @@ void packet_read_expect(int expected_type); ssh_packet_set_protocol_flags(active_state, (protocol_flags)) #define packet_get_protocol_flags() \ ssh_packet_get_protocol_flags(active_state) -#define packet_start_compression(level) \ - ssh_packet_start_compression(active_state, (level)) #define packet_start(type) \ ssh_packet_start(active_state, (type)) #define packet_put_char(value) \ diff --git a/openbsd-compat/Makefile.in b/openbsd-compat/Makefile.in index 8e3b42991..2fd9b952b 100644 --- a/openbsd-compat/Makefile.in +++ b/openbsd-compat/Makefile.in @@ -68,6 +68,7 @@ COMPAT= arc4random.o \ bsd-cygwin_util.o \ bsd-err.o \ bsd-flock.o \ + bsd-getline.o \ bsd-getpagesize.o \ bsd-getpeereid.o \ bsd-malloc.o \ diff --git a/openbsd-compat/arc4random.c b/openbsd-compat/arc4random.c index 47237dea3..a58241204 100644 --- a/openbsd-compat/arc4random.c +++ b/openbsd-compat/arc4random.c @@ -33,6 +33,10 @@ #include #include +#ifdef HAVE_SYS_RANDOM_H +# include +#endif + #ifndef HAVE_ARC4RANDOM #ifdef WITH_OPENSSL @@ -91,8 +95,9 @@ getrnd(u_char *s, size_t len) { } #else /* !WINDOWS */ -#define SSH_RANDOM_DEV "/dev/urandom" -/* XXX use getrandom() if supported on Linux */ +# ifndef SSH_RANDOM_DEV +# define SSH_RANDOM_DEV "/dev/urandom" +# endif /* SSH_RANDOM_DEV */ static void getrnd(u_char *s, size_t len) { @@ -100,6 +105,11 @@ getrnd(u_char *s, size_t len) ssize_t r; size_t o = 0; +#ifdef HAVE_GETRANDOM + if ((r = getrandom(s, len, 0)) > 0 && (size_t)r == len) + return; +#endif /* HAVE_GETRANDOM */ + if ((fd = open(SSH_RANDOM_DEV, O_RDONLY)) == -1) fatal("Couldn't open %s: %s", SSH_RANDOM_DEV, strerror(errno)); while (o < len) { @@ -115,7 +125,7 @@ getrnd(u_char *s, size_t len) close(fd); } #endif /* !WINDOWS */ -#endif +#endif /* WITH_OPENSSL */ static void _rs_stir(void) diff --git a/openbsd-compat/bcrypt_pbkdf.c b/openbsd-compat/bcrypt_pbkdf.c index 0a07f9a0f..785234563 100644 --- a/openbsd-compat/bcrypt_pbkdf.c +++ b/openbsd-compat/bcrypt_pbkdf.c @@ -46,7 +46,7 @@ * function with the following modifications: * 1. The input password and salt are preprocessed with SHA512. * 2. The output length is expanded to 256 bits. - * 3. Subsequently the magic string to be encrypted is lengthened and modifed + * 3. Subsequently the magic string to be encrypted is lengthened and modified * to "OxychromaticBlowfishSwatDynamite" * 4. The hash function is defined to perform 64 rounds of initial state * expansion. (More rounds are performed by iterating the hash.) diff --git a/openbsd-compat/bsd-closefrom.c b/openbsd-compat/bsd-closefrom.c index 9380b33a7..b56476a2d 100644 --- a/openbsd-compat/bsd-closefrom.c +++ b/openbsd-compat/bsd-closefrom.c @@ -77,7 +77,7 @@ closefrom(int lowfd) /* Check for a /proc/$$/fd directory. */ len = snprintf(fdpath, sizeof(fdpath), "/proc/%ld/fd", (long)getpid()); - if (len > 0 && (size_t)len <= sizeof(fdpath) && (dirp = opendir(fdpath))) { + if (len > 0 && (size_t)len < sizeof(fdpath) && (dirp = opendir(fdpath))) { while ((dent = readdir(dirp)) != NULL) { fd = strtol(dent->d_name, &endp, 10); if (dent->d_name != endp && *endp == '\0' && diff --git a/openbsd-compat/bsd-cygwin_util.c b/openbsd-compat/bsd-cygwin_util.c index 398a5f617..fb49e30f5 100644 --- a/openbsd-compat/bsd-cygwin_util.c +++ b/openbsd-compat/bsd-cygwin_util.c @@ -36,6 +36,7 @@ #include #include #include +#include #include "xmalloc.h" diff --git a/openbsd-compat/bsd-cygwin_util.h b/openbsd-compat/bsd-cygwin_util.h index 9cef694b9..202c055db 100644 --- a/openbsd-compat/bsd-cygwin_util.h +++ b/openbsd-compat/bsd-cygwin_util.h @@ -41,7 +41,7 @@ typedef void *HANDLE; #define UNLEN 256 /* Cygwin functions for which declarations are only available when including - windows headers, so we have to define them here explicitely. */ + windows headers, so we have to define them here explicitly. */ extern HANDLE cygwin_logon_user (const struct passwd *, const char *); extern void cygwin_set_impersonation_token (const HANDLE); diff --git a/openbsd-compat/bsd-getline.c b/openbsd-compat/bsd-getline.c new file mode 100644 index 000000000..d676f4cef --- /dev/null +++ b/openbsd-compat/bsd-getline.c @@ -0,0 +1,113 @@ +/* $NetBSD: getline.c,v 1.1.1.6 2015/01/02 20:34:27 christos Exp $ */ + +/* NetBSD: getline.c,v 1.2 2014/09/16 17:23:50 christos Exp */ + +/*- + * Copyright (c) 2011 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Christos Zoulas. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* NETBSD ORIGINAL: external/bsd/file/dist/src/getline.c */ + +#include "includes.h" + +#if 0 +#include "file.h" +#endif + +#if !HAVE_GETLINE +#include +#include +#include +#include +#include + +static ssize_t +getdelim(char **buf, size_t *bufsiz, int delimiter, FILE *fp) +{ + char *ptr, *eptr; + + + if (*buf == NULL || *bufsiz == 0) { + if ((*buf = malloc(BUFSIZ)) == NULL) + return -1; + *bufsiz = BUFSIZ; + } + + for (ptr = *buf, eptr = *buf + *bufsiz;;) { + int c = fgetc(fp); + if (c == -1) { + if (feof(fp)) { + ssize_t diff = (ssize_t)(ptr - *buf); + if (diff != 0) { + *ptr = '\0'; + return diff; + } + } + return -1; + } + *ptr++ = c; + if (c == delimiter) { + *ptr = '\0'; + return ptr - *buf; + } + if (ptr + 2 >= eptr) { + char *nbuf; + size_t nbufsiz = *bufsiz * 2; + ssize_t d = ptr - *buf; + if ((nbuf = realloc(*buf, nbufsiz)) == NULL) + return -1; + *buf = nbuf; + *bufsiz = nbufsiz; + eptr = nbuf + nbufsiz; + ptr = nbuf + d; + } + } +} + +ssize_t +getline(char **buf, size_t *bufsiz, FILE *fp) +{ + return getdelim(buf, bufsiz, '\n', fp); +} + +#endif + +#ifdef TEST +int +main(int argc, char *argv[]) +{ + char *p = NULL; + ssize_t len; + size_t n = 0; + + while ((len = getline(&p, &n, stdin)) != -1) + (void)printf("%" SIZE_T_FORMAT "d %s", len, p); + free(p); + return 0; +} +#endif diff --git a/openbsd-compat/bsd-misc.c b/openbsd-compat/bsd-misc.c index 3daf61071..b6893e171 100644 --- a/openbsd-compat/bsd-misc.c +++ b/openbsd-compat/bsd-misc.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include diff --git a/openbsd-compat/bsd-nextstep.h b/openbsd-compat/bsd-nextstep.h index 610f9e381..4a45b15af 100644 --- a/openbsd-compat/bsd-nextstep.h +++ b/openbsd-compat/bsd-nextstep.h @@ -36,7 +36,7 @@ /* NeXT's readdir() is BSD (struct direct) not POSIX (struct dirent) */ #define dirent direct -/* Swap out NeXT's BSD wait() for a more POSIX complient one */ +/* Swap out NeXT's BSD wait() for a more POSIX compliant one */ pid_t posix_wait(int *); #define wait(a) posix_wait(a) diff --git a/openbsd-compat/bsd-snprintf.c b/openbsd-compat/bsd-snprintf.c index d95b6a401..f27b9d808 100644 --- a/openbsd-compat/bsd-snprintf.c +++ b/openbsd-compat/bsd-snprintf.c @@ -30,7 +30,7 @@ * probably requires libm on most operating systems. Don't yet * support the exponent (e,E) and sigfig (g,G). Also, fmtint() * was pretty badly broken, it just wasn't being exercised in ways - * which showed it, so that's been fixed. Also, formated the code + * which showed it, so that's been fixed. Also, formatted the code * to mutt conventions, and removed dead code left over from the * original. Also, there is now a builtin-test, just compile with: * gcc -DTEST_SNPRINTF -o snprintf snprintf.c -lm diff --git a/openbsd-compat/bsd-waitpid.h b/openbsd-compat/bsd-waitpid.h index 5ce3ee4b5..b551268ab 100644 --- a/openbsd-compat/bsd-waitpid.h +++ b/openbsd-compat/bsd-waitpid.h @@ -27,7 +27,7 @@ #define _BSD_WAITPID_H #ifndef HAVE_WAITPID -/* Clean out any potental issues */ +/* Clean out any potential issues */ #undef WIFEXITED #undef WIFSTOPPED #undef WIFSIGNALED diff --git a/openbsd-compat/explicit_bzero.c b/openbsd-compat/explicit_bzero.c index 53a003472..6ef9825a9 100644 --- a/openbsd-compat/explicit_bzero.c +++ b/openbsd-compat/explicit_bzero.c @@ -41,7 +41,7 @@ explicit_bzero(void *p, size_t n) /* * clang -fsanitize=memory needs to intercept memset-like functions * to correctly detect memory initialisation. Make sure one is called - * directly since our indirection trick above sucessfully confuses it. + * directly since our indirection trick above successfully confuses it. */ #if defined(__has_feature) # if __has_feature(memory_sanitizer) diff --git a/openbsd-compat/fmt_scaled.c b/openbsd-compat/fmt_scaled.c index 7c5193e26..2f76ef931 100644 --- a/openbsd-compat/fmt_scaled.c +++ b/openbsd-compat/fmt_scaled.c @@ -1,4 +1,4 @@ -/* $OpenBSD: fmt_scaled.c,v 1.16 2017/03/16 02:40:46 dtucker Exp $ */ +/* $OpenBSD: fmt_scaled.c,v 1.17 2018/05/14 04:39:04 djm Exp $ */ /* * Copyright (c) 2001, 2002, 2003 Ian F. Darwin. All rights reserved. @@ -188,7 +188,7 @@ scan_scaled(char *scaled, long long *result) /* scale whole part */ whole *= scale_fact; - /* truncate fpart so it does't overflow. + /* truncate fpart so it doesn't overflow. * then scale fractional part. */ while (fpart >= LLONG_MAX / scale_fact) { @@ -246,12 +246,15 @@ fmt_scaled(long long number, char *result) fract = (10 * fract + 512) / 1024; /* if the result would be >= 10, round main number */ - if (fract == 10) { + if (fract >= 10) { if (number >= 0) number++; else number--; fract = 0; + } else if (fract < 0) { + /* shouldn't happen */ + fract = 0; } if (number == 0) diff --git a/openbsd-compat/freezero.c b/openbsd-compat/freezero.c index 90b9d3813..bad018ff0 100644 --- a/openbsd-compat/freezero.c +++ b/openbsd-compat/freezero.c @@ -16,6 +16,7 @@ #include "includes.h" +#include #include #ifndef HAVE_FREEZERO diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h index f34c4f2f7..4426d2a8d 100644 --- a/openbsd-compat/openbsd-compat.h +++ b/openbsd-compat/openbsd-compat.h @@ -60,6 +60,10 @@ int bindresvport_sa(int sd, struct sockaddr *sa); void closefrom(int); #endif +#ifndef HAVE_GETLINE +ssize_t getline(char **, size_t *, FILE *); +#endif + #ifndef HAVE_GETPAGESIZE int getpagesize(void); #endif diff --git a/openbsd-compat/port-aix.c b/openbsd-compat/port-aix.c index 79c868966..943177c70 100644 --- a/openbsd-compat/port-aix.c +++ b/openbsd-compat/port-aix.c @@ -27,8 +27,9 @@ #include "includes.h" #include "xmalloc.h" -#include "buffer.h" -#include "key.h" +#include "sshbuf.h" +#include "ssherr.h" +#include "sshkey.h" #include "hostfile.h" #include "auth.h" #include "ssh.h" @@ -176,7 +177,7 @@ sys_auth_passwd(struct ssh *ssh, const char *password) { Authctxt *ctxt = ssh->authctxt; char *authmsg = NULL, *msg = NULL, *name = ctxt->pw->pw_name; - int authsuccess = 0, expired, reenter, result; + int r, authsuccess = 0, expired, reenter, result; do { result = authenticate((char *)name, (char *)password, &reenter, @@ -203,7 +204,10 @@ sys_auth_passwd(struct ssh *ssh, const char *password) */ expired = passwdexpired(name, &msg); if (msg && *msg) { - buffer_append(ctxt->loginmsg, msg, strlen(msg)); + if ((r = sshbuf_put(ctxt->loginmsg, + msg, strlen(msg))) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); aix_remove_embedded_newlines(msg); } debug3("AIX/passwdexpired returned %d msg %.100s", expired, msg); @@ -234,10 +238,10 @@ sys_auth_passwd(struct ssh *ssh, const char *password) * Returns 1 if login is allowed, 0 if not allowed. */ int -sys_auth_allowed_user(struct passwd *pw, Buffer *loginmsg) +sys_auth_allowed_user(struct passwd *pw, struct sshbuf *loginmsg) { char *msg = NULL; - int result, permitted = 0; + int r, result, permitted = 0; struct stat st; /* @@ -260,8 +264,10 @@ sys_auth_allowed_user(struct passwd *pw, Buffer *loginmsg) */ if (result == -1 && errno == EPERM && stat(_PATH_NOLOGIN, &st) == 0) permitted = 1; - else if (msg != NULL) - buffer_append(loginmsg, msg, strlen(msg)); + else if (msg != NULL) { + if ((r = sshbuf_put(loginmsg, msg, strlen(msg))) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + } if (msg == NULL) msg = xstrdup("(none)"); aix_remove_embedded_newlines(msg); @@ -275,7 +281,7 @@ sys_auth_allowed_user(struct passwd *pw, Buffer *loginmsg) int sys_auth_record_login(const char *user, const char *host, const char *ttynm, - Buffer *loginmsg) + struct sshbuf *loginmsg) { char *msg = NULL; int success = 0; diff --git a/openbsd-compat/port-aix.h b/openbsd-compat/port-aix.h index 9c0a4dd3e..748c0e4e3 100644 --- a/openbsd-compat/port-aix.h +++ b/openbsd-compat/port-aix.h @@ -30,7 +30,7 @@ # include #endif -#include "buffer.h" +struct sshbuf; /* These should be in the system headers but are not. */ int usrinfo(int, char *, int); @@ -87,9 +87,10 @@ void aix_usrinfo(struct passwd *); #ifdef WITH_AIXAUTHENTICATE # define CUSTOM_SYS_AUTH_PASSWD 1 # define CUSTOM_SYS_AUTH_ALLOWED_USER 1 -int sys_auth_allowed_user(struct passwd *, Buffer *); +int sys_auth_allowed_user(struct passwd *, struct sshbuf *); # define CUSTOM_SYS_AUTH_RECORD_LOGIN 1 -int sys_auth_record_login(const char *, const char *, const char *, Buffer *); +int sys_auth_record_login(const char *, const char *, + const char *, struct sshbuf *); # define CUSTOM_SYS_AUTH_GET_LASTLOGIN_MSG char *sys_auth_get_lastlogin_msg(const char *, uid_t); # define CUSTOM_FAILED_LOGIN 1 diff --git a/openbsd-compat/port-net.c b/openbsd-compat/port-net.c index 7050629c3..bb535626f 100644 --- a/openbsd-compat/port-net.c +++ b/openbsd-compat/port-net.c @@ -185,7 +185,7 @@ sys_tun_open(int tun, int mode, char **ifname) else debug("%s: %s mode %d fd %d", __func__, ifr.ifr_name, mode, fd); - if (ifname != NULL && (*ifname = strdup(ifr.ifr_name))) + if (ifname != NULL && (*ifname = strdup(ifr.ifr_name)) == NULL) goto failed; return (fd); @@ -272,7 +272,7 @@ sys_tun_open(int tun, int mode, char **ifname) goto failed; } - if (ifname != NULL && (*ifname = strdup(ifr.ifr_name))) + if (ifname != NULL && (*ifname = strdup(ifr.ifr_name)) == NULL) goto failed; close(sock); diff --git a/openbsd-compat/port-uw.c b/openbsd-compat/port-uw.c index 014cac264..9edb1b481 100644 --- a/openbsd-compat/port-uw.c +++ b/openbsd-compat/port-uw.c @@ -38,8 +38,6 @@ #include "xmalloc.h" #include "packet.h" -#include "buffer.h" -#include "key.h" #include "auth-options.h" #include "log.h" #include "misc.h" /* servconf.h needs misc.h for struct ForwardOptions */ @@ -99,7 +97,7 @@ nischeck(char *namep) if ((fd = fopen (password_file, "r")) == NULL) { /* - * If the passwd file has dissapeared we are in a bad state. + * If the passwd file has disappeared we are in a bad state. * However, returning 0 will send us back through the * authentication scheme that has checked the ia database for * passwords earlier. diff --git a/openbsd-compat/sha2.c b/openbsd-compat/sha2.c index a22099bbe..b55ea30ac 100644 --- a/openbsd-compat/sha2.c +++ b/openbsd-compat/sha2.c @@ -72,7 +72,7 @@ * Please make sure that your system defines BYTE_ORDER. If your * architecture is little-endian, make sure it also defines * LITTLE_ENDIAN and that the two (BYTE_ORDER and LITTLE_ENDIAN) are - * equivilent. + * equivalent. * * If your system does not define the above, then you can do so by * hand like this: diff --git a/openbsd-compat/strndup.c b/openbsd-compat/strndup.c index ebb4eccfb..30ac6f046 100644 --- a/openbsd-compat/strndup.c +++ b/openbsd-compat/strndup.c @@ -16,7 +16,7 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include "config.h" +#include "includes.h" #if !defined(HAVE_STRNDUP) || defined(BROKEN_STRNDUP) #include diff --git a/openbsd-compat/strnlen.c b/openbsd-compat/strnlen.c index 8cc6b96b5..7ad3573a6 100644 --- a/openbsd-compat/strnlen.c +++ b/openbsd-compat/strnlen.c @@ -18,7 +18,7 @@ /* OPENBSD ORIGINAL: lib/libc/string/strnlen.c */ -#include "config.h" +#include "includes.h" #if !defined(HAVE_STRNLEN) || defined(BROKEN_STRNLEN) #include diff --git a/openbsd-compat/sys-queue.h b/openbsd-compat/sys-queue.h index 28aaaa37a..af93d6814 100644 --- a/openbsd-compat/sys-queue.h +++ b/openbsd-compat/sys-queue.h @@ -45,6 +45,7 @@ #undef SLIST_HEAD_INITIALIZER #undef SLIST_ENTRY #undef SLIST_FOREACH_PREVPTR +#undef SLIST_FOREACH_SAFE #undef SLIST_FIRST #undef SLIST_END #undef SLIST_EMPTY @@ -54,6 +55,7 @@ #undef SLIST_INSERT_AFTER #undef SLIST_INSERT_HEAD #undef SLIST_REMOVE_HEAD +#undef SLIST_REMOVE_AFTER #undef SLIST_REMOVE #undef SLIST_REMOVE_NEXT #undef LIST_HEAD @@ -64,6 +66,7 @@ #undef LIST_EMPTY #undef LIST_NEXT #undef LIST_FOREACH +#undef LIST_FOREACH_SAFE #undef LIST_INIT #undef LIST_INSERT_AFTER #undef LIST_INSERT_BEFORE @@ -94,6 +97,8 @@ #undef TAILQ_EMPTY #undef TAILQ_FOREACH #undef TAILQ_FOREACH_REVERSE +#undef TAILQ_FOREACH_SAFE +#undef TAILQ_FOREACH_REVERSE_SAFE #undef TAILQ_INIT #undef TAILQ_INSERT_HEAD #undef TAILQ_INSERT_TAIL diff --git a/packet.c b/packet.c index 4bfb50726..dcf35e6e6 100644 --- a/packet.c +++ b/packet.c @@ -1,4 +1,4 @@ -/* $OpenBSD: packet.c,v 1.269 2017/12/18 23:13:42 djm Exp $ */ +/* $OpenBSD: packet.c,v 1.277 2018/07/16 03:09:13 djm Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -61,10 +61,19 @@ #include #include -#include +/* + * Explicitly include OpenSSL before zlib as some versions of OpenSSL have + * "free_func" in their headers, which zlib typedefs. + */ +#ifdef WITH_OPENSSL +# include +# include +# ifdef OPENSSL_HAS_ECC +# include +# endif +#endif -#include "buffer.h" /* typedefs XXX */ -#include "key.h" /* typedefs XXX */ +#include #include "xmalloc.h" #include "crc32.h" @@ -147,12 +156,6 @@ struct session_state { int compression_in_failures; int compression_out_failures; - /* - * Flag indicating whether packet compression/decompression is - * enabled. - */ - int packet_compression; - /* default maximum packet size */ u_int max_packet_size; @@ -418,13 +421,16 @@ ssh_packet_start_discard(struct ssh *ssh, struct sshenc *enc, int ssh_packet_connection_is_on_socket(struct ssh *ssh) { - struct session_state *state = ssh->state; + struct session_state *state; struct sockaddr_storage from, to; socklen_t fromlen, tolen; - if (state->connection_in == -1 || state->connection_out == -1) + if (ssh == NULL || ssh->state == NULL) return 0; + state = ssh->state; + if (state->connection_in == -1 || state->connection_out == -1) + return 0; /* filedescriptors in and out are the same, so it's a socket */ if (state->connection_in == state->connection_out) return 1; @@ -508,11 +514,12 @@ ssh_packet_get_connection_out(struct ssh *ssh) const char * ssh_remote_ipaddr(struct ssh *ssh) { - const int sock = ssh->state->connection_in; + int sock; /* Check whether we have cached the ipaddr. */ if (ssh->remote_ipaddr == NULL) { if (ssh_packet_connection_is_on_socket(ssh)) { + sock = ssh->state->connection_in; ssh->remote_ipaddr = get_peer_ipaddr(sock); ssh->remote_port = get_peer_port(sock); ssh->local_ipaddr = get_local_ipaddr(sock); @@ -597,7 +604,7 @@ ssh_packet_close_internal(struct ssh *ssh, int do_close) state->newkeys[mode] = NULL; ssh_clear_newkeys(ssh, mode); /* next keys */ } - /* comression state is in shared mem, so we can only release it once */ + /* compression state is in shared mem, so we can only release it once */ if (do_close && state->compression_buffer) { sshbuf_free(state->compression_buffer); if (state->compression_out_started) { @@ -627,6 +634,8 @@ ssh_packet_close_internal(struct ssh *ssh, int do_close) cipher_free(state->receive_context); state->send_context = state->receive_context = NULL; if (do_close) { + free(ssh->local_ipaddr); + ssh->local_ipaddr = NULL; free(ssh->remote_ipaddr); ssh->remote_ipaddr = NULL; free(ssh->state); @@ -713,21 +722,6 @@ start_compression_in(struct ssh *ssh) return 0; } -int -ssh_packet_start_compression(struct ssh *ssh, int level) -{ - int r; - - if (ssh->state->packet_compression) - return SSH_ERR_INTERNAL_ERROR; - ssh->state->packet_compression = 1; - if ((r = ssh_packet_init_compression(ssh)) != 0 || - (r = start_compression_in(ssh)) != 0 || - (r = start_compression_out(ssh, level)) != 0) - return r; - return 0; -} - /* XXX remove need for separate compression buffer */ static int compress_buffer(struct ssh *ssh, struct sshbuf *in, struct sshbuf *out) @@ -965,7 +959,7 @@ ssh_packet_need_rekeying(struct ssh *ssh, u_int outbound_packet_len) state->p_read.packets > MAX_PACKETS) return 1; - /* Rekey after (cipher-specific) maxiumum blocks */ + /* Rekey after (cipher-specific) maximum blocks */ out_blocks = ROUNDUP(outbound_packet_len, state->newkeys[MODE_OUT]->enc.block_size); return (state->max_blocks_out && @@ -1338,8 +1332,10 @@ ssh_packet_read_seqnr(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p) NULL, NULL, timeoutp)) >= 0) break; if (errno != EAGAIN && errno != EINTR && - errno != EWOULDBLOCK) - break; + errno != EWOULDBLOCK) { + r = SSH_ERR_SYSTEM_ERROR; + goto out; + } if (state->packet_timeout_ms == -1) continue; ms_subtract_diff(&start, &ms_remain); diff --git a/packet.h b/packet.h index a2ece6786..170203cab 100644 --- a/packet.h +++ b/packet.h @@ -1,4 +1,4 @@ -/* $OpenBSD: packet.h,v 1.84 2017/12/10 05:55:29 dtucker Exp $ */ +/* $OpenBSD: packet.h,v 1.86 2018/07/09 21:20:26 markus Exp $ */ /* * Author: Tatu Ylonen @@ -107,7 +107,6 @@ void ssh_clear_newkeys(struct ssh *, int); int ssh_packet_is_rekeying(struct ssh *); void ssh_packet_set_protocol_flags(struct ssh *, u_int); u_int ssh_packet_get_protocol_flags(struct ssh *); -int ssh_packet_start_compression(struct ssh *, int); void ssh_packet_set_tos(struct ssh *, int); void ssh_packet_set_interactive(struct ssh *, int, int, int); int ssh_packet_is_interactive(struct ssh *); @@ -148,8 +147,8 @@ int ssh_packet_not_very_much_data_to_write(struct ssh *); int ssh_packet_connection_is_on_socket(struct ssh *); int ssh_packet_remaining(struct ssh *); -void tty_make_modes(int, struct termios *); -void tty_parse_modes(int, int *); +void ssh_tty_make_modes(struct ssh *, int, struct termios *); +void ssh_tty_parse_modes(struct ssh *, int); void ssh_packet_set_alive_timeouts(struct ssh *, int); int ssh_packet_inc_alive_timeouts(struct ssh *); diff --git a/platform.c b/platform.c index 7fd872172..872b7cfd5 100644 --- a/platform.c +++ b/platform.c @@ -20,10 +20,9 @@ #include #include "log.h" -#include "buffer.h" #include "misc.h" #include "servconf.h" -#include "key.h" +#include "sshkey.h" #include "hostfile.h" #include "auth.h" #include "auth-pam.h" diff --git a/readconf.c b/readconf.c index e3cd62937..e02a9bb8f 100644 --- a/readconf.c +++ b/readconf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: readconf.c,v 1.283 2018/02/23 15:58:37 markus Exp $ */ +/* $OpenBSD: readconf.c,v 1.297 2018/08/12 20:19:13 djm Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -54,6 +54,7 @@ #include "xmalloc.h" #include "ssh.h" +#include "ssherr.h" #include "compat.h" #include "cipher.h" #include "pathnames.h" @@ -162,7 +163,7 @@ typedef enum { oEnableSSHKeysign, oRekeyLimit, oVerifyHostKeyDNS, oConnectTimeout, oAddressFamily, oGssAuthentication, oGssDelegateCreds, oServerAliveInterval, oServerAliveCountMax, oIdentitiesOnly, - oSendEnv, oControlPath, oControlMaster, oControlPersist, + oSendEnv, oSetEnv, oControlPath, oControlMaster, oControlPersist, oHashKnownHosts, oTunnel, oTunnelDevice, oLocalCommand, oPermitLocalCommand, oRemoteCommand, @@ -191,6 +192,7 @@ static struct { { "userknownhostsfile2", oDeprecated }, { "useroaming", oDeprecated }, { "usersh", oDeprecated }, + { "useprivilegedport", oDeprecated }, /* Unsupported options */ { "afstokenpassing", oUnsupported }, @@ -223,7 +225,6 @@ static struct { { "exitonforwardfailure", oExitOnForwardFailure }, { "xauthlocation", oXAuthLocation }, { "gatewayports", oGatewayPorts }, - { "useprivilegedport", oUsePrivilegedPort }, { "passwordauthentication", oPasswordAuthentication }, { "kbdinteractiveauthentication", oKbdInteractiveAuthentication }, { "kbdinteractivedevices", oKbdInteractiveDevices }, @@ -231,7 +232,7 @@ static struct { { "dsaauthentication", oPubkeyAuthentication }, /* alias */ { "hostbasedauthentication", oHostbasedAuthentication }, { "challengeresponseauthentication", oChallengeResponseAuthentication }, - { "skeyauthentication", oChallengeResponseAuthentication }, /* alias */ + { "skeyauthentication", oUnsupported }, { "tisauthentication", oChallengeResponseAuthentication }, /* alias */ { "identityfile", oIdentityFile }, { "identityfile2", oIdentityFile }, /* obsolete */ @@ -278,6 +279,7 @@ static struct { { "serveraliveinterval", oServerAliveInterval }, { "serveralivecountmax", oServerAliveCountMax }, { "sendenv", oSendEnv }, + { "setenv", oSetEnv }, { "controlpath", oControlPath }, { "controlmaster", oControlMaster }, { "controlpersist", oControlPersist }, @@ -320,12 +322,8 @@ void add_local_forward(Options *options, const struct Forward *newfwd) { struct Forward *fwd; - extern uid_t original_real_uid; int i; - if (!bind_permitted(newfwd->listen_port, original_real_uid) && - newfwd->listen_path == NULL) - fatal("Privileged ports can only be forwarded by root."); /* Don't add duplicates */ for (i = 0; i < options->num_local_forwards; i++) { if (forward_equals(newfwd, options->local_forwards + i)) @@ -494,7 +492,6 @@ execute_in_shell(const char *cmd) char *shell; pid_t pid; int devnull, status; - extern uid_t original_real_uid; if ((shell = getenv("SHELL")) == NULL) shell = _PATH_BSHELL; @@ -509,9 +506,6 @@ execute_in_shell(const char *cmd) if ((pid = fork()) == 0) { char *argv[4]; - /* Child. Permanently give up superuser privileges. */ - permanently_drop_suid(original_real_uid); - /* Redirect child stdin and stdout. Leave stderr */ if (dup2(devnull, STDIN_FILENO) == -1) fatal("dup2: %s", strerror(errno)); @@ -564,6 +558,7 @@ match_cfg_line(Options *options, char **condition, struct passwd *pw, const char *ruser; int r, port, this_result, result = 1, attributes = 0, negate; char thishost[NI_MAXHOST], shorthost[NI_MAXHOST], portstr[NI_MAXSERV]; + char uidstr[32]; /* * Configuration is likely to be incomplete at this point so we @@ -644,6 +639,8 @@ match_cfg_line(Options *options, char **condition, struct passwd *pw, strlcpy(shorthost, thishost, sizeof(shorthost)); shorthost[strcspn(thishost, ".")] = '\0'; snprintf(portstr, sizeof(portstr), "%d", port); + snprintf(uidstr, sizeof(uidstr), "%llu", + (unsigned long long)pw->pw_uid); cmd = percent_expand(arg, "L", shorthost, @@ -654,6 +651,7 @@ match_cfg_line(Options *options, char **condition, struct passwd *pw, "p", portstr, "r", ruser, "u", pw->pw_name, + "i", uidstr, (char *)NULL); if (result != 1) { /* skip execution if prior predicate failed */ @@ -697,6 +695,35 @@ match_cfg_line(Options *options, char **condition, struct passwd *pw, return result; } +/* Remove environment variable by pattern */ +static void +rm_env(Options *options, const char *arg, const char *filename, int linenum) +{ + int i, j; + char *cp; + + /* Remove an environment variable */ + for (i = 0; i < options->num_send_env; ) { + cp = xstrdup(options->send_env[i]); + if (!match_pattern(cp, arg + 1)) { + free(cp); + i++; + continue; + } + debug3("%s line %d: removing environment %s", + filename, linenum, cp); + free(cp); + free(options->send_env[i]); + options->send_env[i] = NULL; + for (j = i; j < options->num_send_env - 1; j++) { + options->send_env[j] = options->send_env[j + 1]; + options->send_env[j + 1] = NULL; + } + options->num_send_env--; + /* NB. don't increment i */ + } +} + /* * Returns the number of the token pointed to by cp or oBadOption. */ @@ -931,10 +958,6 @@ parse_time: intptr = &options->exit_on_forward_failure; goto parse_flag; - case oUsePrivilegedPort: - intptr = &options->use_privileged_port; - goto parse_flag; - case oPasswordAuthentication: intptr = &options->password_authentication; goto parse_flag; @@ -1372,11 +1395,41 @@ parse_keytypes: filename, linenum); if (!*activep) continue; - if (options->num_send_env >= MAX_SEND_ENV) - fatal("%s line %d: too many send env.", + if (*arg == '-') { + /* Removing an env var */ + rm_env(options, arg, filename, linenum); + continue; + } else { + /* Adding an env var */ + if (options->num_send_env >= INT_MAX) + fatal("%s line %d: too many send env.", + filename, linenum); + options->send_env = xrecallocarray( + options->send_env, options->num_send_env, + options->num_send_env + 1, + sizeof(*options->send_env)); + options->send_env[options->num_send_env++] = + xstrdup(arg); + } + } + break; + + case oSetEnv: + value = options->num_setenv; + while ((arg = strdelimw(&s)) != NULL && *arg != '\0') { + if (strchr(arg, '=') == NULL) + fatal("%s line %d: Invalid SetEnv.", filename, linenum); - options->send_env[options->num_send_env++] = - xstrdup(arg); + if (!*activep || value != 0) + continue; + /* Adding a setenv var */ + if (options->num_setenv >= INT_MAX) + fatal("%s line %d: too many SetEnv.", + filename, linenum); + options->setenv = xrecallocarray( + options->setenv, options->num_setenv, + options->num_setenv + 1, sizeof(*options->setenv)); + options->setenv[options->num_setenv++] = xstrdup(arg); } break; @@ -1701,7 +1754,8 @@ read_config_file_depth(const char *filename, struct passwd *pw, int flags, int *activep, int depth) { FILE *f; - char line[4096]; + char *line = NULL; + size_t linesize = 0; int linenum; int bad_options = 0; @@ -1739,15 +1793,14 @@ read_config_file_depth(const char *filename, struct passwd *pw, * on/off by Host specifications. */ linenum = 0; - while (fgets(line, sizeof(line), f)) { + while (getline(&line, &linesize, f) != -1) { /* Update line number counter. */ linenum++; - if (strlen(line) == sizeof(line) - 1) - fatal("%s line %d too long", filename, linenum); if (process_config_line_depth(options, pw, host, original_host, line, filename, linenum, activep, flags, depth) != 0) bad_options++; } + free(line); fclose(f); if (bad_options > 0) fatal("%s: terminating, %d bad configuration options", @@ -1785,7 +1838,6 @@ initialize_options(Options * options) options->fwd_opts.gateway_ports = -1; options->fwd_opts.streamlocal_bind_mask = (mode_t)-1; options->fwd_opts.streamlocal_bind_unlink = -1; - options->use_privileged_port = -1; options->pubkey_authentication = -1; options->challenge_response_authentication = -1; options->gss_authentication = -1; @@ -1839,7 +1891,10 @@ initialize_options(Options * options) options->verify_host_key_dns = -1; options->server_alive_interval = -1; options->server_alive_count_max = -1; + options->send_env = NULL; options->num_send_env = 0; + options->setenv = NULL; + options->num_setenv = 0; options->control_path = NULL; options->control_master = -1; options->control_persist = -1; @@ -1893,6 +1948,9 @@ fill_default_options_for_canonicalization(Options *options) void fill_default_options(Options * options) { + char *all_cipher, *all_mac, *all_kex, *all_key; + int r; + if (options->forward_agent == -1) options->forward_agent = 0; if (options->forward_x11 == -1) @@ -1922,8 +1980,6 @@ fill_default_options(Options * options) options->fwd_opts.streamlocal_bind_mask = 0177; if (options->fwd_opts.streamlocal_bind_unlink == -1) options->fwd_opts.streamlocal_bind_unlink = 0; - if (options->use_privileged_port == -1) - options->use_privileged_port = 0; if (options->pubkey_authentication == -1) options->pubkey_authentication = 1; if (options->challenge_response_authentication == -1) @@ -2022,9 +2078,9 @@ fill_default_options(Options * options) if (options->visual_host_key == -1) options->visual_host_key = 0; if (options->ip_qos_interactive == -1) - options->ip_qos_interactive = IPTOS_LOWDELAY; + options->ip_qos_interactive = IPTOS_DSCP_AF21; if (options->ip_qos_bulk == -1) - options->ip_qos_bulk = IPTOS_THROUGHPUT; + options->ip_qos_bulk = IPTOS_DSCP_CS1; if (options->request_tty == -1) options->request_tty = REQUEST_TTY_AUTO; if (options->proxy_use_fdpass == -1) @@ -2039,14 +2095,28 @@ fill_default_options(Options * options) options->fingerprint_hash = SSH_FP_HASH_DEFAULT; if (options->update_hostkeys == -1) options->update_hostkeys = 0; - if (kex_assemble_names(KEX_CLIENT_ENCRYPT, &options->ciphers) != 0 || - kex_assemble_names(KEX_CLIENT_MAC, &options->macs) != 0 || - kex_assemble_names(KEX_CLIENT_KEX, &options->kex_algorithms) != 0 || - kex_assemble_names(KEX_DEFAULT_PK_ALG, - &options->hostbased_key_types) != 0 || - kex_assemble_names(KEX_DEFAULT_PK_ALG, - &options->pubkey_key_types) != 0) - fatal("%s: kex_assemble_names failed", __func__); + + /* Expand KEX name lists */ + all_cipher = cipher_alg_list(',', 0); + all_mac = mac_alg_list(','); + all_kex = kex_alg_list(','); + all_key = sshkey_alg_list(0, 0, 1, ','); +#define ASSEMBLE(what, defaults, all) \ + do { \ + if ((r = kex_assemble_names(&options->what, \ + defaults, all)) != 0) \ + fatal("%s: %s: %s", __func__, #what, ssh_err(r)); \ + } while (0) + ASSEMBLE(ciphers, KEX_SERVER_ENCRYPT, all_cipher); + ASSEMBLE(macs, KEX_SERVER_MAC, all_mac); + ASSEMBLE(kex_algorithms, KEX_SERVER_KEX, all_kex); + ASSEMBLE(hostbased_key_types, KEX_DEFAULT_PK_ALG, all_key); + ASSEMBLE(pubkey_key_types, KEX_DEFAULT_PK_ALG, all_key); +#undef ASSEMBLE + free(all_cipher); + free(all_mac); + free(all_kex); + free(all_key); #define CLEAR_ON_NONE(v) \ do { \ @@ -2060,6 +2130,12 @@ fill_default_options(Options * options) CLEAR_ON_NONE(options->proxy_command); CLEAR_ON_NONE(options->control_path); CLEAR_ON_NONE(options->revoked_host_keys); + if (options->jump_host != NULL && + strcmp(options->jump_host, "none") == 0 && + options->jump_port == 0 && options->jump_user == NULL) { + free(options->jump_host); + options->jump_host = NULL; + } /* options->identity_agent distinguishes NULL from 'none' */ /* options->user will be set in the main program if appropriate */ /* options->hostname will be set in the main program if appropriate */ @@ -2288,6 +2364,8 @@ parse_jump(const char *s, Options *o, int active) orig = sdup = xstrdup(s); first = active; do { + if (strcasecmp(s, "none") == 0) + break; if ((cp = strrchr(sdup, ',')) == NULL) cp = sdup; /* last */ else @@ -2308,14 +2386,19 @@ parse_jump(const char *s, Options *o, int active) } while (cp != sdup); /* success */ if (active) { - o->jump_user = user; - o->jump_host = host; - o->jump_port = port; - o->proxy_command = xstrdup("none"); - user = host = NULL; - if ((cp = strrchr(s, ',')) != NULL && cp != s) { - o->jump_extra = xstrdup(s); - o->jump_extra[cp - s] = '\0'; + if (strcasecmp(s, "none") == 0) { + o->jump_host = xstrdup("none"); + o->jump_port = 0; + } else { + o->jump_user = user; + o->jump_host = host; + o->jump_port = port; + o->proxy_command = xstrdup("none"); + user = host = NULL; + if ((cp = strrchr(s, ',')) != NULL && cp != s) { + o->jump_extra = xstrdup(s); + o->jump_extra[cp - s] = '\0'; + } } } ret = 0; @@ -2372,6 +2455,8 @@ fmt_intarg(OpCodes code, int val) return fmt_multistate_int(val, multistate_requesttty); case oCanonicalizeHostname: return fmt_multistate_int(val, multistate_canonicalizehostname); + case oAddKeysToAgent: + return fmt_multistate_int(val, multistate_yesnoaskconfirm); case oFingerprintHash: return ssh_digest_alg_name(val); default: @@ -2479,11 +2564,14 @@ void dump_client_config(Options *o, const char *host) { int i; - char buf[8]; + char buf[8], *all_key; /* This is normally prepared in ssh_kex2 */ - if (kex_assemble_names(KEX_DEFAULT_PK_ALG, &o->hostkeyalgorithms) != 0) + all_key = sshkey_alg_list(0, 0, 1, ','); + if (kex_assemble_names( &o->hostkeyalgorithms, + KEX_DEFAULT_PK_ALG, all_key) != 0) fatal("%s: kex_assemble_names failed", __func__); + free(all_key); /* Most interesting options first: user, host, port */ dump_cfg_string(oUser, o->user); @@ -2491,6 +2579,7 @@ dump_client_config(Options *o, const char *host) dump_cfg_int(oPort, o->port); /* Flag options */ + dump_cfg_fmtint(oAddKeysToAgent, o->add_keys_to_agent); dump_cfg_fmtint(oAddressFamily, o->address_family); dump_cfg_fmtint(oBatchMode, o->batch_mode); dump_cfg_fmtint(oCanonicalizeFallbackLocal, o->canonicalize_fallback_local); @@ -2525,7 +2614,6 @@ dump_client_config(Options *o, const char *host) dump_cfg_fmtint(oStrictHostKeyChecking, o->strict_host_key_checking); dump_cfg_fmtint(oTCPKeepAlive, o->tcp_keep_alive); dump_cfg_fmtint(oTunnel, o->tun_open); - dump_cfg_fmtint(oUsePrivilegedPort, o->use_privileged_port); dump_cfg_fmtint(oVerifyHostKeyDNS, o->verify_host_key_dns); dump_cfg_fmtint(oVisualHostKey, o->visual_host_key); dump_cfg_fmtint(oUpdateHostkeys, o->update_hostkeys); @@ -2547,6 +2635,7 @@ dump_client_config(Options *o, const char *host) dump_cfg_string(oHostKeyAlias, o->host_key_alias); dump_cfg_string(oHostbasedKeyTypes, o->hostbased_key_types); dump_cfg_string(oIdentityAgent, o->identity_agent); + dump_cfg_string(oIgnoreUnknown, o->ignored_unknown); dump_cfg_string(oKbdInteractiveDevices, o->kbd_interactive_devices); dump_cfg_string(oKexAlgorithms, o->kex_algorithms ? o->kex_algorithms : KEX_CLIENT_KEX); dump_cfg_string(oLocalCommand, o->local_command); @@ -2569,9 +2658,11 @@ dump_client_config(Options *o, const char *host) /* String array options */ dump_cfg_strarray(oIdentityFile, o->num_identity_files, o->identity_files); dump_cfg_strarray_oneline(oCanonicalDomains, o->num_canonical_domains, o->canonical_domains); + dump_cfg_strarray(oCertificateFile, o->num_certificate_files, o->certificate_files); dump_cfg_strarray_oneline(oGlobalKnownHostsFile, o->num_system_hostfiles, o->system_hostfiles); dump_cfg_strarray_oneline(oUserKnownHostsFile, o->num_user_hostfiles, o->user_hostfiles); dump_cfg_strarray(oSendEnv, o->num_send_env, o->send_env); + dump_cfg_strarray(oSetEnv, o->num_setenv, o->setenv); /* Special cases */ @@ -2629,6 +2720,9 @@ dump_client_config(Options *o, const char *host) printf("streamlocalbindmask 0%o\n", o->fwd_opts.streamlocal_bind_mask); + /* oLogFacility */ + printf("syslogfacility %s\n", log_facility_name(o->log_facility)); + /* oProxyCommand / oProxyJump */ if (o->jump_host == NULL) dump_cfg_string(oProxyCommand, o->proxy_command); diff --git a/readconf.h b/readconf.h index f4d9e2b26..c56887816 100644 --- a/readconf.h +++ b/readconf.h @@ -1,4 +1,4 @@ -/* $OpenBSD: readconf.h,v 1.125 2018/02/23 02:34:33 djm Exp $ */ +/* $OpenBSD: readconf.h,v 1.127 2018/07/19 10:28:47 dtucker Exp $ */ /* * Author: Tatu Ylonen @@ -18,7 +18,6 @@ /* Data structure for representing option data. */ -#define MAX_SEND_ENV 256 #define SSH_MAX_HOSTS_FILES 32 #define MAX_CANON_DOMAINS 32 #define PATH_MAX_SUN (sizeof((struct sockaddr_un *)0)->sun_path) @@ -36,7 +35,6 @@ typedef struct { int exit_on_forward_failure; /* Exit if bind(2) fails for -L/-R */ char *xauth_location; /* Location for xauth program */ struct ForwardOptions fwd_opts; /* forwarding options */ - int use_privileged_port; /* Don't use privileged port if false. */ int pubkey_authentication; /* Try ssh2 pubkey authentication. */ int hostbased_authentication; /* ssh2's rhosts_rsa */ int challenge_response_authentication; @@ -120,7 +118,9 @@ typedef struct { int server_alive_count_max; int num_send_env; - char *send_env[MAX_SEND_ENV]; + char **send_env; + int num_setenv; + char **setenv; char *control_path; int control_master; diff --git a/readpass.c b/readpass.c index a5a49c87b..d1634b730 100644 --- a/readpass.c +++ b/readpass.c @@ -1,4 +1,4 @@ -/* $OpenBSD: readpass.c,v 1.51 2015/12/11 00:20:04 mmcc Exp $ */ +/* $OpenBSD: readpass.c,v 1.52 2018/07/18 11:34:04 dtucker Exp $ */ /* * Copyright (c) 2001 Markus Friedl. All rights reserved. * @@ -98,7 +98,6 @@ ssh_askpass(char *askpass, const char *msg) return NULL; } if (pid == 0) { - permanently_drop_suid(getuid()); close(p[0]); if (dup2(p[1], STDOUT_FILENO) < 0) fatal("ssh_askpass: dup2: %s", strerror(errno)); diff --git a/regress/Makefile b/regress/Makefile index d15898ad0..647b4a049 100644 --- a/regress/Makefile +++ b/regress/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.96 2017/10/24 19:33:32 millert Exp $ +# $OpenBSD: Makefile,v 1.97 2018/06/07 04:46:34 djm Exp $ REGRESS_TARGETS= unit t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t-exec tests: prep $(REGRESS_TARGETS) @@ -61,6 +61,7 @@ LTESTS= connect \ sshcfgparse \ cfgparse \ cfgmatch \ + cfgmatchlisten \ addrmatch \ localcommand \ forcecommand \ diff --git a/regress/allow-deny-users.sh b/regress/allow-deny-users.sh index 4165111e0..5c3895122 100644 --- a/regress/allow-deny-users.sh +++ b/regress/allow-deny-users.sh @@ -1,6 +1,6 @@ # Public Domain # Zev Weiss, 2016 -# $OpenBSD: allow-deny-users.sh,v 1.4 2017/10/20 02:13:41 djm Exp $ +# $OpenBSD: allow-deny-users.sh,v 1.5 2018/07/13 02:13:50 djm Exp $ tid="AllowUsers/DenyUsers" @@ -10,6 +10,8 @@ if [ "x$me" = "x" ]; then fi other="nobody" +cp $OBJ/sshd_proxy $OBJ/sshd_proxy.orig + test_auth() { deny="$1" @@ -17,17 +19,19 @@ test_auth() should_succeed="$3" failmsg="$4" + cp $OBJ/sshd_proxy.orig $OBJ/sshd_proxy + echo DenyUsers="$deny" >> $OBJ/sshd_proxy + echo AllowUsers="$allow" >> $OBJ/sshd_proxy + start_sshd -oDenyUsers="$deny" -oAllowUsers="$allow" - ${SSH} -F $OBJ/ssh_config "$me@somehost" true + ${SSH} -F $OBJ/ssh_proxy "$me@somehost" true status=$? if (test $status -eq 0 && ! $should_succeed) \ || (test $status -ne 0 && $should_succeed); then fail "$failmsg" fi - - stop_sshd } # DenyUsers AllowUsers should_succeed failure_message diff --git a/regress/authinfo.sh b/regress/authinfo.sh index 3caf89478..693424afa 100644 --- a/regress/authinfo.sh +++ b/regress/authinfo.sh @@ -1,4 +1,4 @@ -# $OpenBSD: authinfo.sh,v 1.2 2017/10/25 20:08:36 millert Exp $ +# $OpenBSD: authinfo.sh,v 1.3 2018/04/10 00:13:27 djm Exp $ # Placed in the Public Domain. tid="authinfo" diff --git a/regress/cert-file.sh b/regress/cert-file.sh index 8fd62c773..1157a3582 100644 --- a/regress/cert-file.sh +++ b/regress/cert-file.sh @@ -1,4 +1,4 @@ -# $OpenBSD: cert-file.sh,v 1.6 2017/04/30 23:34:55 djm Exp $ +# $OpenBSD: cert-file.sh,v 1.7 2018/04/10 00:14:10 djm Exp $ # Placed in the Public Domain. tid="ssh with certificates" @@ -52,7 +52,7 @@ echo "cert-authority $(cat $OBJ/user_ca_key1.pub)" > $OBJ/authorized_keys_$USER cat $OBJ/ssh_proxy | grep -v IdentityFile > $OBJ/no_identity_config # XXX: verify that certificate used was what we expect. Needs exposure of -# keys via enviornment variable or similar. +# keys via environment variable or similar. # Key with no .pub should work - finding the equivalent *-cert.pub. verbose "identity cert with no plain public file" @@ -138,7 +138,7 @@ fi # try ssh with the agent and certificates opts="-F $OBJ/ssh_proxy" -# with no certificates, shoud fail +# with no certificates, should fail ${SSH} $opts somehost exit 52 if [ $? -eq 52 ]; then fail "ssh connect with agent in succeeded with no cert" diff --git a/regress/cert-hostkey.sh b/regress/cert-hostkey.sh index 3e4b0d426..db11708aa 100644 --- a/regress/cert-hostkey.sh +++ b/regress/cert-hostkey.sh @@ -1,4 +1,4 @@ -# $OpenBSD: cert-hostkey.sh,v 1.15 2017/04/30 23:34:55 djm Exp $ +# $OpenBSD: cert-hostkey.sh,v 1.16 2018/07/03 11:43:49 djm Exp $ # Placed in the Public Domain. tid="certified host keys" @@ -17,6 +17,13 @@ for i in `$SSH -Q key`; do continue fi case "$i" in + # Special treatment for RSA keys. + *rsa*cert*) + types="rsa-sha2-256-cert-v01@openssh.com,$i,$types" + types="rsa-sha2-512-cert-v01@openssh.com,$types";; + *rsa*) + types="$types,rsa-sha2-512,rsa-sha2-256,$i";; + # Prefer certificate to plain keys. *cert*) types="$i,$types";; *) types="$types,$i";; esac diff --git a/regress/cfgmatchlisten.sh b/regress/cfgmatchlisten.sh new file mode 100644 index 000000000..a4fd66b32 --- /dev/null +++ b/regress/cfgmatchlisten.sh @@ -0,0 +1,202 @@ +# $OpenBSD: cfgmatchlisten.sh,v 1.3 2018/07/02 14:13:30 dtucker Exp $ +# Placed in the Public Domain. + +tid="sshd_config matchlisten" + +pidfile=$OBJ/remote_pid +fwdport=3301 +fwdspec="localhost:${fwdport}" +fwd="-R $fwdport:127.0.0.1:$PORT" + +echo "ExitOnForwardFailure=yes" >> $OBJ/ssh_config +echo "ExitOnForwardFailure=yes" >> $OBJ/ssh_proxy + +start_client() +{ + rm -f $pidfile + ${SSH} -vvv $fwd "$@" somehost true >>$TEST_REGRESS_LOGFILE 2>&1 + r=$? + if [ $r -ne 0 ]; then + return $r + fi + ${SSH} -vvv $fwd "$@" somehost \ + exec sh -c \'"echo \$\$ > $pidfile; exec sleep 100"\' \ + >>$TEST_REGRESS_LOGFILE 2>&1 & + client_pid=$! + # Wait for remote end + n=0 + while test ! -f $pidfile ; do + sleep 1 + n=`expr $n + 1` + if test $n -gt 60; then + kill $client_pid + fatal "timeout waiting for background ssh" + fi + done + return $r +} + +expect_client_ok() +{ + start_client "$@" || + fail "client did not start" +} + +expect_client_fail() +{ + local failmsg="$1" + shift + start_client "$@" && + fail $failmsg +} + +stop_client() +{ + pid=`cat $pidfile` + if [ ! -z "$pid" ]; then + kill $pid + fi + wait +} + +cp $OBJ/sshd_proxy $OBJ/sshd_proxy_bak +echo "PermitListen 127.0.0.1:1" >>$OBJ/sshd_config +echo "Match Address 127.0.0.1" >>$OBJ/sshd_config +echo "PermitListen 127.0.0.1:2 127.0.0.1:3 $fwdspec" >>$OBJ/sshd_config + +grep -v AuthorizedKeysFile $OBJ/sshd_proxy_bak > $OBJ/sshd_proxy +echo "AuthorizedKeysFile /dev/null" >>$OBJ/sshd_proxy +echo "PermitListen 127.0.0.1:1" >>$OBJ/sshd_proxy +echo "Match user $USER" >>$OBJ/sshd_proxy +echo "AuthorizedKeysFile /dev/null $OBJ/authorized_keys_%u" >>$OBJ/sshd_proxy +echo "Match Address 127.0.0.1" >>$OBJ/sshd_proxy +echo "PermitListen 127.0.0.1:2 127.0.0.1:3 $fwdspec" >>$OBJ/sshd_proxy + +start_sshd + +#set -x + +# Test Match + PermitListen in sshd_config. This should be permitted +trace "match permitlisten localhost" +expect_client_ok -F $OBJ/ssh_config +${SSH} -q -p $fwdport -F $OBJ/ssh_config somehost true || \ + fail "match permitlisten permit" +stop_client + +# Same but from different source. This should not be permitted +trace "match permitlisten proxy" +expect_client_fail "match permitlisten deny" \ + -F $OBJ/ssh_proxy + +# Retry previous with key option, should also be denied. +cp /dev/null $OBJ/authorized_keys_$USER +for t in ${SSH_KEYTYPES}; do + printf 'permitlisten="'$fwdspec'" ' >> $OBJ/authorized_keys_$USER + cat $OBJ/$t.pub >> $OBJ/authorized_keys_$USER +done +trace "match permitlisten proxy w/key opts" +expect_client_fail "match permitlisten deny w/key opt"\ + -F $OBJ/ssh_proxy + +# Test both sshd_config and key options permitting the same dst/port pair. +# Should be permitted. +trace "match permitlisten localhost" +expect_client_ok -F $OBJ/ssh_config +${SSH} -q -p $fwdport -F $OBJ/ssh_config somehost true || \ + fail "match permitlisten permit" +stop_client + +# Test that a bare port number is accepted in PermitListen +cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy +echo "PermitListen 127.0.0.1:1 $fwdport 127.0.0.2:2" >>$OBJ/sshd_proxy +trace "match permitlisten bare" +expect_client_ok -F $OBJ/ssh_config +${SSH} -q -p $fwdport -F $OBJ/ssh_config somehost true || \ + fail "match permitlisten bare" +stop_client + +# Test that an incorrect bare port number is denied as expected +cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy +echo "PermitListen 1 2 99" >>$OBJ/sshd_proxy +trace "match permitlisten bare" +expect_client_fail -F $OBJ/ssh_config + +cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy +echo "PermitListen 127.0.0.1:1 $fwdspec 127.0.0.2:2" >>$OBJ/sshd_proxy +echo "Match User $USER" >>$OBJ/sshd_proxy +echo "PermitListen 127.0.0.1:1 127.0.0.1:2" >>$OBJ/sshd_proxy + +# Test that a Match overrides a PermitListen in the global section +trace "match permitlisten proxy w/key opts" +expect_client_fail "match override permitlisten" \ + -F $OBJ/ssh_proxy + +cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy +echo "PermitListen 127.0.0.1:1 $fwdspec 127.0.0.2:2" >>$OBJ/sshd_proxy +echo "Match User NoSuchUser" >>$OBJ/sshd_proxy +echo "PermitListen 127.0.0.1:1 127.0.0.1:2" >>$OBJ/sshd_proxy + +# Test that a rule that doesn't match doesn't override, plus test a +# PermitListen entry that's not at the start of the list +trace "nomatch permitlisten proxy w/key opts" +expect_client_ok -F $OBJ/ssh_proxy +${SSH} -q -p $fwdport -F $OBJ/ssh_config somehost true || \ + fail "nomatch override permitlisten" +stop_client + +# bind to 127.0.0.1 instead of default localhost +fwdspec2="127.0.0.1:${fwdport}" +fwd="-R ${fwdspec2}:127.0.0.1:$PORT" + +# first try w/ old fwdspec both in server config and key opts +cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy +echo "PermitListen 127.0.0.1:1 $fwdspec 127.0.0.2:2" >>$OBJ/sshd_proxy +cp /dev/null $OBJ/authorized_keys_$USER +for t in ${SSH_KEYTYPES}; do + printf 'permitlisten="'$fwdspec'" ' >> $OBJ/authorized_keys_$USER + cat $OBJ/$t.pub >> $OBJ/authorized_keys_$USER +done +trace "nomatch permitlisten 127.0.0.1 server config and userkey" +expect_client_fail "nomatch 127.0.0.1 server config and userkey" \ + -F $OBJ/ssh_config + +# correct server config, denied by key opts +cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy +echo "PermitListen 127.0.0.1:1 ${fwdspec2} 127.0.0.2:2" >>$OBJ/sshd_proxy +trace "nomatch permitlisten 127.0.0.1 w/key opts" +expect_client_fail "nomatch 127.0.0.1 w/key opts" \ + -F $OBJ/ssh_config + +# fix key opts +cp /dev/null $OBJ/authorized_keys_$USER +for t in ${SSH_KEYTYPES}; do + printf 'permitlisten="'$fwdspec2'" ' >> $OBJ/authorized_keys_$USER + cat $OBJ/$t.pub >> $OBJ/authorized_keys_$USER +done +trace "match permitlisten 127.0.0.1 server config w/key opts" +expect_client_ok -F $OBJ/ssh_proxy +${SSH} -q -p $fwdport -F $OBJ/ssh_config somehost true || \ + fail "match 127.0.0.1 server config w/key opts" +stop_client + +# key opts with bare port number +cp /dev/null $OBJ/authorized_keys_$USER +for t in ${SSH_KEYTYPES}; do + printf 'permitlisten="'$fwdport'" ' >> $OBJ/authorized_keys_$USER + cat $OBJ/$t.pub >> $OBJ/authorized_keys_$USER +done +trace "match permitlisten 127.0.0.1 server config w/key opts (bare)" +expect_client_ok -F $OBJ/ssh_proxy +${SSH} -q -p $fwdport -F $OBJ/ssh_config somehost true || \ + fail "match 127.0.0.1 server config w/key opts (bare)" +stop_client + +# key opts with incorrect bare port number +cp /dev/null $OBJ/authorized_keys_$USER +for t in ${SSH_KEYTYPES}; do + printf 'permitlisten="99" ' >> $OBJ/authorized_keys_$USER + cat $OBJ/$t.pub >> $OBJ/authorized_keys_$USER +done +trace "match permitlisten 127.0.0.1 server config w/key opts (wrong bare)" +expect_client_fail "nomatch 127.0.0.1 w/key opts (wrong bare)" \ + -F $OBJ/ssh_config diff --git a/regress/cfgparse.sh b/regress/cfgparse.sh index 6919accfa..060116fb7 100644 --- a/regress/cfgparse.sh +++ b/regress/cfgparse.sh @@ -1,4 +1,4 @@ -# $OpenBSD: cfgparse.sh,v 1.6 2016/06/03 03:47:59 dtucker Exp $ +# $OpenBSD: cfgparse.sh,v 1.7 2018/05/11 03:51:06 dtucker Exp $ # Placed in the Public Domain. tid="sshd config parse" @@ -10,8 +10,8 @@ fi # We need to use the keys generated for the regression test because sshd -T # will fail if we're not running with SUDO (no permissions for real keys) or -# if we are # running tests on a system that has never had sshd installed -# (keys won't exist). +# if we are running tests on a system that has never had sshd installed +# because the keys won't exist. grep "HostKey " $OBJ/sshd_config > $OBJ/sshd_config_minimal SSHD_KEYS="`cat $OBJ/sshd_config_minimal`" diff --git a/regress/forward-control.sh b/regress/forward-control.sh index 93d05cf63..3b1f69a71 100644 --- a/regress/forward-control.sh +++ b/regress/forward-control.sh @@ -1,4 +1,4 @@ -# $OpenBSD: forward-control.sh,v 1.5 2018/03/02 02:51:55 djm Exp $ +# $OpenBSD: forward-control.sh,v 1.7 2018/06/07 14:29:43 djm Exp $ # Placed in the Public Domain. tid="sshd control of local and remote forwarding" @@ -67,7 +67,7 @@ check_rfwd() { _message=$2 rm -f $READY ${SSH} -F $OBJ/ssh_proxy \ - -R$RFWD_PORT:127.0.0.1:$PORT \ + -R127.0.0.1:$RFWD_PORT:127.0.0.1:$PORT \ -o ExitOnForwardFailure=yes \ -n host exec sh -c \'"sleep 60 & echo \$! > $READY ; wait "\' \ >/dev/null 2>&1 & @@ -100,8 +100,8 @@ cp ${OBJ}/authorized_keys_${USER} ${OBJ}/authorized_keys_${USER}.bak check_lfwd Y "default configuration" check_rfwd Y "default configuration" -# Usage: all_tests yes|local|remote|no Y|N Y|N Y|N Y|N Y|N Y|N -all_tests() { +# Usage: lperm_tests yes|local|remote|no Y|N Y|N Y|N Y|N Y|N Y|N +lperm_tests() { _tcpfwd=$1 _plain_lfwd=$2 _plain_rfwd=$3 @@ -109,32 +109,39 @@ all_tests() { _nopermit_rfwd=$5 _permit_lfwd=$6 _permit_rfwd=$7 - _badfwd=127.0.0.1:22 + _badfwd1=127.0.0.1:22 + _badfwd2=127.0.0.2:22 _goodfwd=127.0.0.1:${PORT} cp ${OBJ}/authorized_keys_${USER}.bak ${OBJ}/authorized_keys_${USER} _prefix="AllowTcpForwarding=$_tcpfwd" + # No PermitOpen ( cat ${OBJ}/sshd_proxy.bak ; echo "AllowTcpForwarding $_tcpfwd" ) \ > ${OBJ}/sshd_proxy check_lfwd $_plain_lfwd "$_prefix" check_rfwd $_plain_rfwd "$_prefix" + # PermitOpen via sshd_config that doesn't match ( cat ${OBJ}/sshd_proxy.bak ; echo "AllowTcpForwarding $_tcpfwd" ; - echo "PermitOpen $_badfwd" ) \ + echo "PermitOpen $_badfwd1 $_badfwd2" ) \ > ${OBJ}/sshd_proxy check_lfwd $_nopermit_lfwd "$_prefix, !PermitOpen" check_rfwd $_nopermit_rfwd "$_prefix, !PermitOpen" # PermitOpen via sshd_config that does match ( cat ${OBJ}/sshd_proxy.bak ; echo "AllowTcpForwarding $_tcpfwd" ; - echo "PermitOpen $_badfwd $_goodfwd" ) \ + echo "PermitOpen $_badfwd1 $_goodfwd $_badfwd2" ) \ > ${OBJ}/sshd_proxy + check_lfwd $_plain_lfwd "$_prefix, PermitOpen" + check_rfwd $_plain_rfwd "$_prefix, PermitOpen" + + # permitopen keys option. # NB. permitopen via authorized_keys should have same # success/fail as via sshd_config # permitopen via authorized_keys that doesn't match - sed "s/^/permitopen=\"$_badfwd\" /" \ + sed "s/^/permitopen=\"$_badfwd1\",permitopen=\"$_badfwd2\" /" \ < ${OBJ}/authorized_keys_${USER}.bak \ > ${OBJ}/authorized_keys_${USER} || fatal "sed 1 fail" ( cat ${OBJ}/sshd_proxy.bak ; @@ -143,7 +150,7 @@ all_tests() { check_lfwd $_nopermit_lfwd "$_prefix, !permitopen" check_rfwd $_nopermit_rfwd "$_prefix, !permitopen" # permitopen via authorized_keys that does match - sed "s/^/permitopen=\"$_badfwd\",permitopen=\"$_goodfwd\" /" \ + sed "s/^/permitopen=\"$_badfwd1\",permitopen=\"$_goodfwd\" /" \ < ${OBJ}/authorized_keys_${USER}.bak \ > ${OBJ}/authorized_keys_${USER} || fatal "sed 2 fail" ( cat ${OBJ}/sshd_proxy.bak ; @@ -151,6 +158,7 @@ all_tests() { > ${OBJ}/sshd_proxy check_lfwd $_permit_lfwd "$_prefix, permitopen" check_rfwd $_permit_rfwd "$_prefix, permitopen" + # Check port-forwarding flags in authorized_keys. # These two should refuse all. sed "s/^/no-port-forwarding /" \ @@ -180,9 +188,48 @@ all_tests() { check_rfwd $_plain_rfwd "$_prefix, restrict,port-forwarding" } -# no-permitopen mismatch-permitopen match-permitopen -# AllowTcpForwarding local remote local remote local remote -all_tests yes Y Y N Y Y Y -all_tests local Y N N N Y N -all_tests remote N Y N Y N Y -all_tests no N N N N N N +# permit-open none mismatch match +# AllowTcpForwarding local remote local remote local remote +lperm_tests yes Y Y N Y Y Y +lperm_tests local Y N N N Y N +lperm_tests remote N Y N Y N Y +lperm_tests no N N N N N N + +# Usage: rperm_tests yes|local|remote|no Y|N Y|N Y|N Y|N Y|N Y|N +rperm_tests() { + _tcpfwd=$1 + _plain_lfwd=$2 + _plain_rfwd=$3 + _nopermit_lfwd=$4 + _nopermit_rfwd=$5 + _permit_lfwd=$6 + _permit_rfwd=$7 + _badfwd1=127.0.0.1:22 + _badfwd2=127.0.0.2:${RFWD_PORT} + _goodfwd=127.0.0.1:${RFWD_PORT} + cp ${OBJ}/authorized_keys_${USER}.bak ${OBJ}/authorized_keys_${USER} + _prefix="AllowTcpForwarding=$_tcpfwd" + + # PermitListen via sshd_config that doesn't match + ( cat ${OBJ}/sshd_proxy.bak ; + echo "AllowTcpForwarding $_tcpfwd" ; + echo "PermitListen $_badfwd1 $_badfwd2" ) \ + > ${OBJ}/sshd_proxy + check_lfwd $_nopermit_lfwd "$_prefix, !PermitListen" + check_rfwd $_nopermit_rfwd "$_prefix, !PermitListen" + # PermitListen via sshd_config that does match + ( cat ${OBJ}/sshd_proxy.bak ; + echo "AllowTcpForwarding $_tcpfwd" ; + echo "PermitListen $_badfwd1 $_goodfwd $_badfwd2" ) \ + > ${OBJ}/sshd_proxy + check_lfwd $_plain_lfwd "$_prefix, PermitListen" + check_rfwd $_plain_rfwd "$_prefix, PermitListen" +} + +# permit-remote-open none mismatch match +# AllowTcpForwarding local remote local remote local remote +rperm_tests yes Y Y Y N Y Y +rperm_tests local Y N Y N Y N +rperm_tests remote N Y N N N Y +rperm_tests no N N N N N N + diff --git a/regress/forwarding.sh b/regress/forwarding.sh index 9b2f6dbf1..d3f33ee58 100644 --- a/regress/forwarding.sh +++ b/regress/forwarding.sh @@ -16,7 +16,8 @@ start_sshd base=33 last=$PORT fwd="" -CTL=/tmp/openssh.regress.ctl-sock.$$ +make_tmpdir +CTL=${SSH_REGRESS_TMP}/ctl-sock for j in 0 1 2; do for i in 0 1 2; do diff --git a/regress/key-options.sh b/regress/key-options.sh index d680737c1..112c9bd8e 100644 --- a/regress/key-options.sh +++ b/regress/key-options.sh @@ -1,4 +1,4 @@ -# $OpenBSD: key-options.sh,v 1.8 2018/03/14 05:35:40 djm Exp $ +# $OpenBSD: key-options.sh,v 1.9 2018/07/03 13:53:26 djm Exp $ # Placed in the Public Domain. tid="key options" @@ -27,6 +27,7 @@ expect_pty_succeed() { rm -f $OBJ/data sed "s/.*/$opts &/" $origkeys >$authkeys verbose "key option pty $which" + config_defined HAVE_OPENPTY || verbose "skipped for no openpty(3)" ${SSH} -ttq -F $OBJ/ssh_proxy somehost "tty > $OBJ/data; exit 0" if [ $? -ne 0 ] ; then fail "key option failed $which" @@ -44,6 +45,7 @@ expect_pty_fail() { rm -f $OBJ/data sed "s/.*/$opts &/" $origkeys >$authkeys verbose "key option pty $which" + config_defined HAVE_OPENPTY || verbose "skipped for no openpty(3)" ${SSH} -ttq -F $OBJ/ssh_proxy somehost "tty > $OBJ/data; exit 0" if [ $? -eq 0 ]; then r=`cat $OBJ/data` @@ -63,6 +65,7 @@ expect_pty_fail "restrict" "restrict" expect_pty_succeed "restrict,pty" "restrict,pty" # Test environment= +# XXX this can fail if ~/.ssh/environment exists for the user running the test echo 'PermitUserEnvironment yes' >> $OBJ/sshd_proxy sed 's/.*/environment="FOO=bar" &/' $origkeys >$authkeys verbose "key option environment" diff --git a/regress/keygen-knownhosts.sh b/regress/keygen-knownhosts.sh index 808d4408a..0b1ecf04c 100644 --- a/regress/keygen-knownhosts.sh +++ b/regress/keygen-knownhosts.sh @@ -1,4 +1,4 @@ -# $OpenBSD: keygen-knownhosts.sh,v 1.3 2015/07/17 03:34:27 djm Exp $ +# $OpenBSD: keygen-knownhosts.sh,v 1.4 2018/06/01 03:52:37 djm Exp $ # Placed in the Public Domain. tid="ssh-keygen known_hosts" @@ -55,13 +55,24 @@ expect_key() { check_find() { _host=$1 _name=$2 - _keygenopt=$3 - ${SSHKEYGEN} $_keygenopt -f $OBJ/kh.invalid -F $_host > $OBJ/kh.result + shift; shift + ${SSHKEYGEN} "$@" -f $OBJ/kh.invalid -F $_host > $OBJ/kh.result if ! diff -w $OBJ/kh.expect $OBJ/kh.result ; then fail "didn't find $_name" fi } +check_find_exit_code() { + _host=$1 + _name=$2 + _keygenopt=$3 + _exp_exit_code=$4 + ${SSHKEYGEN} $_keygenopt -f $OBJ/kh.invalid -F $_host > /dev/null + if [ "$?" != "$_exp_exit_code" ] ; then + fail "Unexpected exit code $_name" + fi +} + # Find key rm -f $OBJ/kh.expect expect_key host-a host-a host-a 2 @@ -88,6 +99,18 @@ rm -f $OBJ/kh.expect expect_key host-h "host-f,host-g,host-h " host-f 17 check_find host-h "find multiple hosts" +# Check exit code, known host +check_find_exit_code host-a "known host" "-q" "0" + +# Check exit code, unknown host +check_find_exit_code host-aa "unknown host" "-q" "1" + +# Check exit code, the hash mode, known host +check_find_exit_code host-a "known host" "-q -H" "0" + +# Check exit code, the hash mode, unknown host +check_find_exit_code host-aa "unknown host" "-q -H" "1" + check_hashed_find() { _host=$1 _name=$2 @@ -110,19 +133,19 @@ check_hashed_find host-a "find simple and hash" rm -f $OBJ/kh.expect expect_key host-c host-c host-c "" CA # CA key output is not hashed. -check_find host-c "find simple and hash" -H +check_find host-c "find simple and hash" -Hq # Find revoked key and hash rm -f $OBJ/kh.expect expect_key host-d host-d host-d "" REVOKED # Revoked key output is not hashed. -check_find host-d "find simple and hash" -H +check_find host-d "find simple and hash" -Hq # find key with wildcard and hash rm -f $OBJ/kh.expect expect_key host-e "host-e*" host-e "" # Key with wildcard hostname should not be hashed. -check_find host-e "find wildcard key" -H +check_find host-e "find wildcard key" -Hq # find key among multiple hosts rm -f $OBJ/kh.expect diff --git a/regress/mkdtemp.c b/regress/mkdtemp.c new file mode 100644 index 000000000..a7be1bdab --- /dev/null +++ b/regress/mkdtemp.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2017 Colin Watson + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* Roughly equivalent to "mktemp -d -t TEMPLATE", but portable. */ + +#include "includes.h" + +#include +#include +#include +#include +#include + +#include "log.h" + +static void +usage(void) +{ + fprintf(stderr, "mkdtemp template\n"); + exit(1); +} + +int +main(int argc, char **argv) +{ + const char *base; + const char *tmpdir; + char template[PATH_MAX]; + int r; + char *dir; + + if (argc != 2) + usage(); + base = argv[1]; + + if ((tmpdir = getenv("TMPDIR")) == NULL) + tmpdir = "/tmp"; + r = snprintf(template, sizeof(template), "%s/%s", tmpdir, base); + if (r < 0 || (size_t)r >= sizeof(template)) + fatal("template string too long"); + dir = mkdtemp(template); + if (dir == NULL) { + perror("mkdtemp"); + exit(1); + } + puts(dir); + return 0; +} diff --git a/regress/multiplex.sh b/regress/multiplex.sh index 09398e983..f42b1d1c6 100644 --- a/regress/multiplex.sh +++ b/regress/multiplex.sh @@ -1,7 +1,8 @@ # $OpenBSD: multiplex.sh,v 1.28 2017/04/30 23:34:55 djm Exp $ # Placed in the Public Domain. -CTL=/tmp/openssh.regress.ctl-sock.$$ +make_tmpdir +CTL=${SSH_REGRESS_TMP}/ctl-sock tid="connection multiplexing" diff --git a/regress/rekey.sh b/regress/rekey.sh index fcb7efbae..3e7bfea1b 100644 --- a/regress/rekey.sh +++ b/regress/rekey.sh @@ -1,4 +1,4 @@ -# $OpenBSD: rekey.sh,v 1.17 2016/01/29 05:18:15 dtucker Exp $ +# $OpenBSD: rekey.sh,v 1.18 2018/04/10 00:14:10 djm Exp $ # Placed in the Public Domain. tid="rekey" @@ -34,7 +34,7 @@ ssh_data_rekeying() n=`expr $n - 1` trace "$n rekeying(s)" if [ $n -lt 1 ]; then - fail "no rekeying occured ($@)" + fail "no rekeying occurred ($@)" fi } @@ -89,7 +89,7 @@ for s in 5 10; do n=`expr $n - 1` trace "$n rekeying(s)" if [ $n -lt 1 ]; then - fail "no rekeying occured" + fail "no rekeying occurred" fi done @@ -105,7 +105,7 @@ for s in 5 10; do n=`expr $n - 1` trace "$n rekeying(s)" if [ $n -lt 1 ]; then - fail "no rekeying occured" + fail "no rekeying occurred" fi done @@ -124,7 +124,7 @@ for s in 16 1k 128k 256k; do n=`expr $n - 1` trace "$n rekeying(s)" if [ $n -lt 1 ]; then - fail "no rekeying occured" + fail "no rekeying occurred" fi done @@ -141,7 +141,7 @@ for s in 5 10; do n=`expr $n - 1` trace "$n rekeying(s)" if [ $n -lt 1 ]; then - fail "no rekeying occured" + fail "no rekeying occurred" fi done diff --git a/regress/setuid-allowed.c b/regress/setuid-allowed.c index 7a0527fd0..d91d9f194 100644 --- a/regress/setuid-allowed.c +++ b/regress/setuid-allowed.c @@ -22,6 +22,7 @@ #ifdef HAVE_SYS_STATVFS_H # include #endif +#include #include #include #include diff --git a/regress/sshcfgparse.sh b/regress/sshcfgparse.sh index d00b6f341..f86d55fdb 100644 --- a/regress/sshcfgparse.sh +++ b/regress/sshcfgparse.sh @@ -1,8 +1,27 @@ -# $OpenBSD: sshcfgparse.sh,v 1.2 2016/07/14 01:24:21 dtucker Exp $ +# $OpenBSD: sshcfgparse.sh,v 1.4 2018/07/04 13:51:12 djm Exp $ # Placed in the Public Domain. tid="ssh config parse" +expect_result_present() { + _str="$1" ; shift + for _expect in "$@" ; do + echo "$f" | tr ',' '\n' | grep "^$_expect\$" >/dev/null + if test $? -ne 0 ; then + fail "missing expected \"$_expect\" from \"$_str\"" + fi + done +} +expect_result_absent() { + _str="$1" ; shift + for _expect in "$@" ; do + echo "$f" | tr ',' '\n' | grep "^$_expect\$" >/dev/null + if test $? -eq 0 ; then + fail "unexpected \"$_expect\" present in \"$_str\"" + fi + done +} + verbose "reparse minimal config" (${SSH} -G -F $OBJ/ssh_config somehost >$OBJ/ssh_config.1 && ${SSH} -G -F $OBJ/ssh_config.1 somehost >$OBJ/ssh_config.2 && @@ -43,5 +62,46 @@ if [ "$os" == "windows" ]; then fi test "$f" = "no" || fail "clearallforwardings override" +verbose "user first match" +user=`awk '$1=="User" {print $2}' $OBJ/ssh_config` +f=`${SSH} -GF $OBJ/ssh_config host | awk '/^user /{print $2}'` +test "$f" = "$user" || fail "user from config, expected '$user' got '$f'" +f=`${SSH} -GF $OBJ/ssh_config -o user=foo -l bar baz@host | awk '/^user /{print $2}'` +test "$f" = "foo" || fail "user first match -oUser, expected 'foo' got '$f' " +f=`${SSH} -GF $OBJ/ssh_config -lbar baz@host user=foo baz@host | awk '/^user /{print $2}'` +test "$f" = "bar" || fail "user first match -l, expected 'bar' got '$f'" +f=`${SSH} -GF $OBJ/ssh_config baz@host -o user=foo -l bar baz@host | awk '/^user /{print $2}'` +test "$f" = "baz" || fail "user first match user@host, expected 'baz' got '$f'" + +verbose "pubkeyacceptedkeytypes" +# Default set +f=`${SSH} -GF none host | awk '/^pubkeyacceptedkeytypes /{print $2}'` +expect_result_present "$f" "ssh-ed25519" "ssh-ed25519-cert-v01.*" +expect_result_absent "$f" "ssh-dss" +# Explicit override +f=`${SSH} -GF none -opubkeyacceptedkeytypes=ssh-ed25519 host | \ + awk '/^pubkeyacceptedkeytypes /{print $2}'` +expect_result_present "$f" "ssh-ed25519" +expect_result_absent "$f" "ssh-ed25519-cert-v01.*" "ssh-dss" +# Removal from default set +f=`${SSH} -GF none -opubkeyacceptedkeytypes=-ssh-ed25519-cert* host | \ + awk '/^pubkeyacceptedkeytypes /{print $2}'` +expect_result_present "$f" "ssh-ed25519" +expect_result_absent "$f" "ssh-ed25519-cert-v01.*" "ssh-dss" +f=`${SSH} -GF none -opubkeyacceptedkeytypes=-ssh-ed25519 host | \ + awk '/^pubkeyacceptedkeytypes /{print $2}'` +expect_result_present "$f" "ssh-ed25519-cert-v01.*" +expect_result_absent "$f" "ssh-ed25519" "ssh-dss" +# Append to default set. +# XXX this will break for !WITH_OPENSSL +f=`${SSH} -GF none -opubkeyacceptedkeytypes=+ssh-dss-cert* host | \ + awk '/^pubkeyacceptedkeytypes /{print $2}'` +expect_result_present "$f" "ssh-ed25519" "ssh-dss-cert-v01.*" +expect_result_absent "$f" "ssh-dss" +f=`${SSH} -GF none -opubkeyacceptedkeytypes=+ssh-dss host | \ + awk '/^pubkeyacceptedkeytypes /{print $2}'` +expect_result_present "$f" "ssh-ed25519" "ssh-ed25519-cert-v01.*" "ssh-dss" +expect_result_absent "$f" "ssh-dss-cert-v01.*" + # cleanup rm -f $OBJ/ssh_config.[012] diff --git a/regress/test-exec.sh b/regress/test-exec.sh index cdbe12cc4..fbf41e998 100644 --- a/regress/test-exec.sh +++ b/regress/test-exec.sh @@ -1,4 +1,4 @@ -# $OpenBSD: test-exec.sh,v 1.62 2018/03/16 09:06:31 dtucker Exp $ +# $OpenBSD: test-exec.sh,v 1.64 2018/08/10 01:35:49 dtucker Exp $ # Placed in the Public Domain. #SUDO=sudo @@ -89,6 +89,9 @@ SFTP=sftp SFTPSERVER=/usr/libexec/openssh/sftp-server SCP=scp +# Set by make_tmpdir() on demand (below). +SSH_REGRESS_TMP= + # Interop testing PLINK=plink PUTTYGEN=puttygen @@ -176,9 +179,13 @@ if [ "x$USE_VALGRIND" != "x" ]; then esac if [ x"$VG_SKIP" = "x" ]; then + VG_LEAK="--leak-check=no" + if [ x"$VALGRIND_CHECK_LEAKS" != "x" ]; then + VG_LEAK="--leak-check=full" + fi VG_IGNORE="/bin/*,/sbin/*,/usr/*,/var/*" VG_LOG="$OBJ/valgrind-out/${VG_TEST}." - VG_OPTS="--track-origins=yes --leak-check=full" + VG_OPTS="--track-origins=yes $VG_LEAK" VG_OPTS="$VG_OPTS --trace-children=yes" VG_OPTS="$VG_OPTS --trace-children-skip=${VG_IGNORE}" VG_PATH="valgrind" @@ -348,6 +355,12 @@ stop_sshd () fi } +make_tmpdir () +{ + SSH_REGRESS_TMP="$($OBJ/mkdtemp openssh-XXXXXXXX)" || \ + fatal "failed to create temporary directory" +} + # helper cleanup () { @@ -366,6 +379,9 @@ cleanup () fi fi fi + if [ "x$SSH_REGRESS_TMP" != "x" ]; then + rm -rf "$SSH_REGRESS_TMP" + fi stop_sshd } @@ -413,7 +429,10 @@ fail () save_debug_log "FAIL: $@" RESULT=1 echo "$@" - + if test "x$TEST_SSH_FAIL_FATAL" != "x" ; then + cleanup + exit $RESULT + fi } fatal () @@ -574,10 +593,13 @@ if test "$REGRESS_INTEROP_PUTTY" = "yes" ; then >> $OBJ/authorized_keys_$USER # Convert rsa2 host key to PuTTY format - ${SRC}/ssh2putty.sh 127.0.0.1 $PORT $OBJ/rsa > \ + cp $OBJ/rsa $OBJ/rsa_oldfmt + ${SSHKEYGEN} -p -N '' -m PEM -f $OBJ/rsa_oldfmt >/dev/null + ${SRC}/ssh2putty.sh 127.0.0.1 $PORT $OBJ/rsa_oldfmt > \ ${OBJ}/.putty/sshhostkeys - ${SRC}/ssh2putty.sh 127.0.0.1 22 $OBJ/rsa >> \ + ${SRC}/ssh2putty.sh 127.0.0.1 22 $OBJ/rsa_oldfmt >> \ ${OBJ}/.putty/sshhostkeys + rm -f $OBJ/rsa_oldfmt # Setup proxied session mkdir -p ${OBJ}/.putty/sessions diff --git a/regress/unittests/hostkeys/test_iterate.c b/regress/unittests/hostkeys/test_iterate.c index 751825dda..d6963bd2a 100644 --- a/regress/unittests/hostkeys/test_iterate.c +++ b/regress/unittests/hostkeys/test_iterate.c @@ -1,4 +1,4 @@ -/* $OpenBSD: test_iterate.c,v 1.5 2017/04/30 23:33:48 djm Exp $ */ +/* $OpenBSD: test_iterate.c,v 1.6 2018/07/16 03:09:59 djm Exp $ */ /* * Regress test for hostfile.h hostkeys_foreach() * @@ -152,6 +152,17 @@ prepare_expected(struct expected *expected, size_t n) } } +static void +cleanup_expected(struct expected *expected, size_t n) +{ + size_t i; + + for (i = 0; i < n; i++) { + sshkey_free(expected[i].l.key); + expected[i].l.key = NULL; + } +} + struct expected expected_full[] = { { NULL, -1, -1, 0, 0, 0, 0, -1, { NULL, /* path, don't care */ @@ -825,6 +836,7 @@ test_iterate(void) prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), check, &ctx, NULL, NULL, ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate all without key parse"); @@ -835,6 +847,7 @@ test_iterate(void) prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), check, &ctx, NULL, NULL, ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate specify host 1"); @@ -846,6 +859,7 @@ test_iterate(void) prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), check, &ctx, "prometheus.example.com", NULL, ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate specify host 2"); @@ -857,6 +871,7 @@ test_iterate(void) prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), check, &ctx, "sisyphus.example.com", NULL, ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate match host 1"); @@ -868,6 +883,7 @@ test_iterate(void) prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), check, &ctx, "prometheus.example.com", NULL, ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate match host 2"); @@ -879,6 +895,7 @@ test_iterate(void) prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), check, &ctx, "sisyphus.example.com", NULL, ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate specify host missing"); @@ -889,6 +906,7 @@ test_iterate(void) prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), check, &ctx, "actaeon.example.org", NULL, ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate match host missing"); @@ -899,6 +917,7 @@ test_iterate(void) prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), check, &ctx, "actaeon.example.org", NULL, ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate specify IPv4"); @@ -910,6 +929,7 @@ test_iterate(void) prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), check, &ctx, "tiresias.example.org", "192.0.2.1", ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate specify IPv6"); @@ -921,6 +941,7 @@ test_iterate(void) prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), check, &ctx, "tiresias.example.org", "2001:db8::1", ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate match IPv4"); @@ -932,6 +953,7 @@ test_iterate(void) prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), check, &ctx, "tiresias.example.org", "192.0.2.1", ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate match IPv6"); @@ -943,6 +965,7 @@ test_iterate(void) prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), check, &ctx, "tiresias.example.org", "2001:db8::1", ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate specify addr missing"); @@ -953,6 +976,7 @@ test_iterate(void) prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), check, &ctx, "tiresias.example.org", "192.168.0.1", ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate match addr missing"); @@ -963,6 +987,7 @@ test_iterate(void) prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), check, &ctx, "tiresias.example.org", "::1", ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate specify host 2 and IPv4"); @@ -975,6 +1000,7 @@ test_iterate(void) prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), check, &ctx, "sisyphus.example.com", "192.0.2.1", ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate match host 1 and IPv6"); @@ -986,7 +1012,9 @@ test_iterate(void) ctx.match_ipv6 = 1; prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), - check, &ctx, "prometheus.example.com", "2001:db8::1", ctx.flags), 0); + check, &ctx, "prometheus.example.com", + "2001:db8::1", ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate specify host 2 and IPv4 w/ key parse"); @@ -999,6 +1027,7 @@ test_iterate(void) prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), check, &ctx, "sisyphus.example.com", "192.0.2.1", ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); TEST_START("hostkeys_iterate match host 1 and IPv6 w/ key parse"); @@ -1010,7 +1039,9 @@ test_iterate(void) ctx.match_ipv6 = 1; prepare_expected(expected_full, ctx.nexpected); ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), - check, &ctx, "prometheus.example.com", "2001:db8::1", ctx.flags), 0); + check, &ctx, "prometheus.example.com", + "2001:db8::1", ctx.flags), 0); + cleanup_expected(expected_full, ctx.nexpected); TEST_DONE(); } diff --git a/regress/unittests/match/tests.c b/regress/unittests/match/tests.c index e1593367b..3d9af55f2 100644 --- a/regress/unittests/match/tests.c +++ b/regress/unittests/match/tests.c @@ -1,4 +1,4 @@ -/* $OpenBSD: tests.c,v 1.4 2017/02/03 23:01:42 djm Exp $ */ +/* $OpenBSD: tests.c,v 1.5 2018/07/04 13:51:45 djm Exp $ */ /* * Regress test for matching functions * @@ -105,7 +105,7 @@ tests(void) #define CHECK_FILTER(string,filter,expected) \ do { \ - char *result = match_filter_list((string), (filter)); \ + char *result = match_filter_blacklist((string), (filter)); \ ASSERT_STRING_EQ(result, expected); \ free(result); \ } while (0) diff --git a/regress/unittests/sshkey/test_sshkey.c b/regress/unittests/sshkey/test_sshkey.c index 1aa608f92..72367bde7 100644 --- a/regress/unittests/sshkey/test_sshkey.c +++ b/regress/unittests/sshkey/test_sshkey.c @@ -1,4 +1,4 @@ -/* $OpenBSD: test_sshkey.c,v 1.13 2017/12/21 00:41:22 djm Exp $ */ +/* $OpenBSD: test_sshkey.c,v 1.14 2018/07/13 02:13:19 djm Exp $ */ /* * Regress test for sshkey.h key management API * @@ -434,10 +434,13 @@ sshkey_tests(void) ASSERT_PTR_NE(k1->cert->principals[1], NULL); ASSERT_PTR_NE(k1->cert->principals[2], NULL); ASSERT_PTR_NE(k1->cert->principals[3], NULL); + k1->cert->nprincipals = 4; k1->cert->valid_after = 0; k1->cert->valid_before = (u_int64_t)-1; + sshbuf_free(k1->cert->critical); k1->cert->critical = sshbuf_new(); ASSERT_PTR_NE(k1->cert->critical, NULL); + sshbuf_free(k1->cert->extensions); k1->cert->extensions = sshbuf_new(); ASSERT_PTR_NE(k1->cert->extensions, NULL); put_opt(k1->cert->critical, "force-command", "/usr/bin/true"); diff --git a/regress/valgrind-unit.sh b/regress/valgrind-unit.sh index 433cb069a..4143ead4b 100755 --- a/regress/valgrind-unit.sh +++ b/regress/valgrind-unit.sh @@ -7,10 +7,12 @@ UNIT_ARGS="$@" test "x$OBJ" = "x" && OBJ=$PWD # This mostly replicates the logic in test-exec.sh for running the -# regress tests under valgrind. +# regress tests under valgrind, except that we unconditionally enable +# leak checking because the unit tests should be clean. +VG_LEAK="--leak-check=full" VG_TEST=`basename $UNIT_BINARY` VG_LOG="$OBJ/valgrind-out/${VG_TEST}.%p" -VG_OPTS="--track-origins=yes --leak-check=full --log-file=${VG_LOG}" +VG_OPTS="--track-origins=yes $VG_LEAK --log-file=${VG_LOG}" VG_OPTS="$VG_OPTS --trace-children=yes" VG_PATH="valgrind" if [ "x$VALGRIND_PATH" != "x" ]; then diff --git a/sandbox-seccomp-filter.c b/sandbox-seccomp-filter.c index ca75cc719..12c4ee130 100644 --- a/sandbox-seccomp-filter.c +++ b/sandbox-seccomp-filter.c @@ -166,6 +166,12 @@ static const struct sock_filter preauth_insns[] = { #ifdef __NR_exit_group SC_ALLOW(__NR_exit_group), #endif +#ifdef __NR_geteuid + SC_ALLOW(__NR_geteuid), +#endif +#ifdef __NR_geteuid32 + SC_ALLOW(__NR_geteuid32), +#endif #ifdef __NR_getpgid SC_ALLOW(__NR_getpgid), #endif @@ -178,6 +184,12 @@ static const struct sock_filter preauth_insns[] = { #ifdef __NR_gettimeofday SC_ALLOW(__NR_gettimeofday), #endif +#ifdef __NR_getuid + SC_ALLOW(__NR_getuid), +#endif +#ifdef __NR_getuid32 + SC_ALLOW(__NR_getuid32), +#endif #ifdef __NR_madvise SC_ALLOW(__NR_madvise), #endif @@ -193,6 +205,9 @@ static const struct sock_filter preauth_insns[] = { #ifdef __NR_munmap SC_ALLOW(__NR_munmap), #endif +#ifdef __NR_nanosleep + SC_ALLOW(__NR_nanosleep), +#endif #ifdef __NR__newselect SC_ALLOW(__NR__newselect), #endif diff --git a/sandbox-systrace.c b/sandbox-systrace.c index b4d8d04ca..add4c46d0 100644 --- a/sandbox-systrace.c +++ b/sandbox-systrace.c @@ -59,6 +59,7 @@ static const struct sandbox_policy preauth_policy[] = { { SYS_getpgid, SYSTR_POLICY_PERMIT }, { SYS_clock_gettime, SYSTR_POLICY_PERMIT }, { SYS_gettimeofday, SYSTR_POLICY_PERMIT }, + { SYS_nanosleep, SYSTR_POLICY_PERMIT }, { SYS_sigprocmask, SYSTR_POLICY_PERMIT }, #ifdef SYS_getentropy diff --git a/scp.1 b/scp.1 index 8d251e34a..92abcaf07 100644 --- a/scp.1 +++ b/scp.1 @@ -8,9 +8,9 @@ .\" .\" Created: Sun May 7 00:14:37 1995 ylo .\" -.\" $OpenBSD: scp.1,v 1.77 2018/02/23 07:38:09 jmc Exp $ +.\" $OpenBSD: scp.1,v 1.80 2018/07/19 10:28:47 dtucker Exp $ .\" -.Dd $Mdocdate: February 23 2018 $ +.Dd $Mdocdate: July 19 2018 $ .Dt SCP 1 .Os .Sh NAME @@ -173,10 +173,10 @@ For full details of the options listed below, and their possible values, see .It SendEnv .It ServerAliveInterval .It ServerAliveCountMax +.It SetEnv .It StrictHostKeyChecking .It TCPKeepAlive .It UpdateHostKeys -.It UsePrivilegedPort .It User .It UserKnownHostsFile .It VerifyHostKeyDNS diff --git a/scp.c b/scp.c index 783ce4195..68e051542 100644 --- a/scp.c +++ b/scp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: scp.c,v 1.195 2018/02/10 06:15:12 djm Exp $ */ +/* $OpenBSD: scp.c,v 1.197 2018/06/01 04:31:48 dtucker Exp $ */ /* * scp - secure remote copy. This is basically patched BSD rcp which * uses ssh to do the data transfer (instead of using rcmd). @@ -389,7 +389,7 @@ do_cmd(char *host, char *remuser, int port, char *cmd, int *fdin, int *fdout) } /* - * This functions executes a command similar to do_cmd(), but expects the + * This function executes a command similar to do_cmd(), but expects the * input and output descriptors to be setup by a previous call to do_cmd(). * This way the input and output of two commands can be connected. */ @@ -1278,6 +1278,8 @@ sink(int argc, char **argv) SCREWUP("bad mode"); mode = (mode << 3) | (*cp - '0'); } + if (!pflag) + mode &= ~mask; if (*cp++ != ' ') SCREWUP("mode not delimited"); diff --git a/servconf.c b/servconf.c index fb47656e9..d9032c33d 100644 --- a/servconf.c +++ b/servconf.c @@ -1,5 +1,5 @@ -/* $OpenBSD: servconf.c,v 1.326 2018/03/01 20:32:16 markus Exp $ */ +/* $OpenBSD: servconf.c,v 1.340 2018/08/12 20:19:13 djm Exp $ */ /* * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland * All rights reserved @@ -45,13 +45,13 @@ #include "xmalloc.h" #include "ssh.h" #include "log.h" -#include "buffer.h" +#include "sshbuf.h" #include "misc.h" #include "servconf.h" #include "compat.h" #include "pathnames.h" #include "cipher.h" -#include "key.h" +#include "sshkey.h" #include "kex.h" #include "mac.h" #include "match.h" @@ -59,6 +59,7 @@ #include "groupaccess.h" #include "canohost.h" #include "packet.h" +#include "ssherr.h" #include "hostfile.h" #include "auth.h" #include "myproposal.h" @@ -71,7 +72,7 @@ static void add_one_listen_addr(ServerOptions *, const char *, /* Use of privilege separation or not */ extern int use_privsep; -extern Buffer cfg; +extern struct sshbuf *cfg; /* Initializes the server options to their default values. */ @@ -130,6 +131,7 @@ initialize_server_options(ServerOptions *options) options->challenge_response_authentication = -1; options->permit_empty_passwd = -1; options->permit_user_env = -1; + options->permit_user_env_whitelist = NULL; options->compression = -1; options->rekey_limit = -1; options->rekey_interval = -1; @@ -158,8 +160,10 @@ initialize_server_options(ServerOptions *options) options->client_alive_count_max = -1; options->num_authkeys_files = 0; options->num_accept_env = 0; + options->num_setenv = 0; options->permit_tun = -1; options->permitted_opens = NULL; + options->permitted_listens = NULL; options->adm_forced_command = NULL; options->chroot_directory = NULL; options->authorized_keys_command = NULL; @@ -187,15 +191,29 @@ option_clear_or_none(const char *o) static void assemble_algorithms(ServerOptions *o) { - if (kex_assemble_names(KEX_SERVER_ENCRYPT, &o->ciphers) != 0 || - kex_assemble_names(KEX_SERVER_MAC, &o->macs) != 0 || - kex_assemble_names(KEX_SERVER_KEX, &o->kex_algorithms) != 0 || - kex_assemble_names(KEX_DEFAULT_PK_ALG, - &o->hostkeyalgorithms) != 0 || - kex_assemble_names(KEX_DEFAULT_PK_ALG, - &o->hostbased_key_types) != 0 || - kex_assemble_names(KEX_DEFAULT_PK_ALG, &o->pubkey_key_types) != 0) - fatal("kex_assemble_names failed"); + char *all_cipher, *all_mac, *all_kex, *all_key; + int r; + + all_cipher = cipher_alg_list(',', 0); + all_mac = mac_alg_list(','); + all_kex = kex_alg_list(','); + all_key = sshkey_alg_list(0, 0, 1, ','); +#define ASSEMBLE(what, defaults, all) \ + do { \ + if ((r = kex_assemble_names(&o->what, defaults, all)) != 0) \ + fatal("%s: %s: %s", __func__, #what, ssh_err(r)); \ + } while (0) + ASSEMBLE(ciphers, KEX_SERVER_ENCRYPT, all_cipher); + ASSEMBLE(macs, KEX_SERVER_MAC, all_mac); + ASSEMBLE(kex_algorithms, KEX_SERVER_KEX, all_kex); + ASSEMBLE(hostkeyalgorithms, KEX_DEFAULT_PK_ALG, all_key); + ASSEMBLE(hostbased_key_types, KEX_DEFAULT_PK_ALG, all_key); + ASSEMBLE(pubkey_key_types, KEX_DEFAULT_PK_ALG, all_key); +#undef ASSEMBLE + free(all_cipher); + free(all_mac); + free(all_kex); + free(all_key); } static void @@ -327,8 +345,10 @@ fill_default_server_options(ServerOptions *options) options->challenge_response_authentication = 1; if (options->permit_empty_passwd == -1) options->permit_empty_passwd = 0; - if (options->permit_user_env == -1) + if (options->permit_user_env == -1) { options->permit_user_env = 0; + options->permit_user_env_whitelist = NULL; + } if (options->compression == -1) options->compression = COMP_DELAYED; if (options->rekey_limit == -1) @@ -372,9 +392,9 @@ fill_default_server_options(ServerOptions *options) if (options->permit_tun == -1) options->permit_tun = SSH_TUNMODE_NO; if (options->ip_qos_interactive == -1) - options->ip_qos_interactive = IPTOS_LOWDELAY; + options->ip_qos_interactive = IPTOS_DSCP_AF21; if (options->ip_qos_bulk == -1) - options->ip_qos_bulk = IPTOS_THROUGHPUT; + options->ip_qos_bulk = IPTOS_DSCP_CS1; if (options->version_addendum == NULL) options->version_addendum = xstrdup(""); if (options->fwd_opts.streamlocal_bind_mask == (mode_t)-1) @@ -461,8 +481,8 @@ typedef enum { sHostKeyAlgorithms, sClientAliveInterval, sClientAliveCountMax, sAuthorizedKeysFile, sGssAuthentication, sGssCleanupCreds, sGssStrictAcceptor, - sAcceptEnv, sPermitTunnel, - sMatch, sPermitOpen, sForceCommand, sChrootDirectory, + sAcceptEnv, sSetEnv, sPermitTunnel, + sMatch, sPermitOpen, sPermitListen, sForceCommand, sChrootDirectory, sUsePrivilegeSeparation, sAllowAgentForwarding, sHostCertificate, sRevokedKeys, sTrustedUserCAKeys, sAuthorizedPrincipalsFile, @@ -544,7 +564,7 @@ static struct { { "passwordauthentication", sPasswordAuthentication, SSHCFG_ALL }, { "kbdinteractiveauthentication", sKbdInteractiveAuthentication, SSHCFG_ALL }, { "challengeresponseauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL }, - { "skeyauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL }, /* alias */ + { "skeyauthentication", sDeprecated, SSHCFG_GLOBAL }, { "checkmail", sDeprecated, SSHCFG_GLOBAL }, { "listenaddress", sListenAddress, SSHCFG_GLOBAL }, { "addressfamily", sAddressFamily, SSHCFG_GLOBAL }, @@ -592,11 +612,13 @@ static struct { { "authorizedkeysfile2", sDeprecated, SSHCFG_ALL }, { "useprivilegeseparation", sDeprecated, SSHCFG_GLOBAL}, { "acceptenv", sAcceptEnv, SSHCFG_ALL }, + { "setenv", sSetEnv, SSHCFG_ALL }, { "permittunnel", sPermitTunnel, SSHCFG_ALL }, { "permittty", sPermitTTY, SSHCFG_ALL }, { "permituserrc", sPermitUserRC, SSHCFG_ALL }, { "match", sMatch, SSHCFG_ALL }, { "permitopen", sPermitOpen, SSHCFG_ALL }, + { "permitlisten", sPermitListen, SSHCFG_ALL }, { "forcecommand", sForceCommand, SSHCFG_ALL }, { "chrootdirectory", sChrootDirectory, SSHCFG_ALL }, { "hostcertificate", sHostCertificate, SSHCFG_GLOBAL }, @@ -632,6 +654,20 @@ static struct { { -1, NULL } }; +/* Returns an opcode name from its number */ + +static const char * +lookup_opcode_name(ServerOpCodes code) +{ + u_int i; + + for (i = 0; keywords[i].name != NULL; i++) + if (keywords[i].opcode == code) + return(keywords[i].name); + return "UNKNOWN"; +} + + /* * Returns the number of the token pointed to by cp or sBadOption. */ @@ -817,42 +853,58 @@ process_queued_listen_addrs(ServerOptions *options) options->num_queued_listens = 0; } +/* + * Inform channels layer of permitopen options for a single forwarding + * direction (local/remote). + */ +static void +process_permitopen_list(struct ssh *ssh, ServerOpCodes opcode, + char **opens, u_int num_opens) +{ + u_int i; + int port; + char *host, *arg, *oarg; + int where = opcode == sPermitOpen ? FORWARD_LOCAL : FORWARD_REMOTE; + const char *what = lookup_opcode_name(opcode); + + channel_clear_permission(ssh, FORWARD_ADM, where); + if (num_opens == 0) + return; /* permit any */ + + /* handle keywords: "any" / "none" */ + if (num_opens == 1 && strcmp(opens[0], "any") == 0) + return; + if (num_opens == 1 && strcmp(opens[0], "none") == 0) { + channel_disable_admin(ssh, where); + return; + } + /* Otherwise treat it as a list of permitted host:port */ + for (i = 0; i < num_opens; i++) { + oarg = arg = xstrdup(opens[i]); + host = hpdelim(&arg); + if (host == NULL) + fatal("%s: missing host in %s", __func__, what); + host = cleanhostname(host); + if (arg == NULL || ((port = permitopen_port(arg)) < 0)) + fatal("%s: bad port number in %s", __func__, what); + /* Send it to channels layer */ + channel_add_permission(ssh, FORWARD_ADM, + where, host, port); + free(oarg); + } +} + /* * Inform channels layer of permitopen options from configuration. */ void process_permitopen(struct ssh *ssh, ServerOptions *options) { - u_int i; - int port; - char *host, *arg, *oarg; - - channel_clear_adm_permitted_opens(ssh); - if (options->num_permitted_opens == 0) - return; /* permit any */ - - /* handle keywords: "any" / "none" */ - if (options->num_permitted_opens == 1 && - strcmp(options->permitted_opens[0], "any") == 0) - return; - if (options->num_permitted_opens == 1 && - strcmp(options->permitted_opens[0], "none") == 0) { - channel_disable_adm_local_opens(ssh); - return; - } - /* Otherwise treat it as a list of permitted host:port */ - for (i = 0; i < options->num_permitted_opens; i++) { - oarg = arg = xstrdup(options->permitted_opens[i]); - host = hpdelim(&arg); - if (host == NULL) - fatal("%s: missing host in PermitOpen", __func__); - host = cleanhostname(host); - if (arg == NULL || ((port = permitopen_port(arg)) < 0)) - fatal("%s: bad port number in PermitOpen", __func__); - /* Send it to channels layer */ - channel_add_adm_permitted_opens(ssh, host, port); - free(oarg); - } + process_permitopen_list(ssh, sPermitOpen, + options->permitted_opens, options->num_permitted_opens); + process_permitopen_list(ssh, sPermitListen, + options->permitted_listens, + options->num_permitted_listens); } struct connection_info * @@ -1152,12 +1204,12 @@ process_server_config_line(ServerOptions *options, char *line, const char *filename, int linenum, int *activep, struct connection_info *connectinfo) { - char *cp, **charptr, *arg, *arg2, *p; + char *cp, ***chararrayptr, **charptr, *arg, *arg2, *p; int cmdline = 0, *intptr, value, value2, n, port; SyslogFacility *log_facility_ptr; LogLevel *log_level_ptr; ServerOpCodes opcode; - u_int i, flags = 0; + u_int i, *uintptr, uvalue, flags = 0; size_t len; long long val64; const struct multistate *multistate_ptr; @@ -1488,7 +1540,29 @@ process_server_config_line(ServerOptions *options, char *line, case sPermitUserEnvironment: intptr = &options->permit_user_env; - goto parse_flag; + charptr = &options->permit_user_env_whitelist; + arg = strdelim(&cp); + if (!arg || *arg == '\0') + fatal("%s line %d: missing argument.", + filename, linenum); + value = 0; + p = NULL; + if (strcmp(arg, "yes") == 0) + value = 1; + else if (strcmp(arg, "no") == 0) + value = 0; + else { + /* Pattern-list specified */ + value = 1; + p = xstrdup(arg); + } + if (*activep && *intptr == -1) { + *intptr = value; + *charptr = p; + p = NULL; + } + free(p); + break; case sCompression: intptr = &options->compression; @@ -1777,6 +1851,19 @@ process_server_config_line(ServerOptions *options, char *line, } break; + case sSetEnv: + uvalue = options->num_setenv; + while ((arg = strdelimw(&cp)) && *arg != '\0') { + if (strchr(arg, '=') == NULL) + fatal("%s line %d: Invalid environment.", + filename, linenum); + if (!*activep || uvalue != 0) + continue; + array_append(filename, linenum, "SetEnv", + &options->setenv, &options->num_setenv, arg); + } + break; + case sPermitTunnel: intptr = &options->permit_tun; arg = strdelim(&cp); @@ -1807,36 +1894,57 @@ process_server_config_line(ServerOptions *options, char *line, *activep = value; break; + case sPermitListen: case sPermitOpen: + if (opcode == sPermitListen) { + uintptr = &options->num_permitted_listens; + chararrayptr = &options->permitted_listens; + } else { + uintptr = &options->num_permitted_opens; + chararrayptr = &options->permitted_opens; + } arg = strdelim(&cp); if (!arg || *arg == '\0') - fatal("%s line %d: missing PermitOpen specification", - filename, linenum); - value = options->num_permitted_opens; /* modified later */ + fatal("%s line %d: missing %s specification", + filename, linenum, lookup_opcode_name(opcode)); + uvalue = *uintptr; /* modified later */ if (strcmp(arg, "any") == 0 || strcmp(arg, "none") == 0) { - if (*activep && value == 0) { - options->num_permitted_opens = 1; - options->permitted_opens = xcalloc(1, - sizeof(*options->permitted_opens)); - options->permitted_opens[0] = xstrdup(arg); + if (*activep && uvalue == 0) { + *uintptr = 1; + *chararrayptr = xcalloc(1, + sizeof(**chararrayptr)); + (*chararrayptr)[0] = xstrdup(arg); } break; } for (; arg != NULL && *arg != '\0'; arg = strdelim(&cp)) { - arg2 = xstrdup(arg); - p = hpdelim(&arg); - if (p == NULL) - fatal("%s line %d: missing host in PermitOpen", - filename, linenum); - p = cleanhostname(p); - if (arg == NULL || ((port = permitopen_port(arg)) < 0)) - fatal("%s line %d: bad port number in " - "PermitOpen", filename, linenum); - if (*activep && value == 0) { + if (opcode == sPermitListen && + strchr(arg, ':') == NULL) { + /* + * Allow bare port number for PermitListen + * to indicate a wildcard listen host. + */ + xasprintf(&arg2, "*:%s", arg); + } else { + arg2 = xstrdup(arg); + p = hpdelim(&arg); + if (p == NULL) { + fatal("%s line %d: missing host in %s", + filename, linenum, + lookup_opcode_name(opcode)); + } + p = cleanhostname(p); + } + if (arg == NULL || + ((port = permitopen_port(arg)) < 0)) { + fatal("%s line %d: bad port number in %s", + filename, linenum, + lookup_opcode_name(opcode)); + } + if (*activep && uvalue == 0) { array_append(filename, linenum, - "PermitOpen", - &options->permitted_opens, - &options->num_permitted_opens, arg2); + lookup_opcode_name(opcode), + chararrayptr, uintptr, arg2); } free(arg2); } @@ -1959,7 +2067,7 @@ process_server_config_line(ServerOptions *options, char *line, case sAuthenticationMethods: if (options->num_auth_methods == 0) { value = 0; /* seen "any" pseudo-method */ - value2 = 0; /* sucessfully parsed any method */ + value2 = 0; /* successfully parsed any method */ while ((arg = strdelim(&cp)) && *arg != '\0') { if (strcmp(arg, "any") == 0) { if (options->num_auth_methods > 0) { @@ -2064,22 +2172,21 @@ process_server_config_line(ServerOptions *options, char *line, /* Reads the server configuration file. */ void -load_server_config(const char *filename, Buffer *conf) +load_server_config(const char *filename, struct sshbuf *conf) { - char line[4096], *cp; + char *line = NULL, *cp; + size_t linesize = 0; FILE *f; - int lineno = 0; + int r, lineno = 0; debug2("%s: filename %s", __func__, filename); if ((f = fopen(filename, "r")) == NULL) { perror(filename); exit(1); } - buffer_clear(conf); - while (fgets(line, sizeof(line), f)) { + sshbuf_reset(conf); + while (getline(&line, &linesize, f) != -1) { lineno++; - if (strlen(line) == sizeof(line) - 1) - fatal("%s line %d too long", filename, lineno); /* * Trim out comments and strip whitespace * NB - preserve newlines, they are needed to reproduce @@ -2088,12 +2195,14 @@ load_server_config(const char *filename, Buffer *conf) if ((cp = strchr(line, '#')) != NULL) memcpy(cp, "\n", 2); cp = line + strspn(line, " \t\r"); - - buffer_append(conf, cp, strlen(cp)); + if ((r = sshbuf_put(conf, cp, strlen(cp))) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); } - buffer_append(conf, "\0", 1); + free(line); + if ((r = sshbuf_put_u8(conf, 0)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); fclose(f); - debug2("%s: done config len = %d", __func__, buffer_len(conf)); + debug2("%s: done config len = %zu", __func__, sshbuf_len(conf)); } void @@ -2103,7 +2212,7 @@ parse_server_match_config(ServerOptions *options, ServerOptions mo; initialize_server_options(&mo); - parse_server_config(&mo, "reprocess config", &cfg, connectinfo); + parse_server_config(&mo, "reprocess config", cfg, connectinfo); copy_set_server_options(options, &mo, 0); } @@ -2143,7 +2252,7 @@ int parse_server_match_testspec(struct connection_info *ci, char *spec) * * If the preauth flag is set, we do not bother copying the string or * array values that are not used pre-authentication, because any that we - * do use must be explictly sent in mm_getpwnamallow(). + * do use must be explicitly sent in mm_getpwnamallow(). */ void copy_set_server_options(ServerOptions *dst, ServerOptions *src, int preauth) @@ -2247,13 +2356,13 @@ copy_set_server_options(ServerOptions *dst, ServerOptions *src, int preauth) #undef M_CP_STRARRAYOPT void -parse_server_config(ServerOptions *options, const char *filename, Buffer *conf, - struct connection_info *connectinfo) +parse_server_config(ServerOptions *options, const char *filename, + struct sshbuf *conf, struct connection_info *connectinfo) { int active, linenum, bad_options = 0; char *cp, *obuf, *cbuf; - debug2("%s: config %s len %d", __func__, filename, buffer_len(conf)); + debug2("%s: config %s len %zu", __func__, filename, sshbuf_len(conf)); if ((obuf = cbuf = sshbuf_dup_string(conf)) == NULL) fatal("%s: sshbuf_dup_string failed", __func__); @@ -2370,17 +2479,6 @@ fmt_intarg(ServerOpCodes code, int val) } } -static const char * -lookup_opcode_name(ServerOpCodes code) -{ - u_int i; - - for (i = 0; keywords[i].name != NULL; i++) - if (keywords[i].opcode == code) - return(keywords[i].name); - return "UNKNOWN"; -} - static void dump_cfg_int(ServerOpCodes code, int val) { @@ -2534,7 +2632,6 @@ dump_config(ServerOptions *o) dump_cfg_fmtint(sStrictModes, o->strict_modes); dump_cfg_fmtint(sTCPKeepAlive, o->tcp_keep_alive); dump_cfg_fmtint(sEmptyPasswd, o->permit_empty_passwd); - dump_cfg_fmtint(sPermitUserEnvironment, o->permit_user_env); dump_cfg_fmtint(sCompression, o->compression); dump_cfg_fmtint(sGatewayPorts, o->fwd_opts.gateway_ports); dump_cfg_fmtint(sUseDNS, o->use_dns); @@ -2591,6 +2688,7 @@ dump_config(ServerOptions *o) dump_cfg_strarray(sAllowGroups, o->num_allow_groups, o->allow_groups); dump_cfg_strarray(sDenyGroups, o->num_deny_groups, o->deny_groups); dump_cfg_strarray(sAcceptEnv, o->num_accept_env, o->accept_env); + dump_cfg_strarray(sSetEnv, o->num_setenv, o->setenv); dump_cfg_strarray_oneline(sAuthenticationMethods, o->num_auth_methods, o->auth_methods); @@ -2625,4 +2723,20 @@ dump_config(ServerOptions *o) printf(" %s", o->permitted_opens[i]); } printf("\n"); + printf("permitlisten"); + if (o->num_permitted_listens == 0) + printf(" any"); + else { + for (i = 0; i < o->num_permitted_listens; i++) + printf(" %s", o->permitted_listens[i]); + } + printf("\n"); + + if (o->permit_user_env_whitelist == NULL) { + dump_cfg_fmtint(sPermitUserEnvironment, o->permit_user_env); + } else { + printf("permituserenvironment %s\n", + o->permit_user_env_whitelist); + } + } diff --git a/servconf.h b/servconf.h index 37a0fb1a3..557521d73 100644 --- a/servconf.h +++ b/servconf.h @@ -1,4 +1,4 @@ -/* $OpenBSD: servconf.h,v 1.130 2017/10/25 00:19:47 djm Exp $ */ +/* $OpenBSD: servconf.h,v 1.136 2018/07/09 21:26:02 markus Exp $ */ /* * Author: Tatu Ylonen @@ -32,12 +32,6 @@ #define PRIVSEP_ON 1 #define PRIVSEP_NOSANDBOX 2 -/* AllowTCPForwarding */ -#define FORWARD_DENY 0 -#define FORWARD_REMOTE (1) -#define FORWARD_LOCAL (1<<1) -#define FORWARD_ALLOW (FORWARD_REMOTE|FORWARD_LOCAL) - /* PermitOpen */ #define PERMITOPEN_ANY 0 #define PERMITOPEN_NONE -2 @@ -139,6 +133,7 @@ typedef struct { int permit_empty_passwd; /* If false, do not permit empty * passwords. */ int permit_user_env; /* If true, read ~/.ssh/environment */ + char *permit_user_env_whitelist; /* pattern-list whitelist */ int compression; /* If true, compression is allowed */ int allow_tcp_forwarding; /* One of FORWARD_* */ int allow_streamlocal_forwarding; /* One of FORWARD_* */ @@ -160,6 +155,8 @@ typedef struct { u_int num_accept_env; char **accept_env; + u_int num_setenv; + char **setenv; int max_startups_begin; int max_startups_rate; @@ -187,8 +184,10 @@ typedef struct { int permit_tun; - char **permitted_opens; - u_int num_permitted_opens; /* May also be one of PERMITOPEN_* */ + char **permitted_opens; /* May also be one of PERMITOPEN_* */ + u_int num_permitted_opens; + char **permitted_listens; /* May also be one of PERMITOPEN_* */ + u_int num_permitted_listens; char *chroot_directory; char *revoked_keys_file; @@ -209,6 +208,7 @@ typedef struct { int fingerprint_hash; int expose_userauth_info; + u_int64_t timing_secret; } ServerOptions; /* Information about the incoming connection as used by Match */ @@ -243,6 +243,7 @@ struct connection_info { M_CP_STROPT(hostbased_key_types); \ M_CP_STROPT(pubkey_key_types); \ M_CP_STROPT(routing_domain); \ + M_CP_STROPT(permit_user_env_whitelist); \ M_CP_STRARRAYOPT(authorized_keys_files, num_authkeys_files); \ M_CP_STRARRAYOPT(allow_users, num_allow_users); \ M_CP_STRARRAYOPT(deny_users, num_deny_users); \ @@ -251,6 +252,7 @@ struct connection_info { M_CP_STRARRAYOPT(accept_env, num_accept_env); \ M_CP_STRARRAYOPT(auth_methods, num_auth_methods); \ M_CP_STRARRAYOPT(permitted_opens, num_permitted_opens); \ + M_CP_STRARRAYOPT(permitted_listens, num_permitted_listens); \ } while (0) struct connection_info *get_connection_info(int, int); @@ -259,8 +261,8 @@ void fill_default_server_options(ServerOptions *); int process_server_config_line(ServerOptions *, char *, const char *, int, int *, struct connection_info *); void process_permitopen(struct ssh *ssh, ServerOptions *options); -void load_server_config(const char *, Buffer *); -void parse_server_config(ServerOptions *, const char *, Buffer *, +void load_server_config(const char *, struct sshbuf *); +void parse_server_config(ServerOptions *, const char *, struct sshbuf *, struct connection_info *); void parse_server_match_config(ServerOptions *, struct connection_info *); int parse_server_match_testspec(struct connection_info *, char *); diff --git a/serverloop.c b/serverloop.c index d6fe24cc1..7be83e2d3 100644 --- a/serverloop.c +++ b/serverloop.c @@ -1,4 +1,4 @@ -/* $OpenBSD: serverloop.c,v 1.205 2018/03/03 03:15:51 djm Exp $ */ +/* $OpenBSD: serverloop.c,v 1.209 2018/07/27 05:13:02 dtucker Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -58,7 +58,7 @@ #include "openbsd-compat/sys-queue.h" #include "xmalloc.h" #include "packet.h" -#include "buffer.h" +#include "sshbuf.h" #include "log.h" #include "misc.h" #include "servconf.h" @@ -67,7 +67,7 @@ #include "channels.h" #include "compat.h" #include "ssh2.h" -#include "key.h" +#include "sshkey.h" #include "cipher.h" #include "kex.h" #include "hostfile.h" @@ -103,6 +103,17 @@ static void server_init_dispatch(void); /* requested tunnel forwarding interface(s), shared with session.c */ char *tun_fwd_ifnames = NULL; +/* returns 1 if bind to specified port by specified user is permitted */ +static int +bind_permitted(int port, uid_t uid) +{ + if (use_privsep) + return 1; /* allow system to decide */ + if (port < IPPORT_RESERVED && uid != 0) + return 0; + return 1; +} + /* * we write to this pipe if a SIGCHLD is caught in order to avoid * the race between select() and child_terminated @@ -145,7 +156,7 @@ notify_done(fd_set *readset) if (notify_pipe[0] != -1 && FD_ISSET(notify_pipe[0], readset)) while (read(notify_pipe[0], &c, 1) != -1) - debug2("notify_done: reading"); + debug2("%s: reading", __func__); } /*ARGSUSED*/ @@ -623,7 +634,7 @@ server_input_channel_open(int type, u_int32_t seq, struct ssh *ssh) rwindow = packet_get_int(); rmaxpack = packet_get_int(); - debug("server_input_channel_open: ctype %s rchan %d win %d max %d", + debug("%s: ctype %s rchan %d win %d max %d", __func__, ctype, rchan, rwindow, rmaxpack); if (strcmp(ctype, "session") == 0) { @@ -636,7 +647,7 @@ server_input_channel_open(int type, u_int32_t seq, struct ssh *ssh) c = server_request_tun(ssh); } if (c != NULL) { - debug("server_input_channel_open: confirm %s", ctype); + debug("%s: confirm %s", __func__, ctype); c->remote_id = rchan; c->have_remote_id = 1; c->remote_window = rwindow; @@ -650,7 +661,7 @@ server_input_channel_open(int type, u_int32_t seq, struct ssh *ssh) packet_send(); } } else { - debug("server_input_channel_open: failure %s", ctype); + debug("%s: failure %s", __func__, ctype); packet_start(SSH2_MSG_CHANNEL_OPEN_FAILURE); packet_put_int(rchan); packet_put_int(reason); @@ -750,11 +761,11 @@ server_input_global_request(int type, u_int32_t seq, struct ssh *ssh) struct passwd *pw = the_authctxt->pw; if (pw == NULL || !the_authctxt->valid) - fatal("server_input_global_request: no/invalid user"); + fatal("%s: no/invalid user", __func__); rtype = packet_get_string(NULL); want_reply = packet_get_char(); - debug("server_input_global_request: rtype %s want_reply %d", rtype, want_reply); + debug("%s: rtype %s want_reply %d", __func__, rtype, want_reply); /* -R style forwarding */ if (strcmp(rtype, "tcpip-forward") == 0) { @@ -763,7 +774,7 @@ server_input_global_request(int type, u_int32_t seq, struct ssh *ssh) memset(&fwd, 0, sizeof(fwd)); fwd.listen_host = packet_get_string(NULL); fwd.listen_port = (u_short)packet_get_int(); - debug("server_input_global_request: tcpip-forward listen %s port %d", + debug("%s: tcpip-forward listen %s port %d", __func__, fwd.listen_host, fwd.listen_port); /* check permissions */ @@ -802,7 +813,7 @@ server_input_global_request(int type, u_int32_t seq, struct ssh *ssh) memset(&fwd, 0, sizeof(fwd)); fwd.listen_path = packet_get_string(NULL); - debug("server_input_global_request: streamlocal-forward listen path %s", + debug("%s: streamlocal-forward listen path %s", __func__, fwd.listen_path); /* check permissions */ diff --git a/session.c b/session.c index afb113a9a..0dbf1ba88 100644 --- a/session.c +++ b/session.c @@ -1,4 +1,4 @@ -/* $OpenBSD: session.c,v 1.294 2018/03/03 03:15:51 djm Exp $ */ +/* $OpenBSD: session.c,v 1.305 2018/07/25 13:56:23 deraadt Exp $ */ /* * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland * All rights reserved @@ -69,12 +69,13 @@ #include "ssh2.h" #include "sshpty.h" #include "packet.h" -#include "buffer.h" +#include "sshbuf.h" +#include "ssherr.h" #include "match.h" #include "uidswap.h" #include "compat.h" #include "channels.h" -#include "key.h" +#include "sshkey.h" #include "cipher.h" #ifdef GSSAPI #include "ssh-gss.h" @@ -139,7 +140,7 @@ extern int debug_flag; extern u_int utmp_len; extern int startup_pipe; extern void destroy_sensitive_data(void); -extern Buffer loginmsg; +extern struct sshbuf *loginmsg; extern struct sshauthopt *auth_opts; char *tun_fwd_ifnames; /* serverloop.c */ @@ -253,11 +254,14 @@ auth_input_request_forwarding(struct ssh *ssh, struct passwd * pw) static void display_loginmsg(void) { - if (buffer_len(&loginmsg) > 0) { - buffer_append(&loginmsg, "\0", 1); - printf("%s", (char *)buffer_ptr(&loginmsg)); - buffer_clear(&loginmsg); - } + int r; + + if (sshbuf_len(loginmsg) == 0) + return; + if ((r = sshbuf_put_u8(loginmsg, 0)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + printf("%s", (char *)sshbuf_ptr(loginmsg)); + sshbuf_reset(loginmsg); } static void @@ -295,26 +299,43 @@ prepare_auth_info_file(struct passwd *pw, struct sshbuf *info) } static void -set_permitopen_from_authopts(struct ssh *ssh, const struct sshauthopt *opts) +set_fwdpermit_from_authopts(struct ssh *ssh, const struct sshauthopt *opts) { char *tmp, *cp, *host; int port; size_t i; - if ((options.allow_tcp_forwarding & FORWARD_LOCAL) == 0) - return; - channel_clear_permitted_opens(ssh); - for (i = 0; i < auth_opts->npermitopen; i++) { - tmp = cp = xstrdup(auth_opts->permitopen[i]); - /* This shouldn't fail as it has already been checked */ - if ((host = hpdelim(&cp)) == NULL) - fatal("%s: internal error: hpdelim", __func__); - host = cleanhostname(host); - if (cp == NULL || (port = permitopen_port(cp)) < 0) - fatal("%s: internal error: permitopen port", - __func__); - channel_add_permitted_opens(ssh, host, port); - free(tmp); + if ((options.allow_tcp_forwarding & FORWARD_LOCAL) != 0) { + channel_clear_permission(ssh, FORWARD_USER, FORWARD_LOCAL); + for (i = 0; i < auth_opts->npermitopen; i++) { + tmp = cp = xstrdup(auth_opts->permitopen[i]); + /* This shouldn't fail as it has already been checked */ + if ((host = hpdelim(&cp)) == NULL) + fatal("%s: internal error: hpdelim", __func__); + host = cleanhostname(host); + if (cp == NULL || (port = permitopen_port(cp)) < 0) + fatal("%s: internal error: permitopen port", + __func__); + channel_add_permission(ssh, + FORWARD_USER, FORWARD_LOCAL, host, port); + free(tmp); + } + } + if ((options.allow_tcp_forwarding & FORWARD_REMOTE) != 0) { + channel_clear_permission(ssh, FORWARD_USER, FORWARD_REMOTE); + for (i = 0; i < auth_opts->npermitlisten; i++) { + tmp = cp = xstrdup(auth_opts->permitlisten[i]); + /* This shouldn't fail as it has already been checked */ + if ((host = hpdelim(&cp)) == NULL) + fatal("%s: internal error: hpdelim", __func__); + host = cleanhostname(host); + if (cp == NULL || (port = permitopen_port(cp)) < 0) + fatal("%s: internal error: permitlisten port", + __func__); + channel_add_permission(ssh, + FORWARD_USER, FORWARD_REMOTE, host, port); + free(tmp); + } } } @@ -327,14 +348,22 @@ do_authenticated(struct ssh *ssh, Authctxt *authctxt) /* setup the channel layer */ /* XXX - streamlocal? */ - set_permitopen_from_authopts(ssh, auth_opts); - if (!auth_opts->permit_port_forwarding_flag || - options.disable_forwarding || - (options.allow_tcp_forwarding & FORWARD_LOCAL) == 0) - channel_disable_adm_local_opens(ssh); - else - channel_permit_all_opens(ssh); + set_fwdpermit_from_authopts(ssh, auth_opts); + if (!auth_opts->permit_port_forwarding_flag || + options.disable_forwarding) { + channel_disable_admin(ssh, FORWARD_LOCAL); + channel_disable_admin(ssh, FORWARD_REMOTE); + } else { + if ((options.allow_tcp_forwarding & FORWARD_LOCAL) == 0) + channel_disable_admin(ssh, FORWARD_LOCAL); + else + channel_permit_all(ssh, FORWARD_LOCAL); + if ((options.allow_tcp_forwarding & FORWARD_REMOTE) == 0) + channel_disable_admin(ssh, FORWARD_REMOTE); + else + channel_permit_all(ssh, FORWARD_REMOTE); + } auth_debug_send(); prepare_auth_info_file(authctxt->pw, authctxt->session_info); @@ -354,7 +383,7 @@ xauth_valid_string(const char *s) if (!isalnum((u_char)s[i]) && s[i] != '.' && s[i] != ':' && s[i] != '/' && s[i] != '-' && s[i] != '_') - return 0; + return 0; } return 1; } @@ -851,7 +880,7 @@ do_exec_no_pty(struct ssh *ssh, Session *s, const char *command) * it to the user, otherwise multiple sessions may accumulate * multiple copies of the login messages. */ - buffer_clear(&loginmsg); + sshbuf_reset(loginmsg); #ifdef USE_PIPES /* We are the parent. Close the child sides of the pipes. */ @@ -1084,7 +1113,7 @@ do_exec(struct ssh *ssh, Session *s, const char *command) * it to the user, otherwise multiple sessions may accumulate * multiple copies of the login messages. */ - buffer_clear(&loginmsg); + sshbuf_reset(loginmsg); return ret; } @@ -1194,24 +1223,26 @@ check_quietlogin(Session *s, const char *command) * into the environment. If the file does not exist, this does nothing. * Otherwise, it must consist of empty lines, comments (line starts with '#') * and assignments of the form name=value. No other forms are allowed. + * If whitelist is not NULL, then it is interpreted as a pattern list and + * only variable names that match it will be accepted. */ static void read_environment_file(char ***env, u_int *envsize, - const char *filename) + const char *filename, const char *whitelist) { FILE *f; - char buf[4096]; - char *cp, *value; + char *line = NULL, *cp, *value; + size_t linesize = 0; u_int lineno = 0; f = fopen(filename, "r"); if (!f) return; - while (fgets(buf, sizeof(buf), f)) { + while (getline(&line, &linesize, f) != -1) { if (++lineno > 1000) fatal("Too many lines in environment file %s", filename); - for (cp = buf; *cp == ' ' || *cp == '\t'; cp++) + for (cp = line; *cp == ' ' || *cp == '\t'; cp++) ; if (!*cp || *cp == '#' || *cp == '\n') continue; @@ -1230,8 +1261,12 @@ read_environment_file(char ***env, u_int *envsize, */ *value = '\0'; value++; + if (whitelist != NULL && + match_pattern_list(cp, whitelist, 0) != 1) + continue; child_set_env(env, envsize, cp, value); } + free(line); fclose(f); } @@ -1268,7 +1303,8 @@ read_etc_default_login(char ***env, u_int *envsize, uid_t uid) * so we use a temporary environment and copy the variables we're * interested in. */ - read_environment_file(&tmpenv, &tmpenvsize, "/etc/default/login"); + read_environment_file(&tmpenv, &tmpenvsize, "/etc/default/login", + options.permit_user_env_whitelist); if (tmpenv == NULL) return; @@ -1330,7 +1366,7 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell) char buf[256]; size_t n; u_int i, envsize; - char *ocp, *cp, **env, *laddr; + char *ocp, *cp, *value, **env, *laddr; struct passwd *pw = s->pw; #if !defined (HAVE_LOGIN_CAP) && !defined (HAVE_CYGWIN) char *path = NULL; @@ -1404,46 +1440,10 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell) if (getenv("TZ")) child_set_env(&env, &envsize, "TZ", getenv("TZ")); - - /* Set custom environment options from pubkey authentication. */ - if (options.permit_user_env) { - for (n = 0 ; n < auth_opts->nenv; n++) { - ocp = xstrdup(auth_opts->env[n]); - cp = strchr(ocp, '='); - if (*cp == '=') { - *cp = '\0'; - child_set_env(&env, &envsize, ocp, cp + 1); - } - free(ocp); - } - } - - /* SSH_CLIENT deprecated */ - snprintf(buf, sizeof buf, "%.50s %d %d", - ssh_remote_ipaddr(ssh), ssh_remote_port(ssh), - ssh_local_port(ssh)); - child_set_env(&env, &envsize, "SSH_CLIENT", buf); - - laddr = get_local_ipaddr(packet_get_connection_in()); - snprintf(buf, sizeof buf, "%.50s %d %.50s %d", - ssh_remote_ipaddr(ssh), ssh_remote_port(ssh), - laddr, ssh_local_port(ssh)); - free(laddr); - child_set_env(&env, &envsize, "SSH_CONNECTION", buf); - - if (tun_fwd_ifnames != NULL) - child_set_env(&env, &envsize, "SSH_TUNNEL", tun_fwd_ifnames); - if (auth_info_file != NULL) - child_set_env(&env, &envsize, "SSH_USER_AUTH", auth_info_file); - if (s->ttyfd != -1) - child_set_env(&env, &envsize, "SSH_TTY", s->tty); if (s->term) child_set_env(&env, &envsize, "TERM", s->term); if (s->display) child_set_env(&env, &envsize, "DISPLAY", s->display); - if (original_command) - child_set_env(&env, &envsize, "SSH_ORIGINAL_COMMAND", - original_command); /* * Since we clear KRB5CCNAME at startup, if it's set now then it @@ -1463,7 +1463,8 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell) if ((cp = getenv("AUTHSTATE")) != NULL) child_set_env(&env, &envsize, "AUTHSTATE", cp); - read_environment_file(&env, &envsize, "/etc/environment"); + read_environment_file(&env, &envsize, "/etc/environment", + options.permit_user_env_whitelist); } #endif #ifdef KRB5 @@ -1471,6 +1472,37 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell) child_set_env(&env, &envsize, "KRB5CCNAME", s->authctxt->krb5_ccname); #endif + if (auth_sock_name != NULL) + child_set_env(&env, &envsize, SSH_AUTHSOCKET_ENV_NAME, + auth_sock_name); + + + /* Set custom environment options from pubkey authentication. */ + if (options.permit_user_env) { + for (n = 0 ; n < auth_opts->nenv; n++) { + ocp = xstrdup(auth_opts->env[n]); + cp = strchr(ocp, '='); + if (*cp == '=') { + *cp = '\0'; + /* Apply PermitUserEnvironment whitelist */ + if (options.permit_user_env_whitelist == NULL || + match_pattern_list(ocp, + options.permit_user_env_whitelist, 0) == 1) + child_set_env(&env, &envsize, + ocp, cp + 1); + } + free(ocp); + } + } + + /* read $HOME/.ssh/environment. */ + if (options.permit_user_env) { + snprintf(buf, sizeof buf, "%.200s/.ssh/environment", + pw->pw_dir); + read_environment_file(&env, &envsize, buf, + options.permit_user_env_whitelist); + } + #ifdef USE_PAM /* * Pull in any environment variables that may have @@ -1493,16 +1525,40 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell) } #endif /* USE_PAM */ - if (auth_sock_name != NULL) - child_set_env(&env, &envsize, SSH_AUTHSOCKET_ENV_NAME, - auth_sock_name); - - /* read $HOME/.ssh/environment. */ - if (options.permit_user_env) { - snprintf(buf, sizeof buf, "%.200s/.ssh/environment", - strcmp(pw->pw_dir, "/") ? pw->pw_dir : ""); - read_environment_file(&env, &envsize, buf); + /* Environment specified by admin */ + for (i = 0; i < options.num_setenv; i++) { + cp = xstrdup(options.setenv[i]); + if ((value = strchr(cp, '=')) == NULL) { + /* shouldn't happen; vars are checked in servconf.c */ + fatal("Invalid config SetEnv: %s", options.setenv[i]); + } + *value++ = '\0'; + child_set_env(&env, &envsize, cp, value); } + + /* SSH_CLIENT deprecated */ + snprintf(buf, sizeof buf, "%.50s %d %d", + ssh_remote_ipaddr(ssh), ssh_remote_port(ssh), + ssh_local_port(ssh)); + child_set_env(&env, &envsize, "SSH_CLIENT", buf); + + laddr = get_local_ipaddr(packet_get_connection_in()); + snprintf(buf, sizeof buf, "%.50s %d %.50s %d", + ssh_remote_ipaddr(ssh), ssh_remote_port(ssh), + laddr, ssh_local_port(ssh)); + free(laddr); + child_set_env(&env, &envsize, "SSH_CONNECTION", buf); + + if (tun_fwd_ifnames != NULL) + child_set_env(&env, &envsize, "SSH_TUNNEL", tun_fwd_ifnames); + if (auth_info_file != NULL) + child_set_env(&env, &envsize, "SSH_USER_AUTH", auth_info_file); + if (s->ttyfd != -1) + child_set_env(&env, &envsize, "SSH_TTY", s->tty); + if (original_command) + child_set_env(&env, &envsize, "SSH_ORIGINAL_COMMAND", + original_command); + if (debug_flag) { /* dump the environment */ fprintf(stderr, "Environment:\n"); @@ -1689,7 +1745,7 @@ safely_chroot(const char *path, uid_t uid) void do_setusercontext(struct passwd *pw) { - char *chroot_path, *tmp; + char uidstr[32], *chroot_path, *tmp; platform_setusercontext(pw); @@ -1721,8 +1777,10 @@ do_setusercontext(struct passwd *pw) strcasecmp(options.chroot_directory, "none") != 0) { tmp = tilde_expand_filename(options.chroot_directory, pw->pw_uid); + snprintf(uidstr, sizeof(uidstr), "%llu", + (unsigned long long)pw->pw_uid); chroot_path = percent_expand(tmp, "h", pw->pw_dir, - "u", pw->pw_name, (char *)NULL); + "u", pw->pw_name, "U", uidstr, (char *)NULL); safely_chroot(chroot_path, pw->pw_uid); free(tmp); free(chroot_path); @@ -2229,7 +2287,6 @@ static int session_pty_req(struct ssh *ssh, Session *s) { u_int len; - int n_bytes; if (!auth_opts->permit_pty_flag || !options.permit_tty) { debug("Allocating a pty not permitted for this connection."); @@ -2268,8 +2325,7 @@ session_pty_req(struct ssh *ssh, Session *s) } debug("session_pty_req: session %d alloc %s", s->self, s->tty); - n_bytes = packet_remaining(); - tty_parse_modes(s->ttyfd, &n_bytes); + ssh_tty_parse_modes(ssh, s->ttyfd); if (!use_privsep) pty_setowner(s->pw, s->tty); diff --git a/sftp-client.c b/sftp-client.c index 7a24238d8..d2ce21e34 100644 --- a/sftp-client.c +++ b/sftp-client.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sftp-client.c,v 1.128 2017/11/28 21:10:22 dtucker Exp $ */ +/* $OpenBSD: sftp-client.c,v 1.130 2018/07/31 03:07:24 djm Exp $ */ /* * Copyright (c) 2001-2004 Damien Miller * @@ -669,7 +669,7 @@ do_lsreaddir(struct sftp_conn *conn, const char *path, int print_flag, **dir = NULL; } - return status; + return status == SSH2_FX_OK ? 0 : -1; } int @@ -1019,7 +1019,7 @@ do_fsync(struct sftp_conn *conn, u_char *handle, u_int handle_len) if (status != SSH2_FX_OK) error("Couldn't sync file: %s", fx2txt(status)); - return status; + return status == SSH2_FX_OK ? 0 : -1; } #ifdef notyet @@ -1456,7 +1456,7 @@ do_download(struct sftp_conn *conn, const char *remote_path, sshbuf_free(msg); free(handle); - return(status); + return status == SSH2_FX_OK ? 0 : -1; } static int @@ -1466,7 +1466,7 @@ download_dir_internal(struct sftp_conn *conn, const char *src, const char *dst, { int i, ret = 0; SFTP_DIRENT **dir_entries; - char *filename, *new_src, *new_dst; + char *filename, *new_src = NULL, *new_dst = NULL; mode_t mode = 0777; if (depth >= MAX_DIR_DEPTH) { @@ -1504,8 +1504,10 @@ download_dir_internal(struct sftp_conn *conn, const char *src, const char *dst, } for (i = 0; dir_entries[i] != NULL && !interrupted; i++) { - filename = dir_entries[i]->filename; + free(new_dst); + free(new_src); + filename = dir_entries[i]->filename; new_dst = path_append(dst, filename); new_src = path_append(src, filename); @@ -1528,9 +1530,9 @@ download_dir_internal(struct sftp_conn *conn, const char *src, const char *dst, } else logit("%s: not a regular file\n", new_src); - free(new_dst); - free(new_src); } + free(new_dst); + free(new_src); if (preserve_flag) { if (dirattrib->flags & SSH2_FILEXFER_ATTR_ACMODTIME) { @@ -1798,7 +1800,7 @@ upload_dir_internal(struct sftp_conn *conn, const char *src, const char *dst, int ret = 0; DIR *dirp; struct dirent *dp; - char *filename, *new_src, *new_dst; + char *filename, *new_src = NULL, *new_dst = NULL; struct stat sb; Attrib a, *dirattrib; @@ -1849,6 +1851,8 @@ upload_dir_internal(struct sftp_conn *conn, const char *src, const char *dst, while (((dp = readdir(dirp)) != NULL) && !interrupted) { if (dp->d_ino == 0) continue; + free(new_dst); + free(new_src); filename = dp->d_name; new_dst = path_append(dst, filename); new_src = path_append(src, filename); @@ -1875,9 +1879,9 @@ upload_dir_internal(struct sftp_conn *conn, const char *src, const char *dst, } } else logit("%s: not a regular file\n", filename); - free(new_dst); - free(new_src); } + free(new_dst); + free(new_src); do_setstat(conn, dst, &a); diff --git a/sftp-server.c b/sftp-server.c index d269c3107..138f86b1d 100644 --- a/sftp-server.c +++ b/sftp-server.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sftp-server.c,v 1.111 2017/04/04 00:24:56 djm Exp $ */ +/* $OpenBSD: sftp-server.c,v 1.112 2018/06/01 03:33:53 djm Exp $ */ /* * Copyright (c) 2000-2004 Markus Friedl. All rights reserved. * @@ -1508,7 +1508,7 @@ sftp_server_main(int argc, char **argv, struct passwd *user_pw) int i, r, in, out, max, ch, skipargs = 0, log_stderr = 0; ssize_t len, olen, set_size; SyslogFacility log_facility = SYSLOG_FACILITY_AUTH; - char *cp, *homedir = NULL, buf[4*4096]; + char *cp, *homedir = NULL, uidstr[32], buf[4*4096]; long mask; extern char *optarg; @@ -1559,8 +1559,10 @@ sftp_server_main(int argc, char **argv, struct passwd *user_pw) break; case 'd': cp = tilde_expand_filename(optarg, user_pw->pw_uid); + snprintf(uidstr, sizeof(uidstr), "%llu", + (unsigned long long)pw->pw_uid); homedir = percent_expand(cp, "d", user_pw->pw_dir, - "u", user_pw->pw_name, (char *)NULL); + "u", user_pw->pw_name, "U", uidstr, (char *)NULL); free(cp); break; case 'p': diff --git a/sftp.1 b/sftp.1 index 43e0442f7..a25d3890b 100644 --- a/sftp.1 +++ b/sftp.1 @@ -1,4 +1,4 @@ -.\" $OpenBSD: sftp.1,v 1.114 2018/02/23 07:38:09 jmc Exp $ +.\" $OpenBSD: sftp.1,v 1.119 2018/07/23 19:53:55 jmc Exp $ .\" .\" Copyright (c) 2001 Damien Miller. All rights reserved. .\" @@ -22,7 +22,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd $Mdocdate: February 23 2018 $ +.Dd $Mdocdate: July 23 2018 $ .Dt SFTP 1 .Os .Sh NAME @@ -243,10 +243,10 @@ For full details of the options listed below, and their possible values, see .It SendEnv .It ServerAliveInterval .It ServerAliveCountMax +.It SetEnv .It StrictHostKeyChecking .It TCPKeepAlive .It UpdateHostKeys -.It UsePrivilegedPort .It User .It UserKnownHostsFile .It VerifyHostKeyDNS @@ -315,7 +315,7 @@ to .Ar grp . .Ar path may contain -.Xr glob 3 +.Xr glob 7 characters and may match multiple files. .Ar grp must be a numeric GID. @@ -326,7 +326,7 @@ to .Ar mode . .Ar path may contain -.Xr glob 3 +.Xr glob 7 characters and may match multiple files. .It Ic chown Ar own Ar path Change owner of file @@ -335,7 +335,7 @@ to .Ar own . .Ar path may contain -.Xr glob 3 +.Xr glob 7 characters and may match multiple files. .Ar own must be a numeric UID. @@ -373,7 +373,7 @@ path name is not specified, it is given the same name it has on the remote machine. .Ar remote-path may contain -.Xr glob 3 +.Xr glob 7 characters and may match multiple files. If it does and .Ar local-path @@ -429,7 +429,7 @@ may contain any flags supported by the local system's command. .Ar path may contain -.Xr glob 3 +.Xr glob 7 characters and may match multiple files. .It Ic lmkdir Ar path Create local directory specified by @@ -460,7 +460,7 @@ or the current directory if is not specified. .Ar path may contain -.Xr glob 3 +.Xr glob 7 characters and may match multiple files. .Pp The following flags are recognized and alter the behaviour of @@ -513,7 +513,7 @@ If the remote path name is not specified, it is given the same name it has on the local machine. .Ar local-path may contain -.Xr glob 3 +.Xr glob 7 characters and may match multiple files. If it does and .Ar remote-path @@ -616,8 +616,8 @@ Synonym for help. .Xr ssh 1 , .Xr ssh-add 1 , .Xr ssh-keygen 1 , -.Xr glob 3 , .Xr ssh_config 5 , +.Xr glob 7 , .Xr sftp-server 8 , .Xr sshd 8 .Rs diff --git a/sftp.c b/sftp.c index d9e044c11..6f3d71b9c 100644 --- a/sftp.c +++ b/sftp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sftp.c,v 1.182 2017/11/03 03:46:52 djm Exp $ */ +/* $OpenBSD: sftp.c,v 1.185 2018/04/26 14:47:03 bluhm Exp $ */ /* * Copyright (c) 2001-2004 Damien Miller * @@ -84,7 +84,7 @@ FILE* infile; int batchmode = 0; /* PID of ssh transport process */ -static pid_t sshpid = -1; +static volatile pid_t sshpid = -1; /* Suppress diagnositic messages */ int quiet = 0; @@ -256,6 +256,25 @@ cmd_interrupt(int signo) errno = olderrno; } +/*ARGSUSED*/ +static void +sigchld_handler(int sig) +{ + int save_errno = errno; + pid_t pid; + const char msg[] = "\rConnection closed. \n"; + + /* Report if ssh transport process dies. */ + while ((pid = waitpid(sshpid, NULL, WNOHANG)) == -1 && errno == EINTR) + continue; + if (pid == sshpid) { + (void)write(STDERR_FILENO, msg, sizeof(msg) - 1); + sshpid = -1; + } + + errno = save_errno; +} + static void help(void) { @@ -1914,7 +1933,7 @@ complete_cmd_parse(EditLine *el, char *cmd, int lastarg, char quote, return 0; } - /* Complete ambigious command */ + /* Complete ambiguous command */ tmp = complete_ambiguous(cmd, list, count); if (count > 1) complete_display(list, 0); @@ -2297,6 +2316,7 @@ interactive_loop(struct sftp_conn *conn, char *file1, char *file2) if (err != 0) break; } + signal(SIGCHLD, SIG_DFL); free(remote_path); free(startdir); free(conn); @@ -2388,6 +2408,7 @@ connect_to_server(char *path, char **args, int *in, int *out) signal(SIGTSTP, suspchild); signal(SIGTTIN, suspchild); signal(SIGTTOU, suspchild); + signal(SIGCHLD, sigchld_handler); close(c_in); close(c_out); } @@ -2637,7 +2658,7 @@ main(int argc, char **argv) if (batchmode) fclose(infile); - while (waitpid(sshpid, NULL, 0) == -1) + while (waitpid(sshpid, NULL, 0) == -1 && sshpid > 1) if (errno != EINTR) fatal("Couldn't wait for ssh process: %s", strerror(errno)); diff --git a/ssh-agent.c b/ssh-agent.c index 2a4578b03..d8a8260f9 100644 --- a/ssh-agent.c +++ b/ssh-agent.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh-agent.c,v 1.228 2018/02/23 15:58:37 markus Exp $ */ +/* $OpenBSD: ssh-agent.c,v 1.231 2018/05/11 03:38:51 djm Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -709,7 +709,7 @@ process_message(u_int socknum) debug("%s: socket %u (fd=%d) type %d", __func__, socknum, e->fd, type); - /* check wheter agent is locked */ + /* check whether agent is locked */ if (locked && type != SSH_AGENTC_UNLOCK) { sshbuf_reset(e->request); switch (type) { @@ -886,10 +886,10 @@ handle_conn_write(u_int socknum) } static void -after_poll(struct pollfd *pfd, size_t npfd) +after_poll(struct pollfd *pfd, size_t npfd, u_int maxfds) { size_t i; - u_int socknum; + u_int socknum, activefds = npfd; for (i = 0; i < npfd; i++) { if (pfd[i].revents == 0) @@ -909,19 +909,30 @@ after_poll(struct pollfd *pfd, size_t npfd) /* Process events */ switch (sockets[socknum].type) { case AUTH_SOCKET: - if ((pfd[i].revents & (POLLIN|POLLERR)) != 0 && - handle_socket_read(socknum) != 0) - close_socket(&sockets[socknum]); + if ((pfd[i].revents & (POLLIN|POLLERR)) == 0) + break; + if (npfd > maxfds) { + debug3("out of fds (active %u >= limit %u); " + "skipping accept", activefds, maxfds); + break; + } + if (handle_socket_read(socknum) == 0) + activefds++; break; case AUTH_CONNECTION: if ((pfd[i].revents & (POLLIN|POLLERR)) != 0 && handle_conn_read(socknum) != 0) { - close_socket(&sockets[socknum]); - break; + goto close_sock; } if ((pfd[i].revents & (POLLOUT|POLLHUP)) != 0 && - handle_conn_write(socknum) != 0) + handle_conn_write(socknum) != 0) { + close_sock: + if (activefds == 0) + fatal("activefds == 0 at close_sock"); close_socket(&sockets[socknum]); + activefds--; + break; + } break; default: break; @@ -930,7 +941,7 @@ after_poll(struct pollfd *pfd, size_t npfd) } static int -prepare_poll(struct pollfd **pfdp, size_t *npfdp, int *timeoutp) +prepare_poll(struct pollfd **pfdp, size_t *npfdp, int *timeoutp, u_int maxfds) { struct pollfd *pfd = *pfdp; size_t i, j, npfd = 0; @@ -959,6 +970,16 @@ prepare_poll(struct pollfd **pfdp, size_t *npfdp, int *timeoutp) for (i = j = 0; i < sockets_alloc; i++) { switch (sockets[i].type) { case AUTH_SOCKET: + if (npfd > maxfds) { + debug3("out of fds (active %zu >= limit %u); " + "skipping arming listener", npfd, maxfds); + break; + } + pfd[j].fd = sockets[i].fd; + pfd[j].revents = 0; + pfd[j].events = POLLIN; + j++; + break; case AUTH_CONNECTION: pfd[j].fd = sockets[i].fd; pfd[j].revents = 0; @@ -1059,6 +1080,7 @@ main(int ac, char **av) int timeout = -1; /* INFTIM */ struct pollfd *pfd = NULL; size_t npfd = 0; + u_int maxfds; ssh_malloc_init(); /* must be called before any mallocs */ /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */ @@ -1070,6 +1092,9 @@ main(int ac, char **av) platform_disable_tracing(0); /* strict=no */ + if (getrlimit(RLIMIT_NOFILE, &rlim) == -1) + fatal("%s: getrlimit: %s", __progname, strerror(errno)); + #ifdef WITH_OPENSSL OpenSSL_add_all_algorithms(); #endif @@ -1166,6 +1191,18 @@ main(int ac, char **av) printf("echo Agent pid %ld killed;\n", (long)pid); exit(0); } + + /* + * Minimum file descriptors: + * stdio (3) + listener (1) + syslog (1 maybe) + connection (1) + + * a few spare for libc / stack protectors / sanitisers, etc. + */ +#define SSH_AGENT_MIN_FDS (3+1+1+1+4) + if (rlim.rlim_cur < SSH_AGENT_MIN_FDS) + fatal("%s: file descriptior rlimit %lld too low (minimum %u)", + __progname, (long long)rlim.rlim_cur, SSH_AGENT_MIN_FDS); + maxfds = rlim.rlim_cur - SSH_AGENT_MIN_FDS; + parent_pid = getpid(); if (agentsocket == NULL) { @@ -1285,7 +1322,7 @@ skip: platform_pledge_agent(); while (1) { - prepare_poll(&pfd, &npfd, &timeout); + prepare_poll(&pfd, &npfd, &timeout, maxfds); result = poll(pfd, npfd, timeout); saved_errno = errno; if (parent_alive_interval != 0) @@ -1296,7 +1333,7 @@ skip: continue; fatal("poll: %s", strerror(saved_errno)); } else if (result > 0) - after_poll(pfd, npfd); + after_poll(pfd, npfd, maxfds); } /* NOTREACHED */ } diff --git a/ssh-gss.h b/ssh-gss.h index 6593e422d..36180d07a 100644 --- a/ssh-gss.h +++ b/ssh-gss.h @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh-gss.h,v 1.12 2017/06/24 06:34:38 djm Exp $ */ +/* $OpenBSD: ssh-gss.h,v 1.14 2018/07/10 09:13:30 djm Exp $ */ /* * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. * @@ -107,6 +107,9 @@ ssh_gssapi_mech *ssh_gssapi_get_ctype(Gssctxt *); void ssh_gssapi_prepare_supported_oids(void); OM_uint32 ssh_gssapi_test_oid_supported(OM_uint32 *, gss_OID, int *); +struct sshbuf; +int ssh_gssapi_get_buffer_desc(struct sshbuf *, gss_buffer_desc *); + OM_uint32 ssh_gssapi_import_name(Gssctxt *, const char *); OM_uint32 ssh_gssapi_init_ctx(Gssctxt *, int, gss_buffer_desc *, gss_buffer_desc *, OM_uint32 *); @@ -118,7 +121,8 @@ char *ssh_gssapi_last_error(Gssctxt *, OM_uint32 *, OM_uint32 *); void ssh_gssapi_build_ctx(Gssctxt **); void ssh_gssapi_delete_ctx(Gssctxt **); OM_uint32 ssh_gssapi_sign(Gssctxt *, gss_buffer_t, gss_buffer_t); -void ssh_gssapi_buildmic(Buffer *, const char *, const char *, const char *); +void ssh_gssapi_buildmic(struct sshbuf *, const char *, + const char *, const char *); int ssh_gssapi_check_mechanism(Gssctxt **, gss_OID, const char *); /* In the server */ diff --git a/ssh-keygen.1 b/ssh-keygen.1 index 3525d7d17..dd6e7e5a8 100644 --- a/ssh-keygen.1 +++ b/ssh-keygen.1 @@ -1,4 +1,4 @@ -.\" $OpenBSD: ssh-keygen.1,v 1.147 2018/03/12 00:52:01 djm Exp $ +.\" $OpenBSD: ssh-keygen.1,v 1.148 2018/08/08 01:16:01 djm Exp $ .\" .\" Author: Tatu Ylonen .\" Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -35,7 +35,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd $Mdocdate: March 12 2018 $ +.Dd $Mdocdate: August 8 2018 $ .Dt SSH-KEYGEN 1 .Os .Sh NAME @@ -233,10 +233,8 @@ This is used by .Pa /etc/rc to generate new host keys. .It Fl a Ar rounds -When saving a new-format private key (i.e. an ed25519 key or when the -.Fl o -flag is set), this option specifies the number of KDF (key derivation function) -rounds used. +When saving a private key this option specifies the number of KDF +(key derivation function) rounds used. Higher numbers result in slower passphrase verification and increased resistance to brute-force password cracking (should the keys be stolen). .Pp @@ -264,8 +262,6 @@ flag will be ignored. Provides a new comment. .It Fl c Requests changing the comment in the private and public key files. -This operation is only supported for keys stored in the -newer OpenSSH format. The program will prompt for the file containing the private keys, for the passphrase if the key has one, and for the new comment. .It Fl D Ar pkcs11 @@ -410,6 +406,10 @@ or (PEM public key). The default conversion format is .Dq RFC4716 . +Setting a format of +.Dq PEM +when generating or updating a supported private key type will cause the +key to be stored in the legacy PEM private key format. .It Fl N Ar new_passphrase Provides the new passphrase. .It Fl n Ar principals @@ -504,14 +504,6 @@ The is a comma-separated list of one or more address/netmask pairs in CIDR format. .El -.It Fl o -Causes -.Nm -to save private keys using the new OpenSSH format rather than -the more compatible PEM format. -The new format has increased resistance to brute-force password cracking -but is not supported by versions of OpenSSH prior to 6.5. -Ed25519 keys always use the new private key format. .It Fl P Ar passphrase Provides the (old) passphrase. .It Fl p diff --git a/ssh-keygen.c b/ssh-keygen.c index e0f436219..90aa24d5c 100644 --- a/ssh-keygen.c +++ b/ssh-keygen.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh-keygen.c,v 1.314 2018/03/12 00:52:01 djm Exp $ */ +/* $OpenBSD: ssh-keygen.c,v 1.319 2018/08/08 01:16:01 djm Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1994 Tatu Ylonen , Espoo, Finland @@ -38,6 +38,7 @@ #include #include #include +#include #include "xmalloc.h" #include "sshkey.h" @@ -179,7 +180,7 @@ char *key_type_name = NULL; char *pkcs11provider = NULL; /* Use new OpenSSH private key format when writing SSH2 keys instead of PEM */ -int use_new_format = 0; +int use_new_format = 1; /* Cipher for new-format private keys */ char *new_format_cipher = NULL; @@ -875,7 +876,8 @@ do_fingerprint(struct passwd *pw) { FILE *f; struct sshkey *public = NULL; - char *comment = NULL, *cp, *ep, line[SSH_MAX_PUBKEY_BYTES]; + char *comment = NULL, *cp, *ep, *line = NULL; + size_t linesize = 0; int i, invalid = 1; const char *path; u_long lnum = 0; @@ -890,7 +892,8 @@ do_fingerprint(struct passwd *pw) } else if ((f = fopen(path, "r")) == NULL) fatal("%s: %s: %s", __progname, path, strerror(errno)); - while (read_keyfile_line(f, path, line, sizeof(line), &lnum) == 0) { + while (getline(&line, &linesize, f) != -1) { + lnum++; cp = line; cp[strcspn(cp, "\n")] = '\0'; /* Trim leading space and comments */ @@ -910,6 +913,7 @@ do_fingerprint(struct passwd *pw) */ if (lnum == 1 && strcmp(identity_file, "-") != 0 && strstr(cp, "PRIVATE KEY") != NULL) { + free(line); fclose(f); fingerprint_private(path); exit(0); @@ -956,6 +960,7 @@ do_fingerprint(struct passwd *pw) invalid = 0; /* One good key in the file is sufficient */ } fclose(f); + free(line); if (invalid) fatal("%s is not a public key file.", path); @@ -1263,13 +1268,12 @@ do_known_hosts(struct passwd *pw, const char *name) } inplace = 1; } - /* XXX support identity_file == "-" for stdin */ foreach_options = find_host ? HKF_WANT_MATCH : 0; foreach_options |= print_fingerprint ? HKF_WANT_PARSE_KEY : 0; - if ((r = hostkeys_foreach(identity_file, - hash_hosts ? known_hosts_hash : known_hosts_find_delete, &ctx, - name, NULL, foreach_options)) != 0) { + if ((r = hostkeys_foreach(identity_file, (find_host || !hash_hosts) ? + known_hosts_find_delete : known_hosts_hash, &ctx, name, NULL, + foreach_options)) != 0) { if (inplace) unlink(tmp); fatal("%s: hostkeys_foreach failed: %s", __func__, ssh_err(r)); @@ -2015,8 +2019,9 @@ do_show_cert(struct passwd *pw) struct stat st; int r, is_stdin = 0, ok = 0; FILE *f; - char *cp, line[SSH_MAX_PUBKEY_BYTES]; + char *cp, *line = NULL; const char *path; + size_t linesize = 0; u_long lnum = 0; if (!have_identity) @@ -2032,7 +2037,8 @@ do_show_cert(struct passwd *pw) } else if ((f = fopen(identity_file, "r")) == NULL) fatal("fopen %s: %s", identity_file, strerror(errno)); - while (read_keyfile_line(f, path, line, sizeof(line), &lnum) == 0) { + while (getline(&line, &linesize, f) != -1) { + lnum++; sshkey_free(key); key = NULL; /* Trim leading space and comments */ @@ -2057,6 +2063,7 @@ do_show_cert(struct passwd *pw) printf("%s:%lu:\n", path, lnum); print_cert(key); } + free(line); sshkey_free(key); fclose(f); exit(ok ? 0 : 1); @@ -2088,7 +2095,8 @@ update_krl_from_file(struct passwd *pw, const char *file, int wild_ca, { struct sshkey *key = NULL; u_long lnum = 0; - char *path, *cp, *ep, line[SSH_MAX_PUBKEY_BYTES]; + char *path, *cp, *ep, *line = NULL; + size_t linesize = 0; unsigned long long serial, serial2; int i, was_explicit_key, was_sha1, r; FILE *krl_spec; @@ -2103,8 +2111,8 @@ update_krl_from_file(struct passwd *pw, const char *file, int wild_ca, if (!quiet) printf("Revoking from %s\n", path); - while (read_keyfile_line(krl_spec, path, line, sizeof(line), - &lnum) == 0) { + while (getline(&line, &linesize, krl_spec) != -1) { + lnum++; was_explicit_key = was_sha1 = 0; cp = line + strspn(line, " \t"); /* Trim trailing space, comments and strip \n */ @@ -2204,6 +2212,7 @@ update_krl_from_file(struct passwd *pw, const char *file, int wild_ca, } if (strcmp(path, "-") != 0) fclose(krl_spec); + free(line); free(path); } @@ -2257,7 +2266,7 @@ do_gen_krl(struct passwd *pw, int updating, int argc, char **argv) fatal("Couldn't generate KRL"); if ((fd = open(identity_file, O_WRONLY|O_CREAT|O_TRUNC, 0644)) == -1) fatal("open %s: %s", identity_file, strerror(errno)); - if (atomicio(vwrite, fd, (void *)sshbuf_ptr(kbuf), sshbuf_len(kbuf)) != + if (atomicio(vwrite, fd, sshbuf_mutable_ptr(kbuf), sshbuf_len(kbuf)) != sshbuf_len(kbuf)) fatal("write %s: %s", identity_file, strerror(errno)); close(fd); @@ -2435,6 +2444,7 @@ main(int argc, char **argv) } if (strcasecmp(optarg, "PEM") == 0) { convert_format = FMT_PEM; + use_new_format = 0; break; } fatal("Unsupported conversion format \"%s\"", optarg); @@ -2442,7 +2452,7 @@ main(int argc, char **argv) cert_principals = optarg; break; case 'o': - use_new_format = 1; + /* no-op; new format is already the default */ break; case 'p': change_passphrase = 1; diff --git a/ssh-keyscan.c b/ssh-keyscan.c index db359911f..97ac67216 100644 --- a/ssh-keyscan.c +++ b/ssh-keyscan.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh-keyscan.c,v 1.119 2018/03/02 21:40:15 jmc Exp $ */ +/* $OpenBSD: ssh-keyscan.c,v 1.120 2018/06/06 18:29:18 markus Exp $ */ /* * Copyright 1995, 1996 by David Mazieres . * @@ -651,9 +651,9 @@ main(int argc, char **argv) { int debug_flag = 0, log_level = SYSLOG_LEVEL_INFO; int opt, fopt_count = 0, j; - char *tname, *cp, line[NI_MAXHOST]; + char *tname, *cp, *line = NULL; + size_t linesize = 0; FILE *fp; - u_long linenum; extern int optind; extern char *optarg; @@ -774,11 +774,8 @@ main(int argc, char **argv) else if ((fp = fopen(argv[j], "r")) == NULL) fatal("%s: %s: %s", __progname, argv[j], strerror(errno)); - linenum = 0; - while (read_keyfile_line(fp, - argv[j] == NULL ? "(stdin)" : argv[j], line, sizeof(line), - &linenum) != -1) { + while (getline(&line, &linesize, fp) != -1) { /* Chomp off trailing whitespace and comments */ if ((cp = strchr(line, '#')) == NULL) cp = line + strlen(line) - 1; @@ -803,6 +800,7 @@ main(int argc, char **argv) fclose(fp); } + free(line); while (optind < argc) do_host(argv[optind++]); diff --git a/ssh-keysign.c b/ssh-keysign.c index 78bb66b08..744ecb4f9 100644 --- a/ssh-keysign.c +++ b/ssh-keysign.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh-keysign.c,v 1.54 2018/02/23 15:58:38 markus Exp $ */ +/* $OpenBSD: ssh-keysign.c,v 1.55 2018/07/27 05:34:42 dtucker Exp $ */ /* * Copyright (c) 2002 Markus Friedl. All rights reserved. * @@ -62,11 +62,6 @@ struct ssh *active_state = NULL; /* XXX needed for linking */ extern char *__progname; -/* XXX readconf.c needs these */ -uid_t original_real_uid; - -extern char *__progname; - static int valid_request(struct passwd *pw, char *host, struct sshkey **ret, u_char *data, size_t datalen) @@ -201,8 +196,7 @@ main(int argc, char **argv) key_fd[i++] = open(_PATH_HOST_XMSS_KEY_FILE, O_RDONLY); key_fd[i++] = open(_PATH_HOST_RSA_KEY_FILE, O_RDONLY); - original_real_uid = getuid(); /* XXX readconf.c needs this */ - if ((pw = getpwuid(original_real_uid)) == NULL) + if ((pw = getpwuid(getuid())) == NULL) fatal("getpwuid failed"); pw = pwcopy(pw); diff --git a/ssh-pkcs11-client.c b/ssh-pkcs11-client.c index fc7582827..028b272cb 100644 --- a/ssh-pkcs11-client.c +++ b/ssh-pkcs11-client.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh-pkcs11-client.c,v 1.8 2018/02/05 05:37:46 tb Exp $ */ +/* $OpenBSD: ssh-pkcs11-client.c,v 1.10 2018/07/09 21:59:10 markus Exp $ */ /* * Copyright (c) 2010 Markus Friedl. All rights reserved. * @@ -34,13 +34,14 @@ #include "pathnames.h" #include "xmalloc.h" -#include "buffer.h" +#include "sshbuf.h" #include "log.h" #include "misc.h" -#include "key.h" +#include "sshkey.h" #include "authfd.h" #include "atomicio.h" #include "ssh-pkcs11.h" +#include "ssherr.h" /* borrows code from sftp-server and ssh-agent */ @@ -48,34 +49,37 @@ int fd = -1; pid_t pid = -1; static void -send_msg(Buffer *m) +send_msg(struct sshbuf *m) { u_char buf[4]; - int mlen = buffer_len(m); + size_t mlen = sshbuf_len(m); + int r; - put_u32(buf, mlen); + POKE_U32(buf, mlen); if (atomicio(vwrite, fd, buf, 4) != 4 || - atomicio(vwrite, fd, buffer_ptr(m), - buffer_len(m)) != buffer_len(m)) + atomicio(vwrite, fd, sshbuf_mutable_ptr(m), + sshbuf_len(m)) != sshbuf_len(m)) error("write to helper failed"); - buffer_consume(m, mlen); + if ((r = sshbuf_consume(m, mlen)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); } static int -recv_msg(Buffer *m) +recv_msg(struct sshbuf *m) { u_int l, len; - u_char buf[1024]; + u_char c, buf[1024]; + int r; if ((len = atomicio(read, fd, buf, 4)) != 4) { error("read from helper failed: %u", len); return (0); /* XXX */ } - len = get_u32(buf); + len = PEEK_U32(buf); if (len > 256 * 1024) fatal("response too long: %u", len); /* read len bytes into m */ - buffer_clear(m); + sshbuf_reset(m); while (len > 0) { l = len; if (l > sizeof(buf)) @@ -84,10 +88,13 @@ recv_msg(Buffer *m) error("response from helper failed."); return (0); /* XXX */ } - buffer_append(m, buf, l); + if ((r = sshbuf_put(m, buf, l)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); len -= l; } - return (buffer_get_char(m)); + if ((r = sshbuf_get_u8(m, &c)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + return c; } int @@ -109,34 +116,39 @@ pkcs11_rsa_private_encrypt(int flen, const u_char *from, u_char *to, RSA *rsa, { struct sshkey key; /* XXX */ u_char *blob, *signature = NULL; - u_int blen, slen = 0; - int ret = -1; - Buffer msg; + size_t blen, slen = 0; + int r, ret = -1; + struct sshbuf *msg; if (padding != RSA_PKCS1_PADDING) return (-1); key.type = KEY_RSA; key.rsa = rsa; - if (key_to_blob(&key, &blob, &blen) == 0) + if ((r = sshkey_to_blob(&key, &blob, &blen)) != 0) { + error("%s: sshkey_to_blob: %s", __func__, ssh_err(r)); return -1; - buffer_init(&msg); - buffer_put_char(&msg, SSH2_AGENTC_SIGN_REQUEST); - buffer_put_string(&msg, blob, blen); - buffer_put_string(&msg, from, flen); - buffer_put_int(&msg, 0); + } + if ((msg = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_u8(msg, SSH2_AGENTC_SIGN_REQUEST)) != 0 || + (r = sshbuf_put_string(msg, blob, blen)) != 0 || + (r = sshbuf_put_string(msg, from, flen)) != 0 || + (r = sshbuf_put_u32(msg, 0)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); free(blob); - send_msg(&msg); - buffer_clear(&msg); + send_msg(msg); + sshbuf_reset(msg); - if (recv_msg(&msg) == SSH2_AGENT_SIGN_RESPONSE) { - signature = buffer_get_string(&msg, &slen); - if (slen <= (u_int)RSA_size(rsa)) { + if (recv_msg(msg) == SSH2_AGENT_SIGN_RESPONSE) { + if ((r = sshbuf_get_string(msg, &signature, &slen)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (slen <= (size_t)RSA_size(rsa)) { memcpy(to, signature, slen); ret = slen; } free(signature); } - buffer_free(&msg); + sshbuf_free(msg); return (ret); } @@ -185,31 +197,39 @@ pkcs11_start_helper(void) } int -pkcs11_add_provider(char *name, char *pin, Key ***keysp) +pkcs11_add_provider(char *name, char *pin, struct sshkey ***keysp) { struct sshkey *k; - int i, nkeys; + int r; u_char *blob; - u_int blen; - Buffer msg; + size_t blen; + u_int nkeys, i; + struct sshbuf *msg; if (fd < 0 && pkcs11_start_helper() < 0) return (-1); - buffer_init(&msg); - buffer_put_char(&msg, SSH_AGENTC_ADD_SMARTCARD_KEY); - buffer_put_cstring(&msg, name); - buffer_put_cstring(&msg, pin); - send_msg(&msg); - buffer_clear(&msg); + if ((msg = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_u8(msg, SSH_AGENTC_ADD_SMARTCARD_KEY)) != 0 || + (r = sshbuf_put_cstring(msg, name)) != 0 || + (r = sshbuf_put_cstring(msg, pin)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + send_msg(msg); + sshbuf_reset(msg); - if (recv_msg(&msg) == SSH2_AGENT_IDENTITIES_ANSWER) { - nkeys = buffer_get_int(&msg); - *keysp = xcalloc(nkeys, sizeof(Key *)); + if (recv_msg(msg) == SSH2_AGENT_IDENTITIES_ANSWER) { + if ((r = sshbuf_get_u32(msg, &nkeys)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + *keysp = xcalloc(nkeys, sizeof(struct sshkey *)); for (i = 0; i < nkeys; i++) { - blob = buffer_get_string(&msg, &blen); - free(buffer_get_string(&msg, NULL)); - k = key_from_blob(blob, blen); + /* XXX clean up properly instead of fatal() */ + if ((r = sshbuf_get_string(msg, &blob, &blen)) != 0 || + (r = sshbuf_skip_string(msg)) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); + if ((r = sshkey_from_blob(blob, blen, &k)) != 0) + fatal("%s: bad key: %s", __func__, ssh_err(r)); wrap_key(k->rsa); (*keysp)[i] = k; free(blob); @@ -217,26 +237,28 @@ pkcs11_add_provider(char *name, char *pin, Key ***keysp) } else { nkeys = -1; } - buffer_free(&msg); + sshbuf_free(msg); return (nkeys); } int pkcs11_del_provider(char *name) { - int ret = -1; - Buffer msg; + int r, ret = -1; + struct sshbuf *msg; - buffer_init(&msg); - buffer_put_char(&msg, SSH_AGENTC_REMOVE_SMARTCARD_KEY); - buffer_put_cstring(&msg, name); - buffer_put_cstring(&msg, ""); - send_msg(&msg); - buffer_clear(&msg); + if ((msg = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if ((r = sshbuf_put_u8(msg, SSH_AGENTC_REMOVE_SMARTCARD_KEY)) != 0 || + (r = sshbuf_put_cstring(msg, name)) != 0 || + (r = sshbuf_put_cstring(msg, "")) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + send_msg(msg); + sshbuf_reset(msg); - if (recv_msg(&msg) == SSH_AGENT_SUCCESS) + if (recv_msg(msg) == SSH_AGENT_SUCCESS) ret = 0; - buffer_free(&msg); + sshbuf_free(msg); return (ret); } diff --git a/ssh-rsa.c b/ssh-rsa.c index 49e71c87f..1756315b9 100644 --- a/ssh-rsa.c +++ b/ssh-rsa.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh-rsa.c,v 1.66 2018/02/14 16:27:24 jsing Exp $ */ +/* $OpenBSD: ssh-rsa.c,v 1.67 2018/07/03 11:39:54 djm Exp $ */ /* * Copyright (c) 2000, 2003 Markus Friedl * @@ -51,11 +51,14 @@ rsa_hash_alg_ident(int hash_alg) return NULL; } +/* + * Returns the hash algorithm ID for a given algorithm identifier as used + * inside the signature blob, + */ static int -rsa_hash_alg_from_ident(const char *ident) +rsa_hash_id_from_ident(const char *ident) { - if (strcmp(ident, "ssh-rsa") == 0 || - strcmp(ident, "ssh-rsa-cert-v01@openssh.com") == 0) + if (strcmp(ident, "ssh-rsa") == 0) return SSH_DIGEST_SHA1; if (strcmp(ident, "rsa-sha2-256") == 0) return SSH_DIGEST_SHA256; @@ -64,6 +67,27 @@ rsa_hash_alg_from_ident(const char *ident) return -1; } +/* + * Return the hash algorithm ID for the specified key name. This includes + * all the cases of rsa_hash_id_from_ident() but also the certificate key + * types. + */ +static int +rsa_hash_id_from_keyname(const char *alg) +{ + int r; + + if ((r = rsa_hash_id_from_ident(alg)) != -1) + return r; + if (strcmp(alg, "ssh-rsa-cert-v01@openssh.com") == 0) + return SSH_DIGEST_SHA1; + if (strcmp(alg, "rsa-sha2-256-cert-v01@openssh.com") == 0) + return SSH_DIGEST_SHA256; + if (strcmp(alg, "rsa-sha2-512-cert-v01@openssh.com") == 0) + return SSH_DIGEST_SHA512; + return -1; +} + static int rsa_hash_alg_nid(int type) { @@ -135,7 +159,7 @@ ssh_rsa_sign(const struct sshkey *key, u_char **sigp, size_t *lenp, if (alg_ident == NULL || strlen(alg_ident) == 0) hash_alg = SSH_DIGEST_SHA1; else - hash_alg = rsa_hash_alg_from_ident(alg_ident); + hash_alg = rsa_hash_id_from_keyname(alg_ident); if (key == NULL || key->rsa == NULL || hash_alg == -1 || sshkey_type_plain(key->type) != KEY_RSA) return SSH_ERR_INVALID_ARGUMENT; @@ -202,7 +226,7 @@ ssh_rsa_verify(const struct sshkey *key, const char *alg) { char *sigtype = NULL; - int hash_alg, ret = SSH_ERR_INTERNAL_ERROR; + int hash_alg, want_alg, ret = SSH_ERR_INTERNAL_ERROR; size_t len = 0, diff, modlen, dlen; struct sshbuf *b = NULL; u_char digest[SSH_DIGEST_MAX_LENGTH], *osigblob, *sigblob = NULL; @@ -220,18 +244,24 @@ ssh_rsa_verify(const struct sshkey *key, ret = SSH_ERR_INVALID_FORMAT; goto out; } - /* XXX djm: need cert types that reliably yield SHA-2 signatures */ - if (alg != NULL && strcmp(alg, sigtype) != 0 && - strcmp(alg, "ssh-rsa-cert-v01@openssh.com") != 0) { - error("%s: RSA signature type mismatch: " - "expected %s received %s", __func__, alg, sigtype); - ret = SSH_ERR_SIGNATURE_INVALID; - goto out; - } - if ((hash_alg = rsa_hash_alg_from_ident(sigtype)) == -1) { + if ((hash_alg = rsa_hash_id_from_ident(sigtype)) == -1) { ret = SSH_ERR_KEY_TYPE_MISMATCH; goto out; } + /* + * Allow ssh-rsa-cert-v01 certs to generate SHA2 signatures for + * legacy reasons, but otherwise the signature type should match. + */ + if (alg != NULL && strcmp(alg, "ssh-rsa-cert-v01@openssh.com") != 0) { + if ((want_alg = rsa_hash_id_from_keyname(alg)) == -1) { + ret = SSH_ERR_INVALID_ARGUMENT; + goto out; + } + if (hash_alg != want_alg) { + ret = SSH_ERR_SIGNATURE_INVALID; + goto out; + } + } if (sshbuf_get_string(b, &sigblob, &len) != 0) { ret = SSH_ERR_INVALID_FORMAT; goto out; diff --git a/ssh.1 b/ssh.1 index b4078525b..b20908a5e 100644 --- a/ssh.1 +++ b/ssh.1 @@ -33,8 +33,8 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $OpenBSD: ssh.1,v 1.391 2018/02/23 07:38:09 jmc Exp $ -.Dd $Mdocdate: February 23 2018 $ +.\" $OpenBSD: ssh.1,v 1.396 2018/07/19 10:28:47 dtucker Exp $ +.Dd $Mdocdate: July 19 2018 $ .Dt SSH 1 .Os .Sh NAME @@ -499,7 +499,6 @@ For full details of the options listed below, and their possible values, see .It IdentitiesOnly .It IdentityAgent .It IdentityFile -.It Include .It IPQoS .It KbdInteractiveAuthentication .It KbdInteractiveDevices @@ -528,6 +527,7 @@ For full details of the options listed below, and their possible values, see .It SendEnv .It ServerAliveInterval .It ServerAliveCountMax +.It SetEnv .It StreamLocalBindMask .It StreamLocalBindUnlink .It StrictHostKeyChecking @@ -535,7 +535,6 @@ For full details of the options listed below, and their possible values, see .It Tunnel .It TunnelDevice .It UpdateHostKeys -.It UsePrivilegedPort .It User .It UserKnownHostsFile .It VerifyHostKeyDNS @@ -742,10 +741,15 @@ and .Cm TunnelDevice directives in .Xr ssh_config 5 . +.Pp If the .Cm Tunnel -directive is unset, it is set to the default tunnel mode, which is +directive is unset, it will be set to the default tunnel mode, which is .Dq point-to-point . +If a different +.Cm Tunnel +forwarding mode it desired, then it should be specified before +.Fl w . .Pp .It Fl X Enables X11 forwarding. diff --git a/ssh.c b/ssh.c index 92c63d097..7b977d771 100644 --- a/ssh.c +++ b/ssh.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh.c,v 1.475 2018/02/23 15:58:38 markus Exp $ */ +/* $OpenBSD: ssh.c,v 1.490 2018/07/27 05:34:42 dtucker Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -87,9 +87,9 @@ #include "cipher.h" #include "digest.h" #include "packet.h" -#include "buffer.h" +#include "sshbuf.h" #include "channels.h" -#include "key.h" +#include "sshkey.h" #include "authfd.h" #include "authfile.h" #include "pathnames.h" @@ -104,7 +104,6 @@ #include "sshpty.h" #include "match.h" #include "msg.h" -#include "uidswap.h" #include "version.h" #include "ssherr.h" #include "myproposal.h" @@ -178,12 +177,8 @@ struct sockaddr_storage hostaddr; /* Private host keys. */ Sensitive sensitive_data; -/* Original real UID. */ -uid_t original_real_uid; -uid_t original_effective_uid; - /* command to be executed */ -Buffer command; +struct sshbuf *command; /* Should we execute a command or invoke a subsystem? */ int subsystem_flag = 0; @@ -224,7 +219,7 @@ tilde_expand_paths(char **paths, u_int num_paths) char *cp; for (i = 0; i < num_paths; i++) { - cp = tilde_expand_filename(paths[i], original_real_uid); + cp = tilde_expand_filename(paths[i], getuid()); free(paths[i]); paths[i] = cp; } @@ -503,6 +498,30 @@ resolve_canonicalize(char **hostp, int port) return NULL; } +/* + * Check the result of hostkey loading, ignoring some errors and + * fatal()ing for others. + */ +static void +check_load(int r, const char *path, const char *message) +{ + switch (r) { + case 0: + break; + case SSH_ERR_INTERNAL_ERROR: + case SSH_ERR_ALLOC_FAIL: + fatal("load %s \"%s\": %s", message, path, ssh_err(r)); + case SSH_ERR_SYSTEM_ERROR: + /* Ignore missing files */ + if (errno == ENOENT) + break; + /* FALLTHROUGH */ + default: + error("load %s \"%s\": %s", message, path, ssh_err(r)); + break; + } +} + /* * Read per-user configuration file. Ignore the system wide config * file if the user specifies a config file on the command line. @@ -597,35 +616,10 @@ main(int ac, char **av) */ closefrom(STDERR_FILENO + 1); - /* - * Save the original real uid. It will be needed later (uid-swapping - * may clobber the real uid). - */ - original_real_uid = getuid(); - original_effective_uid = geteuid(); - - /* - * Use uid-swapping to give up root privileges for the duration of - * option processing. We will re-instantiate the rights when we are - * ready to create the privileged port, and will permanently drop - * them when the port has been created (actually, when the connection - * has been made, as we may need to create the port several times). - */ - PRIV_END; - -#ifdef HAVE_SETRLIMIT - /* If we are installed setuid root be careful to not drop core. */ - if (original_real_uid != original_effective_uid) { - struct rlimit rlim; - rlim.rlim_cur = rlim.rlim_max = 0; - if (setrlimit(RLIMIT_CORE, &rlim) < 0) - fatal("setrlimit failed: %.100s", strerror(errno)); - } -#endif /* Get user data. */ - pw = getpwuid(original_real_uid); + pw = getpwuid(getuid()); if (!pw) { - logit("No user exists for uid %lu", (u_long)original_real_uid); + logit("No user exists for uid %lu", (u_long)getuid()); exit(255); } /* Take a copy of the returned structure. */ @@ -728,7 +722,6 @@ main(int ac, char **av) fatal("Invalid multiplex command."); break; case 'P': /* deprecated */ - options.use_privileged_port = 0; break; case 'Q': cp = NULL; @@ -769,7 +762,7 @@ main(int ac, char **av) options.gss_deleg_creds = 1; break; case 'i': - p = tilde_expand_filename(optarg, original_real_uid); + p = tilde_expand_filename(optarg, getuid()); if (stat(p, &st) < 0) fprintf(stderr, "Warning: Identity file %s " "not accessible: %s.\n", p, @@ -1042,7 +1035,8 @@ main(int ac, char **av) #endif /* Initialize the command to execute on remote host. */ - buffer_init(&command); + if ((command = sshbuf_new()) == NULL) + fatal("sshbuf_new failed"); /* * Save the command to execute on the remote host in a buffer. There @@ -1059,9 +1053,10 @@ main(int ac, char **av) } else { /* A command has been specified. Store it into the buffer. */ for (i = 0; i < ac; i++) { - if (i) - buffer_append(&command, " ", 1); - buffer_append(&command, av[i], strlen(av[i])); + if ((r = sshbuf_putf(command, "%s%s", + i ? " " : "", av[i])) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); } } @@ -1171,6 +1166,14 @@ main(int ac, char **av) */ if (options.jump_host != NULL) { char port_s[8]; + const char *sshbin = argv0; + + /* + * Try to use SSH indicated by argv[0], but fall back to + * "ssh" if it appears unavailable. + */ + if (strchr(argv0, '/') != NULL && access(argv0, X_OK) != 0) + sshbin = "ssh"; /* Consistency check */ if (options.proxy_command != NULL) @@ -1179,7 +1182,8 @@ main(int ac, char **av) options.proxy_use_fdpass = 0; snprintf(port_s, sizeof(port_s), "%d", options.jump_port); xasprintf(&options.proxy_command, - "ssh%s%s%s%s%s%s%s%s%s%.*s -W '[%%h]:%%p' %s", + "%s%s%s%s%s%s%s%s%s%s%.*s -W '[%%h]:%%p' %s", + sshbin, /* Optional "-l user" argument if jump_user set */ options.jump_user == NULL ? "" : " -l ", options.jump_user == NULL ? "" : options.jump_user, @@ -1220,16 +1224,12 @@ main(int ac, char **av) } if (options.connection_attempts <= 0) fatal("Invalid number of ConnectionAttempts"); -#ifndef HAVE_CYGWIN - if (original_effective_uid != 0) - options.use_privileged_port = 0; -#endif - if (buffer_len(&command) != 0 && options.remote_command != NULL) + if (sshbuf_len(command) != 0 && options.remote_command != NULL) fatal("Cannot execute command-line and remote command."); /* Cannot fork to background if no command. */ - if (fork_after_authentication_flag && buffer_len(&command) == 0 && + if (fork_after_authentication_flag && sshbuf_len(command) == 0 && options.remote_command == NULL && !no_shell_flag) fatal("Cannot fork into background without a command " "to execute."); @@ -1242,7 +1242,7 @@ main(int ac, char **av) tty_flag = 1; /* Allocate a tty by default if no command specified. */ - if (buffer_len(&command) == 0 && options.remote_command == NULL) + if (sshbuf_len(command) == 0 && options.remote_command == NULL) tty_flag = options.request_tty != REQUEST_TTY_NO; /* Force no tty */ @@ -1269,7 +1269,8 @@ main(int ac, char **av) strlcpy(shorthost, thishost, sizeof(shorthost)); shorthost[strcspn(thishost, ".")] = '\0'; snprintf(portstr, sizeof(portstr), "%d", options.port); - snprintf(uidstr, sizeof(uidstr), "%d", pw->pw_uid); + snprintf(uidstr, sizeof(uidstr), "%llu", + (unsigned long long)pw->pw_uid); if ((md = ssh_digest_start(SSH_DIGEST_SHA1)) == NULL || ssh_digest_update(md, thishost, strlen(thishost)) < 0 || @@ -1294,6 +1295,7 @@ main(int ac, char **av) "L", shorthost, "d", pw->pw_dir, "h", host, + "i", uidstr, "l", thishost, "n", host_arg, "p", portstr, @@ -1302,18 +1304,19 @@ main(int ac, char **av) (char *)NULL); debug3("expanded RemoteCommand: %s", options.remote_command); free(cp); - buffer_append(&command, options.remote_command, - strlen(options.remote_command)); + if ((r = sshbuf_put(command, options.remote_command, + strlen(options.remote_command))) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); } if (options.control_path != NULL) { - cp = tilde_expand_filename(options.control_path, - original_real_uid); + cp = tilde_expand_filename(options.control_path, getuid()); free(options.control_path); options.control_path = percent_expand(cp, "C", conn_hash_hex, "L", shorthost, "h", host, + "i", uidstr, "l", thishost, "n", host_arg, "p", portstr, @@ -1323,7 +1326,6 @@ main(int ac, char **av) (char *)NULL); free(cp); } - free(conn_hash_hex); if (config_test) { dump_client_config(&options, host); @@ -1357,8 +1359,7 @@ main(int ac, char **av) /* Open a connection to the remote host. */ if (ssh_connect(ssh, host, addrs, &hostaddr, options.port, options.address_family, options.connection_attempts, - &timeout_ms, options.tcp_keep_alive, - options.use_privileged_port) != 0) + &timeout_ms, options.tcp_keep_alive) != 0) exit(255); if (addrs != NULL) @@ -1373,100 +1374,45 @@ main(int ac, char **av) debug3("timeout: %d ms remain after connect", timeout_ms); /* - * If we successfully made the connection, load the host private key - * in case we will need it later for combined rsa-rhosts - * authentication. This must be done before releasing extra - * privileges, because the file is only readable by root. - * If we cannot access the private keys, load the public keys - * instead and try to execute the ssh-keysign helper instead. + * If we successfully made the connection and we have hostbased auth + * enabled, load the public keys so we can later use the ssh-keysign + * helper to sign challenges. */ sensitive_data.nkeys = 0; sensitive_data.keys = NULL; - sensitive_data.external_keysign = 0; if (options.hostbased_authentication) { - sensitive_data.nkeys = 11; + sensitive_data.nkeys = 10; sensitive_data.keys = xcalloc(sensitive_data.nkeys, - sizeof(struct sshkey)); /* XXX */ - for (i = 0; i < sensitive_data.nkeys; i++) - sensitive_data.keys[i] = NULL; + sizeof(struct sshkey)); - PRIV_START; -#ifdef OPENSSL_HAS_ECC - sensitive_data.keys[1] = key_load_private_cert(KEY_ECDSA, - _PATH_HOST_ECDSA_KEY_FILE, "", NULL); -#endif - sensitive_data.keys[2] = key_load_private_cert(KEY_ED25519, - _PATH_HOST_ED25519_KEY_FILE, "", NULL); - sensitive_data.keys[3] = key_load_private_cert(KEY_RSA, - _PATH_HOST_RSA_KEY_FILE, "", NULL); - sensitive_data.keys[4] = key_load_private_cert(KEY_DSA, - _PATH_HOST_DSA_KEY_FILE, "", NULL); -#ifdef OPENSSL_HAS_ECC - sensitive_data.keys[5] = key_load_private_type(KEY_ECDSA, - _PATH_HOST_ECDSA_KEY_FILE, "", NULL, NULL); -#endif - sensitive_data.keys[6] = key_load_private_type(KEY_ED25519, - _PATH_HOST_ED25519_KEY_FILE, "", NULL, NULL); - sensitive_data.keys[7] = key_load_private_type(KEY_RSA, - _PATH_HOST_RSA_KEY_FILE, "", NULL, NULL); - sensitive_data.keys[8] = key_load_private_type(KEY_DSA, - _PATH_HOST_DSA_KEY_FILE, "", NULL, NULL); - sensitive_data.keys[9] = key_load_private_cert(KEY_XMSS, - _PATH_HOST_XMSS_KEY_FILE, "", NULL); - sensitive_data.keys[10] = key_load_private_type(KEY_XMSS, - _PATH_HOST_XMSS_KEY_FILE, "", NULL, NULL); - PRIV_END; + /* XXX check errors? */ +#define L_PUBKEY(p,o) do { \ + if ((o) >= sensitive_data.nkeys) \ + fatal("%s pubkey out of array bounds", __func__); \ + check_load(sshkey_load_public(p, &(sensitive_data.keys[o]), NULL), \ + p, "pubkey"); \ +} while (0) +#define L_CERT(p,o) do { \ + if ((o) >= sensitive_data.nkeys) \ + fatal("%s cert out of array bounds", __func__); \ + check_load(sshkey_load_cert(p, &(sensitive_data.keys[o])), p, "cert"); \ +} while (0) - if (options.hostbased_authentication == 1 && - sensitive_data.keys[0] == NULL && - sensitive_data.keys[5] == NULL && - sensitive_data.keys[6] == NULL && - sensitive_data.keys[7] == NULL && - sensitive_data.keys[8] == NULL && - sensitive_data.keys[9] == NULL) { -#ifdef OPENSSL_HAS_ECC - sensitive_data.keys[1] = key_load_cert( - _PATH_HOST_ECDSA_KEY_FILE); -#endif - sensitive_data.keys[2] = key_load_cert( - _PATH_HOST_ED25519_KEY_FILE); - sensitive_data.keys[3] = key_load_cert( - _PATH_HOST_RSA_KEY_FILE); - sensitive_data.keys[4] = key_load_cert( - _PATH_HOST_DSA_KEY_FILE); -#ifdef OPENSSL_HAS_ECC - sensitive_data.keys[5] = key_load_public( - _PATH_HOST_ECDSA_KEY_FILE, NULL); -#endif - sensitive_data.keys[6] = key_load_public( - _PATH_HOST_ED25519_KEY_FILE, NULL); - sensitive_data.keys[7] = key_load_public( - _PATH_HOST_RSA_KEY_FILE, NULL); - sensitive_data.keys[8] = key_load_public( - _PATH_HOST_DSA_KEY_FILE, NULL); - sensitive_data.keys[9] = key_load_cert( - _PATH_HOST_XMSS_KEY_FILE); - sensitive_data.keys[10] = key_load_public( - _PATH_HOST_XMSS_KEY_FILE, NULL); - sensitive_data.external_keysign = 1; + if (options.hostbased_authentication == 1) { + L_CERT(_PATH_HOST_ECDSA_KEY_FILE, 0); + L_CERT(_PATH_HOST_ED25519_KEY_FILE, 1); + L_CERT(_PATH_HOST_RSA_KEY_FILE, 2); + L_CERT(_PATH_HOST_DSA_KEY_FILE, 3); + L_PUBKEY(_PATH_HOST_ECDSA_KEY_FILE, 4); + L_PUBKEY(_PATH_HOST_ED25519_KEY_FILE, 5); + L_PUBKEY(_PATH_HOST_RSA_KEY_FILE, 6); + L_PUBKEY(_PATH_HOST_DSA_KEY_FILE, 7); + L_CERT(_PATH_HOST_XMSS_KEY_FILE, 8); + L_PUBKEY(_PATH_HOST_XMSS_KEY_FILE, 9); } } - /* - * Get rid of any extra privileges that we may have. We will no - * longer need them. Also, extra privileges could make it very hard - * to read identity files and other non-world-readable files from the - * user's home directory if it happens to be on a NFS volume where - * root is mapped to nobody. - */ - if (original_effective_uid == 0) { - PRIV_START; - permanently_set_uid(pw); - } - /* - * Now that we are back to our own permissions, create ~/.ssh - * directory if it doesn't already exist. - */ + /* Create ~/.ssh * directory if it doesn't already exist. */ if (config == NULL) { r = snprintf(buf, sizeof buf, "%s%s%s", pw->pw_dir, strcmp(pw->pw_dir, "/") ? "/" : "", _PATH_SSH_USER_DIR); @@ -1485,17 +1431,22 @@ main(int ac, char **av) /* load options.identity_files */ load_public_identity_files(pw); - /* optionally set the SSH_AUTHSOCKET_ENV_NAME varibale */ + /* optionally set the SSH_AUTHSOCKET_ENV_NAME variable */ if (options.identity_agent && strcmp(options.identity_agent, SSH_AUTHSOCKET_ENV_NAME) != 0) { if (strcmp(options.identity_agent, "none") == 0) { unsetenv(SSH_AUTHSOCKET_ENV_NAME); } else { p = tilde_expand_filename(options.identity_agent, - original_real_uid); - cp = percent_expand(p, "d", pw->pw_dir, - "u", pw->pw_name, "l", thishost, "h", host, - "r", options.user, (char *)NULL); + getuid()); + cp = percent_expand(p, + "d", pw->pw_dir, + "h", host, + "i", uidstr, + "l", thishost, + "r", options.user, + "u", pw->pw_name, + (char *)NULL); setenv(SSH_AUTHSOCKET_ENV_NAME, cp, 1); free(cp); free(p); @@ -1527,7 +1478,7 @@ main(int ac, char **av) if (sensitive_data.keys[i] != NULL) { /* Destroys contents safely */ debug3("clear hostkey %d", i); - key_free(sensitive_data.keys[i]); + sshkey_free(sensitive_data.keys[i]); sensitive_data.keys[i] = NULL; } } @@ -1537,7 +1488,7 @@ main(int ac, char **av) free(options.identity_files[i]); options.identity_files[i] = NULL; if (options.identity_keys[i]) { - key_free(options.identity_keys[i]); + sshkey_free(options.identity_keys[i]); options.identity_keys[i] = NULL; } } @@ -1647,10 +1598,10 @@ ssh_confirm_remote_forward(struct ssh *ssh, int type, u_int32_t seq, void *ctxt) logit("Allocated port %u for remote forward to %s:%d", rfwd->allocated_port, rfwd->connect_host, rfwd->connect_port); - channel_update_permitted_opens(ssh, + channel_update_permission(ssh, rfwd->handle, rfwd->allocated_port); } else { - channel_update_permitted_opens(ssh, rfwd->handle, -1); + channel_update_permission(ssh, rfwd->handle, -1); } } @@ -1839,7 +1790,7 @@ ssh_session2_setup(struct ssh *ssh, int id, int success, void *arg) options.ip_qos_interactive, options.ip_qos_bulk); client_session2_setup(ssh, id, tty_flag, subsystem_flag, getenv("TERM"), - NULL, fileno(stdin), &command, environ); + NULL, fileno(stdin), command, environ); } /* open new channel for a session */ @@ -1909,6 +1860,7 @@ ssh_session2(struct ssh *ssh, struct passwd *pw) "L", shorthost, "d", pw->pw_dir, "h", host, + "i", uidstr, "l", thishost, "n", host_arg, "p", portstr, @@ -2020,8 +1972,10 @@ load_public_identity_files(struct passwd *pw) u_int n_ids, n_certs; char *identity_files[SSH_MAX_IDENTITY_FILES]; struct sshkey *identity_keys[SSH_MAX_IDENTITY_FILES]; + int identity_file_userprovided[SSH_MAX_IDENTITY_FILES]; char *certificate_files[SSH_MAX_CERTIFICATE_FILES]; struct sshkey *certificates[SSH_MAX_CERTIFICATE_FILES]; + int certificate_file_userprovided[SSH_MAX_CERTIFICATE_FILES]; #ifdef ENABLE_PKCS11 struct sshkey **keys; int nkeys; @@ -2030,8 +1984,12 @@ load_public_identity_files(struct passwd *pw) n_ids = n_certs = 0; memset(identity_files, 0, sizeof(identity_files)); memset(identity_keys, 0, sizeof(identity_keys)); + memset(identity_file_userprovided, 0, + sizeof(identity_file_userprovided)); memset(certificate_files, 0, sizeof(certificate_files)); memset(certificates, 0, sizeof(certificates)); + memset(certificate_file_userprovided, 0, + sizeof(certificate_file_userprovided)); #ifdef ENABLE_PKCS11 if (options.pkcs11_provider != NULL && @@ -2041,7 +1999,7 @@ load_public_identity_files(struct passwd *pw) &keys)) > 0) { for (i = 0; i < nkeys; i++) { if (n_ids >= SSH_MAX_IDENTITY_FILES) { - key_free(keys[i]); + sshkey_free(keys[i]); continue; } identity_keys[n_ids] = keys[i]; @@ -2052,8 +2010,6 @@ load_public_identity_files(struct passwd *pw) free(keys); } #endif /* ENABLE_PKCS11 */ - if ((pw = getpwuid(original_real_uid)) == NULL) - fatal("load_public_identity_files: getpwuid failed"); for (i = 0; i < options.num_identity_files; i++) { if (n_ids >= SSH_MAX_IDENTITY_FILES || strcasecmp(options.identity_files[i], "none") == 0) { @@ -2061,19 +2017,20 @@ load_public_identity_files(struct passwd *pw) options.identity_files[i] = NULL; continue; } - cp = tilde_expand_filename(options.identity_files[i], - original_real_uid); + cp = tilde_expand_filename(options.identity_files[i], getuid()); filename = percent_expand(cp, "d", pw->pw_dir, "u", pw->pw_name, "l", thishost, "h", host, "r", options.user, (char *)NULL); free(cp); - public = key_load_public(filename, NULL); + check_load(sshkey_load_public(filename, &public, NULL), + filename, "pubkey"); debug("identity file %s type %d", filename, public ? public->type : -1); free(options.identity_files[i]); identity_files[n_ids] = filename; identity_keys[n_ids] = public; - + identity_file_userprovided[n_ids] = + options.identity_file_userprovided[i]; if (++n_ids >= SSH_MAX_IDENTITY_FILES) continue; @@ -2084,23 +2041,26 @@ load_public_identity_files(struct passwd *pw) if (options.num_certificate_files != 0) continue; xasprintf(&cp, "%s-cert", filename); - public = key_load_public(cp, NULL); + check_load(sshkey_load_public(cp, &public, NULL), + filename, "pubkey"); debug("identity file %s type %d", cp, public ? public->type : -1); if (public == NULL) { free(cp); continue; } - if (!key_is_cert(public)) { + if (!sshkey_is_cert(public)) { debug("%s: key %s type %s is not a certificate", - __func__, cp, key_type(public)); - key_free(public); + __func__, cp, sshkey_type(public)); + sshkey_free(public); free(cp); continue; } /* NB. leave filename pointing to private key */ identity_files[n_ids] = xstrdup(filename); identity_keys[n_ids] = public; + identity_file_userprovided[n_ids] = + options.identity_file_userprovided[i]; n_ids++; } @@ -2108,13 +2068,19 @@ load_public_identity_files(struct passwd *pw) fatal("%s: too many certificates", __func__); for (i = 0; i < options.num_certificate_files; i++) { cp = tilde_expand_filename(options.certificate_files[i], - original_real_uid); - filename = percent_expand(cp, "d", pw->pw_dir, - "u", pw->pw_name, "l", thishost, "h", host, - "r", options.user, (char *)NULL); + getuid()); + filename = percent_expand(cp, + "d", pw->pw_dir, + "h", host, + "i", uidstr, + "l", thishost, + "r", options.user, + "u", pw->pw_name, + (char *)NULL); free(cp); - public = key_load_public(filename, NULL); + check_load(sshkey_load_public(filename, &public, NULL), + filename, "certificate"); debug("certificate file %s type %d", filename, public ? public->type : -1); free(options.certificate_files[i]); @@ -2123,26 +2089,33 @@ load_public_identity_files(struct passwd *pw) free(filename); continue; } - if (!key_is_cert(public)) { + if (!sshkey_is_cert(public)) { debug("%s: key %s type %s is not a certificate", - __func__, filename, key_type(public)); - key_free(public); + __func__, filename, sshkey_type(public)); + sshkey_free(public); free(filename); continue; } certificate_files[n_certs] = filename; certificates[n_certs] = public; + certificate_file_userprovided[n_certs] = + options.certificate_file_userprovided[i]; ++n_certs; } options.num_identity_files = n_ids; memcpy(options.identity_files, identity_files, sizeof(identity_files)); memcpy(options.identity_keys, identity_keys, sizeof(identity_keys)); + memcpy(options.identity_file_userprovided, + identity_file_userprovided, sizeof(identity_file_userprovided)); options.num_certificate_files = n_certs; memcpy(options.certificate_files, certificate_files, sizeof(certificate_files)); memcpy(options.certificates, certificates, sizeof(certificates)); + memcpy(options.certificate_file_userprovided, + certificate_file_userprovided, + sizeof(certificate_file_userprovided)); } static void diff --git a/ssh.h b/ssh.h index 12d800922..5abfd7a68 100644 --- a/ssh.h +++ b/ssh.h @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh.h,v 1.87 2017/05/07 23:15:59 djm Exp $ */ +/* $OpenBSD: ssh.h,v 1.88 2018/06/06 18:29:18 markus Exp $ */ /* * Author: Tatu Ylonen @@ -30,13 +30,6 @@ */ #define SSH_MAX_IDENTITY_FILES 100 -/* - * Maximum length of lines in authorized_keys file. - * Current value permits 16kbit RSA keys and 8kbit DSA keys, with - * some room for options and comments. - */ -#define SSH_MAX_PUBKEY_BYTES 16384 - /* * Major protocol version. Different version indicates major incompatibility * that prevents communication. diff --git a/ssh_api.h b/ssh_api.h index 642acd5b2..584f896a7 100644 --- a/ssh_api.h +++ b/ssh_api.h @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh_api.h,v 1.1 2015/01/19 20:30:23 markus Exp $ */ +/* $OpenBSD: ssh_api.h,v 1.2 2018/04/10 00:10:49 djm Exp $ */ /* * Copyright (c) 2012 Markus Friedl. All rights reserved. * @@ -81,7 +81,7 @@ int ssh_set_verify_host_key_callback(struct ssh *ssh, * ssh_packet_next() sets typep if there is no new packet available. * in this case the caller must fill the input byte-stream by passing * the data received over network to ssh_input_append(). - * additinally, the caller needs to send the resulting output + * additionally, the caller needs to send the resulting output * byte-stream back over the network. otherwise the key exchange * would not proceed. the output byte-stream is accessed through * ssh_output_ptr(). diff --git a/ssh_config.5 b/ssh_config.5 index 71705cabd..f499396a3 100644 --- a/ssh_config.5 +++ b/ssh_config.5 @@ -33,8 +33,8 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $OpenBSD: ssh_config.5,v 1.268 2018/02/23 07:38:09 jmc Exp $ -.Dd $Mdocdate: February 23 2018 $ +.\" $OpenBSD: ssh_config.5,v 1.281 2018/07/23 19:02:49 kn Exp $ +.Dd $Mdocdate: July 23 2018 $ .Dt SSH_CONFIG 5 .Os .Sh NAME @@ -258,17 +258,9 @@ or Use the specified address on the local machine as the source address of the connection. Only useful on systems with more than one address. -Note that this option does not work if -.Cm UsePrivilegedPort -is set to -.Cm yes . .It Cm BindInterface Use the address of the specified interface on the local machine as the source address of the connection. -Note that this option does not work if -.Cm UsePrivilegedPort -is set to -.Cm yes . .It Cm CanonicalDomains When .Cm CanonicalizeHostname @@ -425,8 +417,7 @@ The default is: .Bd -literal -offset indent chacha20-poly1305@openssh.com, aes128-ctr,aes192-ctr,aes256-ctr, -aes128-gcm@openssh.com,aes256-gcm@openssh.com, -aes128-cbc,aes192-cbc,aes256-cbc +aes128-gcm@openssh.com,aes256-gcm@openssh.com .Ed .Pp The list of available ciphers may also be obtained using @@ -758,7 +749,7 @@ or (the default). .It Cm HostbasedKeyTypes Specifies the key types that will be used for hostbased authentication -as a comma-separated pattern list. +as a comma-separated list of patterns. Alternately if the specified value begins with a .Sq + character, then the specified key types will be appended to the default set @@ -773,9 +764,10 @@ ecdsa-sha2-nistp256-cert-v01@openssh.com, ecdsa-sha2-nistp384-cert-v01@openssh.com, ecdsa-sha2-nistp521-cert-v01@openssh.com, ssh-ed25519-cert-v01@openssh.com, +rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com, ssh-rsa-cert-v01@openssh.com, ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, -ssh-ed25519,ssh-rsa +ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa .Ed .Pp The @@ -800,9 +792,10 @@ ecdsa-sha2-nistp256-cert-v01@openssh.com, ecdsa-sha2-nistp384-cert-v01@openssh.com, ecdsa-sha2-nistp521-cert-v01@openssh.com, ssh-ed25519-cert-v01@openssh.com, +rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com, ssh-rsa-cert-v01@openssh.com, ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, -ssh-ed25519,ssh-rsa +ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa .Ed .Pp If hostkeys are known for the destination host then this default is modified @@ -933,7 +926,7 @@ to unknown options that appear before it. .It Cm Include Include the specified configuration file(s). Multiple pathnames may be specified and each pathname may contain -.Xr glob 3 +.Xr glob 7 wildcards and, for user configurations, shell-like .Sq ~ references to user home directories. @@ -984,9 +977,11 @@ If one argument is specified, it is used as the packet class unconditionally. If two values are specified, the first is automatically selected for interactive sessions and the second for non-interactive sessions. The default is -.Cm lowdelay +.Cm af21 +(Low-Latency Data) for interactive sessions and -.Cm throughput +.Cm cs1 +(Lower Effort) for non-interactive sessions. .It Cm KbdInteractiveAuthentication Specifies whether to use keyboard-interactive authentication. @@ -1002,10 +997,9 @@ The default is to use the server specified list. The methods available vary depending on what the server supports. For an OpenSSH server, it may be zero or more of: -.Cm bsdauth , -.Cm pam , +.Cm bsdauth and -.Cm skey . +.Cm pam . .It Cm KexAlgorithms Specifies the available KEX (Key Exchange) algorithms. Multiple algorithms must be comma-separated. @@ -1239,7 +1233,7 @@ The default is .Cm no . .It Cm PubkeyAcceptedKeyTypes Specifies the key types that will be used for public key authentication -as a comma-separated pattern list. +as a comma-separated list of patterns. Alternately if the specified value begins with a .Sq + character, then the key types after it will be appended to the default @@ -1254,9 +1248,10 @@ ecdsa-sha2-nistp256-cert-v01@openssh.com, ecdsa-sha2-nistp384-cert-v01@openssh.com, ecdsa-sha2-nistp521-cert-v01@openssh.com, ssh-ed25519-cert-v01@openssh.com, +rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com, ssh-rsa-cert-v01@openssh.com, ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, -ssh-ed25519,ssh-rsa +ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa .Ed .Pp The list of available key types may also be obtained using @@ -1307,7 +1302,7 @@ section. .It Cm RemoteForward Specifies that a TCP port on the remote machine be forwarded over the secure channel. -The remote port may either be fowarded to a specified host and port +The remote port may either be forwarded to a specified host and port from the local machine, or may act as a SOCKS 4/5 proxy that allows a remote client to connect to arbitrary destinations from the local machine. The first argument must be @@ -1393,11 +1388,16 @@ Multiple environment variables may be separated by whitespace or spread across multiple .Cm SendEnv directives. -The default is not to send any environment variables. .Pp See .Sx PATTERNS for more information on patterns. +.Pp +It is possible to clear previously set +.Cm SendEnv +variable names by prefixing patterns with +.Pa - . +The default is not to send any environment variables. .It Cm ServerAliveCountMax Sets the number of server alive messages (see below) which may be sent without @@ -1432,6 +1432,12 @@ will send a message through the encrypted channel to request a response from the server. The default is 0, indicating that these messages will not be sent to the server. +.It Cm SetEnv +Directly specify one or more environment variables and their contents to +be sent to the server. +Similarly to +.Cm SendEnv , +the server must be prepared to accept the environment variable. .It Cm StreamLocalBindMask Sets the octal file creation mode mask .Pq umask @@ -1588,17 +1594,6 @@ Presently, only from OpenSSH 6.8 and greater support the .Qq hostkeys@openssh.com protocol extension used to inform the client of all the server's hostkeys. -.It Cm UsePrivilegedPort -Specifies whether to use a privileged port for outgoing connections. -The argument must be -.Cm yes -or -.Cm no -(the default). -If set to -.Cm yes , -.Xr ssh 1 -must be setuid root. .It Cm User Specifies the user to log in as. This can be useful when a different user name is used on different machines. @@ -1737,10 +1732,10 @@ The local username. .El .Pp .Cm Match exec -accepts the tokens %%, %h, %L, %l, %n, %p, %r, and %u. +accepts the tokens %%, %h, %i, %L, %l, %n, %p, %r, and %u. .Pp .Cm CertificateFile -accepts the tokens %%, %d, %h, %l, %r, and %u. +accepts the tokens %%, %d, %h, %i, %l, %r, and %u. .Pp .Cm ControlPath accepts the tokens %%, %C, %h, %i, %L, %l, %n, %p, %r, and %u. @@ -1751,16 +1746,16 @@ accepts the tokens %% and %h. .Cm IdentityAgent and .Cm IdentityFile -accept the tokens %%, %d, %h, %l, %r, and %u. +accept the tokens %%, %d, %h, %i, %l, %r, and %u. .Pp .Cm LocalCommand -accepts the tokens %%, %C, %d, %h, %l, %n, %p, %r, %T, and %u. +accepts the tokens %%, %C, %d, %h, %i, %l, %n, %p, %r, %T, and %u. .Pp .Cm ProxyCommand accepts the tokens %%, %h, %p, and %r. .Pp .Cm RemoteCommand -accepts the tokens %%, %C, %d, %h, %l, %n, %p, %r, and %u. +accepts the tokens %%, %C, %d, %h, %i, %l, %n, %p, %r, and %u. .Sh FILES .Bl -tag -width Ds .It Pa ~/.ssh/config diff --git a/sshbuf.c b/sshbuf.c index de783a363..20ddf9eb6 100644 --- a/sshbuf.c +++ b/sshbuf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sshbuf.c,v 1.11 2017/06/01 06:58:25 djm Exp $ */ +/* $OpenBSD: sshbuf.c,v 1.12 2018/07/09 21:56:06 markus Exp $ */ /* * Copyright (c) 2011 Damien Miller * @@ -36,7 +36,6 @@ sshbuf_check_sanity(const struct sshbuf *buf) (!buf->readonly && buf->d != buf->cd) || buf->refcount < 1 || buf->refcount > SSHBUF_REFS_MAX || buf->cd == NULL || - (buf->dont_free && (buf->readonly || buf->parent != NULL)) || buf->max_size > SSHBUF_SIZE_MAX || buf->alloc > buf->max_size || buf->size > buf->alloc || @@ -131,24 +130,9 @@ sshbuf_fromb(struct sshbuf *buf) return ret; } -void -sshbuf_init(struct sshbuf *ret) -{ - explicit_bzero(ret, sizeof(*ret)); - ret->alloc = SSHBUF_SIZE_INIT; - ret->max_size = SSHBUF_SIZE_MAX; - ret->readonly = 0; - ret->dont_free = 1; - ret->refcount = 1; - if ((ret->cd = ret->d = calloc(1, ret->alloc)) == NULL) - ret->alloc = 0; -} - void sshbuf_free(struct sshbuf *buf) { - int dont_free = 0; - if (buf == NULL) return; /* @@ -173,14 +157,12 @@ sshbuf_free(struct sshbuf *buf) buf->refcount--; if (buf->refcount > 0) return; - dont_free = buf->dont_free; if (!buf->readonly) { explicit_bzero(buf->d, buf->alloc); free(buf->d); } explicit_bzero(buf, sizeof(*buf)); - if (!dont_free) - free(buf); + free(buf); } void diff --git a/sshbuf.h b/sshbuf.h index 77f1e9e6d..a43598cac 100644 --- a/sshbuf.h +++ b/sshbuf.h @@ -1,4 +1,4 @@ -/* $OpenBSD: sshbuf.h,v 1.9 2017/09/12 06:32:07 djm Exp $ */ +/* $OpenBSD: sshbuf.h,v 1.11 2018/07/09 21:56:06 markus Exp $ */ /* * Copyright (c) 2011 Damien Miller * @@ -50,15 +50,6 @@ struct sshbuf { struct sshbuf *parent; /* If child, pointer to parent */ }; -#ifndef SSHBUF_NO_DEPREACTED -/* - * NB. Please do not use sshbuf_init() in new code. Please use sshbuf_new() - * instead. sshbuf_init() is deprectated and will go away soon (it is - * only included to allow compat with buffer_* in OpenSSH) - */ -void sshbuf_init(struct sshbuf *buf); -#endif - /* * Create a new sshbuf buffer. * Returns pointer to buffer on success, or NULL on allocation failure. diff --git a/sshconnect.c b/sshconnect.c index 22360df6f..1b46fc4e6 100644 --- a/sshconnect.c +++ b/sshconnect.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sshconnect.c,v 1.297 2018/02/23 15:58:38 markus Exp $ */ +/* $OpenBSD: sshconnect.c,v 1.304 2018/07/27 05:34:42 dtucker Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -49,14 +49,12 @@ #endif #include "xmalloc.h" -#include "key.h" #include "hostfile.h" #include "ssh.h" -#include "buffer.h" +#include "sshbuf.h" #include "packet.h" -#include "uidswap.h" #include "compat.h" -#include "key.h" +#include "sshkey.h" #include "sshconnect.h" #include "hostfile.h" #include "log.h" @@ -82,8 +80,6 @@ static pid_t proxy_command_pid = 0; /* import */ extern Options options; extern char *__progname; -extern uid_t original_real_uid; -extern uid_t original_effective_uid; static int show_other_keys(struct hostkeys *, struct sshkey *); static void warn_changed_key(struct sshkey *); @@ -141,9 +137,6 @@ ssh_proxy_fdpass_connect(struct ssh *ssh, const char *host, u_short port, if ((pid = fork()) == 0) { char *argv[10]; - /* Child. Permanently give up superuser privileges. */ - permanently_drop_suid(original_real_uid); - close(sp[1]); /* Redirect stdin and stdout. */ if (sp[0] != 0) { @@ -250,9 +243,6 @@ ssh_proxy_connect(struct ssh *ssh, const char *host, u_short port, if ((pid = fork()) == 0) { char *argv[10]; - /* Child. Permanently give up superuser privileges. */ - permanently_drop_suid(original_real_uid); - /* Redirect stdin and stdout. */ close(pin[1]); if (pin[0] != 0) { @@ -315,7 +305,7 @@ ssh_kill_proxy_command(void) #ifdef HAVE_IFADDRS_H /* * Search a interface address list (returned from getifaddrs(3)) for an - * address that matches the desired address family on the specifed interface. + * address that matches the desired address family on the specified interface. * Returns 0 and fills in *resultp and *rlenp on success. Returns -1 on failure. */ static int @@ -376,12 +366,12 @@ check_ifaddrs(const char *ifname, int af, const struct ifaddrs *ifaddrs, #endif /* - * Creates a (possibly privileged) socket for use as the ssh connection. + * Creates a socket for use as the ssh connection. */ static int -ssh_create_socket(int privileged, struct addrinfo *ai) +ssh_create_socket(struct addrinfo *ai) { - int sock, r, oerrno; + int sock, r; struct sockaddr_storage bindaddr; socklen_t bindaddrlen = 0; struct addrinfo hints, *res = NULL; @@ -398,8 +388,7 @@ ssh_create_socket(int privileged, struct addrinfo *ai) fcntl(sock, F_SETFD, FD_CLOEXEC); /* Bind the socket to an alternative local IP address */ - if (options.bind_address == NULL && options.bind_interface == NULL && - !privileged) + if (options.bind_address == NULL && options.bind_interface == NULL) return sock; if (options.bind_address != NULL) { @@ -448,22 +437,7 @@ ssh_create_socket(int privileged, struct addrinfo *ai) ssh_gai_strerror(r)); goto fail; } - /* - * If we are running as root and want to connect to a privileged - * port, bind our own socket to a privileged port. - */ - if (privileged) { - PRIV_START; - r = bindresvport_sa(sock, - bindaddrlen == 0 ? NULL : (struct sockaddr *)&bindaddr); - oerrno = errno; - PRIV_END; - if (r < 0) { - error("bindresvport_sa %s: %s", ntop, - strerror(oerrno)); - goto fail; - } - } else if (bind(sock, (struct sockaddr *)&bindaddr, bindaddrlen) != 0) { + if (bind(sock, (struct sockaddr *)&bindaddr, bindaddrlen) != 0) { error("bind %s: %s", ntop, strerror(errno)); goto fail; } @@ -553,9 +527,7 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr, /* * Opens a TCP/IP connection to the remote server on the given host. * The address of the remote host will be returned in hostaddr. - * If port is 0, the default port will be used. If needpriv is true, - * a privileged port will be allocated to make the connection. - * This requires super-user privileges if needpriv is true. + * If port is 0, the default port will be used. * Connection_attempts specifies the maximum number of tries (one per * second). If proxy_command is non-NULL, it specifies the command (with %h * and %p substituted for host and port, respectively) to use to contact @@ -564,14 +536,14 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr, static int ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop, struct sockaddr_storage *hostaddr, u_short port, int family, - int connection_attempts, int *timeout_ms, int want_keepalive, int needpriv) + int connection_attempts, int *timeout_ms, int want_keepalive) { int on = 1; int oerrno, sock = -1, attempt; char ntop[NI_MAXHOST], strport[NI_MAXSERV]; struct addrinfo *ai; - debug2("%s: needpriv %d", __func__, needpriv); + debug2("%s", __func__); memset(ntop, 0, sizeof(ntop)); memset(strport, 0, sizeof(strport)); @@ -603,7 +575,7 @@ ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop, host, ntop, strport); /* Create a socket for connecting. */ - sock = ssh_create_socket(needpriv, ai); + sock = ssh_create_socket(ai); if (sock < 0) { /* Any error is already output */ errno = 0; @@ -653,12 +625,11 @@ ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop, int ssh_connect(struct ssh *ssh, const char *host, struct addrinfo *addrs, struct sockaddr_storage *hostaddr, u_short port, int family, - int connection_attempts, int *timeout_ms, int want_keepalive, int needpriv) + int connection_attempts, int *timeout_ms, int want_keepalive) { if (options.proxy_command == NULL) { return ssh_connect_direct(ssh, host, addrs, hostaddr, port, - family, connection_attempts, timeout_ms, want_keepalive, - needpriv); + family, connection_attempts, timeout_ms, want_keepalive); } else if (strcmp(options.proxy_command, "-") == 0) { if ((ssh_packet_set_connection(ssh, STDIN_FILENO, STDOUT_FILENO)) == NULL) @@ -805,11 +776,11 @@ check_host_cert(const char *host, const struct sshkey *host_key) { const char *reason; - if (key_cert_check_authority(host_key, 1, 0, host, &reason) != 0) { + if (sshkey_cert_check_authority(host_key, 1, 0, host, &reason) != 0) { error("%s", reason); return 0; } - if (buffer_len(host_key->cert->critical) != 0) { + if (sshbuf_len(host_key->cert->critical) != 0) { error("Certificate for %s contains unsupported " "critical options(s)", host); return 0; @@ -1534,9 +1505,9 @@ show_other_keys(struct hostkeys *hostkeys, struct sshkey *key) logit("WARNING: %s key found for host %s\n" "in %s:%lu\n" "%s key fingerprint %s.", - key_type(found->key), + sshkey_type(found->key), found->host, found->file, found->line, - key_type(found->key), fp); + sshkey_type(found->key), fp); if (options.visual_host_key) logit("%s", ra); free(ra); @@ -1563,7 +1534,7 @@ warn_changed_key(struct sshkey *host_key) error("Someone could be eavesdropping on you right now (man-in-the-middle attack)!"); error("It is also possible that a host key has just been changed."); error("The fingerprint for the %s key sent by the remote host is\n%s.", - key_type(host_key), fp); + sshkey_type(host_key), fp); error("Please contact your system administrator."); free(fp); diff --git a/sshconnect.h b/sshconnect.h index dd648b096..890d85733 100644 --- a/sshconnect.h +++ b/sshconnect.h @@ -1,4 +1,4 @@ -/* $OpenBSD: sshconnect.h,v 1.32 2018/02/10 09:25:35 djm Exp $ */ +/* $OpenBSD: sshconnect.h,v 1.35 2018/07/19 10:28:47 dtucker Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. @@ -28,14 +28,13 @@ typedef struct Sensitive Sensitive; struct Sensitive { struct sshkey **keys; int nkeys; - int external_keysign; }; struct addrinfo; struct ssh; int ssh_connect(struct ssh *, const char *, struct addrinfo *, - struct sockaddr_storage *, u_short, int, int, int *, int, int); + struct sockaddr_storage *, u_short, int, int, int *, int); void ssh_kill_proxy_command(void); void ssh_login(Sensitive *, const char *, struct sockaddr *, u_short, @@ -58,22 +57,3 @@ void ssh_put_password(char *); int ssh_local_cmd(const char *); void maybe_add_key_to_agent(char *, const struct sshkey *, char *, char *); - -/* - * Macros to raise/lower permissions. - */ -#define PRIV_START do { \ - int save_errno = errno; \ - if (seteuid(original_effective_uid) != 0) \ - fatal("PRIV_START: seteuid: %s", \ - strerror(errno)); \ - errno = save_errno; \ -} while (0) - -#define PRIV_END do { \ - int save_errno = errno; \ - if (seteuid(original_real_uid) != 0) \ - fatal("PRIV_END: seteuid: %s", \ - strerror(errno)); \ - errno = save_errno; \ -} while (0) diff --git a/sshconnect2.c b/sshconnect2.c index bf7b90027..3e1f95779 100644 --- a/sshconnect2.c +++ b/sshconnect2.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sshconnect2.c,v 1.270 2018/03/24 19:28:43 markus Exp $ */ +/* $OpenBSD: sshconnect2.c,v 1.284 2018/08/13 02:41:05 djm Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * Copyright (c) 2008 Damien Miller. All rights reserved. @@ -49,11 +49,11 @@ #include "xmalloc.h" #include "ssh.h" #include "ssh2.h" -#include "buffer.h" +#include "sshbuf.h" #include "packet.h" #include "compat.h" #include "cipher.h" -#include "key.h" +#include "sshkey.h" #include "kex.h" #include "myproposal.h" #include "sshconnect.h" @@ -158,7 +158,7 @@ void ssh_kex2(char *host, struct sockaddr *hostaddr, u_short port) { char *myproposal[PROPOSAL_MAX] = { KEX_CLIENT }; - char *s; + char *s, *all_key; struct kex *kex; int r; @@ -183,9 +183,11 @@ ssh_kex2(char *host, struct sockaddr *hostaddr, u_short port) myproposal[PROPOSAL_MAC_ALGS_CTOS] = myproposal[PROPOSAL_MAC_ALGS_STOC] = options.macs; if (options.hostkeyalgorithms != NULL) { - if (kex_assemble_names(KEX_DEFAULT_PK_ALG, - &options.hostkeyalgorithms) != 0) + all_key = sshkey_alg_list(0, 0, 1, ','); + if (kex_assemble_names(&options.hostkeyalgorithms, + KEX_DEFAULT_PK_ALG, all_key) != 0) fatal("%s: kex_assemble_namelist", __func__); + free(all_key); myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = compat_pkalg_proposal(options.hostkeyalgorithms); } else { @@ -235,10 +237,11 @@ ssh_kex2(char *host, struct sockaddr *hostaddr, u_short port) #ifdef DEBUG_KEXDH /* send 1st encrypted/maced/compressed message */ - packet_start(SSH2_MSG_IGNORE); - packet_put_cstring("markus"); - packet_send(); - packet_write_wait(); + if ((r = sshpkt_start(ssh, SSH2_MSG_IGNORE)) != 0 || + (r = sshpkt_put_cstring(ssh, "markus")) != 0 || + (r = sshpkt_send(ssh)) != 0 || + (r = ssh_packet_write_wait(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); #endif } @@ -320,7 +323,7 @@ int input_gssapi_errtok(int, u_int32_t, struct ssh *); void userauth(Authctxt *, char *); -static int sign_and_send_pubkey(Authctxt *, Identity *); +static int sign_and_send_pubkey(struct ssh *ssh, Authctxt *, Identity *); static void pubkey_prepare(Authctxt *); static void pubkey_cleanup(Authctxt *); static void pubkey_reset(Authctxt *); @@ -460,6 +463,8 @@ input_userauth_ext_info(int type, u_int32_t seqnr, struct ssh *ssh) void userauth(Authctxt *authctxt, char *authlist) { + struct ssh *ssh = active_state; /* XXX */ + if (authctxt->method != NULL && authctxt->method->cleanup != NULL) authctxt->method->cleanup(authctxt); @@ -479,7 +484,7 @@ userauth(Authctxt *authctxt, char *authlist) authctxt->method = method; /* reset the per method handler */ - dispatch_range(SSH2_MSG_USERAUTH_PER_METHOD_MIN, + ssh_dispatch_range(ssh, SSH2_MSG_USERAUTH_PER_METHOD_MIN, SSH2_MSG_USERAUTH_PER_METHOD_MAX, NULL); /* and try new method */ @@ -556,14 +561,16 @@ input_userauth_failure(int type, u_int32_t seq, struct ssh *ssh) { Authctxt *authctxt = ssh->authctxt; char *authlist = NULL; - int partial; + u_char partial; + int r; if (authctxt == NULL) fatal("input_userauth_failure: no authentication context"); - authlist = packet_get_string(NULL); - partial = packet_get_char(); - packet_check_eom(); + if ((r = sshpkt_get_cstring(ssh, &authlist, NULL)) != 0 || + (r = sshpkt_get_u8(ssh, &partial)) != 0 || + (r = sshpkt_get_end(ssh)) != 0) + goto out; if (partial != 0) { verbose("Authenticated with partial success."); @@ -573,6 +580,9 @@ input_userauth_failure(int type, u_int32_t seq, struct ssh *ssh) debug("Authentications that can continue: %s", authlist); userauth(authctxt, authlist); + authlist = NULL; + out: + free(authlist); return 0; } @@ -584,25 +594,27 @@ input_userauth_pk_ok(int type, u_int32_t seq, struct ssh *ssh) struct sshkey *key = NULL; Identity *id = NULL; int pktype, sent = 0; - u_int alen, blen; - char *pkalg, *fp; - u_char *pkblob; + size_t blen; + char *pkalg = NULL, *fp; + u_char *pkblob = NULL; + int r; if (authctxt == NULL) fatal("input_userauth_pk_ok: no authentication context"); - pkalg = packet_get_string(&alen); - pkblob = packet_get_string(&blen); - packet_check_eom(); + if ((r = sshpkt_get_cstring(ssh, &pkalg, NULL)) != 0 || + (r = sshpkt_get_string(ssh, &pkblob, &blen)) != 0 || + (r = sshpkt_get_end(ssh)) != 0) + goto done; - debug("Server accepts key: pkalg %s blen %u", pkalg, blen); + debug("Server accepts key: pkalg %s blen %zu", pkalg, blen); - if ((pktype = key_type_from_name(pkalg)) == KEY_UNSPEC) { + if ((pktype = sshkey_type_from_name(pkalg)) == KEY_UNSPEC) { debug("unknown pkalg %s", pkalg); goto done; } - if ((key = key_from_blob(pkblob, blen)) == NULL) { - debug("no key from blob. pkalg %s", pkalg); + if ((r = sshkey_from_blob(pkblob, blen, &key)) != 0) { + debug("no key from blob. pkalg %s: %s", pkalg, ssh_err(r)); goto done; } if (key->type != pktype) { @@ -623,31 +635,33 @@ input_userauth_pk_ok(int type, u_int32_t seq, struct ssh *ssh) * duplicate keys */ TAILQ_FOREACH_REVERSE(id, &authctxt->keys, idlist, next) { - if (key_equal(key, id->key)) { - sent = sign_and_send_pubkey(authctxt, id); + if (sshkey_equal(key, id->key)) { + sent = sign_and_send_pubkey(ssh, authctxt, id); break; } } -done: - key_free(key); + r = 0; + done: + sshkey_free(key); free(pkalg); free(pkblob); /* try another method if we did not send a packet */ - if (sent == 0) + if (r == 0 && sent == 0) userauth(authctxt, NULL); - return 0; + return r; } #ifdef GSSAPI int userauth_gssapi(Authctxt *authctxt) { + struct ssh *ssh = active_state; /* XXX */ Gssctxt *gssctxt = NULL; static gss_OID_set gss_supported = NULL; static u_int mech = 0; OM_uint32 min; - int ok = 0; + int r, ok = 0; /* Try one GSSAPI method at a time, rather than sending them all at * once. */ @@ -659,7 +673,7 @@ userauth_gssapi(Authctxt *authctxt) while (mech < gss_supported->count && !ok) { /* My DER encoding requires length<128 */ if (gss_supported->elements[mech].length < 128 && - ssh_gssapi_check_mechanism(&gssctxt, + ssh_gssapi_check_mechanism(&gssctxt, &gss_supported->elements[mech], authctxt->host)) { ok = 1; /* Mechanism works */ } else { @@ -672,25 +686,26 @@ userauth_gssapi(Authctxt *authctxt) authctxt->methoddata=(void *)gssctxt; - packet_start(SSH2_MSG_USERAUTH_REQUEST); - packet_put_cstring(authctxt->server_user); - packet_put_cstring(authctxt->service); - packet_put_cstring(authctxt->method->name); + if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_REQUEST)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->server_user)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->service)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->method->name)) != 0 || + (r = sshpkt_put_u32(ssh, 1)) != 0 || + (r = sshpkt_put_u32(ssh, + (gss_supported->elements[mech].length) + 2)) != 0 || + (r = sshpkt_put_u8(ssh, SSH_GSS_OIDTYPE)) != 0 || + (r = sshpkt_put_u8(ssh, + gss_supported->elements[mech].length)) != 0 || + (r = sshpkt_put(ssh, + gss_supported->elements[mech].elements, + gss_supported->elements[mech].length)) != 0 || + (r = sshpkt_send(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); - packet_put_int(1); - - packet_put_int((gss_supported->elements[mech].length) + 2); - packet_put_char(SSH_GSS_OIDTYPE); - packet_put_char(gss_supported->elements[mech].length); - packet_put_raw(gss_supported->elements[mech].elements, - gss_supported->elements[mech].length); - - packet_send(); - - dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_RESPONSE, &input_gssapi_response); - dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_TOKEN, &input_gssapi_token); - dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_ERROR, &input_gssapi_error); - dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_ERRTOK, &input_gssapi_errtok); + ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_RESPONSE, &input_gssapi_response); + ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_TOKEN, &input_gssapi_token); + ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_ERROR, &input_gssapi_error); + ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_ERRTOK, &input_gssapi_errtok); mech++; /* Move along to next candidate */ @@ -706,44 +721,56 @@ process_gssapi_token(struct ssh *ssh, gss_buffer_t recv_tok) gss_buffer_desc mic = GSS_C_EMPTY_BUFFER; gss_buffer_desc gssbuf; OM_uint32 status, ms, flags; - Buffer b; + int r; status = ssh_gssapi_init_ctx(gssctxt, options.gss_deleg_creds, recv_tok, &send_tok, &flags); if (send_tok.length > 0) { - if (GSS_ERROR(status)) - packet_start(SSH2_MSG_USERAUTH_GSSAPI_ERRTOK); - else - packet_start(SSH2_MSG_USERAUTH_GSSAPI_TOKEN); + u_char type = GSS_ERROR(status) ? + SSH2_MSG_USERAUTH_GSSAPI_ERRTOK : + SSH2_MSG_USERAUTH_GSSAPI_TOKEN; + + if ((r = sshpkt_start(ssh, type)) != 0 || + (r = sshpkt_put_string(ssh, send_tok.value, + send_tok.length)) != 0 || + (r = sshpkt_send(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); - packet_put_string(send_tok.value, send_tok.length); - packet_send(); gss_release_buffer(&ms, &send_tok); } if (status == GSS_S_COMPLETE) { /* send either complete or MIC, depending on mechanism */ if (!(flags & GSS_C_INTEG_FLAG)) { - packet_start(SSH2_MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE); - packet_send(); + if ((r = sshpkt_start(ssh, + SSH2_MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE)) != 0 || + (r = sshpkt_send(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); } else { - ssh_gssapi_buildmic(&b, authctxt->server_user, + struct sshbuf *b; + + if ((b = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + ssh_gssapi_buildmic(b, authctxt->server_user, authctxt->service, "gssapi-with-mic"); - gssbuf.value = buffer_ptr(&b); - gssbuf.length = buffer_len(&b); + if ((gssbuf.value = sshbuf_mutable_ptr(b)) == NULL) + fatal("%s: sshbuf_mutable_ptr failed", __func__); + gssbuf.length = sshbuf_len(b); status = ssh_gssapi_sign(gssctxt, &gssbuf, &mic); if (!GSS_ERROR(status)) { - packet_start(SSH2_MSG_USERAUTH_GSSAPI_MIC); - packet_put_string(mic.value, mic.length); - - packet_send(); + if ((r = sshpkt_start(ssh, + SSH2_MSG_USERAUTH_GSSAPI_MIC)) != 0 || + (r = sshpkt_put_string(ssh, mic.value, + mic.length)) != 0 || + (r = sshpkt_send(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); } - buffer_free(&b); + sshbuf_free(b); gss_release_buffer(&ms, &mic); } } @@ -757,39 +784,43 @@ input_gssapi_response(int type, u_int32_t plen, struct ssh *ssh) { Authctxt *authctxt = ssh->authctxt; Gssctxt *gssctxt; - int oidlen; - char *oidv; + size_t oidlen; + u_char *oidv = NULL; + int r; if (authctxt == NULL) fatal("input_gssapi_response: no authentication context"); gssctxt = authctxt->methoddata; /* Setup our OID */ - oidv = packet_get_string(&oidlen); + if ((r = sshpkt_get_string(ssh, &oidv, &oidlen)) != 0) + goto done; if (oidlen <= 2 || oidv[0] != SSH_GSS_OIDTYPE || oidv[1] != oidlen - 2) { - free(oidv); debug("Badly encoded mechanism OID received"); userauth(authctxt, NULL); - return 0; + goto ok; } if (!ssh_gssapi_check_oid(gssctxt, oidv + 2, oidlen - 2)) fatal("Server returned different OID than expected"); - packet_check_eom(); - - free(oidv); + if ((r = sshpkt_get_end(ssh)) != 0) + goto done; if (GSS_ERROR(process_gssapi_token(ssh, GSS_C_NO_BUFFER))) { /* Start again with next method on list */ debug("Trying to start again"); userauth(authctxt, NULL); - return 0; + goto ok; } - return 0; + ok: + r = 0; + done: + free(oidv); + return r; } /* ARGSUSED */ @@ -798,27 +829,31 @@ input_gssapi_token(int type, u_int32_t plen, struct ssh *ssh) { Authctxt *authctxt = ssh->authctxt; gss_buffer_desc recv_tok; + u_char *p = NULL; + size_t len; OM_uint32 status; - u_int slen; + int r; if (authctxt == NULL) fatal("input_gssapi_response: no authentication context"); - recv_tok.value = packet_get_string(&slen); - recv_tok.length = slen; /* safe typecast */ - - packet_check_eom(); + if ((r = sshpkt_get_string(ssh, &p, &len)) != 0 || + (r = sshpkt_get_end(ssh)) != 0) + goto out; + recv_tok.value = p; + recv_tok.length = len; status = process_gssapi_token(ssh, &recv_tok); - free(recv_tok.value); - + /* Start again with the next method in the list */ if (GSS_ERROR(status)) { - /* Start again with the next method in the list */ userauth(authctxt, NULL); - return 0; + /* ok */ } - return 0; + r = 0; + out: + free(p); + return r; } /* ARGSUSED */ @@ -830,22 +865,26 @@ input_gssapi_errtok(int type, u_int32_t plen, struct ssh *ssh) gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER; gss_buffer_desc recv_tok; OM_uint32 ms; - u_int len; + u_char *p = NULL; + size_t len; + int r; if (authctxt == NULL) fatal("input_gssapi_response: no authentication context"); gssctxt = authctxt->methoddata; - recv_tok.value = packet_get_string(&len); - recv_tok.length = len; - - packet_check_eom(); + if ((r = sshpkt_get_string(ssh, &p, &len)) != 0 || + (r = sshpkt_get_end(ssh)) != 0) { + free(p); + return r; + } /* Stick it into GSSAPI and see what it says */ + recv_tok.value = p; + recv_tok.length = len; (void)ssh_gssapi_init_ctx(gssctxt, options.gss_deleg_creds, &recv_tok, &send_tok, NULL); - - free(recv_tok.value); + free(p); gss_release_buffer(&ms, &send_tok); /* Server will be returning a failed packet after this one */ @@ -856,43 +895,50 @@ input_gssapi_errtok(int type, u_int32_t plen, struct ssh *ssh) int input_gssapi_error(int type, u_int32_t plen, struct ssh *ssh) { - char *msg; - char *lang; - - /* maj */(void)packet_get_int(); - /* min */(void)packet_get_int(); - msg=packet_get_string(NULL); - lang=packet_get_string(NULL); - - packet_check_eom(); + char *msg = NULL; + char *lang = NULL; + int r; + if ((r = sshpkt_get_u32(ssh, NULL)) != 0 || /* maj */ + (r = sshpkt_get_u32(ssh, NULL)) != 0 || /* min */ + (r = sshpkt_get_cstring(ssh, &msg, NULL)) != 0 || + (r = sshpkt_get_cstring(ssh, &lang, NULL)) != 0) + goto out; + r = sshpkt_get_end(ssh); debug("Server GSSAPI Error:\n%s", msg); + out: free(msg); free(lang); - return 0; + return r; } #endif /* GSSAPI */ int userauth_none(Authctxt *authctxt) { + struct ssh *ssh = active_state; /* XXX */ + int r; + /* initial userauth request */ - packet_start(SSH2_MSG_USERAUTH_REQUEST); - packet_put_cstring(authctxt->server_user); - packet_put_cstring(authctxt->service); - packet_put_cstring(authctxt->method->name); - packet_send(); + if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_REQUEST)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->server_user)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->service)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->method->name)) != 0 || + (r = sshpkt_send(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); return 1; } int userauth_passwd(Authctxt *authctxt) { + struct ssh *ssh = active_state; /* XXX */ static int attempt = 0; char prompt[256]; char *password; const char *host = options.host_key_alias ? options.host_key_alias : authctxt->host; + int r; if (attempt++ >= options.number_of_password_prompts) return 0; @@ -903,18 +949,20 @@ userauth_passwd(Authctxt *authctxt) snprintf(prompt, sizeof(prompt), "%.30s@%.128s's password: ", authctxt->server_user, host); password = read_passphrase(prompt, 0); - packet_start(SSH2_MSG_USERAUTH_REQUEST); - packet_put_cstring(authctxt->server_user); - packet_put_cstring(authctxt->service); - packet_put_cstring(authctxt->method->name); - packet_put_char(0); - packet_put_cstring(password); - explicit_bzero(password, strlen(password)); - free(password); - packet_add_padding(64); - packet_send(); + if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_REQUEST)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->server_user)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->service)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->method->name)) != 0 || + (r = sshpkt_put_u8(ssh, 0)) != 0 || + (r = sshpkt_put_cstring(ssh, password)) != 0 || + (r = sshpkt_add_padding(ssh, 64)) != 0 || + (r = sshpkt_send(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); - dispatch_set(SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ, + if (password) + freezero(password, strlen(password)); + + ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ, &input_userauth_passwd_changereq); return 1; @@ -928,9 +976,10 @@ int input_userauth_passwd_changereq(int type, u_int32_t seqnr, struct ssh *ssh) { Authctxt *authctxt = ssh->authctxt; - char *info, *lang, *password = NULL, *retype = NULL; + char *info = NULL, *lang = NULL, *password = NULL, *retype = NULL; char prompt[256]; const char *host; + int r; debug2("input_userauth_passwd_changereq"); @@ -939,24 +988,26 @@ input_userauth_passwd_changereq(int type, u_int32_t seqnr, struct ssh *ssh) "no authentication context"); host = options.host_key_alias ? options.host_key_alias : authctxt->host; - info = packet_get_string(NULL); - lang = packet_get_string(NULL); + if ((r = sshpkt_get_cstring(ssh, &info, NULL)) != 0 || + (r = sshpkt_get_cstring(ssh, &lang, NULL)) != 0) + goto out; if (strlen(info) > 0) logit("%s", info); - free(info); - free(lang); - packet_start(SSH2_MSG_USERAUTH_REQUEST); - packet_put_cstring(authctxt->server_user); - packet_put_cstring(authctxt->service); - packet_put_cstring(authctxt->method->name); - packet_put_char(1); /* additional info */ + if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_REQUEST)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->server_user)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->service)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->method->name)) != 0 || + (r = sshpkt_put_u8(ssh, 1)) != 0) /* additional info */ + goto out; + snprintf(prompt, sizeof(prompt), "Enter %.30s@%.128s's old password: ", authctxt->server_user, host); password = read_passphrase(prompt, 0); - packet_put_cstring(password); - explicit_bzero(password, strlen(password)); - free(password); + if ((r = sshpkt_put_cstring(ssh, password)) != 0) + goto out; + + freezero(password, strlen(password)); password = NULL; while (password == NULL) { snprintf(prompt, sizeof(prompt), @@ -965,99 +1016,113 @@ input_userauth_passwd_changereq(int type, u_int32_t seqnr, struct ssh *ssh) password = read_passphrase(prompt, RP_ALLOW_EOF); if (password == NULL) { /* bail out */ - return 0; + r = 0; + goto out; } snprintf(prompt, sizeof(prompt), "Retype %.30s@%.128s's new password: ", authctxt->server_user, host); retype = read_passphrase(prompt, 0); if (strcmp(password, retype) != 0) { - explicit_bzero(password, strlen(password)); - free(password); + freezero(password, strlen(password)); logit("Mismatch; try again, EOF to quit."); password = NULL; } - explicit_bzero(retype, strlen(retype)); - free(retype); + freezero(retype, strlen(retype)); } - packet_put_cstring(password); - explicit_bzero(password, strlen(password)); - free(password); - packet_add_padding(64); - packet_send(); + if ((r = sshpkt_put_cstring(ssh, password)) != 0 || + (r = sshpkt_add_padding(ssh, 64)) != 0 || + (r = sshpkt_send(ssh)) != 0) + goto out; - dispatch_set(SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ, + ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ, &input_userauth_passwd_changereq); - return 0; -} - -static const char * -key_sign_encode(const struct sshkey *key) -{ - struct ssh *ssh = active_state; - - if (key->type == KEY_RSA) { - switch (ssh->kex->rsa_sha2) { - case 256: - return "rsa-sha2-256"; - case 512: - return "rsa-sha2-512"; - } - } - return key_ssh_name(key); + r = 0; + out: + if (password) + freezero(password, strlen(password)); + free(info); + free(lang); + return r; } /* - * Some agents will return ssh-rsa signatures when asked to make a - * rsa-sha2-* signature. Check what they actually gave back and warn the - * user if the agent has returned an unexpected type. + * Select an algorithm for publickey signatures. + * Returns algorithm (caller must free) or NULL if no mutual algorithm found. + * + * Call with ssh==NULL to ignore server-sig-algs extension list and + * only attempt with the key's base signature type. */ -static int -check_sigtype(const struct sshkey *key, const u_char *sig, size_t len) +static char * +key_sig_algorithm(struct ssh *ssh, const struct sshkey *key) { - int r; - char *sigtype = NULL; - const char *alg = key_sign_encode(key); + char *allowed, *oallowed, *cp, *tmp, *alg = NULL; - if (sshkey_is_cert(key)) - return 0; - if ((r = sshkey_sigtype(sig, len, &sigtype)) != 0) - return r; - if (strcmp(sigtype, alg) != 0) { - logit("warning: agent returned different signature type %s " - "(expected %s)", sigtype, alg); + /* + * The signature algorithm will only differ from the key algorithm + * for RSA keys/certs and when the server advertises support for + * newer (SHA2) algorithms. + */ + if (ssh == NULL || ssh->kex->server_sig_algs == NULL || + (key->type != KEY_RSA && key->type != KEY_RSA_CERT)) { + /* Filter base key signature alg against our configuration */ + return match_list(sshkey_ssh_name(key), + options.pubkey_key_types, NULL); } - free(sigtype); - /* Incorrect signature types aren't an error ... yet */ - return 0; + + /* + * For RSA keys/certs, since these might have a different sig type: + * find the first entry in PubkeyAcceptedKeyTypes of the right type + * that also appears in the supported signature algorithms list from + * the server. + */ + oallowed = allowed = xstrdup(options.pubkey_key_types); + while ((cp = strsep(&allowed, ",")) != NULL) { + if (sshkey_type_from_name(cp) != key->type) + continue; + tmp = match_list(sshkey_sigalg_by_name(cp), ssh->kex->server_sig_algs, NULL); + if (tmp != NULL) + alg = xstrdup(cp); + free(tmp); + if (alg != NULL) + break; + } + free(oallowed); + return alg; } static int identity_sign(struct identity *id, u_char **sigp, size_t *lenp, - const u_char *data, size_t datalen, u_int compat) + const u_char *data, size_t datalen, u_int compat, const char *alg) { struct sshkey *prv; int r; - /* the agent supports this key */ + /* The agent supports this key. */ if (id->key != NULL && id->agent_fd != -1) { - if ((r = ssh_agent_sign(id->agent_fd, id->key, sigp, lenp, - data, datalen, key_sign_encode(id->key), compat)) != 0 || - (r = check_sigtype(id->key, *sigp, *lenp)) != 0) + return ssh_agent_sign(id->agent_fd, id->key, sigp, lenp, + data, datalen, alg, compat); + } + + /* + * We have already loaded the private key or the private key is + * stored in external hardware. + */ + if (id->key != NULL && + (id->isprivate || (id->key->flags & SSHKEY_FLAG_EXT))) { + if ((r = sshkey_sign(id->key, sigp, lenp, data, datalen, + alg, compat)) != 0) + return r; + /* + * PKCS#11 tokens may not support all signature algorithms, + * so check what we get back. + */ + if ((r = sshkey_check_sigtype(*sigp, *lenp, alg)) != 0) return r; return 0; } - /* - * we have already loaded the private key or - * the private key is stored in external hardware - */ - if (id->key != NULL && - (id->isprivate || (id->key->flags & SSHKEY_FLAG_EXT))) - return (sshkey_sign(id->key, sigp, lenp, data, datalen, - key_sign_encode(id->key), compat)); - - /* load the private key from the file */ + /* Load the private key from the file. */ if ((prv = load_identity_file(id)) == NULL) return SSH_ERR_KEY_NOT_FOUND; if (id->key != NULL && !sshkey_equal_public(prv, id->key)) { @@ -1065,8 +1130,7 @@ identity_sign(struct identity *id, u_char **sigp, size_t *lenp, __func__, id->filename); return SSH_ERR_KEY_NOT_FOUND; } - r = sshkey_sign(prv, sigp, lenp, data, datalen, - key_sign_encode(prv), compat); + r = sshkey_sign(prv, sigp, lenp, data, datalen, alg, compat); sshkey_free(prv); return r; } @@ -1091,57 +1155,35 @@ id_filename_matches(Identity *id, Identity *private_id) } static int -sign_and_send_pubkey(Authctxt *authctxt, Identity *id) +sign_and_send_pubkey(struct ssh *ssh, Authctxt *authctxt, Identity *id) { - Buffer b; - Identity *private_id; - u_char *blob, *signature; - size_t slen; - u_int bloblen, skip = 0; - int matched, ret = -1, have_sig = 1; - char *fp; + struct sshbuf *b = NULL; + Identity *private_id, *sign_id = NULL; + u_char *signature = NULL; + size_t slen = 0, skip = 0; + int r, fallback_sigtype, sent = 0; + char *alg = NULL, *fp = NULL; + const char *loc = ""; if ((fp = sshkey_fingerprint(id->key, options.fingerprint_hash, SSH_FP_DEFAULT)) == NULL) return 0; - debug3("%s: %s %s", __func__, key_type(id->key), fp); - free(fp); - if (key_to_blob(id->key, &blob, &bloblen) == 0) { - /* we cannot handle this key */ - debug3("sign_and_send_pubkey: cannot handle key"); - return 0; - } - /* data to be signed */ - buffer_init(&b); - if (datafellows & SSH_OLD_SESSIONID) { - buffer_append(&b, session_id2, session_id2_len); - skip = session_id2_len; - } else { - buffer_put_string(&b, session_id2, session_id2_len); - skip = buffer_len(&b); - } - buffer_put_char(&b, SSH2_MSG_USERAUTH_REQUEST); - buffer_put_cstring(&b, authctxt->server_user); - buffer_put_cstring(&b, authctxt->service); - buffer_put_cstring(&b, authctxt->method->name); - buffer_put_char(&b, have_sig); - buffer_put_cstring(&b, key_sign_encode(id->key)); - buffer_put_string(&b, blob, bloblen); + debug3("%s: %s %s", __func__, sshkey_type(id->key), fp); /* * If the key is an certificate, try to find a matching private key * and use it to complete the signature. * If no such private key exists, fall back to trying the certificate * key itself in case it has a private half already loaded. + * This will try to set sign_id to the private key that will perform + * the signature. */ - if (key_is_cert(id->key)) { - matched = 0; + if (sshkey_is_cert(id->key)) { TAILQ_FOREACH(private_id, &authctxt->keys, next) { if (sshkey_equal_public(id->key, private_id->key) && id->key->type != private_id->key->type) { - id = private_id; - matched = 1; + sign_id = private_id; break; } } @@ -1152,18 +1194,18 @@ sign_and_send_pubkey(Authctxt *authctxt, Identity *id) * of keeping just a private key file and public * certificate on disk. */ - if (!matched && !id->isprivate && id->agent_fd == -1 && + if (sign_id == NULL && + !id->isprivate && id->agent_fd == -1 && (id->key->flags & SSHKEY_FLAG_EXT) == 0) { TAILQ_FOREACH(private_id, &authctxt->keys, next) { if (private_id->key == NULL && id_filename_matches(id, private_id)) { - id = private_id; - matched = 1; + sign_id = private_id; break; } } } - if (matched) { + if (sign_id != NULL) { debug2("%s: using private key \"%s\"%s for " "certificate", __func__, id->filename, id->agent_fd != -1 ? " from agent" : ""); @@ -1173,65 +1215,141 @@ sign_and_send_pubkey(Authctxt *authctxt, Identity *id) } } - /* generate signature */ - ret = identity_sign(id, &signature, &slen, - buffer_ptr(&b), buffer_len(&b), datafellows); - if (ret != 0) { - if (ret != SSH_ERR_KEY_NOT_FOUND) - error("%s: signing failed: %s", __func__, ssh_err(ret)); - free(blob); - buffer_free(&b); - return 0; + /* + * If the above didn't select another identity to do the signing + * then default to the one we started with. + */ + if (sign_id == NULL) + sign_id = id; + + /* assemble and sign data */ + for (fallback_sigtype = 0; fallback_sigtype <= 1; fallback_sigtype++) { + free(alg); + slen = 0; + signature = NULL; + if ((alg = key_sig_algorithm(fallback_sigtype ? NULL : ssh, + id->key)) == NULL) { + error("%s: no mutual signature supported", __func__); + goto out; + } + debug3("%s: signing using %s", __func__, alg); + + sshbuf_free(b); + if ((b = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if (datafellows & SSH_OLD_SESSIONID) { + if ((r = sshbuf_put(b, session_id2, + session_id2_len)) != 0) { + fatal("%s: sshbuf_put: %s", + __func__, ssh_err(r)); + } + } else { + if ((r = sshbuf_put_string(b, session_id2, + session_id2_len)) != 0) { + fatal("%s: sshbuf_put_string: %s", + __func__, ssh_err(r)); + } + } + skip = sshbuf_len(b); + if ((r = sshbuf_put_u8(b, SSH2_MSG_USERAUTH_REQUEST)) != 0 || + (r = sshbuf_put_cstring(b, authctxt->server_user)) != 0 || + (r = sshbuf_put_cstring(b, authctxt->service)) != 0 || + (r = sshbuf_put_cstring(b, authctxt->method->name)) != 0 || + (r = sshbuf_put_u8(b, 1)) != 0 || + (r = sshbuf_put_cstring(b, alg)) != 0 || + (r = sshkey_puts(id->key, b)) != 0) { + fatal("%s: assemble signed data: %s", + __func__, ssh_err(r)); + } + + /* generate signature */ + r = identity_sign(sign_id, &signature, &slen, + sshbuf_ptr(b), sshbuf_len(b), datafellows, alg); + if (r == 0) + break; + else if (r == SSH_ERR_KEY_NOT_FOUND) + goto out; /* soft failure */ + else if (r == SSH_ERR_SIGN_ALG_UNSUPPORTED && + !fallback_sigtype) { + if (sign_id->agent_fd != -1) + loc = "agent "; + else if ((sign_id->key->flags & SSHKEY_FLAG_EXT) != 0) + loc = "token "; + logit("%skey %s %s returned incorrect signature type", + loc, sshkey_type(id->key), fp); + continue; + } + error("%s: signing failed: %s", __func__, ssh_err(r)); + goto out; } -#ifdef DEBUG_PK - buffer_dump(&b); -#endif - free(blob); + if (slen == 0 || signature == NULL) /* shouldn't happen */ + fatal("%s: no signature", __func__); /* append signature */ - buffer_put_string(&b, signature, slen); - free(signature); + if ((r = sshbuf_put_string(b, signature, slen)) != 0) + fatal("%s: append signature: %s", __func__, ssh_err(r)); +#ifdef DEBUG_PK + sshbuf_dump(b, stderr); +#endif /* skip session id and packet type */ - if (buffer_len(&b) < skip + 1) - fatal("userauth_pubkey: internal error"); - buffer_consume(&b, skip + 1); + if ((r = sshbuf_consume(b, skip + 1)) != 0) + fatal("%s: consume: %s", __func__, ssh_err(r)); /* put remaining data from buffer into packet */ - packet_start(SSH2_MSG_USERAUTH_REQUEST); - packet_put_raw(buffer_ptr(&b), buffer_len(&b)); - buffer_free(&b); - packet_send(); + if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_REQUEST)) != 0 || + (r = sshpkt_putb(ssh, b)) != 0 || + (r = sshpkt_send(ssh)) != 0) + fatal("%s: enqueue request: %s", __func__, ssh_err(r)); - return 1; + /* success */ + sent = 1; + + out: + free(fp); + free(alg); + sshbuf_free(b); + freezero(signature, slen); + return sent; } static int -send_pubkey_test(Authctxt *authctxt, Identity *id) +send_pubkey_test(struct ssh *ssh, Authctxt *authctxt, Identity *id) { - u_char *blob; - u_int bloblen, have_sig = 0; + u_char *blob = NULL; + char *alg = NULL; + size_t bloblen; + u_int have_sig = 0; + int sent = 0, r; - debug3("send_pubkey_test"); + if ((alg = key_sig_algorithm(ssh, id->key)) == NULL) { + debug("%s: no mutual signature algorithm", __func__); + goto out; + } - if (key_to_blob(id->key, &blob, &bloblen) == 0) { + if ((r = sshkey_to_blob(id->key, &blob, &bloblen)) != 0) { /* we cannot handle this key */ - debug3("send_pubkey_test: cannot handle key"); - return 0; + debug3("%s: cannot handle key", __func__); + goto out; } /* register callback for USERAUTH_PK_OK message */ - dispatch_set(SSH2_MSG_USERAUTH_PK_OK, &input_userauth_pk_ok); + ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_PK_OK, &input_userauth_pk_ok); - packet_start(SSH2_MSG_USERAUTH_REQUEST); - packet_put_cstring(authctxt->server_user); - packet_put_cstring(authctxt->service); - packet_put_cstring(authctxt->method->name); - packet_put_char(have_sig); - packet_put_cstring(key_sign_encode(id->key)); - packet_put_string(blob, bloblen); + if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_REQUEST)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->server_user)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->service)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->method->name)) != 0 || + (r = sshpkt_put_u8(ssh, have_sig)) != 0 || + (r = sshpkt_put_cstring(ssh, alg)) != 0 || + (r = sshpkt_put_string(ssh, blob, bloblen)) != 0 || + (r = sshpkt_send(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); + sent = 1; + + out: + free(alg); free(blob); - packet_send(); - return 1; + return sent; } static struct sshkey * @@ -1289,10 +1407,8 @@ load_identity_file(Identity *id) !(id->key && id->isprivate)) maybe_add_key_to_agent(id->filename, private, comment, passphrase); - if (i > 0) { - explicit_bzero(passphrase, strlen(passphrase)); - free(passphrase); - } + if (i > 0) + freezero(passphrase, strlen(passphrase)); free(comment); if (private != NULL || quit) break; @@ -1300,6 +1416,36 @@ load_identity_file(Identity *id) return private; } +static int +key_type_allowed_by_config(struct sshkey *key) +{ + if (match_pattern_list(sshkey_ssh_name(key), + options.pubkey_key_types, 0) == 1) + return 1; + + /* RSA keys/certs might be allowed by alternate signature types */ + switch (key->type) { + case KEY_RSA: + if (match_pattern_list("rsa-sha2-512", + options.pubkey_key_types, 0) == 1) + return 1; + if (match_pattern_list("rsa-sha2-256", + options.pubkey_key_types, 0) == 1) + return 1; + break; + case KEY_RSA_CERT: + if (match_pattern_list("rsa-sha2-512-cert-v01@openssh.com", + options.pubkey_key_types, 0) == 1) + return 1; + if (match_pattern_list("rsa-sha2-256-cert-v01@openssh.com", + options.pubkey_key_types, 0) == 1) + return 1; + break; + } + return 0; +} + + /* * try keys in the following order: * 1. certificates listed in the config file @@ -1339,7 +1485,7 @@ pubkey_prepare(Authctxt *authctxt) /* list of certificates specified by user */ for (i = 0; i < options.num_certificate_files; i++) { key = options.certificates[i]; - if (!key_is_cert(key) || key->cert == NULL || + if (!sshkey_is_cert(key) || key->cert == NULL || key->cert->type != SSH2_CERT_TYPE_USER) continue; id = xcalloc(1, sizeof(*id)); @@ -1413,8 +1559,7 @@ pubkey_prepare(Authctxt *authctxt) /* If IdentitiesOnly set and key not found then don't use it */ if (!found && options.identities_only) { TAILQ_REMOVE(&files, id, next); - explicit_bzero(id, sizeof(*id)); - free(id); + freezero(id, sizeof(*id)); } } /* append remaining keys from the config file */ @@ -1424,9 +1569,7 @@ pubkey_prepare(Authctxt *authctxt) } /* finally, filter by PubkeyAcceptedKeyTypes */ TAILQ_FOREACH_SAFE(id, preferred, next, id2) { - if (id->key != NULL && - match_pattern_list(sshkey_ssh_name(id->key), - options.pubkey_key_types, 0) != 1) { + if (id->key != NULL && !key_type_allowed_by_config(id->key)) { debug("Skipping %s key %s - " "not in PubkeyAcceptedKeyTypes", sshkey_ssh_name(id->key), id->filename); @@ -1472,10 +1615,10 @@ try_identity(Identity *id) { if (!id->key) return (0); - if (key_type_plain(id->key->type) == KEY_RSA && + if (sshkey_type_plain(id->key->type) == KEY_RSA && (datafellows & SSH_BUG_RSASIGMD5) != 0) { debug("Skipped %s key %s for RSA/MD5 server", - key_type(id->key), id->filename); + sshkey_type(id->key), id->filename); return (0); } return 1; @@ -1484,6 +1627,7 @@ try_identity(Identity *id) int userauth_pubkey(Authctxt *authctxt) { + struct ssh *ssh = active_state; /* XXX */ Identity *id; int sent = 0; char *fp; @@ -1511,7 +1655,7 @@ userauth_pubkey(Authctxt *authctxt) debug("Offering public key: %s %s %s", sshkey_type(id->key), fp, id->filename); free(fp); - sent = send_pubkey_test(authctxt, id); + sent = send_pubkey_test(ssh, authctxt, id); } } else { debug("Trying private key: %s", id->filename); @@ -1519,10 +1663,10 @@ userauth_pubkey(Authctxt *authctxt) if (id->key != NULL) { if (try_identity(id)) { id->isprivate = 1; - sent = sign_and_send_pubkey( + sent = sign_and_send_pubkey(ssh, authctxt, id); } - key_free(id->key); + sshkey_free(id->key); id->key = NULL; id->isprivate = 0; } @@ -1539,28 +1683,31 @@ userauth_pubkey(Authctxt *authctxt) int userauth_kbdint(Authctxt *authctxt) { + struct ssh *ssh = active_state; /* XXX */ static int attempt = 0; + int r; if (attempt++ >= options.number_of_password_prompts) return 0; /* disable if no SSH2_MSG_USERAUTH_INFO_REQUEST has been seen */ if (attempt > 1 && !authctxt->info_req_seen) { debug3("userauth_kbdint: disable: no info_req_seen"); - dispatch_set(SSH2_MSG_USERAUTH_INFO_REQUEST, NULL); + ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_INFO_REQUEST, NULL); return 0; } debug2("userauth_kbdint"); - packet_start(SSH2_MSG_USERAUTH_REQUEST); - packet_put_cstring(authctxt->server_user); - packet_put_cstring(authctxt->service); - packet_put_cstring(authctxt->method->name); - packet_put_cstring(""); /* lang */ - packet_put_cstring(options.kbd_interactive_devices ? - options.kbd_interactive_devices : ""); - packet_send(); + if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_REQUEST)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->server_user)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->service)) != 0 || + (r = sshpkt_put_cstring(ssh, authctxt->method->name)) != 0 || + (r = sshpkt_put_cstring(ssh, "")) != 0 || /* lang */ + (r = sshpkt_put_cstring(ssh, options.kbd_interactive_devices ? + options.kbd_interactive_devices : "")) != 0 || + (r = sshpkt_send(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); - dispatch_set(SSH2_MSG_USERAUTH_INFO_REQUEST, &input_userauth_info_req); + ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_INFO_REQUEST, &input_userauth_info_req); return 1; } @@ -1571,9 +1718,11 @@ int input_userauth_info_req(int type, u_int32_t seq, struct ssh *ssh) { Authctxt *authctxt = ssh->authctxt; - char *name, *inst, *lang, *prompt, *response; + char *name = NULL, *inst = NULL, *lang = NULL, *prompt = NULL; + char *response = NULL; + u_char echo = 0; u_int num_prompts, i; - int echo = 0; + int r; debug2("input_userauth_info_req"); @@ -1582,44 +1731,52 @@ input_userauth_info_req(int type, u_int32_t seq, struct ssh *ssh) authctxt->info_req_seen = 1; - name = packet_get_string(NULL); - inst = packet_get_string(NULL); - lang = packet_get_string(NULL); + if ((r = sshpkt_get_cstring(ssh, &name, NULL)) != 0 || + (r = sshpkt_get_cstring(ssh, &inst, NULL)) != 0 || + (r = sshpkt_get_cstring(ssh, &lang, NULL)) != 0) + goto out; if (strlen(name) > 0) logit("%s", name); if (strlen(inst) > 0) logit("%s", inst); - free(name); - free(inst); - free(lang); - num_prompts = packet_get_int(); + if ((r = sshpkt_get_u32(ssh, &num_prompts)) != 0) + goto out; /* * Begin to build info response packet based on prompts requested. * We commit to providing the correct number of responses, so if * further on we run into a problem that prevents this, we have to * be sure and clean this up and send a correct error response. */ - packet_start(SSH2_MSG_USERAUTH_INFO_RESPONSE); - packet_put_int(num_prompts); + if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_INFO_RESPONSE)) != 0 || + (r = sshpkt_put_u32(ssh, num_prompts)) != 0) + goto out; debug2("input_userauth_info_req: num_prompts %d", num_prompts); for (i = 0; i < num_prompts; i++) { - prompt = packet_get_string(NULL); - echo = packet_get_char(); - + if ((r = sshpkt_get_cstring(ssh, &prompt, NULL)) != 0 || + (r = sshpkt_get_u8(ssh, &echo)) != 0) + goto out; response = read_passphrase(prompt, echo ? RP_ECHO : 0); - - packet_put_cstring(response); - explicit_bzero(response, strlen(response)); - free(response); + if ((r = sshpkt_put_cstring(ssh, response)) != 0) + goto out; + freezero(response, strlen(response)); free(prompt); + response = prompt = NULL; } - packet_check_eom(); /* done with parsing incoming message. */ - - packet_add_padding(64); - packet_send(); - return 0; + /* done with parsing incoming message. */ + if ((r = sshpkt_get_end(ssh)) != 0 || + (r = sshpkt_add_padding(ssh, 64)) != 0) + goto out; + r = sshpkt_send(ssh); + out: + if (response) + freezero(response, strlen(response)); + free(prompt); + free(name); + free(inst); + free(lang); + return r; } static int @@ -1664,7 +1821,6 @@ ssh_keysign(struct sshkey *key, u_char **sigp, size_t *lenp, if (pid == 0) { /* keep the socket on exec */ fcntl(sock, F_SETFD, 0); - permanently_drop_suid(getuid()); close(from[0]); if (dup2(from[1], STDOUT_FILENO) < 0) fatal("%s: dup2: %s", __func__, strerror(errno)); @@ -1745,7 +1901,7 @@ ssh_keysign(struct sshkey *key, u_char **sigp, size_t *lenp, int userauth_hostbased(Authctxt *authctxt) { - struct ssh *ssh = active_state; + struct ssh *ssh = active_state; /* XXX */ struct sshkey *private = NULL; struct sshbuf *b = NULL; u_char *sig = NULL, *keyblob = NULL; @@ -1832,7 +1988,7 @@ userauth_hostbased(Authctxt *authctxt) (r = sshbuf_put_cstring(b, authctxt->server_user)) != 0 || (r = sshbuf_put_cstring(b, authctxt->service)) != 0 || (r = sshbuf_put_cstring(b, authctxt->method->name)) != 0 || - (r = sshbuf_put_cstring(b, key_ssh_name(private))) != 0 || + (r = sshbuf_put_cstring(b, sshkey_ssh_name(private))) != 0 || (r = sshbuf_put_string(b, keyblob, keylen)) != 0 || (r = sshbuf_put_cstring(b, chost)) != 0 || (r = sshbuf_put_cstring(b, authctxt->local_user)) != 0) { @@ -1843,12 +1999,8 @@ userauth_hostbased(Authctxt *authctxt) #ifdef DEBUG_PK sshbuf_dump(b, stderr); #endif - if (authctxt->sensitive->external_keysign) - r = ssh_keysign(private, &sig, &siglen, - sshbuf_ptr(b), sshbuf_len(b)); - else if ((r = sshkey_sign(private, &sig, &siglen, - sshbuf_ptr(b), sshbuf_len(b), NULL, datafellows)) != 0) - debug("%s: sshkey_sign: %s", __func__, ssh_err(r)); + r = ssh_keysign(private, &sig, &siglen, + sshbuf_ptr(b), sshbuf_len(b)); if (r != 0) { error("sign using hostkey %s %s failed", sshkey_ssh_name(private), fp); @@ -1858,7 +2010,7 @@ userauth_hostbased(Authctxt *authctxt) (r = sshpkt_put_cstring(ssh, authctxt->server_user)) != 0 || (r = sshpkt_put_cstring(ssh, authctxt->service)) != 0 || (r = sshpkt_put_cstring(ssh, authctxt->method->name)) != 0 || - (r = sshpkt_put_cstring(ssh, key_ssh_name(private))) != 0 || + (r = sshpkt_put_cstring(ssh, sshkey_ssh_name(private))) != 0 || (r = sshpkt_put_string(ssh, keyblob, keylen)) != 0 || (r = sshpkt_put_cstring(ssh, chost)) != 0 || (r = sshpkt_put_cstring(ssh, authctxt->local_user)) != 0 || @@ -1870,10 +2022,8 @@ userauth_hostbased(Authctxt *authctxt) success = 1; out: - if (sig != NULL) { - explicit_bzero(sig, siglen); - free(sig); - } + if (sig != NULL) + freezero(sig, siglen); free(keyblob); free(lname); free(fp); @@ -1970,20 +2120,22 @@ static char * authmethods_get(void) { Authmethod *method = NULL; - Buffer b; + struct sshbuf *b; char *list; + int r; - buffer_init(&b); + if ((b = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); for (method = authmethods; method->name != NULL; method++) { if (authmethod_is_enabled(method)) { - if (buffer_len(&b) > 0) - buffer_append(&b, ",", 1); - buffer_append(&b, method->name, strlen(method->name)); + if ((r = sshbuf_putf(b, "%s%s", + sshbuf_len(b) ? "," : "", method->name)) != 0) + fatal("%s: buffer error: %s", + __func__, ssh_err(r)); } } - if ((list = sshbuf_dup_string(&b)) == NULL) + if ((list = sshbuf_dup_string(b)) == NULL) fatal("%s: sshbuf_dup_string failed", __func__); - buffer_free(&b); + sshbuf_free(b); return list; } - diff --git a/sshd.8 b/sshd.8 index 968ba66bb..fb133c14b 100644 --- a/sshd.8 +++ b/sshd.8 @@ -33,8 +33,8 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $OpenBSD: sshd.8,v 1.299 2018/03/14 06:56:20 jmc Exp $ -.Dd $Mdocdate: March 14 2018 $ +.\" $OpenBSD: sshd.8,v 1.304 2018/07/22 12:16:59 dtucker Exp $ +.Dd $Mdocdate: July 22 2018 $ .Dt SSHD 8 .Os .Sh NAME @@ -277,7 +277,7 @@ locked, listed in .Cm DenyUsers or its group is listed in .Cm DenyGroups -\&. The definition of a locked account is system dependant. Some platforms +\&. The definition of a locked account is system dependent. Some platforms have their own account database (eg AIX) and some modify the passwd field ( .Ql \&*LK\&* on Solaris and UnixWare, @@ -554,11 +554,37 @@ Disables execution of .It Cm no-X11-forwarding Forbids X11 forwarding when this key is used for authentication. Any X11 forward requests by the client will return an error. +.It Cm permitlisten="[host:]port" +Limit remote port forwarding with the +.Xr ssh 1 +.Fl R +option such that it may only listen on the specified host (optional) and port. +IPv6 addresses can be specified by enclosing the address in square brackets. +Multiple +.Cm permitlisten +options may be applied separated by commas. +Hostnames may include wildcards as described in the PATTERNS section in +.Xr ssh_config 5 . +A port specification of +.Cm * +matches any port. +Note that the setting of +.Cm GatewayPorts +may further restrict listen addresses. +Note that +.Xr ssh 1 +will send a hostname of +.Dq localhost +if a listen host was not specified when the forwarding was requested, and +that this name is treated differently to the explicit localhost addresses +.Dq 127.0.0.1 +and +.Dq ::1 . .It Cm permitopen="host:port" -Limit local port forwarding with +Limit local port forwarding with the .Xr ssh 1 .Fl L -such that it may only connect to the specified host and port. +option such that it may only connect to the specified host and port. IPv6 addresses can be specified by enclosing the address in square brackets. Multiple .Cm permitopen @@ -618,9 +644,11 @@ An example authorized_keys file: ssh-rsa AAAAB3Nza...LiPk== user@example.net from="*.sales.example.net,!pc.sales.example.net" ssh-rsa AAAAB2...19Q== john@example.net -command="dump /home",no-pty,no-port-forwarding ssh-dss +command="dump /home",no-pty,no-port-forwarding ssh-rsa AAAAC3...51R== example.net -permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-dss +permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-rsa +AAAAB5...21S== +permitlisten="localhost:8080",permitopen="localhost:22000" ssh-rsa AAAAB5...21S== tunnel="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...== jane@example.net diff --git a/sshd.c b/sshd.c index 52d202dea..ece02777d 100644 --- a/sshd.c +++ b/sshd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sshd.c,v 1.506 2018/03/03 03:15:51 djm Exp $ */ +/* $OpenBSD: sshd.c,v 1.514 2018/08/13 02:41:05 djm Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -91,7 +91,7 @@ #include "sshpty.h" #include "packet.h" #include "log.h" -#include "buffer.h" +#include "sshbuf.h" #include "misc.h" #include "match.h" #include "servconf.h" @@ -99,7 +99,7 @@ #include "compat.h" #include "cipher.h" #include "digest.h" -#include "key.h" +#include "sshkey.h" #include "kex.h" #include "myproposal.h" #include "authfile.h" @@ -248,10 +248,10 @@ Authctxt *the_authctxt = NULL; struct sshauthopt *auth_opts = NULL; /* sshd_config buffer */ -Buffer cfg; +struct sshbuf *cfg; /* message to be displayed after login */ -Buffer loginmsg; +struct sshbuf *loginmsg; /* Unprivileged user */ struct passwd *privsep_pw = NULL; @@ -484,11 +484,11 @@ destroy_sensitive_data(void) for (i = 0; i < options.num_host_key_files; i++) { if (sensitive_data.host_keys[i]) { - key_free(sensitive_data.host_keys[i]); + sshkey_free(sensitive_data.host_keys[i]); sensitive_data.host_keys[i] = NULL; } if (sensitive_data.host_certificates[i]) { - key_free(sensitive_data.host_certificates[i]); + sshkey_free(sensitive_data.host_certificates[i]); sensitive_data.host_certificates[i] = NULL; } } @@ -500,11 +500,16 @@ demote_sensitive_data(void) { struct sshkey *tmp; u_int i; + int r; for (i = 0; i < options.num_host_key_files; i++) { if (sensitive_data.host_keys[i]) { - tmp = key_demote(sensitive_data.host_keys[i]); - key_free(sensitive_data.host_keys[i]); + if ((r = sshkey_demote(sensitive_data.host_keys[i], + &tmp)) != 0) + fatal("could not demote host %s key: %s", + sshkey_type(sensitive_data.host_keys[i]), + ssh_err(r)); + sshkey_free(sensitive_data.host_keys[i]); sensitive_data.host_keys[i] = tmp; } /* Certs do not need demotion */ @@ -990,7 +995,7 @@ skip: fatal("fork of unprivileged child failed"); else if (pmonitor->m_pid != 0) { verbose("User child is on pid %ld", (long)pmonitor->m_pid); - buffer_clear(&loginmsg); + sshbuf_reset(loginmsg); monitor_clear_keystate(pmonitor); monitor_child_postauth(pmonitor); @@ -1023,45 +1028,47 @@ skip: #endif } +static void +append_hostkey_type(struct sshbuf *b, const char *s) +{ + int r; + + if (match_pattern_list(s, options.hostkeyalgorithms, 0) != 1) { + debug3("%s: %s key not permitted by HostkeyAlgorithms", + __func__, s); + return; + } + if ((r = sshbuf_putf(b, "%s%s", sshbuf_len(b) > 0 ? "," : "", s)) != 0) + fatal("%s: sshbuf_putf: %s", __func__, ssh_err(r)); +} + static char * list_hostkey_types(void) { - Buffer b; - const char *p; + struct sshbuf *b; + struct sshkey *key; char *ret; u_int i; - struct sshkey *key; - buffer_init(&b); + if ((b = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); for (i = 0; i < options.num_host_key_files; i++) { key = sensitive_data.host_keys[i]; if (key == NULL) key = sensitive_data.host_pubkeys[i]; if (key == NULL) continue; - /* Check that the key is accepted in HostkeyAlgorithms */ - if (match_pattern_list(sshkey_ssh_name(key), - options.hostkeyalgorithms, 0) != 1) { - debug3("%s: %s key not permitted by HostkeyAlgorithms", - __func__, sshkey_ssh_name(key)); - continue; - } switch (key->type) { case KEY_RSA: + /* for RSA we also support SHA2 signatures */ + append_hostkey_type(b, "rsa-sha2-512"); + append_hostkey_type(b, "rsa-sha2-256"); + /* FALLTHROUGH */ case KEY_DSA: case KEY_ECDSA: case KEY_ED25519: case KEY_XMSS: - if (buffer_len(&b) > 0) - buffer_append(&b, ",", 1); - p = key_ssh_name(key); - buffer_append(&b, p, strlen(p)); - - /* for RSA we also support SHA2 signatures */ - if (key->type == KEY_RSA) { - p = ",rsa-sha2-512,rsa-sha2-256"; - buffer_append(&b, p, strlen(p)); - } + append_hostkey_type(b, sshkey_ssh_name(key)); break; } /* If the private key has a cert peer, then list that too */ @@ -1070,21 +1077,24 @@ list_hostkey_types(void) continue; switch (key->type) { case KEY_RSA_CERT: + /* for RSA we also support SHA2 signatures */ + append_hostkey_type(b, + "rsa-sha2-512-cert-v01@openssh.com"); + append_hostkey_type(b, + "rsa-sha2-256-cert-v01@openssh.com"); + /* FALLTHROUGH */ case KEY_DSA_CERT: case KEY_ECDSA_CERT: case KEY_ED25519_CERT: case KEY_XMSS_CERT: - if (buffer_len(&b) > 0) - buffer_append(&b, ",", 1); - p = key_ssh_name(key); - buffer_append(&b, p, strlen(p)); + append_hostkey_type(b, sshkey_ssh_name(key)); break; } } - if ((ret = sshbuf_dup_string(&b)) == NULL) + if ((ret = sshbuf_dup_string(b)) == NULL) fatal("%s: sshbuf_dup_string failed", __func__); - buffer_free(&b); - debug("list_hostkey_types: %s", ret); + sshbuf_free(b); + debug("%s: %s", __func__, ret); return ret; } @@ -1151,7 +1161,7 @@ get_hostkey_index(struct sshkey *key, int compare, struct ssh *ssh) u_int i; for (i = 0; i < options.num_host_key_files; i++) { - if (key_is_cert(key)) { + if (sshkey_is_cert(key)) { if (key == sensitive_data.host_certificates[i] || (compare && sensitive_data.host_certificates[i] && sshkey_equal(key, @@ -1295,31 +1305,33 @@ send_rexec_state(int fd, struct sshbuf *conf) } static void -recv_rexec_state(int fd, Buffer *conf) +recv_rexec_state(int fd, struct sshbuf *conf) { - Buffer m; - char *cp; - u_int len; + struct sshbuf *m; + u_char *cp, ver; + size_t len; + int r; debug3("%s: entering fd = %d", __func__, fd); - buffer_init(&m); - - if (ssh_msg_recv(fd, &m) == -1) + if ((m = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); + if (ssh_msg_recv(fd, m) == -1) fatal("%s: ssh_msg_recv failed", __func__); - if (buffer_get_char(&m) != 0) + if ((r = sshbuf_get_u8(m, &ver)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (ver != 0) fatal("%s: rexec version mismatch", __func__); - - cp = buffer_get_string(&m, &len); - if (conf != NULL) - buffer_append(conf, cp, len); - free(cp); - + if ((r = sshbuf_get_string(m, &cp, &len)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); + if (conf != NULL && (r = sshbuf_put(conf, cp, len))) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); #if defined(WITH_OPENSSL) && !defined(OPENSSL_PRNG_ONLY) - rexec_recv_rng_seed(&m); + rexec_recv_rng_seed(m); #endif - buffer_free(&m); + free(cp); + sshbuf_free(m); debug3("%s: done", __func__); } @@ -1605,8 +1617,7 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s) startup_pipe = -1; pid = getpid(); if (rexec_flag) { - send_rexec_state(config_s[0], - &cfg); + send_rexec_state(config_s[0], cfg); close(config_s[0]); } break; @@ -1676,7 +1687,7 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s) close(startup_p[1]); if (rexec_flag) { - send_rexec_state(config_s[0], &cfg); + send_rexec_state(config_s[0], cfg); close(config_s[0]); close(config_s[1]); } @@ -1707,7 +1718,7 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s) * return an error if any are found). Basically we are worried about * source routing; it can be used to pretend you are somebody * (ip-address) you are not. That itself may be "almost acceptable" - * under certain circumstances, but rhosts autentication is useless + * under certain circumstances, but rhosts authentication is useless * if source routing is accepted. Notice also that if we just dropped * source routing here, the other side could use IP spoofing to do * rest of the interaction and could still bypass security. So we @@ -1784,6 +1795,43 @@ set_process_rdomain(struct ssh *ssh, const char *name) #endif } +static void +accumulate_host_timing_secret(struct sshbuf *server_cfg, + const struct sshkey *key) +{ + static struct ssh_digest_ctx *ctx; + u_char *hash; + size_t len; + struct sshbuf *buf; + int r; + + if (ctx == NULL && (ctx = ssh_digest_start(SSH_DIGEST_SHA512)) == NULL) + fatal("%s: ssh_digest_start", __func__); + if (key == NULL) { /* finalize */ + /* add server config in case we are using agent for host keys */ + if (ssh_digest_update(ctx, sshbuf_ptr(server_cfg), + sshbuf_len(server_cfg)) != 0) + fatal("%s: ssh_digest_update", __func__); + len = ssh_digest_bytes(SSH_DIGEST_SHA512); + hash = xmalloc(len); + if (ssh_digest_final(ctx, hash, len) != 0) + fatal("%s: ssh_digest_final", __func__); + options.timing_secret = PEEK_U64(hash); + freezero(hash, len); + ssh_digest_free(ctx); + ctx = NULL; + return; + } + if ((buf = sshbuf_new()) == NULL) + fatal("%s could not allocate buffer", __func__); + if ((r = sshkey_private_serialize(key, buf)) != 0) + fatal("sshkey_private_serialize: %s", ssh_err(r)); + if (ssh_digest_update(ctx, sshbuf_ptr(buf), sshbuf_len(buf)) != 0) + fatal("%s: ssh_digest_update", __func__); + sshbuf_reset(buf); + sshbuf_free(buf); +} + /* * Main program for the daemon. */ @@ -2012,16 +2060,17 @@ main(int ac, char **av) "test mode (-T)"); /* Fetch our configuration */ - buffer_init(&cfg); + if ((cfg = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); if (rexeced_flag) - recv_rexec_state(REEXEC_CONFIG_PASS_FD, &cfg); + recv_rexec_state(REEXEC_CONFIG_PASS_FD, cfg); else if (privsep_unauth_child || privsep_auth_child) recv_config_state(PRIVSEP_MONITOR_FD, &cfg); else if (strcasecmp(config_file_name, "none") != 0) - load_server_config(config_file_name, &cfg); + load_server_config(config_file_name, cfg); parse_server_config(&options, rexeced_flag ? "rexec" : config_file_name, - &cfg, NULL); + cfg, NULL); seed_rng(); @@ -2114,11 +2163,18 @@ main(int ac, char **av) if (options.host_key_files[i] == NULL) continue; if (privsep_unauth_child || privsep_auth_child) key = NULL; else /*TODO - remove this*/ - key = key_load_private(options.host_key_files[i], "", NULL); - pubkey = key_load_public(options.host_key_files[i], NULL); - + if ((r = sshkey_load_private(options.host_key_files[i], "", + &key, NULL)) != 0 && r != SSH_ERR_SYSTEM_ERROR) + error("Error loading host key \"%s\": %s", + options.host_key_files[i], ssh_err(r)); + if ((r = sshkey_load_public(options.host_key_files[i], + &pubkey, NULL)) != 0 && r != SSH_ERR_SYSTEM_ERROR) + error("Error loading host key \"%s\": %s", + options.host_key_files[i], ssh_err(r)); if (pubkey == NULL && key != NULL) - pubkey = key_demote(key); + if ((r = sshkey_demote(key, &pubkey)) != 0) + fatal("Could not demote key: \"%s\": %s", + options.host_key_files[i], ssh_err(r)); sensitive_data.host_keys[i] = key; sensitive_data.host_pubkeys[i] = pubkey; @@ -2128,6 +2184,7 @@ main(int ac, char **av) keytype = pubkey->type; } else if (key != NULL) { keytype = key->type; + accumulate_host_timing_secret(cfg, key); } else { error("Could not load host key: %s", options.host_key_files[i]); @@ -2153,6 +2210,7 @@ main(int ac, char **av) key ? "private" : "agent", i, sshkey_ssh_name(pubkey), fp); free(fp); } + accumulate_host_timing_secret(cfg, NULL); if (!sensitive_data.have_ssh2_key) { logit("sshd: no hostkeys available -- exiting."); exit(1); @@ -2170,21 +2228,21 @@ main(int ac, char **av) for (i = 0; i < options.num_host_cert_files; i++) { if (options.host_cert_files[i] == NULL) continue; - key = key_load_public(options.host_cert_files[i], NULL); - if (key == NULL) { - error("Could not load host certificate: %s", - options.host_cert_files[i]); + if ((r = sshkey_load_public(options.host_cert_files[i], + &key, NULL)) != 0) { + error("Could not load host certificate \"%s\": %s", + options.host_cert_files[i], ssh_err(r)); continue; } - if (!key_is_cert(key)) { + if (!sshkey_is_cert(key)) { error("Certificate file is not a certificate: %s", options.host_cert_files[i]); - key_free(key); + sshkey_free(key); continue; } /* Find matching private key */ for (j = 0; j < options.num_host_key_files; j++) { - if (key_equal_public(key, + if (sshkey_equal_public(key, sensitive_data.host_keys[j])) { sensitive_data.host_certificates[j] = key; break; @@ -2193,12 +2251,12 @@ main(int ac, char **av) if (j >= options.num_host_key_files) { error("No matching private key for certificate: %s", options.host_cert_files[i]); - key_free(key); + sshkey_free(key); continue; } sensitive_data.host_certificates[j] = key; debug("host certificate: #%u type %d %s", j, key->type, - key_type(key)); + sshkey_type(key)); } done_loading_hostkeys: if (privsep_chroot) { @@ -2478,7 +2536,7 @@ idexch_done: /* allocate authentication context */ authctxt = xcalloc(1, sizeof(*authctxt)); - authctxt->loginmsg = &loginmsg; + authctxt->loginmsg = loginmsg; /* XXX global for cleanup, access from other modules */ the_authctxt = authctxt; @@ -2488,7 +2546,8 @@ idexch_done: fatal("allocation failed"); /* prepare buffer to collect messages to display to user after login */ - buffer_init(&loginmsg); + if ((loginmsg = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); auth_debug_reset(); if (use_privsep) { @@ -2591,26 +2650,21 @@ idexch_done: int sshd_hostkey_sign(struct sshkey *privkey, struct sshkey *pubkey, - u_char **signature, size_t *slen, const u_char *data, size_t dlen, + u_char **signature, size_t *slenp, const u_char *data, size_t dlen, const char *alg, u_int flag) { int r; - u_int xxx_slen, xxx_dlen = dlen; if (privkey) { - if (PRIVSEP(key_sign(privkey, signature, &xxx_slen, data, xxx_dlen, - alg) < 0)) + if (PRIVSEP(sshkey_sign(privkey, signature, slenp, data, dlen, + alg, datafellows)) < 0) fatal("%s: key_sign failed", __func__); - if (slen) - *slen = xxx_slen; } else if (use_privsep) { - if (mm_key_sign(pubkey, signature, &xxx_slen, data, xxx_dlen, - alg) < 0) + if (mm_sshkey_sign(pubkey, signature, slenp, data, dlen, + alg, datafellows) < 0) fatal("%s: pubkey_sign failed", __func__); - if (slen) - *slen = xxx_slen; } else { - if ((r = ssh_agent_sign(auth_sock, pubkey, signature, slen, + if ((r = ssh_agent_sign(auth_sock, pubkey, signature, slenp, data, dlen, alg, datafellows)) != 0) fatal("%s: ssh_agent_sign failed: %s", __func__, ssh_err(r)); diff --git a/sshd_config b/sshd_config index 3109d5d73..19b7c91a1 100644 --- a/sshd_config +++ b/sshd_config @@ -1,4 +1,4 @@ -# $OpenBSD: sshd_config,v 1.102 2018/02/16 02:32:40 djm Exp $ +# $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. @@ -91,7 +91,6 @@ AuthorizedKeysFile .ssh/authorized_keys #PrintMotd yes #PrintLastLog yes #TCPKeepAlive yes -#UseLogin no #PermitUserEnvironment no #Compression delayed #ClientAliveInterval 0 diff --git a/sshd_config.5 b/sshd_config.5 index e3c7c3936..e1b54ba20 100644 --- a/sshd_config.5 +++ b/sshd_config.5 @@ -33,8 +33,8 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $OpenBSD: sshd_config.5,v 1.263 2018/02/16 02:40:45 djm Exp $ -.Dd $Mdocdate: February 16 2018 $ +.\" $OpenBSD: sshd_config.5,v 1.281 2018/07/20 05:01:10 djm Exp $ +.Dd $Mdocdate: July 20 2018 $ .Dt SSHD_CONFIG 5 .Os .Sh NAME @@ -66,12 +66,14 @@ the session's .Xr environ 7 . See .Cm SendEnv +and +.Cm SetEnv in .Xr ssh_config 5 for how to configure the client. The .Ev TERM -environment variable is always sent whenever the client +environment variable is always accepted whenever the client requests a pseudo-terminal as it is required by the protocol. Variables are specified by name, which may contain the wildcard characters .Ql * @@ -184,7 +186,7 @@ for more information on patterns. .It Cm AuthenticationMethods Specifies the authentication methods that must be successfully completed for a user to be granted access. -This option must be followed by one or more comma-separated lists of +This option must be followed by one or more lists of comma-separated authentication method names, or by the single string .Cm any to indicate the default behaviour of accepting any single authentication @@ -203,10 +205,9 @@ keyboard-interactive authentication before public key. For keyboard interactive authentication it is also possible to restrict authentication to a specific device by appending a colon followed by the device identifier -.Cm bsdauth , -.Cm pam , +.Cm bsdauth or -.Cm skey , +.Cm pam . depending on the server configuration. For example, .Qq keyboard-interactive:bsdauth @@ -231,7 +232,7 @@ The available authentication methods are: .Qq keyboard-interactive , .Qq none (used for access to password-less accounts when -.Cm PermitEmptyPassword +.Cm PermitEmptyPasswords is enabled), .Qq password and @@ -657,7 +658,7 @@ The default is .Cm yes . .It Cm HostbasedAcceptedKeyTypes Specifies the key types that will be accepted for hostbased authentication -as a comma-separated pattern list. +as a list of comma-separated patterns. Alternately if the specified value begins with a .Sq + character, then the specified key types will be appended to the default set @@ -672,9 +673,10 @@ ecdsa-sha2-nistp256-cert-v01@openssh.com, ecdsa-sha2-nistp384-cert-v01@openssh.com, ecdsa-sha2-nistp521-cert-v01@openssh.com, ssh-ed25519-cert-v01@openssh.com, +rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com, ssh-rsa-cert-v01@openssh.com, ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, -ssh-ed25519,ssh-rsa +ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa .Ed .Pp The list of available key types may also be obtained using @@ -749,9 +751,10 @@ ecdsa-sha2-nistp256-cert-v01@openssh.com, ecdsa-sha2-nistp384-cert-v01@openssh.com, ecdsa-sha2-nistp521-cert-v01@openssh.com, ssh-ed25519-cert-v01@openssh.com, +rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com, ssh-rsa-cert-v01@openssh.com, ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, -ssh-ed25519,ssh-rsa +ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa .Ed .Pp The list of available key types may also be obtained using @@ -816,9 +819,11 @@ If one argument is specified, it is used as the packet class unconditionally. If two values are specified, the first is automatically selected for interactive sessions and the second for non-interactive sessions. The default is -.Cm lowdelay +.Cm af21 +(Low-Latency Data) for interactive sessions and -.Cm throughput +.Cm cs1 +(Lower Effort) for non-interactive sessions. .It Cm KbdInteractiveAuthentication Specifies whether to allow keyboard-interactive authentication. @@ -1123,6 +1128,7 @@ Available keywords are .Cm MaxSessions , .Cm PasswordAuthentication , .Cm PermitEmptyPasswords , +.Cm PermitListen , .Cm PermitOpen , .Cm PermitRootLogin , .Cm PermitTTY , @@ -1133,6 +1139,7 @@ Available keywords are .Cm RekeyLimit , .Cm RevokedKeys , .Cm RDomain , +.Cm SetEnv , .Cm StreamLocalBindMask , .Cm StreamLocalBindUnlink , .Cm TrustedUserCAKeys , @@ -1182,6 +1189,48 @@ When password authentication is allowed, it specifies whether the server allows login to accounts with empty password strings. The default is .Cm no . +.It Cm PermitListen +Specifies the addresses/ports on which a remote TCP port forwarding may listen. +The listen specification must be one of the following forms: +.Pp +.Bl -item -offset indent -compact +.It +.Cm PermitListen +.Sm off +.Ar port +.Sm on +.It +.Cm PermitListen +.Sm off +.Ar host : port +.Sm on +.El +.Pp +Multiple permissions may be specified by separating them with whitespace. +An argument of +.Cm any +can be used to remove all restrictions and permit any listen requests. +An argument of +.Cm none +can be used to prohibit all listen requests. +The host name may contain wildcards as described in the PATTERNS section in +.Xr ssh_config 5 . +The wildcard +.Sq * +can also be used in place of a port number to allow all ports. +By default all port forwarding listen requests are permitted. +Note that the +.Cm GatewayPorts +option may further restrict which addresses may be listened on. +Note also that +.Xr ssh 1 +will request a listen host of +.Dq localhost +if no listen host was specifically requested, and this this name is +treated differently to explicit localhost addresses of +.Dq 127.0.0.1 +and +.Dq ::1 . .It Cm PermitOpen Specifies the destinations to which TCP port forwarding is permitted. The forwarding specification must be one of the following forms: @@ -1284,6 +1333,12 @@ options in .Pa ~/.ssh/authorized_keys are processed by .Xr sshd 8 . +Valid options are +.Cm yes , +.Cm no +or a pattern-list specifying which environment variable names to accept +(for example +.Qq LANG,LC_* ) . The default is .Cm no . Enabling environment processing may enable users to bypass access @@ -1330,7 +1385,7 @@ The default is .Cm yes . .It Cm PubkeyAcceptedKeyTypes Specifies the key types that will be accepted for public key authentication -as a comma-separated pattern list. +as a list of comma-separated patterns. Alternately if the specified value begins with a .Sq + character, then the specified key types will be appended to the default set @@ -1345,9 +1400,10 @@ ecdsa-sha2-nistp256-cert-v01@openssh.com, ecdsa-sha2-nistp384-cert-v01@openssh.com, ecdsa-sha2-nistp521-cert-v01@openssh.com, ssh-ed25519-cert-v01@openssh.com, +rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com, ssh-rsa-cert-v01@openssh.com, ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, -ssh-ed25519,ssh-rsa +ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa .Ed .Pp The list of available key types may also be obtained using @@ -1402,6 +1458,21 @@ will be bound to this If the routing domain is set to .Cm \&%D , then the domain in which the incoming connection was received will be applied. +.It Cm SetEnv +Specifies one or more environment variables to set in child sessions started +by +.Xr sshd 8 +as +.Dq NAME=VALUE . +The environment value may be quoted (e.g. if it contains whitespace +characters). +Environment variables set by +.Cm SetEnv +override the default environment and any variables specified by the user +via +.Cm AcceptEnv +or +.Cm PermitUserEnvironment . .It Cm StreamLocalBindMask Sets the octal file creation mode mask .Pq umask @@ -1687,24 +1758,26 @@ The serial number of the certificate. The type of the CA key. .It %t The key or certificate type. +.It \&%U +The numeric user ID of the target user. .It %u The username. .El .Pp .Cm AuthorizedKeysCommand -accepts the tokens %%, %f, %h, %k, %t, and %u. +accepts the tokens %%, %f, %h, %k, %t, %U, and %u. .Pp .Cm AuthorizedKeysFile -accepts the tokens %%, %h, and %u. +accepts the tokens %%, %h, %U, and %u. .Pp .Cm AuthorizedPrincipalsCommand -accepts the tokens %%, %F, %f, %h, %i, %K, %k, %s, %T, %t, and %u. +accepts the tokens %%, %F, %f, %h, %i, %K, %k, %s, %T, %t, %U, and %u. .Pp .Cm AuthorizedPrincipalsFile -accepts the tokens %%, %h, and %u. +accepts the tokens %%, %h, %U, and %u. .Pp .Cm ChrootDirectory -accepts the tokens %%, %h, and %u. +accepts the tokens %%, %h, %U, and %u. .Pp .Cm RoutingDomain accepts the token %D. diff --git a/ssherr.c b/ssherr.c index 3c0009d69..8ad3d5750 100644 --- a/ssherr.c +++ b/ssherr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssherr.c,v 1.7 2017/09/12 06:32:08 djm Exp $ */ +/* $OpenBSD: ssherr.c,v 1.8 2018/07/03 11:39:54 djm Exp $ */ /* * Copyright (c) 2011 Damien Miller * @@ -139,6 +139,8 @@ ssh_err(int n) return "Invalid key length"; case SSH_ERR_NUMBER_TOO_LARGE: return "number is too large"; + case SSH_ERR_SIGN_ALG_UNSUPPORTED: + return "signature algorithm not supported"; default: return "unknown error"; } diff --git a/ssherr.h b/ssherr.h index c0b59211e..348da5a20 100644 --- a/ssherr.h +++ b/ssherr.h @@ -1,4 +1,4 @@ -/* $OpenBSD: ssherr.h,v 1.5 2017/09/12 06:32:08 djm Exp $ */ +/* $OpenBSD: ssherr.h,v 1.6 2018/07/03 11:39:54 djm Exp $ */ /* * Copyright (c) 2011 Damien Miller * @@ -79,6 +79,7 @@ #define SSH_ERR_PROTOCOL_ERROR -55 #define SSH_ERR_KEY_LENGTH -56 #define SSH_ERR_NUMBER_TOO_LARGE -57 +#define SSH_ERR_SIGN_ALG_UNSUPPORTED -58 /* Translate a numeric error code to a human-readable error string */ const char *ssh_err(int n); diff --git a/sshkey-xmss.c b/sshkey-xmss.c index 5d66ee790..aaae70289 100644 --- a/sshkey-xmss.c +++ b/sshkey-xmss.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sshkey-xmss.c,v 1.1 2018/02/23 15:58:38 markus Exp $ */ +/* $OpenBSD: sshkey-xmss.c,v 1.3 2018/07/09 21:59:10 markus Exp $ */ /* * Copyright (c) 2017 Markus Friedl. All rights reserved. * @@ -66,7 +66,7 @@ struct ssh_xmss_state { treehash_inst *treehash; u_int32_t idx; /* state read from file */ - u_int32_t maxidx; /* resticted # of signatures */ + u_int32_t maxidx; /* restricted # of signatures */ int have_state; /* .state file exists */ int lockfd; /* locked in sshkey_xmss_get_state() */ int allow_update; /* allow sshkey_xmss_update_state() */ @@ -583,7 +583,7 @@ sshkey_xmss_update_state(const struct sshkey *k, sshkey_printfn *pr) } idx = PEEK_U32(k->xmss_sk); if (idx == state->idx) { - /* no signature happend, no need to update */ + /* no signature happened, no need to update */ ret = 0; goto done; } else if (idx != state->idx + 1) { @@ -625,7 +625,7 @@ sshkey_xmss_update_state(const struct sshkey *k, sshkey_printfn *pr) close(fd); goto done; } - if (atomicio(vwrite, fd, (void *)sshbuf_ptr(enc), sshbuf_len(enc)) != + if (atomicio(vwrite, fd, sshbuf_mutable_ptr(enc), sshbuf_len(enc)) != sshbuf_len(enc)) { ret = SSH_ERR_SYSTEM_ERROR; PRINT("%s: write new state file data: %s", __func__, nstatefile); diff --git a/sshkey.c b/sshkey.c index 0dea5b248..a8fcab895 100644 --- a/sshkey.c +++ b/sshkey.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sshkey.c,v 1.64 2018/03/22 07:05:48 markus Exp $ */ +/* $OpenBSD: sshkey.c,v 1.66 2018/07/03 13:20:25 djm Exp $ */ /* * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. * Copyright (c) 2008 Alexander von Gernler. All rights reserved. @@ -92,46 +92,64 @@ static int sshkey_from_blob_internal(struct sshbuf *buf, struct keytype { const char *name; const char *shortname; + const char *sigalg; int type; int nid; int cert; int sigonly; }; static const struct keytype keytypes[] = { - { "ssh-ed25519", "ED25519", KEY_ED25519, 0, 0, 0 }, - { "ssh-ed25519-cert-v01@openssh.com", "ED25519-CERT", + { "ssh-ed25519", "ED25519", NULL, KEY_ED25519, 0, 0, 0 }, + { "ssh-ed25519-cert-v01@openssh.com", "ED25519-CERT", NULL, KEY_ED25519_CERT, 0, 1, 0 }, #ifdef WITH_XMSS - { "ssh-xmss@openssh.com", "XMSS", KEY_XMSS, 0, 0, 0 }, - { "ssh-xmss-cert-v01@openssh.com", "XMSS-CERT", + { "ssh-xmss@openssh.com", "XMSS", NULL, KEY_XMSS, 0, 0, 0 }, + { "ssh-xmss-cert-v01@openssh.com", "XMSS-CERT", NULL, KEY_XMSS_CERT, 0, 1, 0 }, #endif /* WITH_XMSS */ #ifdef WITH_OPENSSL - { "ssh-rsa", "RSA", KEY_RSA, 0, 0, 0 }, - { "rsa-sha2-256", "RSA", KEY_RSA, 0, 0, 1 }, - { "rsa-sha2-512", "RSA", KEY_RSA, 0, 0, 1 }, - { "ssh-dss", "DSA", KEY_DSA, 0, 0, 0 }, + { "ssh-rsa", "RSA", NULL, KEY_RSA, 0, 0, 0 }, + { "rsa-sha2-256", "RSA", NULL, KEY_RSA, 0, 0, 1 }, + { "rsa-sha2-512", "RSA", NULL, KEY_RSA, 0, 0, 1 }, + { "ssh-dss", "DSA", NULL, KEY_DSA, 0, 0, 0 }, # ifdef OPENSSL_HAS_ECC - { "ecdsa-sha2-nistp256", "ECDSA", KEY_ECDSA, NID_X9_62_prime256v1, 0, 0 }, - { "ecdsa-sha2-nistp384", "ECDSA", KEY_ECDSA, NID_secp384r1, 0, 0 }, + { "ecdsa-sha2-nistp256", "ECDSA", NULL, + KEY_ECDSA, NID_X9_62_prime256v1, 0, 0 }, + { "ecdsa-sha2-nistp384", "ECDSA", NULL, + KEY_ECDSA, NID_secp384r1, 0, 0 }, # ifdef OPENSSL_HAS_NISTP521 - { "ecdsa-sha2-nistp521", "ECDSA", KEY_ECDSA, NID_secp521r1, 0, 0 }, + { "ecdsa-sha2-nistp521", "ECDSA", NULL, + KEY_ECDSA, NID_secp521r1, 0, 0 }, # endif /* OPENSSL_HAS_NISTP521 */ # endif /* OPENSSL_HAS_ECC */ - { "ssh-rsa-cert-v01@openssh.com", "RSA-CERT", KEY_RSA_CERT, 0, 1, 0 }, - { "ssh-dss-cert-v01@openssh.com", "DSA-CERT", KEY_DSA_CERT, 0, 1, 0 }, + { "ssh-rsa-cert-v01@openssh.com", "RSA-CERT", NULL, + KEY_RSA_CERT, 0, 1, 0 }, + { "rsa-sha2-256-cert-v01@openssh.com", "RSA-CERT", + "ssh-rsa-sha2-256", KEY_RSA_CERT, 0, 1, 1 }, + { "rsa-sha2-512-cert-v01@openssh.com", "RSA-CERT", + "ssh-rsa-sha2-512", KEY_RSA_CERT, 0, 1, 1 }, + { "ssh-dss-cert-v01@openssh.com", "DSA-CERT", NULL, + KEY_DSA_CERT, 0, 1, 0 }, + { "ssh-rsa-cert-v01@openssh.com", "RSA-CERT", NULL, + KEY_RSA_CERT, 0, 1, 0 }, + { "rsa-sha2-256-cert-v01@openssh.com", "RSA-CERT", + "ssh-rsa-sha2-256", KEY_RSA_CERT, 0, 1, 1 }, + { "rsa-sha2-512-cert-v01@openssh.com", "RSA-CERT", + "ssh-rsa-sha2-512", KEY_RSA_CERT, 0, 1, 1 }, + { "ssh-dss-cert-v01@openssh.com", "DSA-CERT", NULL, + KEY_DSA_CERT, 0, 1, 0 }, # ifdef OPENSSL_HAS_ECC - { "ecdsa-sha2-nistp256-cert-v01@openssh.com", "ECDSA-CERT", + { "ecdsa-sha2-nistp256-cert-v01@openssh.com", "ECDSA-CERT", NULL, KEY_ECDSA_CERT, NID_X9_62_prime256v1, 1, 0 }, - { "ecdsa-sha2-nistp384-cert-v01@openssh.com", "ECDSA-CERT", + { "ecdsa-sha2-nistp384-cert-v01@openssh.com", "ECDSA-CERT", NULL, KEY_ECDSA_CERT, NID_secp384r1, 1, 0 }, # ifdef OPENSSL_HAS_NISTP521 - { "ecdsa-sha2-nistp521-cert-v01@openssh.com", "ECDSA-CERT", - KEY_ECDSA_CERT, NID_secp521r1, 1, 0 }, + { "ecdsa-sha2-nistp521-cert-v01@openssh.com", "ECDSA-CERT", NULL, + KEY_ECDSA_CERT, NID_secp521r1, 1, 0 }, # endif /* OPENSSL_HAS_NISTP521 */ # endif /* OPENSSL_HAS_ECC */ #endif /* WITH_OPENSSL */ - { NULL, NULL, -1, -1, 0, 0 } + { NULL, NULL, NULL, -1, -1, 0, 0 } }; const char * @@ -2207,8 +2225,8 @@ sshkey_froms(struct sshbuf *buf, struct sshkey **keyp) return r; } -int -sshkey_sigtype(const u_char *sig, size_t siglen, char **sigtypep) +static int +get_sigtype(const u_char *sig, size_t siglen, char **sigtypep) { int r; struct sshbuf *b = NULL; @@ -2232,6 +2250,50 @@ sshkey_sigtype(const u_char *sig, size_t siglen, char **sigtypep) return r; } +/* + * Returns the expected signature algorithm for a given public key algorithm. + */ +const char * +sshkey_sigalg_by_name(const char *name) +{ + const struct keytype *kt; + + for (kt = keytypes; kt->type != -1; kt++) { + if (strcmp(kt->name, name) != 0) + continue; + if (kt->sigalg != NULL) + return kt->sigalg; + if (!kt->cert) + return kt->name; + return sshkey_ssh_name_from_type_nid( + sshkey_type_plain(kt->type), kt->nid); + } + return NULL; +} + +/* + * Verifies that the signature algorithm appearing inside the signature blob + * matches that which was requested. + */ +int +sshkey_check_sigtype(const u_char *sig, size_t siglen, + const char *requested_alg) +{ + const char *expected_alg; + char *sigtype = NULL; + int r; + + if (requested_alg == NULL) + return 0; + if ((expected_alg = sshkey_sigalg_by_name(requested_alg)) == NULL) + return SSH_ERR_INVALID_ARGUMENT; + if ((r = get_sigtype(sig, siglen, &sigtype)) != 0) + return r; + r = strcmp(expected_alg, sigtype) == 0; + free(sigtype); + return r ? 0 : SSH_ERR_SIGN_ALG_UNSUPPORTED; +} + int sshkey_sign(const struct sshkey *key, u_char **sigp, size_t *lenp, diff --git a/sshkey.h b/sshkey.h index 155cd45ae..9060b2ecb 100644 --- a/sshkey.h +++ b/sshkey.h @@ -1,4 +1,4 @@ -/* $OpenBSD: sshkey.h,v 1.24 2018/02/23 15:58:38 markus Exp $ */ +/* $OpenBSD: sshkey.h,v 1.26 2018/07/03 13:20:25 djm Exp $ */ /* * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. @@ -191,11 +191,12 @@ int sshkey_puts_opts(const struct sshkey *, struct sshbuf *, int sshkey_plain_to_blob(const struct sshkey *, u_char **, size_t *); int sshkey_putb_plain(const struct sshkey *, struct sshbuf *); -int sshkey_sigtype(const u_char *, size_t, char **); int sshkey_sign(const struct sshkey *, u_char **, size_t *, const u_char *, size_t, const char *, u_int); int sshkey_verify(const struct sshkey *, const u_char *, size_t, const u_char *, size_t, const char *, u_int); +int sshkey_check_sigtype(const u_char *, size_t, const char *); +const char *sshkey_sigalg_by_name(const char *); /* for debug */ void sshkey_dump_ec_point(const EC_GROUP *, const EC_POINT *); diff --git a/sshlogin.c b/sshlogin.c index cea3e7697..1b2ee5f85 100644 --- a/sshlogin.c +++ b/sshlogin.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sshlogin.c,v 1.32 2015/12/26 20:51:35 guenther Exp $ */ +/* $OpenBSD: sshlogin.c,v 1.33 2018/07/09 21:26:02 markus Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -55,13 +55,15 @@ #include #include +#include "sshlogin.h" +#include "ssherr.h" #include "loginrec.h" #include "log.h" -#include "buffer.h" +#include "sshbuf.h" #include "misc.h" #include "servconf.h" -extern Buffer loginmsg; +extern struct sshbuf *loginmsg; extern ServerOptions options; /* @@ -88,8 +90,9 @@ static void store_lastlog_message(const char *user, uid_t uid) { #ifndef NO_SSH_LASTLOG - char *time_string, hostname[HOST_NAME_MAX+1] = "", buf[512]; + char *time_string, hostname[HOST_NAME_MAX+1] = ""; time_t last_login_time; + int r; if (!options.print_lastlog) return; @@ -97,7 +100,9 @@ store_lastlog_message(const char *user, uid_t uid) # ifdef CUSTOM_SYS_AUTH_GET_LASTLOGIN_MSG time_string = sys_auth_get_lastlogin_msg(user, uid); if (time_string != NULL) { - buffer_append(&loginmsg, time_string, strlen(time_string)); + if ((r = sshbuf_put(loginmsg, + time_string, strlen(time_string))) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); free(time_string); } # else @@ -108,12 +113,13 @@ store_lastlog_message(const char *user, uid_t uid) time_string = ctime(&last_login_time); time_string[strcspn(time_string, "\n")] = '\0'; if (strcmp(hostname, "") == 0) - snprintf(buf, sizeof(buf), "Last login: %s\r\n", + r = sshbuf_putf(loginmsg, "Last login: %s\r\n", time_string); else - snprintf(buf, sizeof(buf), "Last login: %s from %s\r\n", + r = sshbuf_putf(loginmsg, "Last login: %s from %s\r\n", time_string, hostname); - buffer_append(&loginmsg, buf, strlen(buf)); + if (r != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); } # endif /* CUSTOM_SYS_AUTH_GET_LASTLOGIN_MSG */ #endif /* NO_SSH_LASTLOG */ diff --git a/ttymodes.c b/ttymodes.c index f9fdb92de..f0c2a5d37 100644 --- a/ttymodes.c +++ b/ttymodes.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ttymodes.c,v 1.33 2018/02/16 04:43:11 dtucker Exp $ */ +/* $OpenBSD: ttymodes.c,v 1.34 2018/07/09 21:20:26 markus Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -55,8 +55,8 @@ #include "packet.h" #include "log.h" #include "compat.h" -#include "buffer.h" -#include "compat.h" +#include "sshbuf.h" +#include "ssherr.h" #define TTY_OP_END 0 /* @@ -276,17 +276,18 @@ special_char_decode(u_int c) * being constructed. */ void -tty_make_modes(int fd, struct termios *tiop) +ssh_tty_make_modes(struct ssh *ssh, int fd, struct termios *tiop) { struct termios tio; - int baud; - Buffer buf; + struct sshbuf *buf; + int r, ibaud, obaud; - buffer_init(&buf); + if ((buf = sshbuf_new()) == NULL) + fatal("%s: sshbuf_new failed", __func__); if (tiop == NULL) { if (fd == -1) { - debug("tty_make_modes: no fd or tio"); + debug("%s: no fd or tio", __func__); goto end; } if (tcgetattr(fd, &tio) == -1) { @@ -297,27 +298,29 @@ tty_make_modes(int fd, struct termios *tiop) tio = *tiop; /* Store input and output baud rates. */ - baud = speed_to_baud(cfgetospeed(&tio)); - buffer_put_char(&buf, TTY_OP_OSPEED); - buffer_put_int(&buf, baud); - baud = speed_to_baud(cfgetispeed(&tio)); - buffer_put_char(&buf, TTY_OP_ISPEED); - buffer_put_int(&buf, baud); + obaud = speed_to_baud(cfgetospeed(&tio)); + ibaud = speed_to_baud(cfgetispeed(&tio)); + if ((r = sshbuf_put_u8(buf, TTY_OP_OSPEED)) != 0 || + (r = sshbuf_put_u32(buf, obaud)) != 0 || + (r = sshbuf_put_u8(buf, TTY_OP_ISPEED)) != 0 || + (r = sshbuf_put_u32(buf, ibaud)) != 0) + fatal("%s: buffer error: %s", __func__, ssh_err(r)); /* Store values of mode flags. */ #define TTYCHAR(NAME, OP) \ - buffer_put_char(&buf, OP); \ - buffer_put_int(&buf, special_char_encode(tio.c_cc[NAME])); + if ((r = sshbuf_put_u8(buf, OP)) != 0 || \ + (r = sshbuf_put_u32(buf, \ + special_char_encode(tio.c_cc[NAME]))) != 0) \ + fatal("%s: buffer error: %s", __func__, ssh_err(r)); \ #define SSH_TTYMODE_IUTF8 42 /* for SSH_BUG_UTF8TTYMODE */ #define TTYMODE(NAME, FIELD, OP) \ if (OP == SSH_TTYMODE_IUTF8 && (datafellows & SSH_BUG_UTF8TTYMODE)) { \ debug3("%s: SSH_BUG_UTF8TTYMODE", __func__); \ - } else { \ - buffer_put_char(&buf, OP); \ - buffer_put_int(&buf, ((tio.FIELD & NAME) != 0)); \ - } + } else if ((r = sshbuf_put_u8(buf, OP)) != 0 || \ + (r = sshbuf_put_u32(buf, ((tio.FIELD & NAME) != 0))) != 0) \ + fatal("%s: buffer error: %s", __func__, ssh_err(r)); \ #include "ttymodes.h" @@ -326,9 +329,10 @@ tty_make_modes(int fd, struct termios *tiop) end: /* Mark end of mode data. */ - buffer_put_char(&buf, TTY_OP_END); - packet_put_string(buffer_ptr(&buf), buffer_len(&buf)); - buffer_free(&buf); + if ((r = sshbuf_put_u8(buf, TTY_OP_END)) != 0 || + (r = sshpkt_put_stringb(ssh, buf)) != 0) + fatal("%s: packet error: %s", __func__, ssh_err(r)); + sshbuf_free(buf); } /* @@ -336,16 +340,24 @@ end: * manner from a packet being read. */ void -tty_parse_modes(int fd, int *n_bytes_ptr) +ssh_tty_parse_modes(struct ssh *ssh, int fd) { struct termios tio; - int opcode, baud; - int n_bytes = 0; - int failure = 0; + struct sshbuf *buf; + const u_char *data; + u_char opcode; + u_int baud, u; + int r, failure = 0; + size_t len; - *n_bytes_ptr = packet_get_int(); - if (*n_bytes_ptr == 0) + if ((r = sshpkt_get_string_direct(ssh, &data, &len)) != 0) + fatal("%s: packet error: %s", __func__, ssh_err(r)); + if (len == 0) return; + if ((buf = sshbuf_from(data, len)) == NULL) { + error("%s: sshbuf_from failed", __func__); + return; + } /* * Get old attributes for the terminal. We will modify these @@ -357,42 +369,48 @@ tty_parse_modes(int fd, int *n_bytes_ptr) failure = -1; } - for (;;) { - n_bytes += 1; - opcode = packet_get_char(); + while (sshbuf_len(buf) > 0) { + if ((r = sshbuf_get_u8(buf, &opcode)) != 0) + fatal("%s: packet error: %s", __func__, ssh_err(r)); switch (opcode) { case TTY_OP_END: goto set; case TTY_OP_ISPEED: - n_bytes += 4; - baud = packet_get_int(); + if ((r = sshbuf_get_u32(buf, &baud)) != 0) + fatal("%s: packet error: %s", + __func__, ssh_err(r)); if (failure != -1 && cfsetispeed(&tio, baud_to_speed(baud)) == -1) error("cfsetispeed failed for %d", baud); break; case TTY_OP_OSPEED: - n_bytes += 4; - baud = packet_get_int(); + if ((r = sshbuf_get_u32(buf, &baud)) != 0) + fatal("%s: packet error: %s", + __func__, ssh_err(r)); if (failure != -1 && cfsetospeed(&tio, baud_to_speed(baud)) == -1) error("cfsetospeed failed for %d", baud); break; #define TTYCHAR(NAME, OP) \ - case OP: \ - n_bytes += 4; \ - tio.c_cc[NAME] = special_char_decode(packet_get_int()); \ - break; + case OP: \ + if ((r = sshbuf_get_u32(buf, &u)) != 0) \ + fatal("%s: packet error: %s", __func__, \ + ssh_err(r)); \ + tio.c_cc[NAME] = special_char_decode(u); \ + break; #define TTYMODE(NAME, FIELD, OP) \ - case OP: \ - n_bytes += 4; \ - if (packet_get_int()) \ - tio.FIELD |= NAME; \ - else \ - tio.FIELD &= ~NAME; \ - break; + case OP: \ + if ((r = sshbuf_get_u32(buf, &u)) != 0) \ + fatal("%s: packet error: %s", __func__, \ + ssh_err(r)); \ + if (u) \ + tio.FIELD |= NAME; \ + else \ + tio.FIELD &= ~NAME; \ + break; #include "ttymodes.h" @@ -410,11 +428,12 @@ tty_parse_modes(int fd, int *n_bytes_ptr) * to stop. */ if (opcode > 0 && opcode < 160) { - n_bytes += 4; - (void) packet_get_int(); + if ((r = sshbuf_get_u32(buf, NULL)) != 0) + fatal("%s: packet error: %s", __func__, + ssh_err(r)); break; } else { - logit("parse_tty_modes: unknown opcode %d", + logit("%s: unknown opcode %d", __func__, opcode); goto set; } @@ -422,10 +441,10 @@ tty_parse_modes(int fd, int *n_bytes_ptr) } set: - if (*n_bytes_ptr != n_bytes) { - *n_bytes_ptr = n_bytes; - logit("parse_tty_modes: n_bytes_ptr != n_bytes: %d %d", - *n_bytes_ptr, n_bytes); + len = sshbuf_len(buf); + sshbuf_free(buf); + if (len > 0) { + logit("%s: %zu bytes left", __func__, len); return; /* Don't process bytes passed */ } if (failure == -1) diff --git a/uidswap.c b/uidswap.c index 8bf6b244e..49f76d818 100644 --- a/uidswap.c +++ b/uidswap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: uidswap.c,v 1.39 2015/06/24 01:49:19 dtucker Exp $ */ +/* $OpenBSD: uidswap.c,v 1.41 2018/07/18 11:34:04 dtucker Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -49,6 +49,7 @@ static gid_t saved_egid = 0; /* Saved effective uid. */ static int privileged = 0; static int temporarily_use_uid_effective = 0; +static uid_t user_groups_uid; static gid_t *saved_egroups = NULL, *user_groups = NULL; static int saved_egroupslen = -1, user_groupslen = -1; @@ -92,10 +93,11 @@ temporarily_use_uid(struct passwd *pw) fatal("getgroups: %.100s", strerror(errno)); } else { /* saved_egroupslen == 0 */ free(saved_egroups); + saved_egroups = NULL; } /* set and save the user's groups */ - if (user_groupslen == -1) { + if (user_groupslen == -1 || user_groups_uid != pw->pw_uid) { if (initgroups(pw->pw_name, pw->pw_gid) < 0) fatal("initgroups: %s: %.100s", pw->pw_name, strerror(errno)); @@ -110,7 +112,9 @@ temporarily_use_uid(struct passwd *pw) fatal("getgroups: %.100s", strerror(errno)); } else { /* user_groupslen == 0 */ free(user_groups); + user_groups = NULL; } + user_groups_uid = pw->pw_uid; } /* Set the effective uid to the given (unprivileged) uid. */ if (setgroups(user_groupslen, user_groups) < 0) @@ -131,37 +135,6 @@ temporarily_use_uid(struct passwd *pw) strerror(errno)); } -void -permanently_drop_suid(uid_t uid) -{ -#ifndef NO_UID_RESTORATION_TEST - uid_t old_uid = getuid(); -#endif - - debug("permanently_drop_suid: %u", (u_int)uid); - if (setresuid(uid, uid, uid) < 0) - fatal("setresuid %u: %.100s", (u_int)uid, strerror(errno)); - -#ifndef NO_UID_RESTORATION_TEST - /* - * Try restoration of UID if changed (test clearing of saved uid). - * - * Note that we don't do this on Cygwin, or on Solaris-based platforms - * where fine-grained privileges are available (the user might be - * deliberately allowed the right to setuid back to root). - */ - if (old_uid != uid && - (setuid(old_uid) != -1 || seteuid(old_uid) != -1)) - fatal("%s: was able to restore old [e]uid", __func__); -#endif - - /* Verify UID drop was successful */ - if (getuid() != uid || geteuid() != uid) { - fatal("%s: euid incorrect uid:%u euid:%u (should be %u)", - __func__, (u_int)getuid(), (u_int)geteuid(), (u_int)uid); - } -} - /* * Restores to the original (privileged) uid. */ diff --git a/uidswap.h b/uidswap.h index 1c1163d75..4ac91aa04 100644 --- a/uidswap.h +++ b/uidswap.h @@ -1,4 +1,4 @@ -/* $OpenBSD: uidswap.h,v 1.13 2006/08/03 03:34:42 deraadt Exp $ */ +/* $OpenBSD: uidswap.h,v 1.14 2018/07/18 11:34:05 dtucker Exp $ */ /* * Author: Tatu Ylonen @@ -15,4 +15,3 @@ void temporarily_use_uid(struct passwd *); void restore_uid(void); void permanently_set_uid(struct passwd *); -void permanently_drop_suid(uid_t); diff --git a/umac.c b/umac.c index eab831072..ccae39f30 100644 --- a/umac.c +++ b/umac.c @@ -1,4 +1,4 @@ -/* $OpenBSD: umac.c,v 1.16 2017/12/12 15:06:12 naddy Exp $ */ +/* $OpenBSD: umac.c,v 1.17 2018/04/10 00:10:49 djm Exp $ */ /* ----------------------------------------------------------------------- * * umac.c -- C Implementation UMAC Message Authentication @@ -65,7 +65,7 @@ /* #define AES_IMPLEMENTAION 1 1 = OpenSSL, 2 = Barreto, 3 = Gladman */ /* #define SSE2 0 Is SSE2 is available? */ /* #define RUN_TESTS 0 Run basic correctness/speed tests */ -/* #define UMAC_AE_SUPPORT 0 Enable auhthenticated encrytion */ +/* #define UMAC_AE_SUPPORT 0 Enable authenticated encryption */ /* ---------------------------------------------------------------------- */ /* -- Global Includes --------------------------------------------------- */ @@ -295,9 +295,9 @@ static void pdf_gen_xor(pdf_ctx *pc, const UINT8 nonce[8], UINT8 buf[8]) * Before beginning another hash calculation the nh_reset() routine * must be called. The single-buffer routine, nh(), is equivalent to * the sequence of calls nh_update() and nh_final(); however it is - * optimized and should be prefered whenever the multiple-buffer interface + * optimized and should be preferred whenever the multiple-buffer interface * is not necessary. When using either interface, it is the client's - * responsability to pass no more than L1_KEY_LEN bytes per hash result. + * responsibility to pass no more than L1_KEY_LEN bytes per hash result. * * The routine nh_init() initializes the nh_ctx data structure and * must be called once, before any other PDF routine. @@ -319,8 +319,8 @@ static void pdf_gen_xor(pdf_ctx *pc, const UINT8 nonce[8], UINT8 buf[8]) typedef struct { UINT8 nh_key [L1_KEY_LEN + L1_KEY_SHIFT * (STREAMS - 1)]; /* NH Key */ UINT8 data [HASH_BUF_BYTES]; /* Incoming data buffer */ - int next_data_empty; /* Bookeeping variable for data buffer. */ - int bytes_hashed; /* Bytes (out of L1_KEY_LEN) incorperated. */ + int next_data_empty; /* Bookkeeping variable for data buffer. */ + int bytes_hashed; /* Bytes (out of L1_KEY_LEN) incorporated. */ UINT64 state[STREAMS]; /* on-line state */ } nh_ctx; @@ -851,7 +851,7 @@ static void poly_hash(uhash_ctx_t hc, UINT32 data_in[]) /* The final step in UHASH is an inner-product hash. The poly hash - * produces a result not neccesarily WORD_LEN bytes long. The inner- + * produces a result not necessarily WORD_LEN bytes long. The inner- * product hash breaks the polyhash output into 16-bit chunks and * multiplies each with a 36 bit key. */ diff --git a/utf8.c b/utf8.c index bc131385f..db7cb8f35 100644 --- a/utf8.c +++ b/utf8.c @@ -1,4 +1,4 @@ -/* $OpenBSD: utf8.c,v 1.7 2017/05/31 09:15:42 deraadt Exp $ */ +/* $OpenBSD: utf8.c,v 1.8 2018/08/21 13:56:27 schwarze Exp $ */ /* * Copyright (c) 2016 Ingo Schwarze * @@ -53,6 +53,8 @@ static int vasnmprintf(char **, size_t, int *, const char *, va_list); * For state-dependent encodings, recovery is impossible. * For arbitrary encodings, replacement of non-printable * characters would be non-trivial and too fragile. + * The comments indicate what nl_langinfo(CODESET) + * returns for US-ASCII on various operating systems. */ static int @@ -60,9 +62,12 @@ dangerous_locale(void) { char *loc; loc = nl_langinfo(CODESET); - return strcmp(loc, "US-ASCII") != 0 && strcmp(loc, "UTF-8") != 0 && - strcmp(loc, "ANSI_X3.4-1968") != 0 && strcmp(loc, "646") != 0 && - strcmp(loc, "") != 0; + return strcmp(loc, "UTF-8") != 0 && + strcmp(loc, "US-ASCII") != 0 && /* OpenBSD */ + strcmp(loc, "ANSI_X3.4-1968") != 0 && /* Linux */ + strcmp(loc, "ISO8859-1") != 0 && /* AIX */ + strcmp(loc, "646") != 0 && /* Solaris, NetBSD */ + strcmp(loc, "") != 0; /* Solaris 6 */ } static int diff --git a/version.h b/version.h index f18bcd255..9b9f0e725 100644 --- a/version.h +++ b/version.h @@ -1,6 +1,6 @@ -/* $OpenBSD: version.h,v 1.81 2018/03/24 19:29:03 markus Exp $ */ +/* $OpenBSD: version.h,v 1.82 2018/07/03 11:42:12 djm Exp $ */ -#define SSH_VERSION "OpenSSH_for_Windows_7.7" +#define SSH_VERSION "OpenSSH_for_Windows_7.8" #define SSH_PORTABLE "p1" #define SSH_RELEASE SSH_VERSION SSH_PORTABLE diff --git a/xmss_wots.c b/xmss_wots.c index b4702ed8d..ed904cd75 100644 --- a/xmss_wots.c +++ b/xmss_wots.c @@ -1,4 +1,4 @@ -/* $OpenBSD: xmss_wots.c,v 1.2 2018/02/26 03:56:44 dtucker Exp $ */ +/* $OpenBSD: xmss_wots.c,v 1.3 2018/04/10 00:10:49 djm Exp $ */ /* wots.c version 20160722 Andreas Hülsing @@ -65,7 +65,7 @@ static void expand_seed(unsigned char *outseeds, const unsigned char *inseed, co * Computes the chaining function. * out and in have to be n-byte arrays * - * interpretes in as start-th value of the chain + * interprets in as start-th value of the chain * addr has to contain the address of the chain */ static void gen_chain(unsigned char *out, const unsigned char *in, unsigned int start, unsigned int steps, const wots_params *params, const unsigned char *pub_seed, uint32_t addr[8])