All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] [PATCH 0/5] syscalls: Add tests to verify the _time_high fields
@ 2020-05-21 10:47 Viresh Kumar
  2020-05-21 10:47 ` [LTP] [PATCH 1/5] syscalls:ipc: Move libraries to libs/ director Viresh Kumar
                   ` (5 more replies)
  0 siblings, 6 replies; 32+ messages in thread
From: Viresh Kumar @ 2020-05-21 10:47 UTC (permalink / raw)
  To: ltp

Hello,

This patchset adds a new test to three syscalls to verify that the
extended fields, _time_high, are cleared by the kernel. This was
suggested by Arnd.

I did run them, but on a 64 bit machine. Please see if you can check
that they work properly on 32 bit machines, where we really want to test
them. This is rebased over ltp master.

Cyril, This conflicts a bit with my other time64 syscall tests, I will
rebase one of these, after you apply any of these first :)

Viresh Kumar (5):
  syscalls:ipc: Move libraries to libs/ director
  include: Add declaration of struct ipc64_perm
  syscalls: semctl: Add new test to verify the _time_high fields
  syscalls: shmctl: Add new test to verify the _time_high fields
  syscalls: msgctl: Add new test to verify the _time_high fields

 configure.ac                                  |   4 +
 include/ipcbuf.h                              |  45 +++
 .../syscalls/ipc/lib => include}/ipcmsg.h     |   0
 .../syscalls/ipc/lib => include}/ipcsem.h     |   0
 .../syscalls/ipc/lib => include}/ipcshm.h     |   0
 .../syscalls/ipc/lib => include}/libmsgctl.h  |   0
 .../ipc/libnewipc => include}/libnewipc.h     |   2 +
 include/msgbuf.h                              | 306 ++++++++++++++++++
 include/sembuf.h                              | 234 ++++++++++++++
 include/shmbuf.h                              | 273 ++++++++++++++++
 .../ipc/lib => libs/libltpipc}/Makefile       |   5 +-
 .../ipc/lib => libs/libltpipc}/libipc.c       |   0
 .../ipc/lib => libs/libltpipc}/libmsgctl.c    |   0
 .../libnewipc => libs/libltpnewipc}/Makefile  |   5 +-
 .../libltpnewipc}/libnewipc.c                 |   0
 runtest/syscalls                              |   3 +
 runtest/syscalls-ipc                          |   3 +
 testcases/kernel/syscalls/ipc/Makefile        |  22 --
 testcases/kernel/syscalls/ipc/Makefile.inc    |  28 --
 testcases/kernel/syscalls/ipc/Makefile2.inc   |  22 --
 .../kernel/syscalls/ipc/msgctl/.gitignore     |   1 +
 testcases/kernel/syscalls/ipc/msgctl/Makefile |   5 +-
 testcases/kernel/syscalls/ipc/msgctl/msgctl05 | Bin 0 -> 498784 bytes
 .../kernel/syscalls/ipc/msgctl/msgctl05.c     |  48 +++
 testcases/kernel/syscalls/ipc/msgget/Makefile |   5 +-
 testcases/kernel/syscalls/ipc/msgrcv/Makefile |   5 +-
 .../kernel/syscalls/ipc/msgrcv/msgrcv01.c     |   2 +-
 .../kernel/syscalls/ipc/msgrcv/msgrcv02.c     |   2 +-
 .../kernel/syscalls/ipc/msgrcv/msgrcv03.c     |   2 +-
 .../kernel/syscalls/ipc/msgrcv/msgrcv04.c     |   2 +-
 .../kernel/syscalls/ipc/msgrcv/msgrcv05.c     |   2 +-
 .../kernel/syscalls/ipc/msgrcv/msgrcv06.c     |   2 +-
 testcases/kernel/syscalls/ipc/msgsnd/Makefile |   5 +-
 .../kernel/syscalls/ipc/msgstress/Makefile    |   8 +-
 .../syscalls/ipc/msgstress/msgstress01.c      |   2 +-
 .../syscalls/ipc/msgstress/msgstress02.c      |   2 +-
 .../syscalls/ipc/msgstress/msgstress03.c      |   2 +-
 .../syscalls/ipc/msgstress/msgstress04.c      |   2 +-
 .../kernel/syscalls/ipc/semctl/.gitignore     |   1 +
 testcases/kernel/syscalls/ipc/semctl/Makefile |   8 +-
 .../kernel/syscalls/ipc/semctl/semctl02.c     |   2 +-
 .../kernel/syscalls/ipc/semctl/semctl03.c     |   2 +-
 .../kernel/syscalls/ipc/semctl/semctl04.c     |   2 +-
 .../kernel/syscalls/ipc/semctl/semctl05.c     |   2 +-
 .../kernel/syscalls/ipc/semctl/semctl08.c     |  52 +++
 testcases/kernel/syscalls/ipc/semget/Makefile |   5 +-
 .../kernel/syscalls/ipc/semget/semget01.c     |   4 +-
 .../kernel/syscalls/ipc/semget/semget02.c     |   4 +-
 .../kernel/syscalls/ipc/semget/semget03.c     |   4 +-
 .../kernel/syscalls/ipc/semget/semget05.c     |   2 +-
 .../kernel/syscalls/ipc/semget/semget06.c     |   4 +-
 testcases/kernel/syscalls/ipc/semop/Makefile  |   5 +-
 testcases/kernel/syscalls/ipc/semop/semop03.c |   2 +-
 testcases/kernel/syscalls/ipc/semop/semop04.c |   2 +-
 testcases/kernel/syscalls/ipc/semop/semop05.c |   2 +-
 testcases/kernel/syscalls/ipc/shmat/Makefile  |   5 +-
 .../kernel/syscalls/ipc/shmctl/.gitignore     |   1 +
 testcases/kernel/syscalls/ipc/shmctl/Makefile |  10 +-
 .../kernel/syscalls/ipc/shmctl/shmctl02.c     |   2 +-
 .../kernel/syscalls/ipc/shmctl/shmctl03.c     |   2 +-
 .../kernel/syscalls/ipc/shmctl/shmctl04.c     |   2 +-
 .../kernel/syscalls/ipc/shmctl/shmctl06.c     |  51 +++
 testcases/kernel/syscalls/ipc/shmdt/Makefile  |   5 +-
 testcases/kernel/syscalls/ipc/shmdt/shmdt01.c |   2 +-
 testcases/kernel/syscalls/ipc/shmget/Makefile |   5 +-
 .../kernel/syscalls/ipc/shmget/shmget01.c     |   2 +-
 .../kernel/syscalls/ipc/shmget/shmget02.c     |   2 +-
 .../kernel/syscalls/ipc/shmget/shmget03.c     |   2 +-
 .../kernel/syscalls/ipc/shmget/shmget04.c     |   2 +-
 .../kernel/syscalls/ipc/shmget/shmget05.c     |   2 +-
 testcases/kernel/syscalls/kill/Makefile       |  19 +-
 testcases/kernel/syscalls/kill/kill07.c       |   2 +-
 testcases/kernel/syscalls/mremap/Makefile     |  19 +-
 73 files changed, 1124 insertions(+), 163 deletions(-)
 create mode 100644 include/ipcbuf.h
 rename {testcases/kernel/syscalls/ipc/lib => include}/ipcmsg.h (100%)
 rename {testcases/kernel/syscalls/ipc/lib => include}/ipcsem.h (100%)
 rename {testcases/kernel/syscalls/ipc/lib => include}/ipcshm.h (100%)
 rename {testcases/kernel/syscalls/ipc/lib => include}/libmsgctl.h (100%)
 rename {testcases/kernel/syscalls/ipc/libnewipc => include}/libnewipc.h (98%)
 create mode 100644 include/msgbuf.h
 create mode 100644 include/sembuf.h
 create mode 100644 include/shmbuf.h
 rename {testcases/kernel/syscalls/ipc/lib => libs/libltpipc}/Makefile (63%)
 rename {testcases/kernel/syscalls/ipc/lib => libs/libltpipc}/libipc.c (100%)
 rename {testcases/kernel/syscalls/ipc/lib => libs/libltpipc}/libmsgctl.c (100%)
 rename {testcases/kernel/syscalls/ipc/libnewipc => libs/libltpnewipc}/Makefile (63%)
 rename {testcases/kernel/syscalls/ipc/libnewipc => libs/libltpnewipc}/libnewipc.c (100%)
 delete mode 100644 testcases/kernel/syscalls/ipc/Makefile.inc
 delete mode 100644 testcases/kernel/syscalls/ipc/Makefile2.inc
 create mode 100755 testcases/kernel/syscalls/ipc/msgctl/msgctl05
 create mode 100644 testcases/kernel/syscalls/ipc/msgctl/msgctl05.c
 create mode 100644 testcases/kernel/syscalls/ipc/semctl/semctl08.c
 create mode 100644 testcases/kernel/syscalls/ipc/shmctl/shmctl06.c

-- 
2.25.0.rc1.19.g042ed3e048af


^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 1/5] syscalls:ipc: Move libraries to libs/ director
  2020-05-21 10:47 [LTP] [PATCH 0/5] syscalls: Add tests to verify the _time_high fields Viresh Kumar
@ 2020-05-21 10:47 ` Viresh Kumar
  2020-05-22 12:39   ` Cyril Hrubis
  2020-05-21 10:47 ` [LTP] [PATCH 2/5] include: Add declaration of struct ipc64_perm Viresh Kumar
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 32+ messages in thread
From: Viresh Kumar @ 2020-05-21 10:47 UTC (permalink / raw)
  To: ltp

Move the ipc libraries to libs/ directory. One of the reasons to do this
was to add the capability of adding tests with both old and new test
frameworks in the same ipc test directory.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 .../syscalls/ipc/lib => include}/ipcmsg.h     |  0
 .../syscalls/ipc/lib => include}/ipcsem.h     |  0
 .../syscalls/ipc/lib => include}/ipcshm.h     |  0
 .../syscalls/ipc/lib => include}/libmsgctl.h  |  0
 .../ipc/libnewipc => include}/libnewipc.h     |  2 ++
 .../ipc/lib => libs/libltpipc}/Makefile       |  5 ++--
 .../ipc/lib => libs/libltpipc}/libipc.c       |  0
 .../ipc/lib => libs/libltpipc}/libmsgctl.c    |  0
 .../libnewipc => libs/libltpnewipc}/Makefile  |  5 ++--
 .../libltpnewipc}/libnewipc.c                 |  0
 testcases/kernel/syscalls/ipc/Makefile        | 22 ---------------
 testcases/kernel/syscalls/ipc/Makefile.inc    | 28 -------------------
 testcases/kernel/syscalls/ipc/Makefile2.inc   | 22 ---------------
 testcases/kernel/syscalls/ipc/msgctl/Makefile |  5 +++-
 testcases/kernel/syscalls/ipc/msgget/Makefile |  5 +++-
 testcases/kernel/syscalls/ipc/msgrcv/Makefile |  5 +++-
 .../kernel/syscalls/ipc/msgrcv/msgrcv01.c     |  2 +-
 .../kernel/syscalls/ipc/msgrcv/msgrcv02.c     |  2 +-
 .../kernel/syscalls/ipc/msgrcv/msgrcv03.c     |  2 +-
 .../kernel/syscalls/ipc/msgrcv/msgrcv04.c     |  2 +-
 .../kernel/syscalls/ipc/msgrcv/msgrcv05.c     |  2 +-
 .../kernel/syscalls/ipc/msgrcv/msgrcv06.c     |  2 +-
 testcases/kernel/syscalls/ipc/msgsnd/Makefile |  5 +++-
 .../kernel/syscalls/ipc/msgstress/Makefile    |  8 ++----
 .../syscalls/ipc/msgstress/msgstress01.c      |  2 +-
 .../syscalls/ipc/msgstress/msgstress02.c      |  2 +-
 .../syscalls/ipc/msgstress/msgstress03.c      |  2 +-
 .../syscalls/ipc/msgstress/msgstress04.c      |  2 +-
 testcases/kernel/syscalls/ipc/semctl/Makefile |  5 +++-
 .../kernel/syscalls/ipc/semctl/semctl02.c     |  2 +-
 .../kernel/syscalls/ipc/semctl/semctl03.c     |  2 +-
 .../kernel/syscalls/ipc/semctl/semctl04.c     |  2 +-
 .../kernel/syscalls/ipc/semctl/semctl05.c     |  2 +-
 testcases/kernel/syscalls/ipc/semget/Makefile |  5 +++-
 .../kernel/syscalls/ipc/semget/semget01.c     |  4 +--
 .../kernel/syscalls/ipc/semget/semget02.c     |  4 +--
 .../kernel/syscalls/ipc/semget/semget03.c     |  4 +--
 .../kernel/syscalls/ipc/semget/semget05.c     |  2 +-
 .../kernel/syscalls/ipc/semget/semget06.c     |  4 +--
 testcases/kernel/syscalls/ipc/semop/Makefile  |  5 +++-
 testcases/kernel/syscalls/ipc/semop/semop03.c |  2 +-
 testcases/kernel/syscalls/ipc/semop/semop04.c |  2 +-
 testcases/kernel/syscalls/ipc/semop/semop05.c |  2 +-
 testcases/kernel/syscalls/ipc/shmat/Makefile  |  5 +++-
 testcases/kernel/syscalls/ipc/shmctl/Makefile |  5 +++-
 .../kernel/syscalls/ipc/shmctl/shmctl02.c     |  2 +-
 .../kernel/syscalls/ipc/shmctl/shmctl03.c     |  2 +-
 .../kernel/syscalls/ipc/shmctl/shmctl04.c     |  2 +-
 testcases/kernel/syscalls/ipc/shmdt/Makefile  |  5 +++-
 testcases/kernel/syscalls/ipc/shmdt/shmdt01.c |  2 +-
 testcases/kernel/syscalls/ipc/shmget/Makefile |  5 +++-
 .../kernel/syscalls/ipc/shmget/shmget01.c     |  2 +-
 .../kernel/syscalls/ipc/shmget/shmget02.c     |  2 +-
 .../kernel/syscalls/ipc/shmget/shmget03.c     |  2 +-
 .../kernel/syscalls/ipc/shmget/shmget04.c     |  2 +-
 .../kernel/syscalls/ipc/shmget/shmget05.c     |  2 +-
 testcases/kernel/syscalls/kill/Makefile       | 19 ++-----------
 testcases/kernel/syscalls/kill/kill07.c       |  2 +-
 testcases/kernel/syscalls/mremap/Makefile     | 19 ++-----------
 59 files changed, 95 insertions(+), 162 deletions(-)
 rename {testcases/kernel/syscalls/ipc/lib => include}/ipcmsg.h (100%)
 rename {testcases/kernel/syscalls/ipc/lib => include}/ipcsem.h (100%)
 rename {testcases/kernel/syscalls/ipc/lib => include}/ipcshm.h (100%)
 rename {testcases/kernel/syscalls/ipc/lib => include}/libmsgctl.h (100%)
 rename {testcases/kernel/syscalls/ipc/libnewipc => include}/libnewipc.h (98%)
 rename {testcases/kernel/syscalls/ipc/lib => libs/libltpipc}/Makefile (63%)
 rename {testcases/kernel/syscalls/ipc/lib => libs/libltpipc}/libipc.c (100%)
 rename {testcases/kernel/syscalls/ipc/lib => libs/libltpipc}/libmsgctl.c (100%)
 rename {testcases/kernel/syscalls/ipc/libnewipc => libs/libltpnewipc}/Makefile (63%)
 rename {testcases/kernel/syscalls/ipc/libnewipc => libs/libltpnewipc}/libnewipc.c (100%)
 delete mode 100644 testcases/kernel/syscalls/ipc/Makefile.inc
 delete mode 100644 testcases/kernel/syscalls/ipc/Makefile2.inc

diff --git a/testcases/kernel/syscalls/ipc/lib/ipcmsg.h b/include/ipcmsg.h
similarity index 100%
rename from testcases/kernel/syscalls/ipc/lib/ipcmsg.h
rename to include/ipcmsg.h
diff --git a/testcases/kernel/syscalls/ipc/lib/ipcsem.h b/include/ipcsem.h
similarity index 100%
rename from testcases/kernel/syscalls/ipc/lib/ipcsem.h
rename to include/ipcsem.h
diff --git a/testcases/kernel/syscalls/ipc/lib/ipcshm.h b/include/ipcshm.h
similarity index 100%
rename from testcases/kernel/syscalls/ipc/lib/ipcshm.h
rename to include/ipcshm.h
diff --git a/testcases/kernel/syscalls/ipc/lib/libmsgctl.h b/include/libmsgctl.h
similarity index 100%
rename from testcases/kernel/syscalls/ipc/lib/libmsgctl.h
rename to include/libmsgctl.h
diff --git a/testcases/kernel/syscalls/ipc/libnewipc/libnewipc.h b/include/libnewipc.h
similarity index 98%
rename from testcases/kernel/syscalls/ipc/libnewipc/libnewipc.h
rename to include/libnewipc.h
index 660be8088053..30288cd68ca6 100644
--- a/testcases/kernel/syscalls/ipc/libnewipc/libnewipc.h
+++ b/include/libnewipc.h
@@ -22,6 +22,8 @@
 #ifndef __LIBNEWIPC_H
 #define __LIBNEWIPC_H	1
 
+#include <sys/types.h>
+
 #define MSG_RD	0400
 #define MSG_WR	0200
 #define MSG_RW	(MSG_RD | MSG_WR)
diff --git a/testcases/kernel/syscalls/ipc/lib/Makefile b/libs/libltpipc/Makefile
similarity index 63%
rename from testcases/kernel/syscalls/ipc/lib/Makefile
rename to libs/libltpipc/Makefile
index 19916fa05003..11f38ea0a2a9 100644
--- a/testcases/kernel/syscalls/ipc/lib/Makefile
+++ b/libs/libltpipc/Makefile
@@ -1,10 +1,11 @@
 # SPDX-License-Identifier: GPL-2.0-or-later
 # Copyright (c) International Business Machines  Corp., 2001
 
-top_srcdir		?= ../../../../..
+top_srcdir		?= ../..
 
 include $(top_srcdir)/include/mk/env_pre.mk
 
-LIB			:= libipc.a libmsgctl.a
+LIB			:= libltpipc.a libltpmsgctl.a
 
 include $(top_srcdir)/include/mk/lib.mk
+include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/lib/libipc.c b/libs/libltpipc/libipc.c
similarity index 100%
rename from testcases/kernel/syscalls/ipc/lib/libipc.c
rename to libs/libltpipc/libipc.c
diff --git a/testcases/kernel/syscalls/ipc/lib/libmsgctl.c b/libs/libltpipc/libmsgctl.c
similarity index 100%
rename from testcases/kernel/syscalls/ipc/lib/libmsgctl.c
rename to libs/libltpipc/libmsgctl.c
diff --git a/testcases/kernel/syscalls/ipc/libnewipc/Makefile b/libs/libltpnewipc/Makefile
similarity index 63%
rename from testcases/kernel/syscalls/ipc/libnewipc/Makefile
rename to libs/libltpnewipc/Makefile
index d150fb70f6e8..741c78f81c89 100644
--- a/testcases/kernel/syscalls/ipc/libnewipc/Makefile
+++ b/libs/libltpnewipc/Makefile
@@ -1,10 +1,11 @@
 # SPDX-License-Identifier: GPL-2.0-or-later
 # Copyright (c) 2016 Xiao Yang <yangx.jy@cn.fujitsu.com>
 
-top_srcdir		?= ../../../../..
+top_srcdir		?= ../..
 
 include $(top_srcdir)/include/mk/env_pre.mk
 
-INTERNAL_LIB		:= libnewipc.a
+INTERNAL_LIB		:= libltpnewipc.a
 
 include $(top_srcdir)/include/mk/lib.mk
+include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/libnewipc/libnewipc.c b/libs/libltpnewipc/libnewipc.c
similarity index 100%
rename from testcases/kernel/syscalls/ipc/libnewipc/libnewipc.c
rename to libs/libltpnewipc/libnewipc.c
diff --git a/testcases/kernel/syscalls/ipc/Makefile b/testcases/kernel/syscalls/ipc/Makefile
index 9025a70f0609..7876f4bbd307 100644
--- a/testcases/kernel/syscalls/ipc/Makefile
+++ b/testcases/kernel/syscalls/ipc/Makefile
@@ -4,26 +4,4 @@
 top_srcdir		?= ../../../..
 
 include $(top_srcdir)/include/mk/env_pre.mk
-
-LIBDIR			:= lib
-LIBNEWDIR		:= libnewipc
-FILTER_OUT_DIRS		:= $(LIBDIR) $(LIBNEWDIR)
-LIB			:= $(LIBDIR)/libipc.a $(LIBDIR)/libmsgctl.a
-
-$(LIBDIR):
-	mkdir -p "$@"
-
-$(LIB): $(LIBDIR)
-	$(MAKE) -C $^ -f "$(abs_srcdir)/$^/Makefile" all
-
-MAKE_DEPS		:= $(LIB)
-
-trunk-clean:: | lib-clean libnew-clean
-
-lib-clean:: $(LIBDIR)
-	$(MAKE) -C $^ -f "$(abs_srcdir)/$^/Makefile" clean
-
-libnew-clean:: $(LIBNEWDIR)
-	$(MAKE) -C $^ -f "$(abs_srcdir)/$^/Makefile" clean
-
 include $(top_srcdir)/include/mk/generic_trunk_target.mk
diff --git a/testcases/kernel/syscalls/ipc/Makefile.inc b/testcases/kernel/syscalls/ipc/Makefile.inc
deleted file mode 100644
index c7e82bb18401..000000000000
--- a/testcases/kernel/syscalls/ipc/Makefile.inc
+++ /dev/null
@@ -1,28 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-or-later
-#    kernel/syscalls/ipc testcase suite common definitions Makefile.
-#
-#    Copyright (C) 2009, Cisco Systems Inc.
-#
-# Ngie Cooper, July 2009
-#
-
-# DO NOT USE THIS FILE FOR ipc / lib!!!
-
-LDLIBS			+= -lipc
-LIBDIR			:= ../lib
-
-LIBIPC			:= $(LIBDIR)/libipc.a
-
-$(LIBDIR):
-	mkdir -p "$@"
-
-$(LIBIPC): $(LIBDIR)
-	$(MAKE) -C $^ -f "$(abs_srcdir)/$^/Makefile" all
-
-MAKE_DEPS		:= $(LIBIPC)
-
-CPPFLAGS		+= -I$(abs_srcdir)/$(LIBDIR)
-
-LDFLAGS			+= -L$(abs_builddir)/$(LIBDIR)
-
-# vim: syntax=make
diff --git a/testcases/kernel/syscalls/ipc/Makefile2.inc b/testcases/kernel/syscalls/ipc/Makefile2.inc
deleted file mode 100644
index 17917f5f8964..000000000000
--- a/testcases/kernel/syscalls/ipc/Makefile2.inc
+++ /dev/null
@@ -1,22 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-or-later
-#    kernel/syscalls/ipc testcase suite common definitions Makefile.
-#
-#    Copyright (C) 2016, Cyril Hrubis
-#
-
-LDLIBS			+= -lnewipc
-LIBDIR			:= ../libnewipc
-
-LIBIPC			:= $(LIBDIR)/libnewipc.a
-
-$(LIBDIR):
-	mkdir -p "$@"
-
-$(LIBIPC): $(LIBDIR)
-	$(MAKE) -C $^ -f "$(abs_srcdir)/$^/Makefile" all
-
-MAKE_DEPS		:= $(LIBIPC)
-
-CPPFLAGS		+= -I$(abs_srcdir)/$(LIBDIR)
-
-LDFLAGS			+= -L$(abs_builddir)/$(LIBDIR)
diff --git a/testcases/kernel/syscalls/ipc/msgctl/Makefile b/testcases/kernel/syscalls/ipc/msgctl/Makefile
index 5e4c695dd310..e2b305573247 100644
--- a/testcases/kernel/syscalls/ipc/msgctl/Makefile
+++ b/testcases/kernel/syscalls/ipc/msgctl/Makefile
@@ -4,5 +4,8 @@
 top_srcdir              ?= ../../../../..
 
 include $(top_srcdir)/include/mk/testcases.mk
-include $(abs_srcdir)/../Makefile2.inc
+
+LDLIBS  += -lltpnewipc
+LDFLAGS += -L$(top_builddir)/libs/libltpnewipc
+
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/msgget/Makefile b/testcases/kernel/syscalls/ipc/msgget/Makefile
index 5e4c695dd310..e2b305573247 100644
--- a/testcases/kernel/syscalls/ipc/msgget/Makefile
+++ b/testcases/kernel/syscalls/ipc/msgget/Makefile
@@ -4,5 +4,8 @@
 top_srcdir              ?= ../../../../..
 
 include $(top_srcdir)/include/mk/testcases.mk
-include $(abs_srcdir)/../Makefile2.inc
+
+LDLIBS  += -lltpnewipc
+LDFLAGS += -L$(top_builddir)/libs/libltpnewipc
+
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/msgrcv/Makefile b/testcases/kernel/syscalls/ipc/msgrcv/Makefile
index 401e5e8cbb9f..aa211d37f8ee 100644
--- a/testcases/kernel/syscalls/ipc/msgrcv/Makefile
+++ b/testcases/kernel/syscalls/ipc/msgrcv/Makefile
@@ -4,5 +4,8 @@
 top_srcdir              ?= ../../../../..
 
 include $(top_srcdir)/include/mk/testcases.mk
-include $(abs_srcdir)/../Makefile.inc
+
+LDLIBS  += -lltpipc
+LDFLAGS += -L$(top_builddir)/libs/libltpipc
+
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/msgrcv/msgrcv01.c b/testcases/kernel/syscalls/ipc/msgrcv/msgrcv01.c
index 375d262bcdae..3e89a7f90376 100644
--- a/testcases/kernel/syscalls/ipc/msgrcv/msgrcv01.c
+++ b/testcases/kernel/syscalls/ipc/msgrcv/msgrcv01.c
@@ -181,7 +181,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/msgrcv/msgrcv02.c b/testcases/kernel/syscalls/ipc/msgrcv/msgrcv02.c
index e42cf1f1323d..52cffeaf4e4c 100644
--- a/testcases/kernel/syscalls/ipc/msgrcv/msgrcv02.c
+++ b/testcases/kernel/syscalls/ipc/msgrcv/msgrcv02.c
@@ -159,7 +159,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/msgrcv/msgrcv03.c b/testcases/kernel/syscalls/ipc/msgrcv/msgrcv03.c
index 762b4d51bced..a81f7436dd98 100644
--- a/testcases/kernel/syscalls/ipc/msgrcv/msgrcv03.c
+++ b/testcases/kernel/syscalls/ipc/msgrcv/msgrcv03.c
@@ -136,7 +136,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/msgrcv/msgrcv04.c b/testcases/kernel/syscalls/ipc/msgrcv/msgrcv04.c
index 833ad1aec066..573059c35d13 100644
--- a/testcases/kernel/syscalls/ipc/msgrcv/msgrcv04.c
+++ b/testcases/kernel/syscalls/ipc/msgrcv/msgrcv04.c
@@ -147,7 +147,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/msgrcv/msgrcv05.c b/testcases/kernel/syscalls/ipc/msgrcv/msgrcv05.c
index 66c4341f1aee..4c7a446e79f1 100644
--- a/testcases/kernel/syscalls/ipc/msgrcv/msgrcv05.c
+++ b/testcases/kernel/syscalls/ipc/msgrcv/msgrcv05.c
@@ -181,7 +181,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/msgrcv/msgrcv06.c b/testcases/kernel/syscalls/ipc/msgrcv/msgrcv06.c
index a27d093bed80..e3458b9ad0d7 100644
--- a/testcases/kernel/syscalls/ipc/msgrcv/msgrcv06.c
+++ b/testcases/kernel/syscalls/ipc/msgrcv/msgrcv06.c
@@ -202,7 +202,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 }
diff --git a/testcases/kernel/syscalls/ipc/msgsnd/Makefile b/testcases/kernel/syscalls/ipc/msgsnd/Makefile
index 46f6f108535e..b4930310fc63 100644
--- a/testcases/kernel/syscalls/ipc/msgsnd/Makefile
+++ b/testcases/kernel/syscalls/ipc/msgsnd/Makefile
@@ -8,5 +8,8 @@ FILTER_OUT_MAKE_TARGETS += msgsnd05 msgsnd06
 endif
 
 include $(top_srcdir)/include/mk/testcases.mk
-include $(abs_srcdir)/../Makefile2.inc
+
+LDLIBS  += -lltpnewipc
+LDFLAGS += -L$(top_builddir)/libs/libltpnewipc
+
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/msgstress/Makefile b/testcases/kernel/syscalls/ipc/msgstress/Makefile
index c62bf4131063..5514638297ed 100644
--- a/testcases/kernel/syscalls/ipc/msgstress/Makefile
+++ b/testcases/kernel/syscalls/ipc/msgstress/Makefile
@@ -5,10 +5,8 @@ top_srcdir              ?= ../../../../..
 
 include $(top_srcdir)/include/mk/testcases.mk
 
-LIBMSGCTL               := $(LIBDIR)/libmsgctl.a
-LDLIBS                  += -lmsgctl
+LDLIBS  += -lltpipc
+LDLIBS  += -lltpmsgctl
+LDFLAGS += -L$(top_builddir)/libs/libltpipc
 
-MAKE_DEPS               := $(LIBMSGCTL)
-
-include $(abs_srcdir)/../Makefile.inc
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/msgstress/msgstress01.c b/testcases/kernel/syscalls/ipc/msgstress/msgstress01.c
index 7117e38311c4..0a660c042e95 100644
--- a/testcases/kernel/syscalls/ipc/msgstress/msgstress01.c
+++ b/testcases/kernel/syscalls/ipc/msgstress/msgstress01.c
@@ -39,7 +39,7 @@
 #include <sys/msg.h>
 #include "test.h"
 #include "ipcmsg.h"
-#include "../lib/libmsgctl.h"
+#include "libmsgctl.h"
 
 char *TCID = "msgstress01";
 int TST_TOTAL = 1;
diff --git a/testcases/kernel/syscalls/ipc/msgstress/msgstress02.c b/testcases/kernel/syscalls/ipc/msgstress/msgstress02.c
index 43982bdc20f8..e151310436cb 100644
--- a/testcases/kernel/syscalls/ipc/msgstress/msgstress02.c
+++ b/testcases/kernel/syscalls/ipc/msgstress/msgstress02.c
@@ -37,7 +37,7 @@
 #include <unistd.h>
 #include "test.h"
 #include "ipcmsg.h"
-#include "../lib/libmsgctl.h"
+#include "libmsgctl.h"
 
 char *TCID = "msgstress02";
 int TST_TOTAL = 1;
diff --git a/testcases/kernel/syscalls/ipc/msgstress/msgstress03.c b/testcases/kernel/syscalls/ipc/msgstress/msgstress03.c
index de4b459a1df7..294b401b1b38 100644
--- a/testcases/kernel/syscalls/ipc/msgstress/msgstress03.c
+++ b/testcases/kernel/syscalls/ipc/msgstress/msgstress03.c
@@ -40,7 +40,7 @@
 #include <sys/msg.h>
 #include "test.h"
 #include "ipcmsg.h"
-#include "../lib/libmsgctl.h"
+#include "libmsgctl.h"
 
 char *TCID = "msgstress03";
 int TST_TOTAL = 1;
diff --git a/testcases/kernel/syscalls/ipc/msgstress/msgstress04.c b/testcases/kernel/syscalls/ipc/msgstress/msgstress04.c
index 81383d6c8b11..f1c124990cb1 100644
--- a/testcases/kernel/syscalls/ipc/msgstress/msgstress04.c
+++ b/testcases/kernel/syscalls/ipc/msgstress/msgstress04.c
@@ -38,7 +38,7 @@
 #include <unistd.h>
 #include "test.h"
 #include "ipcmsg.h"
-#include "../lib/libmsgctl.h"
+#include "libmsgctl.h"
 
 char *TCID = "msgstress04";
 int TST_TOTAL = 1;
diff --git a/testcases/kernel/syscalls/ipc/semctl/Makefile b/testcases/kernel/syscalls/ipc/semctl/Makefile
index 401e5e8cbb9f..aa211d37f8ee 100644
--- a/testcases/kernel/syscalls/ipc/semctl/Makefile
+++ b/testcases/kernel/syscalls/ipc/semctl/Makefile
@@ -4,5 +4,8 @@
 top_srcdir              ?= ../../../../..
 
 include $(top_srcdir)/include/mk/testcases.mk
-include $(abs_srcdir)/../Makefile.inc
+
+LDLIBS  += -lltpipc
+LDFLAGS += -L$(top_builddir)/libs/libltpipc
+
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/semctl/semctl02.c b/testcases/kernel/syscalls/ipc/semctl/semctl02.c
index 1fcdd1dc6074..35051f62c196 100644
--- a/testcases/kernel/syscalls/ipc/semctl/semctl02.c
+++ b/testcases/kernel/syscalls/ipc/semctl/semctl02.c
@@ -130,7 +130,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/semctl/semctl03.c b/testcases/kernel/syscalls/ipc/semctl/semctl03.c
index c1006509e484..dc851bfd6fbd 100644
--- a/testcases/kernel/syscalls/ipc/semctl/semctl03.c
+++ b/testcases/kernel/syscalls/ipc/semctl/semctl03.c
@@ -147,7 +147,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/semctl/semctl04.c b/testcases/kernel/syscalls/ipc/semctl/semctl04.c
index a08db1c5c94a..b1f199e6050f 100644
--- a/testcases/kernel/syscalls/ipc/semctl/semctl04.c
+++ b/testcases/kernel/syscalls/ipc/semctl/semctl04.c
@@ -174,7 +174,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/semctl/semctl05.c b/testcases/kernel/syscalls/ipc/semctl/semctl05.c
index 865305484fd1..84dace404083 100644
--- a/testcases/kernel/syscalls/ipc/semctl/semctl05.c
+++ b/testcases/kernel/syscalls/ipc/semctl/semctl05.c
@@ -150,7 +150,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/semget/Makefile b/testcases/kernel/syscalls/ipc/semget/Makefile
index 401e5e8cbb9f..aa211d37f8ee 100644
--- a/testcases/kernel/syscalls/ipc/semget/Makefile
+++ b/testcases/kernel/syscalls/ipc/semget/Makefile
@@ -4,5 +4,8 @@
 top_srcdir              ?= ../../../../..
 
 include $(top_srcdir)/include/mk/testcases.mk
-include $(abs_srcdir)/../Makefile.inc
+
+LDLIBS  += -lltpipc
+LDFLAGS += -L$(top_builddir)/libs/libltpipc
+
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/semget/semget01.c b/testcases/kernel/syscalls/ipc/semget/semget01.c
index a6cdd2d20ab7..217163b3af20 100644
--- a/testcases/kernel/syscalls/ipc/semget/semget01.c
+++ b/testcases/kernel/syscalls/ipc/semget/semget01.c
@@ -56,7 +56,7 @@
  *	none
  */
 
-#include "../lib/ipcsem.h"
+#include "ipcsem.h"
 
 char *TCID = "semget01";
 int TST_TOTAL = 1;
@@ -150,7 +150,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/semget/semget02.c b/testcases/kernel/syscalls/ipc/semget/semget02.c
index af7797189a45..4124514c2963 100644
--- a/testcases/kernel/syscalls/ipc/semget/semget02.c
+++ b/testcases/kernel/syscalls/ipc/semget/semget02.c
@@ -51,7 +51,7 @@
  */
 #include <pwd.h>
 
-#include "../lib/ipcsem.h"
+#include "ipcsem.h"
 
 char *TCID = "semget02";
 int TST_TOTAL = 2;
@@ -138,7 +138,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/semget/semget03.c b/testcases/kernel/syscalls/ipc/semget/semget03.c
index 976c78a521b9..995b4bd3add7 100644
--- a/testcases/kernel/syscalls/ipc/semget/semget03.c
+++ b/testcases/kernel/syscalls/ipc/semget/semget03.c
@@ -50,7 +50,7 @@
  *	none
  */
 
-#include "../lib/ipcsem.h"
+#include "ipcsem.h"
 
 char *TCID = "semget03";
 int TST_TOTAL = 1;
@@ -111,7 +111,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/semget/semget05.c b/testcases/kernel/syscalls/ipc/semget/semget05.c
index 976769619c1e..f801cb8ed53a 100644
--- a/testcases/kernel/syscalls/ipc/semget/semget05.c
+++ b/testcases/kernel/syscalls/ipc/semget/semget05.c
@@ -48,7 +48,7 @@
  *	none
  */
 
-#include "../lib/ipcsem.h"
+#include "ipcsem.h"
 
 char *TCID = "semget05";
 int TST_TOTAL = 1;
diff --git a/testcases/kernel/syscalls/ipc/semget/semget06.c b/testcases/kernel/syscalls/ipc/semget/semget06.c
index 858006d80dd6..52297c010092 100644
--- a/testcases/kernel/syscalls/ipc/semget/semget06.c
+++ b/testcases/kernel/syscalls/ipc/semget/semget06.c
@@ -50,7 +50,7 @@
  *	none
  */
 
-#include "../lib/ipcsem.h"
+#include "ipcsem.h"
 
 char *TCID = "semget06";
 int TST_TOTAL = 2;
@@ -121,7 +121,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/semop/Makefile b/testcases/kernel/syscalls/ipc/semop/Makefile
index 401e5e8cbb9f..aa211d37f8ee 100644
--- a/testcases/kernel/syscalls/ipc/semop/Makefile
+++ b/testcases/kernel/syscalls/ipc/semop/Makefile
@@ -4,5 +4,8 @@
 top_srcdir              ?= ../../../../..
 
 include $(top_srcdir)/include/mk/testcases.mk
-include $(abs_srcdir)/../Makefile.inc
+
+LDLIBS  += -lltpipc
+LDFLAGS += -L$(top_builddir)/libs/libltpipc
+
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/semop/semop03.c b/testcases/kernel/syscalls/ipc/semop/semop03.c
index a904e99439e2..9c1c58202ad3 100644
--- a/testcases/kernel/syscalls/ipc/semop/semop03.c
+++ b/testcases/kernel/syscalls/ipc/semop/semop03.c
@@ -130,7 +130,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/semop/semop04.c b/testcases/kernel/syscalls/ipc/semop/semop04.c
index bf425b54bb4c..c1fa2eba7584 100644
--- a/testcases/kernel/syscalls/ipc/semop/semop04.c
+++ b/testcases/kernel/syscalls/ipc/semop/semop04.c
@@ -148,7 +148,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/semop/semop05.c b/testcases/kernel/syscalls/ipc/semop/semop05.c
index 6ed25014c7af..e97ad42fe01d 100644
--- a/testcases/kernel/syscalls/ipc/semop/semop05.c
+++ b/testcases/kernel/syscalls/ipc/semop/semop05.c
@@ -256,7 +256,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/shmat/Makefile b/testcases/kernel/syscalls/ipc/shmat/Makefile
index 5e4c695dd310..e2b305573247 100644
--- a/testcases/kernel/syscalls/ipc/shmat/Makefile
+++ b/testcases/kernel/syscalls/ipc/shmat/Makefile
@@ -4,5 +4,8 @@
 top_srcdir              ?= ../../../../..
 
 include $(top_srcdir)/include/mk/testcases.mk
-include $(abs_srcdir)/../Makefile2.inc
+
+LDLIBS  += -lltpnewipc
+LDFLAGS += -L$(top_builddir)/libs/libltpnewipc
+
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/shmctl/Makefile b/testcases/kernel/syscalls/ipc/shmctl/Makefile
index 77cba6c335d0..dda6d636f755 100644
--- a/testcases/kernel/syscalls/ipc/shmctl/Makefile
+++ b/testcases/kernel/syscalls/ipc/shmctl/Makefile
@@ -7,5 +7,8 @@ shmctl05: CFLAGS += -pthread
 shmctl05: LDLIBS += -lrt
 
 include $(top_srcdir)/include/mk/testcases.mk
-include $(abs_srcdir)/../Makefile.inc
+
+LDLIBS  += -lltpipc
+LDFLAGS += -L$(top_builddir)/libs/libltpipc
+
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/shmctl/shmctl02.c b/testcases/kernel/syscalls/ipc/shmctl/shmctl02.c
index 563f6870ade8..0b97bb240f02 100644
--- a/testcases/kernel/syscalls/ipc/shmctl/shmctl02.c
+++ b/testcases/kernel/syscalls/ipc/shmctl/shmctl02.c
@@ -174,7 +174,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/shmctl/shmctl03.c b/testcases/kernel/syscalls/ipc/shmctl/shmctl03.c
index 97cf27baf14c..798eadad6549 100644
--- a/testcases/kernel/syscalls/ipc/shmctl/shmctl03.c
+++ b/testcases/kernel/syscalls/ipc/shmctl/shmctl03.c
@@ -176,7 +176,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/shmctl/shmctl04.c b/testcases/kernel/syscalls/ipc/shmctl/shmctl04.c
index c9d13d46e571..40cfa9419f65 100644
--- a/testcases/kernel/syscalls/ipc/shmctl/shmctl04.c
+++ b/testcases/kernel/syscalls/ipc/shmctl/shmctl04.c
@@ -97,7 +97,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/shmdt/Makefile b/testcases/kernel/syscalls/ipc/shmdt/Makefile
index 401e5e8cbb9f..aa211d37f8ee 100644
--- a/testcases/kernel/syscalls/ipc/shmdt/Makefile
+++ b/testcases/kernel/syscalls/ipc/shmdt/Makefile
@@ -4,5 +4,8 @@
 top_srcdir              ?= ../../../../..
 
 include $(top_srcdir)/include/mk/testcases.mk
-include $(abs_srcdir)/../Makefile.inc
+
+LDLIBS  += -lltpipc
+LDFLAGS += -L$(top_builddir)/libs/libltpipc
+
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/shmdt/shmdt01.c b/testcases/kernel/syscalls/ipc/shmdt/shmdt01.c
index fc167e7fd8d1..697613a47c12 100644
--- a/testcases/kernel/syscalls/ipc/shmdt/shmdt01.c
+++ b/testcases/kernel/syscalls/ipc/shmdt/shmdt01.c
@@ -184,7 +184,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/shmget/Makefile b/testcases/kernel/syscalls/ipc/shmget/Makefile
index 401e5e8cbb9f..aa211d37f8ee 100644
--- a/testcases/kernel/syscalls/ipc/shmget/Makefile
+++ b/testcases/kernel/syscalls/ipc/shmget/Makefile
@@ -4,5 +4,8 @@
 top_srcdir              ?= ../../../../..
 
 include $(top_srcdir)/include/mk/testcases.mk
-include $(abs_srcdir)/../Makefile.inc
+
+LDLIBS  += -lltpipc
+LDFLAGS += -L$(top_builddir)/libs/libltpipc
+
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/shmget/shmget01.c b/testcases/kernel/syscalls/ipc/shmget/shmget01.c
index ae63baf6fe6c..586f4c263934 100644
--- a/testcases/kernel/syscalls/ipc/shmget/shmget01.c
+++ b/testcases/kernel/syscalls/ipc/shmget/shmget01.c
@@ -149,7 +149,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/shmget/shmget02.c b/testcases/kernel/syscalls/ipc/shmget/shmget02.c
index 71d161614afa..4436ca7f8492 100644
--- a/testcases/kernel/syscalls/ipc/shmget/shmget02.c
+++ b/testcases/kernel/syscalls/ipc/shmget/shmget02.c
@@ -144,7 +144,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/shmget/shmget03.c b/testcases/kernel/syscalls/ipc/shmget/shmget03.c
index b9ff1a4e6572..96ebf3608a6d 100644
--- a/testcases/kernel/syscalls/ipc/shmget/shmget03.c
+++ b/testcases/kernel/syscalls/ipc/shmget/shmget03.c
@@ -123,7 +123,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/shmget/shmget04.c b/testcases/kernel/syscalls/ipc/shmget/shmget04.c
index b0cff30569d7..60a263c77687 100644
--- a/testcases/kernel/syscalls/ipc/shmget/shmget04.c
+++ b/testcases/kernel/syscalls/ipc/shmget/shmget04.c
@@ -125,7 +125,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/ipc/shmget/shmget05.c b/testcases/kernel/syscalls/ipc/shmget/shmget05.c
index 01770ba7da0a..de9544591b74 100644
--- a/testcases/kernel/syscalls/ipc/shmget/shmget05.c
+++ b/testcases/kernel/syscalls/ipc/shmget/shmget05.c
@@ -157,7 +157,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/kill/Makefile b/testcases/kernel/syscalls/kill/Makefile
index a6577183b2bb..3e32978fc86a 100644
--- a/testcases/kernel/syscalls/kill/Makefile
+++ b/testcases/kernel/syscalls/kill/Makefile
@@ -5,22 +5,7 @@ top_srcdir		?= ../../../..
 
 include $(top_srcdir)/include/mk/testcases.mk
 
-LDLIBS                  += -lipc
-
-LIBDIR			:= ../ipc/lib
-
-LIB                     := $(LIBDIR)/libipc.a
-
-$(LIBDIR):
-	mkdir -p "$@"
-
-$(LIB): $(LIBDIR)
-	$(MAKE) -C $^ -f "$(abs_srcdir)/$^/Makefile" all
-
-MAKE_DEPS		:= $(LIB)
-
-CPPFLAGS                += -I$(abs_srcdir)/$(LIBDIR)
-
-LDFLAGS                 += -L$(abs_builddir)/$(LIBDIR)
+LDLIBS  += -lltpipc
+LDFLAGS += -L$(top_builddir)/libs/libltpipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/kill/kill07.c b/testcases/kernel/syscalls/kill/kill07.c
index 60904dd2b16d..c566a0a09589 100644
--- a/testcases/kernel/syscalls/kill/kill07.c
+++ b/testcases/kernel/syscalls/kill/kill07.c
@@ -214,7 +214,7 @@ void setup(void)
 	/*
 	 * Create a temporary directory and cd into it.
 	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
+	 * See libs/libltpipc/libipc.c for more information.
 	 */
 	tst_tmpdir();
 
diff --git a/testcases/kernel/syscalls/mremap/Makefile b/testcases/kernel/syscalls/mremap/Makefile
index 16ebb64df820..3e32978fc86a 100644
--- a/testcases/kernel/syscalls/mremap/Makefile
+++ b/testcases/kernel/syscalls/mremap/Makefile
@@ -5,22 +5,7 @@ top_srcdir		?= ../../../..
 
 include $(top_srcdir)/include/mk/testcases.mk
 
-LDLIBS			+= -lipc
-
-LIBDIR			:= ../ipc/lib
-
-LIB                     := $(LIBDIR)/libipc.a
-
-$(LIBDIR):
-	mkdir -p "$@"
-
-$(LIB): $(LIBDIR)
-	$(MAKE) -C $^ -f "$(abs_srcdir)/$^/Makefile" all
-
-MAKE_DEPS		:= $(LIB)
-
-CPPFLAGS                += -I$(abs_srcdir)/$(LIBDIR)
-
-LDFLAGS                 += -L$(abs_builddir)/$(LIBDIR)
+LDLIBS  += -lltpipc
+LDFLAGS += -L$(top_builddir)/libs/libltpipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
-- 
2.25.0.rc1.19.g042ed3e048af


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 2/5] include: Add declaration of struct ipc64_perm
  2020-05-21 10:47 [LTP] [PATCH 0/5] syscalls: Add tests to verify the _time_high fields Viresh Kumar
  2020-05-21 10:47 ` [LTP] [PATCH 1/5] syscalls:ipc: Move libraries to libs/ director Viresh Kumar
@ 2020-05-21 10:47 ` Viresh Kumar
  2020-05-21 13:11   ` Arnd Bergmann
                     ` (2 more replies)
  2020-05-21 10:47 ` [LTP] [PATCH 3/5] syscalls: semctl: Add new test to verify the _time_high fields Viresh Kumar
                   ` (3 subsequent siblings)
  5 siblings, 3 replies; 32+ messages in thread
From: Viresh Kumar @ 2020-05-21 10:47 UTC (permalink / raw)
  To: ltp

This adds declaration of struct ipc64_perm, which will be used by
following patches.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 configure.ac     |  1 +
 include/ipcbuf.h | 45 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+)
 create mode 100644 include/ipcbuf.h

diff --git a/configure.ac b/configure.ac
index 1d3ea58d0082..eaf33dd60350 100644
--- a/configure.ac
+++ b/configure.ac
@@ -150,6 +150,7 @@ AC_CHECK_TYPES([struct file_dedupe_range],,,[#include <linux/fs.h>])
 AC_CHECK_TYPES([struct fs_quota_statv],,,[#include <xfs/xqm.h>])
 AC_CHECK_TYPES([struct if_nextdqblk],,,[#include <linux/quota.h>])
 AC_CHECK_TYPES([struct iovec],,,[#include <sys/uio.h>])
+AC_CHECK_TYPES([struct ipc64_perm],,,[#include <sys/ipcbuf.h>])
 
 AC_CHECK_TYPES([struct mmsghdr],,,[
 #define _GNU_SOURCE
diff --git a/include/ipcbuf.h b/include/ipcbuf.h
new file mode 100644
index 000000000000..85162296ab44
--- /dev/null
+++ b/include/ipcbuf.h
@@ -0,0 +1,45 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2020 Linaro Limited. All rights reserved.
+ * Author: Viresh Kumar <viresh.kumar@linaro.org>
+ */
+
+#ifndef IPCBUF_H
+#define IPCBUF_H
+
+#include <linux/posix_types.h>
+
+#ifndef HAVE_IPC64_PERM
+
+/*
+ * The generic ipc64_perm structure:
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * ipc64_perm was originally meant to be architecture specific, but
+ * everyone just ended up making identical copies without specific
+ * optimizations, so we may just as well all use the same one.
+ *
+ * Pad space is left for:
+ * - 32-bit mode_t on architectures that only had 16 bit
+ * - 32-bit seq
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct ipc64_perm {
+	__kernel_key_t		key;
+	__kernel_uid32_t	uid;
+	__kernel_gid32_t	gid;
+	__kernel_uid32_t	cuid;
+	__kernel_gid32_t	cgid;
+	__kernel_mode_t		mode;
+				/* pad if mode_t is u16: */
+	unsigned char		__pad1[4 - sizeof(__kernel_mode_t)];
+	unsigned short		seq;
+	unsigned short		__pad2;
+	__kernel_ulong_t	__unused1;
+	__kernel_ulong_t	__unused2;
+};
+#endif
+
+#endif /* IPCBUF_H */
-- 
2.25.0.rc1.19.g042ed3e048af


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 3/5] syscalls: semctl: Add new test to verify the _time_high fields
  2020-05-21 10:47 [LTP] [PATCH 0/5] syscalls: Add tests to verify the _time_high fields Viresh Kumar
  2020-05-21 10:47 ` [LTP] [PATCH 1/5] syscalls:ipc: Move libraries to libs/ director Viresh Kumar
  2020-05-21 10:47 ` [LTP] [PATCH 2/5] include: Add declaration of struct ipc64_perm Viresh Kumar
@ 2020-05-21 10:47 ` Viresh Kumar
  2020-05-21 13:20   ` Arnd Bergmann
  2020-05-22  7:16   ` [LTP] [PATCH V2 " Viresh Kumar
  2020-05-21 10:47 ` [LTP] [PATCH 4/5] syscalls: shmctl: " Viresh Kumar
                   ` (2 subsequent siblings)
  5 siblings, 2 replies; 32+ messages in thread
From: Viresh Kumar @ 2020-05-21 10:47 UTC (permalink / raw)
  To: ltp

The _time_high fields must be reset by the kernel, add a test to verify
that.

Suggested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 configure.ac                                  |   1 +
 include/sembuf.h                              | 234 ++++++++++++++++++
 runtest/syscalls                              |   1 +
 runtest/syscalls-ipc                          |   1 +
 testcases/kernel/syscalls/ipc/msgctl/msgctl05 | Bin 0 -> 498784 bytes
 .../kernel/syscalls/ipc/semctl/.gitignore     |   1 +
 testcases/kernel/syscalls/ipc/semctl/Makefile |   5 +-
 .../kernel/syscalls/ipc/semctl/semctl08.c     |  52 ++++
 8 files changed, 294 insertions(+), 1 deletion(-)
 create mode 100644 include/sembuf.h
 create mode 100755 testcases/kernel/syscalls/ipc/msgctl/msgctl05
 create mode 100644 testcases/kernel/syscalls/ipc/semctl/semctl08.c

diff --git a/configure.ac b/configure.ac
index eaf33dd60350..c513fdf440c2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -151,6 +151,7 @@ AC_CHECK_TYPES([struct fs_quota_statv],,,[#include <xfs/xqm.h>])
 AC_CHECK_TYPES([struct if_nextdqblk],,,[#include <linux/quota.h>])
 AC_CHECK_TYPES([struct iovec],,,[#include <sys/uio.h>])
 AC_CHECK_TYPES([struct ipc64_perm],,,[#include <sys/ipcbuf.h>])
+AC_CHECK_TYPES([struct semid64_ds],,,[#include <sys/sem.h>])
 
 AC_CHECK_TYPES([struct mmsghdr],,,[
 #define _GNU_SOURCE
diff --git a/include/sembuf.h b/include/sembuf.h
new file mode 100644
index 000000000000..00263abca995
--- /dev/null
+++ b/include/sembuf.h
@@ -0,0 +1,234 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2020 Linaro Limited. All rights reserved.
+ * Author: Viresh Kumar <viresh.kumar@linaro.org>
+ */
+
+#ifndef IPC_SEMBUF_H
+#define IPC_SEMBUF_H
+
+#include <linux/posix_types.h>
+#include <sys/sem.h>
+#include "tst_timer.h"
+#include "ipcbuf.h"
+
+#ifndef HAVE_SEMID64_DS
+
+#if defined(__mips__)
+#define HAVE_SEMID64_DS
+/*
+ * The semid64_ds structure for the MIPS architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for 2 miscellaneous 64-bit values on mips64,
+ * but used for the upper 32 bit of the time values on mips32.
+ */
+#if defined(__arch64__)
+struct semid64_ds {
+	struct ipc64_perm sem_perm;		/* permissions .. see ipc.h */
+	long		 sem_otime;		/* last semop time */
+	long		 sem_ctime;		/* last change time */
+	unsigned long	sem_nsems;		/* no. of semaphores in array */
+	unsigned long	__unused1;
+	unsigned long	__unused2;
+};
+#else
+#define HAVE_SEMID64_DS_TIME_HIGH
+struct semid64_ds {
+	struct ipc64_perm sem_perm;		/* permissions .. see ipc.h */
+	unsigned long   sem_otime;		/* last semop time */
+	unsigned long   sem_ctime;		/* last change time */
+	unsigned long	sem_nsems;		/* no. of semaphores in array */
+	unsigned long	sem_otime_high;
+	unsigned long	sem_ctime_high;
+};
+#endif
+#endif /* __mips__ */
+
+#if defined(__hppa__)
+#define HAVE_SEMID64_DS
+/*
+ * The semid64_ds structure for parisc architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32-bit values
+ */
+struct semid64_ds {
+	struct ipc64_perm sem_perm;		/* permissions .. see ipc.h */
+#if __BITS_PER_LONG == 64
+	long		sem_otime;		/* last semop time */
+	long		sem_ctime;		/* last change time */
+#else
+#define HAVE_SEMID64_DS_TIME_HIGH
+	unsigned long	sem_otime_high;
+	unsigned long	sem_otime;		/* last semop time */
+	unsigned long	sem_ctime_high;
+	unsigned long	sem_ctime;		/* last change time */
+#endif
+	unsigned long	sem_nsems;		/* no. of semaphores in array */
+	unsigned long	__unused1;
+	unsigned long	__unused2;
+};
+#endif /* __hppa__ */
+
+#if defined(__powerpc__) || defined(__powerpc64__)
+#define HAVE_SEMID64_DS
+/*
+ * The semid64_ds structure for PPC architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32/64-bit values
+ */
+
+struct semid64_ds {
+	struct ipc64_perm sem_perm;	/* permissions .. see ipc.h */
+#ifndef __powerpc64__
+#define HAVE_SEMID64_DS_TIME_HIGH
+	unsigned long	sem_otime_high;
+	unsigned long	sem_otime;	/* last semop time */
+	unsigned long	sem_ctime_high;
+	unsigned long	sem_ctime;	/* last change time */
+#else
+	long		sem_otime;	/* last semop time */
+	long		sem_ctime;	/* last change time */
+#endif
+	unsigned long	sem_nsems;	/* no. of semaphores in array */
+	unsigned long	__unused3;
+	unsigned long	__unused4;
+};
+#endif /* defined(__powerpc__) || defined(__powerpc64__) */
+
+#if defined(__sparc__)
+#define HAVE_SEMID64_DS
+/*
+ * The semid64_ds structure for sparc architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct semid64_ds {
+	struct ipc64_perm sem_perm;		/* permissions .. see ipc.h */
+#if defined(__arch64__)
+	long		sem_otime;		/* last semop time */
+	long		sem_ctime;		/* last change time */
+#else
+#define HAVE_SEMID64_DS_TIME_HIGH
+	unsigned long	sem_otime_high;
+	unsigned long	sem_otime;		/* last semop time */
+	unsigned long	sem_ctime_high;
+	unsigned long	sem_ctime;		/* last change time */
+#endif
+	unsigned long	sem_nsems;		/* no. of semaphores in array */
+	unsigned long	__unused1;
+	unsigned long	__unused2;
+};
+#endif /* __sparc__ */
+
+#if defined(__x86_64__)
+#define HAVE_SEMID64_DS
+/*
+ * The semid64_ds structure for x86 architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32-bit values
+ *
+ * x86_64 and x32 incorrectly added padding here, so the structures
+ * are still incompatible with the padding on x86.
+ */
+struct semid64_ds {
+	struct ipc64_perm sem_perm;	/* permissions .. see ipc.h */
+#ifdef __i386__
+#define HAVE_SEMID64_DS_TIME_HIGH
+	unsigned long	sem_otime;	/* last semop time */
+	unsigned long	sem_otime_high;
+	unsigned long	sem_ctime;	/* last change time */
+	unsigned long	sem_ctime_high;
+#else
+	__kernel_long_t sem_otime;	/* last semop time */
+	__kernel_ulong_t __unused1;
+	__kernel_long_t sem_ctime;	/* last change time */
+	__kernel_ulong_t __unused2;
+#endif
+	__kernel_ulong_t sem_nsems;	/* no. of semaphores in array */
+	__kernel_ulong_t __unused3;
+	__kernel_ulong_t __unused4;
+};
+#endif /* defined(__x86_64__) */
+
+#if defined(__xtensa__)
+#define HAVE_SEMID64_DS
+#define HAVE_SEMID64_DS_TIME_HIGH
+
+struct semid64_ds {
+	struct ipc64_perm sem_perm;		/* permissions .. see ipc.h */
+#ifdef __XTENSA_EL__
+	unsigned long	sem_otime;		/* last semop time */
+	unsigned long	sem_otime_high;
+	unsigned long	sem_ctime;		/* last change time */
+	unsigned long	sem_ctime_high;
+#else
+	unsigned long	sem_otime_high;
+	unsigned long	sem_otime;		/* last semop time */
+	unsigned long	sem_ctime_high;
+	unsigned long	sem_ctime;		/* last change time */
+#endif
+	unsigned long	sem_nsems;		/* no. of semaphores in array */
+	unsigned long	__unused3;
+	unsigned long	__unused4;
+};
+
+#endif /* __xtensa__ */
+
+#ifndef HAVE_SEMID64_DS
+/*
+ * The semid64_ds structure for most architectures (though it came
+ * from x86_32 originally). Note extra padding because this structure
+ * is passed back and forth between kernel and user space.
+ *
+ * semid64_ds was originally meant to be architecture specific, but
+ * everyone just ended up making identical copies without specific
+ * optimizations, so we may just as well all use the same one.
+ *
+ * 64 bit architectures use a 64-bit long time field here, while
+ * 32 bit architectures have a pair of unsigned long values.
+ *
+ * On big-endian systems, the padding is in the wrong place for
+ * historic reasons, so user space has to reconstruct a time_t
+ * value using
+ *
+ * user_semid_ds.sem_otime = kernel_semid64_ds.sem_otime +
+ *		((long long)kernel_semid64_ds.sem_otime_high << 32)
+ *
+ * Pad space is left for 2 miscellaneous 32-bit values
+ */
+struct semid64_ds {
+	struct ipc64_perm sem_perm;	/* permissions .. see ipc.h */
+#if __BITS_PER_LONG == 64
+	long		sem_otime;	/* last semop time */
+	long		sem_ctime;	/* last change time */
+#else
+#define HAVE_SEMID64_DS_TIME_HIGH
+	unsigned long	sem_otime;	/* last semop time */
+	unsigned long	sem_otime_high;
+	unsigned long	sem_ctime;	/* last change time */
+	unsigned long	sem_ctime_high;
+#endif
+	unsigned long	sem_nsems;	/* no. of semaphores in array */
+	unsigned long	__unused3;
+	unsigned long	__unused4;
+};
+#endif /* semid64_ds */
+
+#endif /* HAVE_SEMID64_DS */
+
+#endif /* IPC_SEMBUF_H */
diff --git a/runtest/syscalls b/runtest/syscalls
index edd3e8de7861..db14ba4baf9e 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -1156,6 +1156,7 @@ semctl04 semctl04
 semctl05 semctl05
 semctl06 semctl06
 semctl07 semctl07
+semctl08 semctl08
 
 semget01 semget01
 semget02 semget02
diff --git a/runtest/syscalls-ipc b/runtest/syscalls-ipc
index 54d8622d4223..f912cb067f74 100644
--- a/runtest/syscalls-ipc
+++ b/runtest/syscalls-ipc
@@ -33,6 +33,7 @@ semctl04 semctl04
 semctl05 semctl05
 semctl06 semctl06
 semctl07 semctl07
+semctl08 semctl08
 
 semget01 semget01
 semget02 semget02
diff --git a/testcases/kernel/syscalls/ipc/msgctl/msgctl05 b/testcases/kernel/syscalls/ipc/msgctl/msgctl05
new file mode 100755
index 0000000000000000000000000000000000000000..3ca0f8954d8d0a38312b9ee554fbfe9038db6ac0
GIT binary patch
literal 498784
zcmcG%4O~>!_BVb&#?Z8(lCG82SX5eRU|CR-j16_Lp-83hC6y5KU4j`UE5(K}PZLEi
zc6+^--tFyP>sCL8asW|L%OrczvJ%bej8vMInr1xT?>=+RY>?@9|DWgi&%JrhT6^ua
z*Is+=wbx!}pTnYT_cifxaf<niSFTbBWev>|DC1v6X?^%O0rQ_MC0*%(f6r6SQMv=R
z2^>pUmet{UD8kyjCW=x;>4s|p{!5QH5b5z*;>Nu8Gti28H6`Sg?L~iCkz3<BYpp?P
zUKPb5%88|{Ngo;INgovoym=kdLx75UvvD=+Q9RZg5UDpHQqR1$80-}DYW9zP<9}l!
z{TmaX1&DAKFN#b28@-a2zr61}Q+Pk&E`#xeyPN`VUhj$wgLyUU-H3XW^S}KiMF>Yl
z+KZ)^y^;Qz*9fRwJZt)`mtA`CtSN(LO`qc}A5@-x*`UiV9b7hd@DR~&@+a-J*XN6t
zOg%aPQRY7Qk2b*axE0+lKKGUGyEe}qe*S^D9XG$+_S1<hdlCPUhv=6LcX9pViF*nE
zy^Q|`o^gM_jD3NALslO==|9gMJPD|nzdDq3MKBW$b%lR22L37-Usv?s#^C=qbi6D2
z!RSs`_%TpUS9lslSNQxGe9n*2?oBc9=f~i)Ek?gCjG>=BG3aN<z>km7t}6yTb<mX_
z&WWL)oEZGK#L&atG3YB|@P9c5{fRN?H^jg{5rfa17;;_{gU_BAeBO*PUISv-b3zRM
zx5waLA4AS>W8m{+$n#YU{{3U{*%^a=Pz?F6je$Qi1|P0ZUD;dj81%I<@b|~)Z&3{X
zxiRGYAcp;~jM47TG1{FQqupsS@JnK}>y3f`E{6PxG57~!$p3i^`qN|ZuZYp#KVsmQ
z#K7;0(e5KL`uk1{c~-@s560mCcntchV$h!wWBy(pgMLj6J--lxzIzP*pT>~$gBbj;
zh@t0aV(6_s20jn+IM8<IUrmg5zlzbXB{A^f7<{(IkiR?z{do|uE5ETMM!!ytLGOyu
z?x!*MOp3v0eGEPcG338E#<)KiLvIIT@JWu*Ze|QQ_s8J>uNeGajlt)|82Y&_2A>@<
z<UATfo+B~ZeLV*KvoYwaW61e&40(pe;PXff`cX0HuZw|q$G|tl=+_M~^m!;ozpjdb
z-yMVhv>5WV#o$vIL!Q@S@V_kv{|{r(UlwCt^o$|T#2EMqG5Gh6F^;QZ;IED$PhAZ9
zelhT0#gJ2vK|dr0eq@Y(?Tf+xofv#RjWLcBV&J>Q;9nj?o)2QsA0NXWddJZ7bur|B
zAO@eZ810@DgU_TG^hq)Lby*Dk+!BNTZ!z%i$7uJJ81!#Jo)eYRl!`5d=((bpd5}9m
zPkc=${36g0zchkJbK+MTp|9>luOQ!0#Pq^tN?EbTJAH~$G_7>*T#qtoQkkcusN{}G
zMbl;iC@;Bf(yfJM#d8X07b~-8PVp4aE>WgVo#ic?rj&U~L8weEnl^jx6wsEGPM_nM
zDk_#17fzWny;PYxx1@Lu3Fj2Co~P71r>M|VtjsO(OrJA_1*K?LnO`{Fqm)c9DHhF_
zPVtsds?y@yAlIZx)63=-Wn@e$D=R9TGgX=Goil50(M+Xi*4(mUwsBjr=eAN(mQBBH
zPT?%0HON&`Tv|34i0Pg?NCWBSmhxV3W{+nV&qnEOb3~(sMKdY+q^X6|X8|#*yv$SR
zQP9@(IWv_Kucv5QVX0E$nZ}+?n(g%zmroL6Kqu^H*&TC=l)_u*mO_KY<?M~<`7AV6
zUg+@%DNE4i%;~dcDN_sQ%=Jv4ddH;cb3i$1QejzHajC~>8Y=NXo8mG{nO=s<Lgd+V
zJjHW7%Iw*N(9IpQg;-P3tuoQK`4}H@!!~9MVZdP)bYD_h<e7zjltF%~H=@jW5p6<v
zF|?q@{}r!i`t0I4XjCbk&3;XqR9sp*XD+*1=$Sru4y=S|DuL?bpi;Gkw-uL7UjPFU
zDgg%Lt6&s|P}y_JlzC-y4C4U9sgjw1@;0{LNwJX;hSrPc%%gqHolhg0GS}--rgAKl
zsinoU=gup(R9osTgAAguOb90Ik`|)OE-9VsDK7F*(1;QzO|k?M)+&_kou$AW&;jZm
zy`|{F0F9;ymKgSk@;Nk7N)L5UD=Y(F_LxI%XsyU|M@jLdTd6mau^S*LEWM50fJ&9=
zb2%)9vkFURV>rt&t!UUBTui`-vJBZ!o5o6&i$MoFAxCj}anZaIW%l$rMRPH-EQ8RP
zv9o8+fdQ3xN(+mMl_J!GF^b8ec*|xL7Yn(I=1)<k&c}2p24lkjrr%arB!-ysvPE1=
zi_1Dp!Ff}SImr1+OY_d2>xEHLVVK3}d_=+Xrp_&;_n0RS_AGhKZZG3hF`8gwbUXAW
zMxXCMGngk}P*^6J3x=S~pp}qQfi>&^eHW7!Tn&U*^sKO`sJN_5xEEoM?9uF*Q>Raz
zD+GrLqiKxET$(%GB19>~bevr{9ad)yUTNW+DRae070rbYg86YS6_poGf;Z!IpET*V
z*>mSaYEDwFb?1z@deV@=8P;98b(eOjb$hvW7sXv-;nJeFms!Y521iMU3}*PM#N&V6
z#J>sBJ+WQ=&lbUUk6e$ls7wrNB_301^6FvHo0$LZN;x~$HDr#~Hrr(DJ&~n0d&R3E
zrBOqcGg|xDJCp8sOX6;Vt3hd&#&>9mW&FiK0xbQCnb$vc`t;t4a=bDLaSL&M1>94a
z9)TZy=rN?#dnjcQ_-~>-QCS#)`v~|rWoZOHS-{<uha>PKqP|UeIs%^}$`h2ABe3Vx
z>3E{jO?fi{dru=AudD>j-=R%LoB$z|F#==!W5y38dr`uhaRTwo{hL2CP9T1{iNw{6
zH;8{p!uM@4+T~*u>dX8&B)p+fqhx@DM`&XGQYE|@yRa}_!n1AjmnGrZXY;2@c*<n{
z@+7<&OR=m#!bcuii7JyNd{2`JuG1tuV_WlABH??PNL<S$JPgSCRY>>~EUcm|mGE{6
zUoGKHn`H6h68=PqzDB~!d6VT5{$z=Mg@os`B=c7*;gd}yt_>3Y6bZjh!v9Uew@CQD
z5`L?MXU@j_wMzKYOeC(lgg;%v@0IZ8GfoyClJI9p^vcIkyFF9FCrbFUBz%&DcS!iY
z628BLcS!iNCHw#he~yGtmGCJNK3&3}E8(*w{CN^ymGI|F_&f<eK*ASD_<<6BvV^}t
z!cUX%7fSdN34f7<FPHFxBz%R0A1vXQO8AQ<e6@s6mGF;C_%sP$BjJZg_~jD*5(&RT
z!e1)kYbCr`Y$Ih268<uYew~EBT*9|V_;d-sRl;XT_*Myjg@o57{FM@ZuY?~a;SWi8
z<_N9d=BWK&Wg)T8l<>nPe3FFElJI>cyi>wEB>V^oKS07?E#Xroyi3BTOZaRFpC#e1
zk?^X7zgEKMNqAMl7fARV2|roFkCgD!Bs_C|=C4G;Gv{ai$|ZcRiNv)+!e1}pmrD2>
zBz(1m&y(<vOZXcle2s)>&eHrXm++%aB(5tYe7=OQmGC!7_y!4Y9q~Z<ItgDO(YHwW
zu@Zi(gdZp2TP6H>39n1|2@-y<gug|?ACmABCA{)U)c%>{H-Cu|ezJ+gHA%u7HI2f)
z68=_+-XY<OB>VsgKSjc)O88<4pDy92O86`Zf189?CHyoApC{p`OZWl_KSRP#mhdwr
z{4@zaOTw2(_}LP^T*A+h@D&n%u7qDI;Y%cZwS>Q2!apwIOC@}bgfElu%O$)=!mp6<
zUI||-;pa*C1_?i3!mpF?<r2O{!rvj`w@Ua0624W!-znjB34fP_-z(womhgup{6Yz@
zd>XZX<_^tYqJ*z7k+>#F_{9>wuY|ux!aF3qPr?t7@RbriRl@rve7b~RBH^<n{Jj!h
zmGDa?e4d2YBz%E{zfZzXmhb@yKTX2lFX2lhe3gVRm+%ir_zDUCpoCv4;j1NlwS<32
z!apwIAC~Yn68;ehzg)sUD&bd1_+=8lR>D6f;Tt6U-zEGy3IDi+Z;|j%NcgQ1{z(bn
zD&e1!@VbP5TEg#@@Xtv2LlXWU5?=W%YXAR~@QD(>M#3ja_-7@2UkU%5gm*~z=Oz3A
z3IBqGSA9PwssY<OFZNede}l)SkM5}`s&92-lSG8u_My*#r2X6%@UQ)>EZh+mo<7{#
zj^DXY5{?6DxJAGZ6OJd`AmIB5cO$$)!1oYNAY3Eh1%z#cs|8$2xI5tr0nZ?O9N`iH
z-%2=<@MHmxBiw^<o`6RYMrV|8mVieRKAv!@fJYGSMc5(WD+u={oFw2Ogij!>2>1fR
zcEWrA1mfJY2`3S574T_<PbAzT;FAcSM7Tk~Jqe#oc!hxD33JOEt`YFz7XT*{t`_h<
z!lw|f5b$ooe<NHX;GKl~5}qvJFA1MYI8VTv37<wdOTZflpH4Vcz^e%NBkT}x9pN(w
zCkgm1!e<gz1pF%Dvk31!%Kkq`*g?2ez)uqHPq;<E4--C{aD#yFBYY0w6#~A8a0=lX
z0WTnYF5zkcml8gYaD{+p5I&!9iGXh<Jb>_I0god*kZ_)WM-je&aF&2a626dds(?oj
zzKF0xz*i6+L^w&nLkJHhtO)o5!WR?X`-d2R!l{H?1$-LeG{P+cK8f%U!VLoMN%#`N
zD+C-*m|MPZjerk74|piyY60&fd>P>i0q-V!IpGok?<AZ~c(Q=MB%DDwPr#cAUqLua
zz#9l(NjO!&s|XJx>=1Ar;Y`9w0)C6|RfH7*ze;#G;k`%1_!G_|+$!KF2|Ee52>4;b
zBM3JL_&&l{6J8<UdkDJ-*9dq4;cUXy0xl(d4dDs_&mep);SvGgN?0X4S-|56=Mc^l
z@F>C~31<m-B;o4_rwVukVK-rifUh8&OE^iuLkM3_SP}3Agl{0c_plg$!g+*S1$-Le
z8ws}v_$0!k2sa40C*jeAR|q(s@EF210zUj4;C#Z>0^UdXCc+g0-c9&s!X*OUNw|RU
zWC4Fkcr4*O0dFQej&PQMHxM3AI90%_2u~pF5O5vgTL>o!_$|T{2`d7AmGC6Odw&<>
zPk1unRslarxR7v*fFCA&E8zwK-$%HJ@CpInLwE||8UZgLTuiuHz@>zz60Q*N48pe&
zE)nppgt-8PCkuES;pv3)1U!oH48mCg9!Yp6;Zy;SAUun(L%>%Mo=rGOz(WYnA*=}a
z0>X0%?>!{OpKuA`Rso+z_;$iA0zQdwDd7eI_at0Kc!hxD33~|F2>9@`fW3sP1-y^&
zJi-+M-c5Ku;SvGwBwS8-vVgxNd<Wq?0dFR}fN++8HxRy)aH@b;5x$GCL%?-}?<Sli
z;I{}bB&-PdRl<u1?>#8SpKt}?RslarcroD?0Y6Om9>NU*zK^hv@CpInL%5P~jer*r
z_7koaa4F#>gewF*gYdnCO9Xr?;iZHp3wRu1jc}fTM-je{aF&2a5)Kef74Qhc_Y-yq
z_zJ>Rgp&k3gzy7|6#-vB_(8&Z4~X$6Tur!Dz^4&@h;WO5Pa^y<;RXTsB>V{B6#|YY
z{3ziX0Uxdbyo_+QfcFu8jBtg3cN6|Q;SvGwB>Xtx$pZe8@Dqgd1iYE>lZ3Mbyn*mj
zgi{5)ity8f9RjW+{0!kF0l!7~AA}VFze@O@g!ld?#-DHv;Z^}ZN%&d9EdqX+@N<M4
z1U%}g{>oJ9OZ*Ub4ycdAt*U)LMGYjJ%avT!Tq%9i8uWjL6$QcQ>A`O<b}Du8APWso
zP?Y+OgPjVBd3IC{xKa{>StIO<YI8h$oT5IV9{gRM-Y10zoz%D%HQ-6<J4L<ZQo$H;
z?S(L6#I*yOrrOWKs>8UqZZd*mz4Rgla;5#0qkTM4)pn}BU3>G!<TN+5400-JbK_)j
zX-*xQrRaZ$Bly**Upp5ETk_RG({NFJhfYwn@8+Fe%dRnuKJk`%7PPm5m?o|$w=^+o
zo;uisLoCl%7ym36H2&EQ3{-8e+Ncj#<JPJl|LIA#xE*hDv!4Y%M*9_+Z^C{Q?}_=S
zsL#QG+_Kj851``qi<asgc)>~a4OhIjwntFUV)hFww71+6UVu7Ld9VivzhdkG`up1B
zJbznwhOa%rlj>`Cc$4<}vJ&FJ7J9>NBATf7w|jf-^(n+wuz&j_a-qCeT+`I*$iBk+
zGk7-Jp8IEirP`H+QL7*|RTSUeqTl>KxNo*qqBM)8+;&9xMe656ra*a;{tTvIvu!_2
zioXb<tk3+>b%`hm(WL4Z!A{<5z0wIn?rwT7LcNuaVNON&B9sAQ4iFOkQqb$;P!uf2
zof^oz9_48bbv@FY21nJ`l%(gdZpPQ1UTWaF#I`RYb`-EZ^b`6R$Vz0du2y~NiYGH|
zn;KA)z{tji$R@2ph^8liN!8VHYE_>sRcnIQN1L^)5?WZ<yN10R-`QRQwm+dIf5XDd
z*r!n5B~FE}YAAK*;2-^gU)$RQnO}h-)B`X%9NZq>3Z<F$W>|$Z-n4&eGgNM}(pACb
zF_X)|?fPTjP><QB=>6aW0=9W5^EJfz4)xS*GjPAiCWfM}9~nIa-3giW_WkYcbqt+D
zH5T(W;0%dRVZpyZtZyNXBc`w1M^UBu;T)5nqx~{k)sCv#{v7R7XYCr)2=W=Yy7<Q=
zT<TacM1<r&DpL}HNNZ5FADV6HFJn58``lkJa@vlx&Cc3(AVQbGM+j%4`w^gkHb?uy
zS-aJ2Aj%oe<`T1RT7$E;6(pg{tlIyxm9?XMFSkm*#zH?snbALObB?w(SKFa#;ZTNE
zIv2}w!8kSWw2&5Fs-N&u-V@ZttJ$@*hVi#JCp78vp&w~J7^>R2g3i%<X5Bstvv4?+
z&Q7Aw81?WAV$8D?XYEhy4r%IsCt)01sZ4k$2&*M~So|Y8qf|Dy;e)f>nma}HTy7ue
zO3AYibf-+V4;+(HVjuW)N(G4Q17Ap~7T4EPYQ**J6bJ?U`zZ~$O5-8?xms13(h7Wz
z)=Cebs8+dB9L)(S4&a(yDG8~#vLLBF`ED!{bnSHA35HS<p%jYNq)!t@V)#?%&CZ*g
z+7@R%3}rMdB0Zr)yOk*efJkf5T2yUViiWko*E(E9uM&NS9QJ$vfvJ<Lt!+<PQ<32m
z`3x0;ByG!bD%oj2IS)3|ZtVUa@Gk*S+x@g00^sX83lsOgaDPQxb?{3}d%L<yYeon9
z>DeRL%{6M(gcJuSs<ZYi=p7w$1X(d+S-4ZR?JJ4Na|hfhNwBjIevZr!cTwxWH92u#
z>A(Mr1MMtuj<r`NLj;%BuCD=Z8b`JrUCPlK)uP|r+7Hg!^U(?xE4cJ_(FPbU0K<us
z2Ch+yTHIVLbK*XARo(q3YRH7BovZz#|AeXU%xKnDIqlbPQHwSV{46K#Lm=!A@I{bZ
z|4*Ll*d14umkhuz<rpSmXYEi(k%y++e`;?Z=ge3u*nK`W%5Saxfjhwujlx`ueye*O
zJ;@pPm3{&ynbWsA&U<p(xe>ow)S||H;vBfz(<i6sQ&s!M@GLLxX>a#8EZU(4j1jiX
z#O}`mW0(pJfwRYXi*urL5|)!n*p4C%s~G9Em^SuGCO#tbOaA~e2h!n_^~G6Y3<KRF
zL(hS=SH^)hkon9H{S|$3guwP7AeM%AAwv+6n|3t&8mAKe4{_FdFIqhW`wBlre6@h>
zgac7HMEFhtXKROoiBM-923`q$j(^PPXB1Wty*H#4>#;B&sM1-R+Q|fjl6B9I?d{=%
zU>WHr!y+{>EG5_i&s+yxVUp+~t8p7TsN0}l!FROwiSOIt`Z6@8Z66>0TDTR-KcgJ8
zt_Ah~e{~t!mv9;o<gfjP{xf#y+IIbNNZHAI^ngiF%JEJ5Kuib>l3@>OAo+K!&2S?0
zAllK<s(-V+@-<Mp0`b{c$&W|mBZ4NoOAjna^tapnIxH+un&3ZR_q%vIvX`dU=Robg
zbqW6U_H13h2HJ*e_$N4rMx#JD+yJL{FZeE$_*pX9D#=Sk(Jx$K0=5|}njI}lK+)$$
z(G4tG5H0G3qW4e~NX|zI1osc2JhtlyHQ4=jK;U?2SAXR|mLt(~A|jCw{tnOTZ$~72
zVh~H>EbMehx``Ihu2=04HP(t6{S!fT-C9r`fYgD^by(@uqOJb+g}wC@D3SF}fL&H(
z`oUE3js*MHNdxxh3!B1x)kg|lWIn<IfJgSCm(8{cfc$BD^e@0%(|zk4zAF?cIs7^d
zFzrCSvb9jrXQOvm<X$qM8+H@&JnpPzVK8|dO&5I(aeHXaiy1KTa48%hTDb!K;7?Dk
z#{Q!pk%(`<g(QLU0=*jJ8vY8c1@DDU(>90VFb|A)U??`=;s2lr^g+=3HpaOFHC%pj
z{k!ayf1-_?z@;fFY@qTN0NH5=(l)!bZ=EZLgH>CGWM88bLjx|g)?EE~^k2AUXVt{G
z9PJym@!JG<+_!4r5-{^z80?8Q+}fV~FL}T5Z}v9S6V?ytn3HkXxzr!Rbk%<dx3{;w
zm=j1yf%#tX4{E%@UO8RJ@sp6F?Q%0-2%!DtQu_hS>`42!p#86{_Pa4|y{sbrYVUUy
z<#9K8w^x+MXM4Y>DDS3tKY=Lk7^2LiDDyDE>MOuipFmNbgc$#MroR&Y9&RG|C^TRU
zix0A!!}1BHW_UA1?706CQEXOgp)p1DH?~D~e6Ltc3d}))u|EJN`V-J#h-%TAMX2*T
z49wCuCUJIJ!|1g2s&+)xenZ5l_YhX&O?G2br~Qltm&-!<d2B`zX|nwsEsW^QIi@ZN
zwv^ToT#dFv7g<r-sc5u-?*S|0L^#$VK4pE_$g&+`ie-5x9mwh*XZLfzUs3K*%IzXB
zj{5)hl4*gw$)WM!?hf?6=24nr@5^x!dK%>pWEG@s)^93dVAyP1__PtZ3MRrI8}0SB
zp+<WNf(BbR+_?j)3iHjgM4ne6rg3{~e`V}MAyMTVVf-Zp7^;>>*lK1YFN_t}!Ol&8
z2!F0GM~t7=P|qB@eo-6dKv8lW1W_|uJpJ@5G5&DGSK4+zg+*^WJjAK6DE)2Z26a1T
za@*G(^kb|az9aG8<9$0D-s3{!+mN7VqY17jRhZu$=;?-?+R^;c+Hcw(Rr?$R$S&(1
z3?lZ|2;ZALCsS%w+iEQD#(osBwNukw+RqrjeYBl;445&O2V$f<){x>|*h~F!sZM3I
zKH@u&X>0VJ@NBC8CpbEL<u?#F?SKj=wF^du`Eh2BrUz3&Z>+~mvzP|H3ZWCidu}eo
zTFn%TS=POPk;nS9cBj@5q$TlnF1kafwpxGX2g=8;t?^{3zP3K9HmLYXj?J1rYGYeG
zz<JyIBkbFuol%S%jP$dp&E5<C;R0lv&GDO|ILBZYGb3(BH_U@zE9R(?IAKP|6z6Xg
z)wkNw_E2@OkJTCGm`sY_u;U2F!(<|XweLqn;!<{o>(#Tn-~_eRk$9)-u9O6QA;J-V
zgSN*0025k)2`LGfSK8OU)<sU=cZ;xN92U25pbP5EzZ^ldrXz9<CJr^VIo%vGF!w-!
zZ2wPoKbK<ryIXvR<2`r!4m&*a{F^-wJGGBd8~qz#RpyJkLV7&|RaGI*9x-ST=fT_2
z6)}IDaGKb*dKUQ(CD<#k0Xlf6&;Y839yEDCfc>!L@OdaV`iJI%Q$QH<N;I2DLoG$;
zH|bPMrL!gC=SV!nltbjLtf<v{Jcgrh#Gdt~utak_BY_E~!RWNjm<dUphk=Xj6>xSr
zbao%<y}pHer*lL;tr-{IY^PcKXk}Qk>bUJzGxmFI6;~-9hl*`SBIM{LHd$JW_fklb
zWJuzi*i;?JM_l3k!kw{qk<FdadbhpqY}9XCXUdnOWh-rU`e(2OBVLRp<LTJHt3~V8
zqRo&@KNotyy53z4^hwc9R$(a=BC`GME<|Y3E5KB2>wG^tI&>SkL3De+{X|zvFZ_!h
zc&-#G_*L(<lY{R`N$Sw~Q=k?0G^y6;{Rf`oD>9V*_9RyArv}D|jb<NXqv__<pa$Ss
zlt4B&*<bIsk6S<0KDcq7y;k)9L$m)=?R(av(4Eo?#p~wp0K9FVecaalPWy@dQrce7
z-$T=qzkzxN9MhM8Eq@#4dzCw-k6JY*C5atCc8U3}^TZ}U4HEW2$et9qE2Wp7jvT4K
zq1@Fe#GL@S2UvNtfGrL@gL#}F^tz!<@JeEWV2xoUIs#6h?PaW8UwjF=3eq`9_h~1(
z-Ei-1kLvrOSm=XUL$T+EpXPp>Prk9FECUa1<)a{#I+wkU37B^t2UbMYxv)!jU_{?s
zIMTC4V?m}ZLQ~Ck3sT)h;y`jX_^E-q1_(q0@1?(emS|^?z~9GoKW$*WeOZI*t3z-H
zCsBDWB!`ayqJ{`hH<6;kYRr!<0Lxk++XHpD0%vD4koynr)qr1!80f3|x7jQ21ghdn
z(3P@G+aBVsNPkq=RbCu|B-Nh%CDiuZ7Z6c9qYdk?>Z`3GZ;xHon)NVzpQ_pJLAg6n
zfQ9PCa&#(}y!my6oB$&&du1vzbVxEp;xuPfKBBSDkPjS{;~Vyg;{EyRsxgB=u-T=(
zv6S_-ublPFUFITY^R4<@w)VN&xH~~@+?k*b#K!o=3J^`Lu1gpa$$8q}?U|nF`5RM~
zIT_nMm#Kl188Hg9H|!2v4Idu-%yL!VnXXFYIDdm9M=kFLXVo>3Ypq(9kd<3CWeuc9
z(1{uGcUM4&<qo{VhMjA>BWgYP-qlw?SLLlh)J?~&^SvDYyEdWww5i$JnC@}-cS84W
zIaRLiHhA}`THm!<@rvgXXH|B)JCJ$9*8b@6E@Vxzx*;y@27Aj1T$>2SBLkN@a^NEM
zi@v8|UwMCU*1v(ILA4qX_7xDe=hpV=@4<N@TcWMDKX4W7%849PqwmlK_In>j2a)Jm
zdWDm=AjZq?{}KTy&B*^LZi34#ZS<8)GK^J3Ece0Xm?WXorJ|2e1Z(~K7R0`h{d^#^
z$9?@3;eyi+=)GY!nyq;$%13dXsMg0LV21TfK@~OdICm7n>i(qq52JnbUq9{}gx3nP
z#rn~&NqsVc9n2uFJG>EO!p~MLK#1<FSbz}y%8CUD(TA#mypECnv+z9ZKE`jg+Sr<)
z#%)ytNn$200h@{|uJ#1$xm^)^4#ZmfU$Xn%C=s0GJ<HAD)b_R!e+DuKYKTD&=&K+a
zy&t^YIym9p-`tB%&K9Ah3r0|eI5F5}DfArEt6+{lj+iohwV*^>wy~dM)crpp9Nq*y
zxzP=K<wM7DqQu)niZf%iy;37sHKK3YwzlL*yn&wh8v5EpCpj}d^^EW}#kn%tyy0xE
zHR!m^3@GBGjk>jEv{ScM#mS^6Lj-p~+`9v!1QtF%r>fs76%#`w?^Dwn$W0|TOj{*n
zGr5^e6mTMWgi)@4eXiZL$*m=Zr^1>{In~6F4MQ2px$4KmBErS!yism!s!rL4h`U|i
z1U(0vs55v~CG>~cU|Pd_8nF6<2u;I_u^kcSi0RuxgFMqTNPRei<Un%bXLLyscjrF?
z^xRoj_Q6f?5dA#(Dxv;nHH=7iR1E)$5Z+z&&I<GjeknW<dpWhpb_s?x!%xq?@H{oJ
zlAbbHVrlpauyO|yn$5UzrLgYgC7;r|h2J|c!V!=30w2}+79=Tf<-hX@Tp;;YL32+l
zWPwBROjm{f^%Oea=L4L!{-*wtGopke1O4a*@Q7ubCta<2rvcK`iDv=G`lNj-_Kq8|
zmkVA1jT_6^VyT;FakKh{8n|agq*3gK==42#kw*K$pCqsUgu)9NxxI_97U;R3h&H}p
z8`oHE+$Xj19_+p?Xn%KvV|kXRyKi0M(h-izhC6Vl;_kqR{z;yMijfX%8W#+}(q{K_
zIntNy5IK*DV2O=~J`Wz0*_H8NtgrvFz5V7qXYFk$#3Whp0G4Y7mBcPS#5<84!7x6!
z6*C@rVmz{{z&sAELN|@fNwQ$5*=(q6U%DNm!F|fRAPO>-5}HQJjc};?h2yz8p8Hi5
zl%Rd%(tglifpKCbwO5WuHCJFzBZ|akro&DqThsOJkd!+aI2?Or4Tn5nyK^(<w07>J
zs5JFpmLn<NUO9tyt$bC8hZ7=?^9mKoJbeiAFc0}Z(1sw;Z}|#|r`|W9GIl-lEFq`5
z$UFHg@NTvZLMeP}J1i}U0j+HS5O5CIN7*t#p;le}Bc7+mYqs+V1?tv;j}cW&d{Xe)
z@-ei+5$nM~d_e&w%WsfTzhMDK+g^E`=t}Ymkg0(uku{>v_N1tRE6JuGGa6Vm6ZJ(O
zk{yxWJrJ)#(2p$O0#n(Bp|l=6y<r-R-b)n{<b!nT!4Zy%WREGqTF^kK{#v82HLf8X
z@7oa<*GMTF^lre!t@G(|3(qzdrWKfwp<0tEG&mH?BqaE=1!;*9{S)l|uhAdeAsEuc
z9kPMFeVP65@6U+ndFY*-eXTXa9QMj5zzE88cuw<Wwg&`79w>a7KO4ZQ05Cz83q3S=
zGSvVk<a*E0v~75Pz8Txj(61a}VNUK0(LXN)sk$ys)jlvQ270YSCGRE(#WbVqP10qr
zv$jNb|5Fe{tt#F+-b~`((ggQZ6LC-XAq8c0{&Bd*P?6br{R-~m1IgXcV)y}U{e^+U
zdU)i<kZJ4nNbbD^7p>1JHwO49%Jka-z;gAmTiV<6+J~Nm&Wd>^rWo@JwF_vd=)5)I
z&isr^$`AT^xQ?9|u7t}pX5~&xoYyYJ!!6sJhzVE`g3Z_j!B%1c5Yoem*IW+yw_6n!
zVAlh(t3k#=u=^`P8@?a^1WGT(B5}cUV1p=Bvnlt$Y%3pvu0ek?=#lZ<`%!;o@0LPf
zMx=`{a~z8`+gFQ)B_!GXCxerojrb0gz5#VOo`_%PLnpuE4hshdR<Zk!qBqM?;Wu2v
z2~bzsw(!&N-MDPRMc)BEL5@K3<KSYiJOj&z5!CmFnnGT)L$Jn|v95uxgsmOG*$Mp`
zSVj0atVe2~v>>g$t{ydXr`WB7P8IwL(4tregXvVzYKh;yVlSKQ03BSZ8Xg2vH88F~
zty;#_3%OV%fBn1-f-!Duam!BWRXCU<WZt!rGVey$=*o32XkyL1Mry`^X7KQq(>6#6
zL7BEbbgfCDub9B0{SrY7hn5d=ldHfs{3y5@li6N*1?~+qt>zqk%d8BoJj5+UAbA|C
zoGb+Sf&oW0S~5~LGr-kcSf?;-SVR?LJe6QMRq~a@%w;g^O=djj8F8)mTFh>fnEj2+
zj$j~=EyCmVF0w_lB<e7{F}K9w!DwFpfSK_<yxZ|9{(1j)VSUR!g!O5*d5h5eGK@xW
z4I6fVOXwq0O1%b*!Z)H++7DxYA8LWUju!C|cE?%zD{I80^xr7l%o*|Esa|--OvEAZ
z?LRIgWXmUnN5^OYS3Fh~HwcZ^KZ#7h1Z<)4Ppa{>NOPqOus_&FO6<Xwo(8tAz?2k+
z)AvWb{odz^pRV(`5E1j|sEeD#L87{Cm%h8@o^MXSn!$JDk>TpW-D>0ElhlD<s#W(V
z|4QNNHXR)O?Tb&XcBtAqwefdB60p6p1hO?AK29CD0f#@dbpu;6KCYvD_G?x_k6Dq_
zLM2f~EXHB~1_}!u0H%Hq?qD9JShCYLw>@mcK_-b9{?IOoZY1c`<~4mW=;154$1vh_
zZiE-NDI1==GJFECX1*dAO{~9>5H+u%a5~`!#q`%vuSwMV958YuHs!AV%4qvwTf+|I
z+>b1X_lyFzcO4+4JnZ*A0Ac*wyk|1sc*+nOFAyPqkjXUOm$y@_Jq`O+`vpzo_uI$X
z-ng^B0_dU!Ghb2P9X0jPCiI0XF3-QQksHxSsNnNL7*{hz$p)<JBFpG?5ix~~KzLC^
znkA*^ED|ye!M&IwhA8VyQEKDBRzDTegs&4i$-*-P{fV<Nq1J&qM{6)DG?*1I3~k>a
zo?8Z`R-!KF`_Bvd<61F1oCp@xKB%_x2OyBKJ_7SiL`e6*zX7X(K{b`kkn2IH5yw{k
z^V~y0ZRygbB+{~RD9BcUa-pI?Ns_kLsr}+S*xI=J`01;XPJl6LEzW_BE^Xbx9W49!
z;0|YF*oKn~9}7o?`<d&94g4tRNOvkXg}#BrdI_er{!~kQ`<1p_upT!S5Bv};kH01S
z7{UQFp0@Qs8FEXJqU$z`yp9vknWKZZRZ_t2uc5BNLR~H>>QaudaFw4#iNe2OY74tF
zb3-_c(M8S}ou0Xlt(PD~vejRN@zCp_o>1%MS&=hC0m#D`(q6fkr4z&=quCNM&i17z
z07dh77*~d%I91cCHHMCwlIR;pBg(?_sgJn|7)J%Juo%)!BYlB@YR4kaHB~ppwH)^S
z-ou+vxp~pF%FPR}M4B4rK(7^i6}>dg0rAZ72mp=P;j6E}xuNYu(;n>au0}Q_9?7T<
zIZV611r7x&jwE#>XArWKpo;M_^v6$enlt1bOk!bsm_rYv?GQswqs19$ky5Yn?Ofzr
z1)0TrEoS?m&*O;jaYtysrH7%cWc%a}xZ@9@-)MdsS~H$cM4ys`_-#&8kUtRYhqs`L
znU@N3XpX7EO^aD&J*$jH6$Du@T&4a13iV51azHQ@U4M{>vke5DL;WElP9y?j82a60
zrhkLjS`Q;ysCU8%>i_-#wt$lu*Up75{oC-gz+U+@7~GsE4r<+uj-xt1t;^hLk||Iv
zLN0EDM7kS#Q4DT{8yT;7E*v!@E;tcY#gU27ji~LcWpmL-Mws@$e#wZACnWS7NTIt>
zS+gCkfNKxfUS7jXZ3|d)18`!9ozmaLtU%#?qA;tRn_3=j?1`FJ+8R(32U*L-Sb;ip
z$XpiD*u7{BHS;>M?J2fH`Z%zqr&~CW+peGBhh1MO%DfBpMy$Uq$N)&6dJ70pIvAkc
zcN6+e2ixMVx+oqwC0E9|PL?lW@XjMPILl-AmjFP+TUN6_)k{TxaQuN!F9Twt?Z6$9
zE@xZ*57e)K8u^wh``Uf0SR+y~U|WHeTH78N;0lx^xB}&g?VI)9AF}gJD6so+$Wzf@
z7ty)R4@|}Y@0+eG%M-n?xvnfp@V@9oAhv?DgW3#TW*P<bbK4j2!G6R_*Q1&%FeET8
zAuuDcy}FtlU&ZiTX`74^Z-Jg`us@G<8L8fLGo~ea9ak14cux;jTddEQSoZ>JeLe$|
zFJZwv;B<mM?Gr@x8M^(R9YE<<Ahw4~xdd)R{~2xVw@<Kb_!9jNqILc%gr3#34dR6@
zXYE*wu{aGFx<P8_oFRytcs4=r0rue~Vv1pA@%$Qc>3F~cmx+g-ViD0l+d#|zS=)|0
zG9n&qpf73aujmVrT)+s-2dXYLJxej>8^0Ne;H%LKiubVw)U{lOA~Ew^DAJdU*wFUN
zD(;q>@h^WEq||Kx0dIF_2u2_*i|2arusF$H`7SVl@+|#NKhrzh6(MJDucX1dweMgM
z)_Eo;j>mZJ&SoOxH<aQ?YfjZgt1)Tacyb~tZ2&sBl6DV6M*7rrY#7&icn%eG5Plei
z|2Mp#UWd5UsWsz_%-uZ2;&}!gz6?T(BO6~oM(b^NG~0?$%AeO)@4!XB8d`0usMhaf
z^&V@S2iIVkZ}*PJ^NmJvSk;xWSF>%zec83(xC=L7J1F2lx6(4mB=k2^xNMC0FQ3C8
z;Ca~#zfCNFSxR<~qY>7g7x^IbeRP2b^4`YP$OG^^KxVQB-ANS=$2$zLjj+RjdvWD8
z<DTFS;Sn$dp<B(yv6z4&d^_5&4t`*jPmGr9`6z398ToN^<y3Tq56yq20UbS%<w)?P
z=^n_dpM_Wek7Jw4-Jau&$K_4+Nk3;P`n&59$%*IZrW{biLD3S`@C3v$7N4JB{Q3a$
z`UIgFdEN20OZy&A#8Dyn5>8go>T5w3;TK(MjCf!So*4ZG!EhSmpgwV(cx0@<%Q!EP
z)Ml$j-Xu=7hq@hbjfiu2f3ePJ=+CcZd)|vj*x&7SPQ~wz`KOEMO|9c09ki*apR}s}
z7CZp5zuOQAsbRn4(;E2X&hl3spI3>)YKQRPMb%aw`i)cU9UYg>&#bBvMj;)%<`lN#
zYu&33T#c-Gj`qF1@(56{4LDS|VpUtlS0eE2g>OQ*wIgk_kw08XfZ1es)v#u_*6eJ)
zmWHqBh0Sy@I8D%$qaEitB?nJd@MI%LyEak321V*X;Lplw+?C+&_9CUiW0Mpm2b-Hj
zR?n^~j&o<c$Odz@?{L&;9;EiO6QN8LUtcw>H8*e^+H-6EL=frsfTuek?t@65E1~>h
zjA_<_1d0C2(HPX=EkGIWb_FQv%K>6q9>P=tFY$h?8hD0H;xP}qRj-0V@4Fh(`WtY*
z)n2(5&YCAAnsc=u^?JBRPL`EKHsoSg^CKG&^ZqKc0ew9}x{wP6%$(ehIl+j3ne9~s
zEB4BssH#@^YmTs+NV&WYx*&6dbsX~$@6cEdj{azVO2lS<(;sUB%WY%GvR$m#U<m@g
zkYca=4mB-%Py@?|jSQ1W?dUqSPyaRwlsL(S(dEO%ZJy0IpD7-E-L*z>1{NjJ%dLYL
zW^HOz-+(1fXk(ReZZI+`xq-9X+7>)^;9%hK)n2#urCSrq)SDqL^>i0_;qe10+=iZW
z8o$Tz3!}`9`_gHDH-4DIbLX&3?-(!(eJ_+I==JBZ-}5&_YJ2A50o)z5G-}Bi@Fu~t
z<Is6qZ?&pdmNVeqn1o#0@l_+@)Ql!oTQy(D)iYH*9l{;_I}F2qFa4od2cwfXbWSF<
zx<$W4wCDK{4b5p=Mrp#5G|93w_DX)$7lgCJ)4{PK^P~Cwh0?@$_=loU??W5vnD1K&
zeCK?h_JbH!j`73mQKM=lEh9R*n8&mNyFZ1iHw^Aw2xSDrBcTal(fR=F27((z0dS!P
zv%s*Oo+w3%h_azT3G<O)E>3YwM#qf@Kc_}3=)FFJ%^j#u2RG;Y{8!%qpGM<39`zs}
zUz*aFuy<8{-c#g*+yE{Cai_e!yQ=0M@TMF)^vw+xF`lk@1Xu4h?y47AJ^Tg~tZ#?i
zgx8{{P(Rc=FJfK#all6`L9HtJGpA}noL;nsuJ)S5@b`vX<RWI&W5>#YIX|XD>jy9+
zu=L&oC%=?x5Hom?sRsQxM4pjJ8kvUSrx_}3TE#^WUN~w$vj5G&@mjnQ<NGnalf&gY
zhIJsvch}cg(0^sZg_C6upITxvBA1^;AIx>9c!fR?$)~i<&DpO*9_TLo1TNP6c2=~{
zu~*K6DG9eI{9$&j?uBGxiu1Ur{oOpA=FG139lpcv?*;@;I>w#4*|)QsZ`C|!`WCzY
zI3U4k9-a$>d2V1K-c=}px6ZDmgV`#kFFDx#!^jW$f8rhW7-v3kRWr6?N@1Rr<*9+(
z73@ZC!1bBpuDUcX+y3rV*_E)^QJ5NdP(#%QkAsp!f8fqA*q0G&3P$K8_~W=vgkR~3
zK=$hxnA3yHIV=v8h5CWQ^xRi{gl=}6RSds6%__>vK83G^2$6lB@9=E9|3T0~7l_sU
zxPt;_d$wfTLz{wwEhE^80<$#*Vv<ip%J3oBK=4$Hl#zi+`WYsfN%jTEtntd#eh*%2
zRoN|Ze-2gJYQ!j1E<hD=rdOW@JB?b`)M`W)`{1m#KkM&CUHxv1bL5nu4FO40wSHtJ
zFzM%ce{t55BG_sv?nE|r(^X>0vtb!(`v`Uz<+qUh1|7riwJ1MQ1QWp^5<E)$-oc_E
z_!+VNANix}nF56E7f816N>S4qki|UPmgvw|HJYN^D-S?*@Y*Q};wTeRnF)9~={;cz
ze6IkUMAoyfdE?-Xw(*m1nF~!dvFYYb7H=AVvSkM@O3^n!mt1^ifE`Z|B{_XZ@n8n^
z#Cam#rSs0gyDWPp<pxQ-XG%7L;ox)ZFBWMfq~ae_e`~PvQ`S@-yi2O1VESSV6&q><
zK!&RHY-c_j_pL544w^MZM-=Y_%~t#qDlfHH4kS(0tl3DWei!eba8auFnQZC=Qwgtp
zR#Oh)mj+65%tm0@1Ek@(!nCtGGO$+`04*``SWM1{GCBB(ejeELCmV*oMm|+^4gt$H
zxKq0O3s7Q65)>MNu%R2GO!WU?2N&k90j3U*7`#nTL2;pB5>*wc=3zw4e2#wId%|Ar
z{y)%=vzFQqrn0UBcOh&dEuG)Ux}SrJ^I7UtrA3XyV;1!}q<#Y}=>uWG*8B?`2X~Ur
z<F*XZk(z9?8~w$xp+Gm3o#J2P*@s8p;#kmNv_`CVH+LxGZ`t1@?_I?ayp7EJHFrnL
zN;Ay_;oA4jP!1xvp7^JO_2UGRemXrf(kyDm5l^z3356}1-y2yKoGbL$DuxgC3^L;W
z4(AjNR|Of&Gm}<-)T&8w=J`iHuzw%3%HYbQhV%cUW_;rL7ovHmmXP9k5r?7D8V)pW
z_taGUKG^%1S~U(c;rmGa?fRk)mF@SILOL+OQG47tAtA%W&Gttd!nXjSw_xa~53v=~
zHfo<>!GksibUN7AK?QuxxmL_b&zX!mqUZI-LR<AeVk|*%9t<5v0DHmmlbnsak{Z8F
zbj5w!xHGA-H8HL&uBDqRrO!Z|?zu~xV;p9jW8|6A0g(x&Ukcf1CwSiC#93192nKxd
zkJX%F+7FUMl_^VsLz7LYpjN$~au3Ad(c|5CcjGMfKXAVwvCfQod*Rg@G7_6G{e!v=
z&vzm_ztCZH1iFw{es~<{59?)LbB}{-FEq!O0fmplwNC^Vt`2a&2<(VlQzF*^k?Tdg
z=A|{bkr3?XCiAHF^-Zw+0z(uSGzu?@P^OadB2r?o#-ya^FM^WF9yj(v$lx7_`vlze
z^`3>hMBMfBCgZLb?i}9ZahHU<6tN$lkb(oA@=?}QymRzUFycq@M~BYAna9Xv)2kSE
z`SFG^aOS!87QFOp*>mVZLA_lsicls2_I@5pjiB8I8Yg_~PGQOWq4Y?}5R}xNK>&Lp
zyX&*IXT|t4+oXLi%;1mFPEPv|U<eLot2-G2&%nVD>L9vl2s-Ddh@+l{nt9X#?>Hir
zpWHUzeBT6qBXTZc3KCfQ>o5oS3*BAyf-t4fbEqiHnkVVk(N%G%82~$bljWT_?)SaE
z<|r-g(G<!6ZAMP!-T+IZq=r%Bcry2AriuRI(sm;?p)WwB+}1=qjZ!~SYlwdmoRLd2
ziSkMG5B*FOM%NyppGZCqlf-a})Xsp!4vwobr7sYSI_^qI)Sr9@rjndk$joHA3va2l
z4)0;pW+LZwIKf_70vUXVyQ!F(IM&8>9WS0bLzx&C`vZ$aAx_r(i5qv-EIhV^2hP!c
z&v(|kK@sGi-4GjJJcHmpVq*Q(x6z>@U0r;%9ou^6_yYUABcPLduu$}k9^(N?E+C%W
zc?K|firP6<cMVcTi`PbxN_XC*4*c0!TSg1%_{OLzTG$Hr;ZWn+R6JEhL-u>Wg$A7m
zS2Ouy_g@+TaIyPe2Fkg3mx9f?2U+()|NIvc!TQ0ic#XoY>X7*wOsB<1MNk<OU0=dS
zKY0-73?*O4CVGkOKBXD>O++AA-~0bTZy#6Vn(%m?@5^TzvgDv$H8Avn$;^%JS?lVT
z)N`#XAxY7P{SOVt7$GU%=tKI&t2vOS@rai~74SxM?hdS|8Rb-JDH~EWZo6x*?=a5F
zOoL}`n?k$jq(r<cE3`NNSnc(s#6?^2_#v*%IZmAPfM2M}YX`@9llj_#e>`T9GqeVE
z!`;Q&kNrc((RZRujJ`OXLBCS;8ISt91NUW(#GEk%T@OJwgx>)R%U{IoPxxs}sj1b0
z%)_rE75NUldmwoaZk=L479Zx|%s&mU=&Fr7(2T}rL=lcPqM7x^V2u)kWepF8%31p;
zWEI1w+uw=|R>Wq;PP8xKE3v_`811%l>XEt9bTsZ<+#WTD`KRR+ZHdu6qh06CqG4z4
zVl;-CXPJo6@MCXwY<QBhz`o=bw#<o8m#AWUH32onB!N{e!MxW$MkT!;Y&}>^@xBON
z#>?j52wpxgpMSw0;JpfCS^q76bdL51PH8Xx@enMDZ@gBfOcwL<{uF+L&XZ*ySea6S
zJNv-<Q!2#u(UfX&eLAH^Twh38A+E2dG>GflDJ|mqeo8B@^);UtDq35I6*(RFv<AM0
zI|tqr*#iGAPtU9aYc96?XTz>xu=Yxxe{xq%VF3PU3XhiKkU~lpD!Pkwp*k*zeFv`1
zjl<_f#xS_&T32)+7vCC@W<Mqq7TLZI7y}pERQi-J-o<cL+>Jg}o`P0-obmcpB<69N
zy#}QLTh9r`%cd^_@*RQ8`(51NDZ*Zs58Yji@&opzr4Th>YaI{Ac&MAbazCjKCAg~Q
z#Cgs{hP>M?aG=`HZiX8AJZ$mtJP9>jRny{J+MpM4D^#Pu26xK|PNhf_e3>!9IV{oy
zhrK7yV2if>U=YVwduL+q)!VY1cogDB34i*v{{~OQx);><MuEtds@hs+N#B4i)b}A0
zjIlxrBqJpBwAp3{1Kh&{_5xQUZVqH-Kp~<VNaMVLrxD?+MPVhI!Xdifr=Svg?bLp<
zSAGT*4!(C6RoeBdV3KZ;X*j6wgk|DDyIcDc2~SnC)uEog5za*$^crrpGoHo2$d?Ct
z;&p(8s>SVp{`u#@kNdAXw*o&;SZizyC%sZp0qI<gYSqYid}YM$`dDdFeP4ES58P?Q
zy4&?T>Fk+pL2`x7T+L>tq8aE1x9nc{PT{1$ie`0JN@}(iX0Gjn;h6Xe6cZwq9*0R4
zo{LGxdF~Dj?Sbm>(HB5T$aCw@!8!OF0?E6Ji0-`&7jGhi>BXoV7`g>8$?iPF@y+}Y
zpuXu1aleB1O}G!(p200mBHSGDo6WZS#`fpJql6cs>FQ?N0>Cg+MTmlYeC8|T`Xfah
zEWZZQl2Gr9CIUl8fmL{>5Z8r4VE;FXFGJ{uFbaHy0ONy2wq3*99(YeET!3K=K7K8@
zyb3O%Ptg1NuknvwyW-e_pIGou6zFv@u4s(m`(e0PW$+AZ5xi}?@Z@Ua4+(1EUM@jK
zu(pbyX{kUfis2?j6?*3m^mNgk>3!{I#UO?cw1}hfa9vY<nV-JYAKvRsXKi1Q1^Z>8
zlbBFYTm9v@hsWFnpKVOQ-I##B%u8;CZFu@ay*;6CJsX27in%Wg9|y?HD`oz4GseUF
zIfh&>#L<uB-TZeb?@{?XT=b<#lQ!GF!7YDnuT7QChehPO)RgZK^xu_yE=#_VkWai{
zhIeBjq}J^FVGp#eW&VZ+aME-J4BnUdEnD;K^R;fm7dvcU0&4qC#D5|_K7ja`*-GuR
z9PLARdwOPi`}<Q0aA$b=$+)AJH@y9$5pVx=#M{3R@%FDry#3n|Z~wmV_FZ{-#wJj7
zfb+4cG9^j)aM&GZoTE;>D8;!J`3OQ1X;J~hO(zb3+Hmbfcg?I#Uw!E7$h)H+eD>ft
zK9)sREN)&8-w}uLZZh{f4rF)9mSOV&Mwa~EUBGq~Vk$)J8KkXT0giZi*Iu~^H(Ynl
z@Y(u-AkNwTX~1?e?r;iOv-LFU^we`PEkWk}!myP;=~&^cjQ~3GB^SH@ZOXZLHMMFw
z>n0~Zy;H!^t>Hw?1Bq}e^$o3s)XVb>tMF~3oBAt3qQq2&hrRAsK6*UZ(tnL_V|+M;
zb95aTn4Ln+3`}>(gm-Qx@fgCDAPL_<x*JV1H~J6K6F}PbNpKn``A+D~nB>Djr+)&C
z>Oa3`c(-Hb&!f-NoG^d%820%>Evi4rB>sKE4|;nx+a^OE{y1mM`5v)%m&va-2EQ@n
zH=O+H;AA2k;K$7Uy-4Ro4Yx8S56b?3XTTle6T@=FDfgA^4lEOYi3s6{X}vkxx;kjn
zh-hh`mi3CzgeL4jaYqxr^<NPa_KZTn=gUlc4%!lSE3DR~?G!Kbdj{#{nES_AnfH3h
z!lL_W{X#gKwvU6$ImG;<i_#G9eHBL0sX#dREhy0Uy~6l8dS2th{LyZ$DHkU{&1g{7
z#3zOl5nuKCzmEhvsMrVrohwVO%2I0c?#P18WICRuLh!{5am?aTC|LLe;WuWbAf<tT
zFS>&?0(a=%L8>fR10Lc-<9+Ega22s0$7X=88_pvY&f{Ei)pQ*2_cbI`Jrs#CHZ0yL
zf(%{z7(vFtRTUMCGCo$T)Ofs=h<GDQ`CP3U4YS<ZO&zGKzQgwUc(b+7cr|X7y7;iz
z!Yx^acGK_>Sr@}8vRfW_JEQ`g?VsW4E1LC`;c0B!)gqp#Dvw*MIIgw7n{X-o)-+5>
zwHc{HJokl&u<Z66-`Y6+Za5t0fwlIWs%zstecX7>+0K71R5Nt%`#IX4wouF_L5C*2
zpB)oidhvO_)tv)NGheI5>EWB{OqSB1F6?Mf|6G1-fiS2gDA1pM8S#pdKiwEfz#{7a
zYtk_||1VdY4wht0R$(%HwVuYnr6xLAyD%ARx^kutK&_55wHDJuEH?b?U8eRAn5AbX
zk5ZiyoQ-i3k%XA5@UTzAjUPLSQQ$*?e$@+5SUEL$ZAVS!Lsy*(geHfffU-NBwOq^G
zTG(_9;CV6K`K#DHNBy-pBZD{5yE>fe%iQ=3W$)*#ZGjBOgc<sFxNZuMhm!cd$ZqY6
z&|5IRdPai!=z)l0Q6$c3dR6<oUuj!KDrh0%BR(*A3wk@ygrvd;;s!6peUBU8w+`=}
zDk>&Qo0+S?6)qjgZA9yt=@iOdxr5Y)&ocJwj2%}QnTw@a2-!r;XYAD1aS6dk>a?w+
zf(lg$O)8;vmY}Dh69wbi0!SHPy$H5)gpx?oWRgI0?{MEzOuN>sa=LJ%ul)WcyHYt6
z6qt=KSu`sxnleFy$l)}DrpcmduxM@o4HST5H3%ERw}TKJ6kQSh6X^$b5}%7?Cyns6
zaa5j&71%d?Z=+N9Ap0v^6<x3-`i;nX`s-8ujrBRJtARzO1SSLQFEa3lxA0{)i3;Zh
z`7Vp`=;apZQFNcH5rW*!Sa*?s#BGzamSkz`k0I30fGkntV;%>CQ@>&i4Cd_Tv1*~U
z-rRSQVH{eo#`pT5o**f3wDly6OMN}5cj0Mer0gT3>}0EKU9{|Lql{T|qu%S$vdBk{
zlFc&F==~^{<Lyp~4oIu#U|j0j$QVb5lk$;DAtx1QLjL_6Vy~vO1{{?+Uw^m;!<T-t
zXAlfxKd6mU7=z8$^ylE3@n9c4HDW$QJg`6iPm#@J0T_D*;(@pWH9~YUMh9jxghVCd
zc$w4u?rG%7dFVomu#^F!Ola)K7ysBd0le-5`wo6E5m=17`=4SI?3F$+;^4Foy~Euf
z=cF2=XEmI)53|?YW!5`(h-ma&R2w%ovmG1Fc^AQ49(@A#Wv_e>O!$eHEuc3H6J1p5
z-vfxYY7o(Ibz#%eY+uZl7q6z6cwRkz1fIdCQvh$WXcB38{V^ySwvwam@C<g=ZUDQe
zbRFcX`bT8mTI-W9^U&k8eOK^hAr!1Dbfqbj-Wwu?r(uBglb^-PiL7ufWrryXuOUl6
z3X|1YOC~Jszy^K06s4SR@_CP3Z8e`T<Y=GgVr$I@VcOj*#4bCxRvHU_CPH_?dT<_$
zr@b?9i-a#uPSlF1QLQSA$J56XowdK9an<+jUM2v)%F)(GGFPhhEl18dh7bG#&mbg#
zDq*18^}(1@<I*<!8^(H1Qv-LeKt3f`JEUq~Ak(Dxzc-Rx$HyT9`Rgzuk;e@7PUj``
zgBWe=`3B~%<GVsd-}w@cHoZ2Q%01OU**T?Qg3|MBouBbDN`K)Xic)ERTah_ka5%1(
zmemA*f*JRB42XaQdB^ojjedUvx@A5xN85r7C1O#kxU*jGAI=8?-U8U@-p3#+5?~m*
z$ec^O$u!fMmPH)F7N^q@l8LC%NhQ&IvwvIdr{j?c;RHkIw^cv<6!r4RC^V+xz>KkQ
z;k-UFjY0O&tsNG5z8~}!s0Ok<gyw4L3CD>H6i)bD4lBlin=AyKH@IO2JcQ}2J;)Y}
zTqRBe3DbZfV0Ju?7L5jQ>^jQ+c7wfF4S;0=^kC97Mrm>djosf98i$HDE`!vbc^m{W
z0eE04pMs}DQz6Y#(&vbH3dV&$#j+K#3;kPg3MYe&v97Yw@Y^WAkqmH<k-BzkzZ>()
zQa3FB@NbxX%bvmH!lPq6S8&#{F^kk{6r`I#Dz7G(p82DB`tnHqMAU)UeWmetrSSRs
zg|IrF!r0G24D{}^tUuOKypK#cCkT1@TjZ<-$Q9>Q_OTqy^msgSMLuxbqy2&BM{iG_
z0k?B6ib7{tL@O7A2-@N+k~I_ok1_DE(>HJ%B*)O1CTUtjzFvP9Wx(5cAQv=X8+`9r
zT2;e2m4`{JZN(?f3LpZ%>y48oJXoHAXF+9?7{`AROuQKuETWfl%!c&o%o_4dzbr_=
z*Ut9wwX=PALt^e)McId!#dzh{eC)oXsD<K-8W>w>wx1v28B}Jn>o-Cy{a<*u4X@m9
z0ou@kPGLX7KgPl%6cwzXY2mY{EF_shz$ej$CTq*dB_Rczs=z5XW1Z*h;514uoUB+P
z$qA!%H#P<!o5}_ou(u5U2)xlj?$Zo@OR+!0xo;<kI=*$}oePJ-s4;3JcqKR)bo}A9
zrIu=Zv8D&$@IYa@Sy0D>MwN$5_^U8fk=7FaNfg7rFalJe`myf&HcsuamAY)$XD?_7
zzXlTh>nA%}r13t3cEH%y;4^M+d^<+l1Q(@hJQ<RRH9=qZPYw|D-Q?*@4~I6)G!P!j
zMdpt$GwWf<?HPcKMzBUG3&WYM{en{xp|c@u{d+({Wh1cz7&o@<-8{~oa6VqAs3p0W
zK&a7y_JMuIDizfa-@d>CCGvfL;IP6b@ko55?s<aK1`-Z|TX^>&N^*(e7Qhp>9Pyy*
z&{8PPltvF>O(+-_?M_pEWcHKJt^H!Gn-)E!|Kk@ZP+AW<$|Hoq7e&@!SJ;A9xGVgB
z{Y7R49fIG)en#x1nF2u05qSa}OpEOGqF-j#pMKiVOF2FUB7ZeY+v-&j#860cED_*k
z!8v4>S5tczccDF{0NT6S(q08tYwS#3((iq|z1`FtX)MiIw9wqDz0{n@$8@l_H9XM(
zPpE46BLGL2!PK;$T>%Hefo8PCsoJcc2X`ytsV2{v+1mM>HSXxB8AezssGWh~LL)fj
zFbsWp{XzC6KYz4gh(QOWGiLEPkeep?KiGVX8|&s9fo(OGJ(q~OBVanejOJ0F9k2<*
zAZ|k4wpDppD8i#@zvRki4vu44f4HZ;{U(c$EFy#$#Sr<JGCU7LL=GM8DQe%J!oDMO
zu$MIdxZhm&0Q-pV!2OtLSb4sX5`JwY$4fZcwe#Q|TM+IPptATZCcm?6nL7!sL9;4g
z(0UtE{TK7^G3+J|VRzx_9UT~+_wZ#75b}xH*h#)(%6AEsAmmG>d|io0I!io@9^%dU
z`LF$ha1Yu>{X9fyhIDpGx`@3mt)l+AlJ9QHCu~^ASB<5)OZiA=$!F0+zK?!7Mn3WV
z^Qgadb@I2_@V9*t9~sh$_kp7l!_cA6t@l%2;b)hjVKLYdKRepgCEDJJ4Fde^O3BZX
z-14(B?Rk*Xu=`l{=i$UO)_~6TrwVzxvcET}zgtb2^gKw^wf&LMQlM1<ov8Xz%nHf=
zI_a;g^{Q`F*1uY>ssolDKj@^#+fA7v!jstEbXu=SZs}2`{if}h@s6=xO^M3bS)YgQ
zi#4Bh>a)U>O;;dU*ZL%(rBAB@I+G~`l=5rG`s1}?`H!ytUs`kLWG?<4tWnHwRmdys
zv2{X6d#pBPMbo1YML>`5N%lx`OOG<`W4r$^?6FphrN3@tp}&8cGU*Nfh^0RgTKcmp
zpc6;K|BF3#HJ`UW_?PoJQOGOwcLv&(=kvczS<&=Kkhar&Cb^|Qnf4}#`M=EPYE!0T
z{B=1#kkYk3%%J{OnlkAXSe3i<horOAXVIe%A^n*7@n6j6@<&ZsyYz?a@NJQZKfJM%
z{ysEiMcbPZ33bvR$u0fKw5LGMi2gdsXN)g`V>oK8xYIi9-v(fRi~M{IT4mf<;KC_F
zOwchYiAcaFF*svvf)lPdO6$@N6L3JX0apL;d>+SqklE;EeBO1dHwSZWni-)*{Qna6
zcc`)6GrYze9uu5{z8DLCh<R$UqJsBVSWCdd(e|Rg;{ohhL25?btRdPnf*QHjDL+{K
zkKw;|SvGx){iF-|E(>HQM1t=7%~1*Qm17}U9^N9xSzbL8;vxPXYxb}S1qovR%}SOH
zb*$&iN6oVD#Y{Zbe|_Y_JDl1kV|)-MZWIH+=r>Pa2&wt83T|b3;jJFeRqB=aQz@Ry
zv8*okQ?0{C<1cg+U^x|=dp)S!Vg`K)aZ#-<!8VFo#eaRJXbj_%hfpyL7L#!#lyz~s
z{3fAaYC1h6GkNnn=8rq**Nj)XTNcqpyt1{Df_4?JEQiiQC!2EWt%w=BoS&q#bZgN=
zsb@kYMn%$k+ogP;KVr_vF62v(Dc>r}ceW*8RxJ5QXUS*LL%xN({yX_zvb<Xt@;&a0
zrN6HzUz#Of4YoC1>W_4md=@?A`{vvKPQK3{`V0LXx+j)=zfnGBNsM?|i6tNDEcq;Y
z$amGT^1;7hx6l2*Tid|%l1H5yGE~^at~GXL8<7H_H%rtfS4E`empBqVeQ5n1!U6HT
zBr{#epGyD4ZBr^|!Hv!_oKuFUxxwrKBpQb3Line*NMpJt*0CJ3On&!HG3zD!{Qn?-
z*3$n<{_@4tza@XcG4eCNYWml^u<tome%7(%m&sS|=q!JS`4!#o^|{xykYoJo)(Xnk
z)%-tU9PDGZDV^Sm7_&?JC7op-7ClDeOd(!}`QK^%>nh$}j)mnf_A3K~ydu6i9}Ua#
z%_37)v^@mUc3PiFZmChG<@YwD>vP0@VW)U3ztN>_h!`=F3OFXH?Q!98ExsJ;PRVn@
zj(h2e_ebP)0oN<09hWSko-<54uE3ar(PYDhA2KD+qq9d|G-BcUOt@|sL~7eBY}HxI
zYE~aQ)G9D)88)v!zg<|yvFn+UkK2UaaXy;s878Zqx`a&`tJ&ph#+vzOJJ-4{YDW&I
z^Qt7xm$eBAO54{^o{=xX!nbrG`zh?**haz^1eZf>=gmf6pELW4QMw<VU)cMTVu1_`
zd22~6g%Waw55B=FC$;}y*wf?a*I(Gv*1IXMuqS6Hd#aNp-TCk__C#`PEM(gAAY{~@
z-~gq3Xe6F+A*l!b=i+=J13Dv~_^2{E0-fWDG$H12nvbE@(NJp(6czD;>m^w)gRIo*
zu_K2{rc-2HNy&2ksb9<TN9F^Pk>dP2@@u);N04KHo4LXc5i4J3)9yjz`~*K<4l+`1
z)(driVkC03RS4F^pCa=eI@?}(A7VH@pjgIm7B-&5PZOMMe;3J4<9zh6p7zR(Ec9g#
zx(h>Pue=Ifr5=KN(FKts8_kb3^H6eVhp7fV4U6J9d<&O-#B-5I3~c<VBPb^FYMl5o
zSJa-=T09QnZ;=~+Jk)pS==>hJ{KHDO0tEqHzY_wuIbin6uZ2u_w`QB!q$NdgqG?F_
zYX}`CPI4n$#EVTW)_bYB8T%IX%FS2>oV{wC!Tbg?_oO3)Ln!MUg&d<eX5DvUq>~}t
zY)H=sR}L^<e?J42^?V<`S?aurk#3%I6przt&S+=8FiwaWt;zA(*4~aX5fxK`7Llbo
z5KWPY*cr>rt<HjIIEchk_Ne|k`y1?RXyU?H@a1@F?ihn9sE8O0QnMWlW{-Xp%NBxb
zC%$YF;2-Wd+cO7G3`^V@-`ek8kB;GCko}$p4uoMjYb?uY1Co~WEem~_`|p5m?UmaF
z6nVM_B|~HQ+dq2nA#^d+1CL{jNaz4oAh^?UZ7$V!1b-_FkCVIsaCyVv@^ges=nr#1
zu!ArrWpF+?2{)&|2__RKA)N1MfZnm4jL$fy;LFS-bI&wH_!$1tOcOKQ$+Jekn<d`O
z;B1V3+w<mgX>DuU-}UPkV@oC?fUs!PS<8+YS!Ans7`P>0@WCWKfirKkvzBe(!HJ+_
zz4VaP7Kq1!7^NVN@U*%Z?LWwdfXv9pNBjj=O|G8||1eke(uFwxvB%88uhw_^*$HE{
zITgL>^cX18FDK3e;uCA>P=0DT^)p^f{C}Zap?*+EL`_2DW(<{%xN_{ow%3e&ECxFX
z<0YQi2#qd9Z$tepWp4NsV?9p%8C;{6&RTM}44$o+oUh+Xga4~|rmK8SI=uQ{tUm?w
z*)OsFtP`UJqcR3RG(>9qRzw+{;u(@#a>}$XZIS)Ay#7EwDIdq|@O^L{hIBFVakcX-
z`F3@ZZ-gY@s(_GB&c~75l24}X-a)>Iy&%w%_6t;`c#6Z!h!JO%U||uG{&k#{DCD)`
z?KqrHFrz6W{um`m-3wB4Dz$akFR+d!xJ;h=dFOaLx?hmw*EU7O7kM2+`c)mJKLxFJ
z-tF*tt1naaQs0*RtuWV)^4}`S@4hc0{|b4(!#bAyGI`Z!o#l_QUwGTHievT*%RQ8@
ztNp@RP+RDBQ#yTx7Gu9aI%~gR(Zh%QjJbI1{5sY?tnDOMmxy(o1m7oFM{ND-WgYaZ
zOzN!P3bO~0=tu1Fgne|-FY8$PmB|N*4#@cqgtg|U+04DpXTl$@f<KHr0XeCI`!k=L
zW(hej&enEdg~HRf%b+#GfFCdg)N>8-qQ0{U>2Prvfz&t++o=M2bl)fN4bkuSb&8*l
z^$$<p{lEB!$4jA4ylm{bNMHB?!jSyn4YY%2Af(~OIymR2u%g2`zpak~?WjC67-bbp
zqpWJW+-;lxGT!Grlg}5>qb<G5l(@_Mu6{emU-;YUrb;9J_6@1weTY>%`CF1(Ldvw4
zLC9F~en<IWuKFR2{9mjGYE-^^JIS|Fl5f<p@{!z<Po{nBV_Ci&E%KR)ee|~<=4xx)
z;v)e3xSAB4Ri^MrB40PfVdp+Lz4CU-G$8DiOXCz}<qK#lXv4zl#$JGbuhQ<X0Tg<L
z`0lvF19!eb$s>`1&iLDlL@j5jFLQDU#=%}W7u+}@7(spPys7=|loGUpV|s{DgAPv4
zF@_Pxbu+`Wn?>lbI#tB#{PWoq6cK(uk>$4g|3;R0+Z$Lj5sXx-5oZPNPnj(E<AZD)
z+<f8m2N$B!Ui!}YJlWtvpx(>wABvzF=VhL+#=L9hATWdo?K9P{FZ<9quZ1&6-1p&V
z?&s_`kBEx*wZx%JOtzyQOme=!rJs|>qoIw?1C5Ic#))`l@?6pX=TV)9nYIT1&4$o~
z5;|fvGz+nV=w`SNM4DRd*47!H91exM0fF}$jsD<ITlY%ajH7Bsm-IezZ}?$v>=ZWR
zqF;ytp=FLGzP<!4<G_JXvvZVCG^4!Kkfm+(;^s{Z7jJadQbHCdvELmf1z9S{I_96F
z`KJ^-#x`vJnDwM!4)oCFdJ;x+p%blPpNuuB%ls4Rto6jAheZGQ=$Q2+#(MXt*Yd`l
zpP$ywrhHvJkB*-J`S?K!W7p7t6~61|rzErlv?|a(HvX6E@veE&d8G4%L}CRNBNjc6
z)Q=KfY)Lej5_NSRiFB4g7Ci)-1%W!8M~cQbBA&;7&IsuH>d%%!Wz2>-jG!L-G<_qi
zOB}3O<w<sF=P<^>4p*9lf#dO)LcYW7zjYS0Dvs84J{lx~^vl_iEUP2MSlkQ7iCuIX
zjv#Y0;;bc&<?bw6bmC>qPILbt<d66}yt0Lt_YqZcw&*)<=cil0huE$_s<|`KPe-o;
zmpHXG_-nj8`&Bm+avA|=I*+2|VX6qF!$TQ=ag}E|(C8}cV#kejX&9E(eO;O^bsB3j
zHd&~c@4PW>Jtm#u(8S+sjnw`Xt05yFWB+`R`J!A6uLbegoc4)ZTkqEJ#{+n(>1Sr{
z_~j8Ea2|9A^o@Ci&o>%*N4K_DY8ZcS>_`a~oAgO|GKIh2GJ}>}MCRG}$jInm17u<*
zW`H5kZKl4_o&Af*8G-RD=KgersC}cz+@N}}oSJaZUEM0xdk^*69?7FuA$O=OZT;v-
z=8t*)^pM=j(G3U!(C1n*V{u>eEee_E7Enp!>C__nSwsEs6<xQs8!DoHkf23!iW%Cx
zh?4f`%gZBkXN3OKTtgdq&_?TYYQsy9h3;@{^^WSeTk6&>Mr)CbTBm0e6;J`!vueQ)
zf5I0@v5xvFml!<-Ms16ctHF6u>IY+ywm!dug5-9;S|3Y6GShcKCC48T{UCoW+0RbP
zem2Vb*{*NJBE|RJ*Lp_kAI>opbTc|sKaC1ngleKcNs~pwy1=lNN6bE9sF6q+gQK44
zc)I=`!bK<w+ZWCP*%(bbnkLv5bfKpQOrEg6GVlq*oA5JC_~Tb>+<fog*ruH~3)9m7
zwT@}9uFOehy%bbtzPiJFGxQaiZe6MiQ?3pgGPHHQ{*T#)wvf`veCRf4>;G`~?(tO?
z*TVmf5Jg3Itk7b;ZET`Jxdp*;i?T_AI}(zZi-0IGBs(OKTeJ7(;uTC%*^PP2Y3-@4
z*4k5hs;9oyp0+j{Z3s8PUMy0rTH8u3)+fdb^?oJ4?^-j@vv)%1IiJsa-ap=7TA96`
znOU=D&6+i9X4cI3J8n{8FdSPjgkul5wHwB<IOgiHI3{v6TM$P_;@5pHM);KnmVO2?
z%P%R~<=4>#yZpL&@3Humih3ETJbuwzWIe&0j}M9Mhik9&L8m%myV+dl%Z-LFLCD`&
zC*;>k|7wLOl^$zuZ%?7W{RUB=$*z_31D>r2t}uC0w2r)??9LJj$UX426jvZA%B_ED
zF}FXC|D+v1MCZ8bCKXvdY5p7a{hoFkcK+u&|GG9=-+0)o@14Wy`%DVOU%&oX^$jV4
zqw6a#O1Sl{B=?Z|N>OfoQ;WHK&&c&nMYe%7$E<JsS<|}ZG^sj7&vou!V``g6>)ur>
zwXKuZ?Hg8GdGXAp_XmtqLt57@4;0H3#nJWsdrJN=`3JV9w67HA);G1F2X~KL-&AB<
zNaL0-`j;~_7zWR>zoFK_80UwKnV$1^qDE?{?lCI6Nn`6uu~9yBsdRQQ%y3Ipicg#8
z4=X8MYP}3}+9SJ!k|FDfazEcYsO?Xkze*=k7ub_bw_pY%`XE~g%J$X;8bEGz^6{AT
z#uS|eEjE+8ARx(H8oY$ia6L4ntOvN|{{a%>zv3Y+-kjEBHKQ|A=7tP$WNi`krxXTc
zR=~=B($Q!hjK~mE#Lm0gb6ZylBQ4#DO&-<bT&lr%6B>Wur_Ps=Fqdvg=+d2<bmva7
zR1rMOFQbc`GwWTN#(G@K*YWvqbxQfn>;BcF;5?TC=Tpq=VSJNhZuwq9NL@H``2%&w
zD!+AD`44*KPxs2d>FDw$nOnY>kn-ie*rV%@ndmI@1m`qcmt^}QKhAYS`LNrg<5G`~
zcNs~B@j;Tgba)A&W3JFKbUlearItq`AcNuN*EXC;z`@6dCFGI>oe|58fPplwt;H6X
zeW3}Vy<Dcn2l><AvbrF@*=0<9_Pisr9z5*pb-w;~=trUM$1>~5mAHkZMe*9qfcuf`
z`VrXQQA;=F&^v1#{*DRETv_pu12#Jn3&<Ai$*QIgN!h&u%f<A0VMb-S<?1u!40T-`
zl3TWpm){Va&3VKzMRFBVP~UzTnBeLYHHam)uzl~Cx;Q82AJa;8@euRg(cQP|4GIS)
z?sso#+PULZ_m-xeq3)%}#dmOs?jzrhZMu}u{^BU-3i^U6KiU@Lj)TJZ7lZ9b&W(M8
zraZf9qSzeEAxozyvPqVhB6ZQp`E2U4{fKDFKIaRv5<wdX@93wa?NZ4O60%exEtEQM
zNVX@h6qp%*4H}{G>3|*{I|WvSx^k2!Y5az+<3e{rRsino=0T7`*5qKoz-hrp0}vs<
zxplHGKaR5^454ZM+YFIwt3LAWN-|_l1DnWQU(~{H19`Cfs<b6F?_Cj(z7uHwC=k0H
z#*AL6jFD^qMq<nrDU3M@v!(wfmPTCrbl<g__d)8F%zL88)QeK`KFMUU|KG`r@myFV
z>tI~K{F?wNI3LO}9}YE6f|_*(V;$5auJ8~oO+nNtbLnp6AI>nhl`Y9WNvO+Ca<rsW
z+fkB;u#2nXXSPX$-Y7Sga__R7%|;4*+iJ<?oIg*>4lWN~&Eutzmpe$5zw?{?3puY`
zqZRxQ5Q%NCm=n$93sy*l&r%r{^E{)sh8&djcc#kRsn`GLr}TB@Q;!Ikc{-;5PkeRd
zAM{%c`g1`q^2obpiN7I(MkKSyrUg1*1E)TS<MO@K<m({?x<AncK}wFHWHp}^g)7iy
z<mb)JYzlX-s%6xN;Bmp85gMvgCI=bD5g^<7%42MQo3zQE;t9miv@1z_<?ys#uNs<m
z25GsPphxHqR*)&v)K~~tnl*XAkTKgCMe?Nv^$6S<iu&0{kuX6?{iL0=fwXOsh`sv#
z2Z^P}P6+mlENgKR(1;z-Wd+~?a5@XG<Cy<_{E|%xe?F@X9Avisr0=58v69Ns<r#=%
ziXqUEIff62$k)k^-ZV==EJrvCS3!qde36i1<ZiiLIj=hps#@)ft`GJyR~Z~Au=Dz&
z?$GISr<@$|))$?75g)R>0_ywe@GNV}QQus?BG~={pckDgi|oQp8&01ZdyISi$8{Wt
zzP#z9sj-JPZ5Z#1Js_#(m{hSpilrqV?yM0G-L8};O%^A%6h$c2a}}Z3TU=xEOCdD+
zWU%W}r};n0NtfB?;}!+TEiLFeHE|f8DYe_L<6JoOet-$GtZ;9EPvENu?r?rlEgfVN
z72@5%Y0;BaWte`n>6SDfj|H>Xv@+C_SKZv)5)HIIp8m)g6Q%a)-Grf@SljAwAhI#S
zhYtM^4L1eaT3VufxIsSzY8%?ZHPIG6wDF;*ZKKau7f)}N$i2r49lD52dz$xndVRi8
z;QyEgy%(y6H0YgtpcXH|HkxnCM}QoeyI7i2Z*g&E!w<|pe+MUYLGlvsL~obYavnkk
zB#ZH~;JEH_u-pITO%nI@l@hn%1Xk6Th#kxIFbkZOeC(PnkM559iQ%lQgU?<S^ugJ&
znaXC%+K-gA-&svE;Vj^?tF=zjl0vfAl00z?NL$`ZU@cJIqto*JGTBBfUytr`{(7xj
z_%|O;7QW0ad|<OHFVB&XYQ=+OwU;?6{hOS7JQNivC?>cl`sb0uNmQluH@ZLPNw1`J
zdAUf=vvEHmkUS$dw*TCuoQRZ>a{f|MM$f}q-2hUfP+F<h_IWjQ*%AyrL8w=dNCL6X
zi0$=~(2n2!MXG()bDe*cFXenN4-<qyg&brf`9tJj0w2hK;WfgrzG#>Z+&c~I^kpZD
zI^n0~@3@18ht4~$k{We<QAW6XJxbL(T_^?3_n9J#{UKOW><=F~WUGd+a&CF693an-
z$`8)^$C!!SPJ1ocgFPkun~;azjge-aeCG`+=k67#MtSRx`|Gy48b|kk`0zWSQV*HY
zFBX={+3uOp>zn|eIf5>?UC=;?_4B=F@ZB(V&5J_lDW{WMj;Rk4(R-#BJN7SJFCoQm
z7e+dtB2}v7#OpoOb@rc2XiHSg&k+piBAq9KUyrH>dk#t+zREw_e1db5hchHvr7QP)
zl9#c3jI;C;a`&ahrg0R!i?5}L`^bi4XolW;XHfM{brHaZbWmKq+<EfH?)a>HWS7RU
z^50M3$oC^hWWNaezha`a)dMu8?i4FstAwuOgf72});Wyc?GKU5%sU@8`NW7w=G*Ay
z8}H_WoJS<*spL#JA`GyLn*iK+XBmC{@${cuI+05{_mRl?CL+eE?Gyn{m7M2)#z<Ki
zObDI99wF47hIph><WEU;m6uA$a#N)e)=esElbo+GPmxviuG}vaPfQj6e3{_VEBzhc
z7Lo6o@^-oO($}L?oqnW;3!b$p#Ny*({5qr%9KVw^fS*GT0`6ZT;NP7sAE_`z&lD#$
znIw-k7xdTCbLF(Y>KR0y*8UDz6funr0bE2yMYQ#Muk`pg0bRp6>7PhGn<9f`ny>dV
zFWEmHVtl>bnG0>n`f6?Ce^2S?T2rU?L(y@v6_dNKjE0F`R)hj(4PVNiG);s<8u4lu
zI~;#Xbn(y{rAv)=IeV{W`YtsHCM18bM-aHWDHX*L#5PHr@}cYai%v+<Pr5#9=97=E
zt}}lqE7?Nsn)RciiI|w__Y<U4s6&T?oWA_-VqWOTSll&wAC84=LxtWSkbif4a2d}t
zGc-LFn#6;mXUn9QYWW6^M>6tx7{EN{oX<-V<j|y(enslo-?}d!y=^QhgT1Bv%f8Fl
zkbmJ$rl(_rlOFFbJ<{%^1I(8T6P8T+NUro=faX4lv|O*r*C*a8^k2A>`RH5zmFWxb
zkjp5p?t7ctC;ZtTyzRempT3C9`;s5}r{-4GbG6VYv_NNHLa6f>?CX3FcXRGlmb;z>
zTYTT*?xKCTl^&5>8TP3iUD%~pUKF<XjR{RUY;S8=xkC$*doJRA?fD%Gcu8(Y?CGv(
zX1=_Hy`ZqWU`%2665QEe9vExvk}ekT`$o@s*T3+M5NQu1&cRXKrutN{XFz1_J^s;=
zIj8SYVTN;YmC+Mjv(6yh_9^o1GUT9rAdS~Tx@L`%ufhsv5?`?bPEvXcx@tRp1)YcD
zyZoIm5lg9QFm_z*?`$5(%zt{^ksw=3k@0d?;y4%oi_4Svzb{`E{}X(bCXh{z4B->T
z@O&Oh9e?m^(vx#Hl2RB0?rjHaZ8hWrN9Aak9XgK^hWWGi@viFrxBbfqrJ=4qz<*CT
zp_L-|vvRx=mr|mPZPpAi-P_;!2JOb!CbH_9l(-?Ze{j0LV;@o2Ew>X@#DTkCp3V<$
zW$ApF@5+~8`|D}>a|WV3;^B<$DlO_f5PgmM&^m9jY1x=LyWJTDTgJhqeA+QX=>Nd-
zE8qXn+sd=I{HNWRIYF{$w1NTCzRIBZL0B`6pD)0cRcX908$Z15gjAOFElK+zhx<O3
z=VwlUH~E<X81vlQ{?o2u19bs|9MapEIkxll{O+c~o6pwvIRix7FQh_J2WQ?gbbI@!
zgRz&TNSdKGb1bsH2QfeBpPH5bFFs#n4L>fE9~+6!oy9Nz)EhI$uKPTK!J{x;vmW<>
zQtnA{URx?+wt#k=^%MChEzZ+n&eMF)9|a@kT$4H5f9sQ<%K8<;-LatmG=^X*ZRa~(
zvo=aTnZ-NbCDXvq&HS@#R<(RrxxG!ke}|XH`d?xsmdg&M*Avb^fl$5KgT49u>_3fo
z(|Y|YWhDD;<*@NZ#$TA59-8QLeB~l0>8J5q463nWxD6gO?V(1Tj<dtwNXeE7WBSXN
zn>;)y%*&*!Icu*T_Nuqy>E9&QId757w`nI-P9RJd)loN$KyA;UNu4qlCUstze71hO
z+|IK%eHq#1VIiydc<7!o%>(xF@p*!K9SmVXe20HaEyKXJ-!EB}vE##Yd%pzo_g_`?
zIej}mI-WPnwbbCGeTfZ_kRMO?N%m)D2G*7P+#;#OVDyZf0}0yXmfmI0R`Y%yTe4W!
zojXBBq92(={*FVyn#`Dd_2*)4-DA^=>BC6%Wzu5Flmc~~a`lmbbfGP)1WLb#D6n?C
zM!ozG?c3J=moxKtOa0aOz8xQ&%a+wPcQDy8_?bz2Lp5Cey)U%m!^^0=)%a=8I_KW1
z4OS{7?cKB$RHX+O$j>eOls_}u-JJVs!9?FXl$(%$dN=Zqf5|D&^U?6;K&a*ko>ds-
z+`PlySBgFQmPD7+GCTo>gb6yQna&~;sPn-f4LnxIbnNY)mzjuDB!WiH_N)khr<ksY
z&uq0L_NK42wDbrq{XQ5i{e@xjN+OVrITUFI^PiBw$j0$vu(ao1LJF3N9!8RZ0t$7U
z1BR|sKKVqs8~-=r1mE8Dzw;&I0_rUP^nb;Er<{M}yY=o%O!Nwq)h6ejDq(2uUQ&o{
z)p?dFsTY`XX9M*=q=>K?L?RQRuq(*TF0oi1w=se5{}ElhZfoLBFU1WhDZ-NC_n>m-
z!MT+4LS5<WD6G7@G%Y^9QOM{T-ylKvSv#H5V&VE%gm2vRpX?@~hW8dM^rv(W+c`pM
zJdAbv3T7=y8^*O)cpg>{%kaPsXCK;+q(wiEZvE|Ve)F66U+SR%-;P&D2jkCl9?0hc
z-=g@zWNASr+3(}daIj#~8)B=VHlGmH31?r)<MycdUwcn<YibDD*>mrg(->(!(!gJ`
zzbidX$~pV}m-F*heu@_AzJ1|V^5q=p={XtQ{Qi5UtNI^$GQWF1Z!8>6?1PmuQ0$Yz
zV~p4;dzDni4eX9e85^Ck%&~$iR^+_U`TE}U3qUP@w`2^I*!2x`F{4%xHw@KHgX7O6
z4a)A7gs;wR%2Oc&fz7sxBRMwq{}|KS>cg(wrxs#wypiZTuz(jlD8<PrQR(>>-$jkA
z?X5?;oa<4!W|HUccoXfE-!=a0q>y)988k1kbfH5x^EE&ImRc>$(PS+>)HQZLH%YD$
zJZ)Dog3Oz>lvHg`$sF!W6eo%)F64HdvXF?y-Sh7Yr44qzUetBs&8>xVKD>EtSNcT3
z+dXc<k~vS^d`*u~T7Y?TqOC{#a8OK|u5oF>InGU|hUR>9^NB@s4sgBQm|MifV9a1N
z?E`I!L^d2U(<D*Y$oY5amgXV*Q+5ZXkZT7EYj)-HTEo1|9XDqebiS|w7b_=i05ivq
zZ=DA=uw8e!{na!{Ln(u|ycXn@g|EIXbjAOe^FrZ{mqx{%r<~xN*F#-1clf&>qJD)n
zdkQ8E@T76~xE+PGVNRdRw^5T>3G7QNoU<$Twuqq!$R0HX#sn*s?yF#i%1Lq8=+k;<
zf-SL$ni$RUCwhF>DZDDqa*Y@`qK}LG4`pU9N&BR5&TIbLKjs6<=GUZ<+xf@71Jl`c
zc~CzOIi#iIG`-+kBu%u!p>3lntM_G6T1j%6DXqVhZtw9UKmHf8{Fp2S@#l-W$H~cm
zUvSb>nnOpHM?r!S#s<{j%zyNr4>TCvF(y$;6_`Wt_F|^<InZ*Fr|XnU!6Qy+6Y{y+
zX`H^iWBHWuttS0}-bLi^KNr>He%}WkWmE5LqFh4vtc1|?LAmTL{WOrGm%k!45?Xra
zx(S_oNCtC$eAz^pGhZp~H_vCj*_ZQre~g-fU<=Xa;ag?MpTOakbFGwf8RR%WeM?c*
z2r7Ta_sBW$5cWoVP#&M?`o$K=4|Q$dM9@F`V<F$#OEtM^?+2J`olM65b2KJ(zdF>l
zbVG<MHTPb=q3_uRjE%R+*f^bGa_<RZED<s0;2)|{p1CK2Arv3~c?r6{xk)2$lVGc4
zjF12DQjHKJ8Z;8f9}$O5#JvLTy-fo7BVs!dDRV^`myG}E2f8i%54O>NPZwi7DfeQO
zydJ*I?H8rx@Ays{ayq6So})8-z0>(;`{x>@%~4IdaV<Am^}oi5toCN-0kcs#KQlVd
zx#Trb4KeW#{I;NzeGc6#@^`Eeywg3r3thYe_pAImKf01Wop^*)_!tIzBtDT%xxB&B
zTj(a{{kr(;`ko-`-g5oKZs!X{W)Wc}cTe*GIZNfB@QK?B!uy6(yI7jnI0D|V<Mrc;
z;<JKKCNK9*na&TX6h*kYwzteJs{ivpr@MIjebi_l`V0m=P73jkNNl1qy?p{D7R$dq
z!X{lS+McHjbM|5$vK7P7Akw<U<o{37u3;x6m|$4-tw~!m%H#}Iu3?Q(8AJ_we@vu{
z=N9ll=yY8-4VH0{z=zDcxjWNiXG$|UJN}Jzq2QIQ-m#CXtr+YP#`k(WM}^)^qB5$H
z5Tb(>YZh~YnlxlGt6hC5#kZ2S6q4PvX{<?+7Q(sJ_W3owHN_@RD#`Q7lREzEdJ@)I
zmzf00NQyx|C-*`0_qrG+fY{FQ!S{K8XYwy88$00m`2L0i4h<QKkItO*hla<EvB3~L
zaPn4X-sQCW?9s7BviLq~RwH=ij>*FK!R@~yd)KK>oTjJcqfg6jpd56aZ<d$Nlrfg&
zCFg@hOk#Y}c6D2I!E@jlC$rGVwe%M`q4G&3FV7!0CwDaX%h$Ex3&VbG&I>uO4}4DL
zcDoSRz9-E&xs+jY&byII<i(s(v;HKSHKz~#MdRP1`b+6@-o9dRFl`r8*x2rzK3D9x
z-*~MO(+n|6iWlRQc~lx2d4Y>5R`99<_IoOO#K;t{g8VqIm4CuLvpAu}e;5BtVf-2H
zWBW4d%&uOY1VO&&)bh&2K9w3|Og+aA_I`shZ5MaOV>Dcya!U-ito#+X;$V+t@{Y}<
z<|w~c7&h!aJ=nBODAQ9j@n3VM+mUNAA!RNd;TF-g=D@!>%3CjKD-(w)quhwnzopQ$
zxk9Bs;IYIchcflimt3C9c51%FcT>hYRea(<^s&3HFVmJ3dE|jlKF~AD^4af`)pd-g
z?bnG0V$)BWlG7f4#Qt@jqCuR;NX4z*{?5C|)s_C?;efdDn{{+Fpw3Qt5LC<XPFRZ=
zu<#)zOJ!sqP4;!}6}_>EkG;er?XtJ`n<Z3Q?tOmQNjn#{^T_V@4{q^yRFWdteu&%h
zzfV%hoRG{JlKC3`*?tos*>94Wy1ct7N!EBt<|mT~=B1>P1Ro3|KsFE-D*<mh?aYPU
z(q)O;9LaduLpj++>6{2QwRif{ka>5UFJ0r(x6Dlm_CI4(_CJS6xZ^1gIUXnR{|aK~
z7WxQ#V&(B2SPqxF+4iP?_051!SmfON5Y|(A2VlRP;h>&|tS3FPvfW&2zjDZ<$)wwx
zeg(PYuYWmTJbOskFx?}Sbp(%<GlbMBq;<v=B<ZD3#E;-0o%1?c;xXACuKeXz@|QoF
z!M_8ihB(V#82?kKeGmTVn5H}=^op|{gM&Wc#|u7)&M1m!?m5WxT~1N|Zbgs$L@M;c
z$dva~xLg32Gnp;18!8S#8Te9UPLL}2JDOlejy_Vf0>y;{vR>HX5Y_ua1*T@fTDbXF
zG$pdkZlb?K=E*!Y4}vj*AUVDXdH1^s_xd|-Cl+Ut?PXxlhu_}*_vi~ty4JI*`o8l}
zo@_ir49E0Y=ilR;x=<<>+ZLMBm^mi$Q<;fpgjgyS-yku&c)M*(&I>x<=AFaqXkNzT
zwDuR|ags5GUF$v|W$X|%;7Y?j&$&rLI@hZ#(ZgSHCIrbRy4-nk0pdMf?GMgB&zmT$
z_%7wh!SH?3ipNpU-l=@qKA8$2aPv{mqW6vSmhf0lK8cBacrN+52mS*u<E&)HM=5^L
zIl`1@0Mmbg&#C#F^cgNwr49NwBNj?>&I|q9_#NyKB>MV-5Rih$x#%ulTawcmLZ6o+
zmBbTC;mM=ChxWgx27T?khsHwL=uhvZ9&ab#>*-1_o23)T<C*6$)8^&k?aQULzkV4c
zA!IB4k7Tre)Ery1X#+dyv-YN+Lwbnft&EMaiTW|1y>)N;Xkw)EF=O}ao%WA%qJQj4
ze|_de-wG+A{iErzJp(`W=wlxE0F5AxzBhdrsRT6$-2Uv&_eFT+{p<<OuV~bq14T6~
zTR&I${=10)8O)`m_csbhcrQU7js8ZTUWUNg)|>-ryPR5jIuh2Ee%C;NiC%<de{)mC
z68}T*s>v7BVKH$Y=&aTEp3^LnLT^x+|1~l37b!aaMxp<qPYb)}&v#BihlkoZEP~0M
zo&otq@i70z=&V!H07LPD39&QTQ5VfBM&g9U-J|EbBM_pqB>ra6MdUAve^3;^DT8~U
zqtEBOkmR3pG6RGR81EkljjGHDZW%p}|IWe#F0H8RrVO%?g`MKIKbZH26OX_IqsPBU
ziQ9!Ii0#j@iub19^=d%K@b#a7Fs|`&IP@QD&Ra8zK`C)?rYr5L+ikXDQQqyl1O21P
zVC@C>I08*1_Jf=c)fsI2jkkR=7<;n-SBq+SYZNmA4Z$lGa}a2i^gRQgWq)*6nm8E9
zA4)AFIOi`npI=xr|85o>{^rP*CM;vRJo;`;NebW(NOcQOD0*jpXybvmP5I&p*>x_e
zFIprezRqN6AUlPB;!+igkLoVq<?%hC?$K<<jNTpUnjkrNvtYv*mO5h3^CQCvP)U*w
z{GM^Z9alx{oD-xk@IaE&tjPYt4*iP$TXV%S73)rIQg#=o_-C+w#GAYweblb7s~}@Z
zR~Ql48+z(ZbL)BC)|?l3x)S^$9;^-eADMYpXwn~pvuBQrUWUP%=Hy;V=Z_=0&&kq7
z=>7eP=cGMHgRhiLVMez}{M1%;{)#eLc6DLb5-mzw0p33KDle$F-Mgf#fJ@`emHN_{
zP99s=g<aQjfagu;*?H85`kz%8|MM_1_3d0p9O&g{^LaUFH2x5QF-B&08Eck{CqnY@
z#M6&n*CzXqz9xE}*)<$u3f)O&y*Xy+8>pNK6VqUUkRk3ZZ|GW<bI>S)3|VB)@*Vd1
za(&l{MiqBYUcB8vQ9L)*HEQ6;$@Z1i`(gemJVlYZDTH-|oT`c%_`P$xwpud3na{pU
zBU=BfK6pK(4n2H;*wY~vx2rD9v*V)NlyZu{vl3mE*xxMujbFWCD!Y9woFMfx|ALZw
zVIX5G;=cJ~QEL8<H2w{B|19%i(y6y4y6=A@@F>~m#cNZ(=e$SeeP|ta1NLm#DPCPK
z(deU!FjoEw>7>0W*na8pu^$$7<L@gu`Vx~V({%ZpT@suM2%x3^Odfew@C>)$B00(R
ziW8eVIGATHpMrf-MdmeQbzT#H&KRRGQF!6%DtlhUEjDq6SLpR_q14s+(^f4vOu4q+
zonz=$o<2|HdHKHL=3|SKB!kYq<n71hW-u|P#nndj$wba3i5G8B=W!at>L2<aCkD(r
z9q(>m4t6yFrTaLys6gGkmM19p^xg^&VeVb?g+Pu{?&Jpxd^NBqn2;ediZ+Egf2UbK
z`>71Ff5kxnb8f9iv09$e!p^&21q*%D>lf~LC7&1|;IUy`|6QP>jiyVDGN?@N3b#hi
z!yqwpu}3`q7<oLR^7u}<smkWpq@jlh<^6o1GWT32BH`ci7eKs+Wbl=xjaQsbjldau
zi>yn=clP?U_EhaISSMM;p$59f6V3cUeY$bC-nIZ39ylE+A_hA&(M!F@iS*TIKGsy?
zFUICN^2#IPbu)qVKOx5xAgogMW(Du&-9or0L2CCb)||m#QoPT(6aYTU3m_YWLAt&s
zuUESLsQZ6mFntGoDM>n|AvDRqrX*QI5`#`(xU%yF@pVk5zdI%UT+*{TZ3y@!{h*)!
zy!nF{^L@Tj!@CJAg{2;aKS)70&<%zUL@0CSuoFVV<-Er|RcMn(vq|QBOiz%`?BB8-
zaI35>^rpd3aA$y<4n5xa#U<h?*FJc>v6tHiGh&x-FWp7%PiaTl;onE{(?~8p^#>Er
zDJ7umm4;VdIW^FsN>13Fw4a<a<5Gcx^5D|FUbd&*Y{<}sWCZ(9p?-xT7?PiuZ%Ir}
zpL{mOf7fdVNVLTty4{_$-3T|6`c?X2{76pU_8By|b17Aj9+ISQ^Pnilg#1(PU&wOQ
z+uMA&f5ktPXIEZyZeqU}+i;F~gz35fdz2@!C5%ZHJzLx&^~*lKkZ5d=Kr4*CXH7)+
z>zI!r<qvrjzvfXq1B%^LNqT9&Un(&SXUFJuhGc)<o7;DZDp)g92Gc$^M?hUDWB0Da
zm{u7DOn*O~s+lJ0>mp^hOuSr&&NpDK7@|{2!>E^?9QD|*1)U5B!iGoaCoI!2^V%|x
zq=IBjd~a{tXU1%j@#2dHOAk4?C&Y0qJe#DlV?8GRs@TdqoN<M7_7}<CQ(N{?z1H7(
zkzh`CS;NO*ygyM&ZA@Jzlf><sZ+(Tm*0UM?5Rpref8{|pB<xK;bCR*+2fnq{%%`7M
z{u9@Gs*Az-Px3RL=5&C}yA#<`h<5HX-6T}4n?zEj@l=V#Sld?b)2P4p8udgshjXn#
zdQM8Zq5cVmp0~WL<GrlsnXG@KD$oP|u`;qNMdx{mKBYH7N3Znv;4J#P7(z0sp3s#(
zDO)E}xl9FLo;*=Td{K*u3k8j6=HB@(8Ww?GaNg3ng}wO^W_OSTwIC<wzxa$aC~hZX
zW8yIOO~DquDX~RZq?i_Zm|k%HV+bB*)pHneXbj{q_FZx>*W4=;dve^|g<fv%BOtdP
zYYlNkyJtjNogR8hut!Sw-UCb$(C2(hqXoSeom#^6L?`=KSNd@m2%BQZ8~M_4dhbUv
zJ9+ths>z=!2$vr`zm$+kr8%C0Exr~5nCvImes21Aj|vZYd+Xe~Ib~a1g}5tq|5(>!
z)!3sAF3nM+Zs3~a_}l(zMr_S?8L7pb`ExtGM1`R~wFjWtMFAhAyxvV-QLo&FO8Pi$
z8K*&H^<cZ~6FUphb?qO|h+Zq>@%S0iqVYWiT~lLs8)a(NXY%Pi8z{u8=!FOiiUYgL
z*L%H(|2FU!#HXgre>{50ho~<5l8CBg`ihsSj7-73$4gDr$nb{Y#285}-+MdU)O5A;
zNZ*e%i1a7hOXWM*Bdb6OSp~{DfMOIM<KAz$d50J#_OwFfH{n}+*8r+c&lRMj=#a@+
zt8Bv<@8VaS{TG{$%o3kxu5yoy(Ai6F>8MU(rF0%8^?P3I#xF~(C@?9^Gdt)iJo3kv
zq3<&dL){2!GZ*M}HqrX!mKyQY&j=uV@mGe{hi@<^M*FFPyB)TPKqQ@|5ef5ho??=>
zQuR=p9CUD2PL;DkexL8^<?E-2jW1Pq?iX#@b%#F64Ef{Cc0w8C3k7D}Qs-$&P3zvT
ztxNrTf95eE+9^yJ=t*qyA|Lc3<^CQb?{e;$F3p*`pD6P;=55lfZyRrOF_b?GCqmuz
zX}Z4<?AZv{?Tk%!A>uFU)YI8I1++RWUxMoE?9<e-Q>4GTcaZE#+%6J)pm(=N%&Q5V
z{tx8pJWO~eXHhKrN?YQc<T6FU>};=`CmCBi`>tLdoh{SW{iYFOkFtS45&OL&F4zY7
zP?2+BMVwn#S^D(!sY&{4FX<;xBT2PfFLhGh5d*o_$fz4UgjggUok^R+55`UTF+@Df
z4Ni_sN|5f!sM}XXi}^cbES9HiGZF`-fdYW$9#fq@yvKMhoDc{2F-&VilCt+jm&#I%
zcq2!=QRF;-vX9Muv&s~^kRooABBD1M^wY_1(ErWN4hz2_1$2$$LeTx8i_&kKI1#}f
zze$1}2Tzo)V{ddaQ$Cif%xzA)oJJ&8%f<;F!f`4dN;<e7p#Rw<Qn;HWwfHZS#LUm+
zNK+{cg==T2oQL9fXNLH|+K?<mb9Iv(_#7kt0eIh@m5+Hc&b|BfQW*JrIG6L@_R|QQ
z-%X=dB*1#1F~osufoZ6&+0NIqbX-{PoP<`f3)ttv5izfp65>!WLGBv;tXXT=O+9s+
z1ncU4<c;XFOtcKJ&JQG7ei0of+7#F|TlQ_9M+~<gkyI@gN%z{sPv3ixeO%8VzhYGN
zcCDhPn*5!Ipa32VCrtmQ8T&FPiljVA6!){h$zVdfBNK<EMRk}LuqeJ4p6@|_nyKQy
z8NQN#lgTez-6BiDgy2YIMA%VXAoNZ!O}9Xi{H~}=^w>?{;a24p{m-bGvw)nrvke|m
zzb+jiq2pGigRi{;8ai^xZ%wuiK2kD`FhA!27t7+k$>1^Qyo%1@hGDr6=PzHFC^h_D
z3g(sMN!;mS7SLe++iWnO;n{5=te<St>d#B_RAkPN?{7bNOLQT4zijY|?Ut;0ZymVS
z)M?F&;=fDGh7rm}Q}cH4udM3-1@)G;O7lPRhu9UY6L%DgHg3<IVQ~IKkhIimbKt-(
zY)o9|V(M)ncDuwGoYTO0_4582FmUy7I)O78ktkm?#WaSvgH8|j3~$ii(Gaza`D+%K
za(blAv?$GxY&KgI2Nj%|qz_)XCNu=`@D>upCkx^_i&%J&f>?!0*p!0!g<EA)z9rZr
zwbX27T20ADKP#e(Nw$<650E2Rx@P4NQieCFkg`b<az9i79u_+6=(6E6?)!0_2ejw=
zJLEVKM$df&y+L}2oHdgENiSx38E0<Fm%Xh#5eimU-YkfJkPumm?{x0|m@?vf^09mW
zaiL~G_o`eBza+}^o1x{r=v?ELv)kVp7$Q$Oef9rB!HAOV={+nWJ6b4|kIuU{iB5=S
z%5thp4Zd&ADMC*B5g|!W2Y1#$roEJU6B$$F74xS4Hol~w7Lf8_-8aA=ToJs6YV*Q3
z#SW+YK01Z+ht0UNh3+J4@JV4jL>4z;Rx58_ah{oEc++`ErQOvQ)U5s<Q)uG1UJd07
zG@J$vawz#HWby3Hq2)-GKTj#JpMsngQ%bBm*(()o{kOo_EB{bw<)W$OL#!3x*Rld)
zU3)*7Q`2cqV+sm=ii5mPjGSC5{8_1u)SMxG0`0JZ=4gLnP)z{YnT!9b|Ar66cK&<+
z7f6a_>%QkI<B62z+yKp3II{b=^#b|%hH4!a2&*LqQ$e=+JbOa&<P7%So5@PVbrW>R
zDeBz{v>n0qIZO0YG|M@Z3BzZ9Hd>N6tlC2)=R8tupC4t&>~r2>l-iqq;W=iaEXA1l
zP-3f>{PQWv_mF(xn=()Ck$92R-g8spe<1O95Z{&l$FqmeuX<Zu`u3*x5G#Mq_djRG
z#zz6zySkh2SPDOvplke>6&n9t333OY`1U;iSKB3>EF7{v;|q;Szf0mqjlbPXa!Z9q
zcM%PPuA@jyjwuoyPoGNQY}OKuz3A~XF#&#<ZPt0@wCoXn^gqQo%YM<$w9pjauf9D`
zE=pTKo4K%FUbQuaz2ea9viBS0?axB4LU?M1(j|X?9U%BTm?Z_)>-7G*C(X9TJ7zYI
zQ`_d(o&%da2b!O`;Q#DRP~AaC!cy!;1{FkLBKiuJu{GxJ5ObOBpyS0q<h_C%cE#W7
z=!<=BAcx(w<AZFRVs}$>|0BnB^hM8@pXKk6rMLMPMqjj_bKWEUD`?tKcSmLh*jTt_
zYn}dp{Td)G<Foh7sCj=>EU64<o(QUVoP0(|n8TL6o+lTBBEEwz#e!JkIohb)%rBcj
zwY|v5@Zk;GK>`$Fms9Wgg4)4X$heVw5<nM(#WcbK61KWCQMNy~va{cL77ZazylRh`
zdpN!QW9e^NvfP2jG(>c9Mhs1GvrCB602v(D>(coJv^W!#3KWvRBcdW8^LNRKvz_EM
zHHo?iz-$(S10X^jT}GayzN36{YL%6M#Qh?$(%IGEpdCdJMNhtKRjXIlCNJf3k`H{%
z@k5wWnVfHk{4Fu#qkE09jE|dNbI8)sr+e7?Hd%D8e-f{m_$L)*w)!XCk-3R@|D?M!
zw`zD_=Div|sCz>GNk7Z%Q~0sW{e&ZmAg)EuJ)-ff2$mTUJb^XGCvfiO4R0jstbt3+
zxXG=O>FsZ%;k-0d40nSbF+Avs;S(Z;a)TvesN<=ucXEPG1QBt|COP4_>4fU~ATyuo
z@+;u{WTKVCEkx$eIqdKFKvJ>(b;d+7Bd>)(9Ueq34=3ePt(yBt>dNJvjOl2QfSNEE
z;iGlp;qPn|1e<pYXH!Jbt)G!YoYvLxQ^gQ{O7Rm+@h8~gRRDUw0}@vtje%r4#hDb&
z{mbokUO@imCP04l1|fZ@B+V9CJPx$I(ug$2iwx=_NqI=12yzKK(z3FQa;HMMUlm0D
zj{hLBb_>Zmyj%Q;Nacg`HIOkxzK>MGD><qxos!qjhm`8_>}h15WVrH`bH|2scuCH^
zmEh}5W$uqm!X!TJ51LGP;^ONdnR71m4=G!FpVru;lWH#`tvmj!zlVGO<l~k24gQAC
zFoudtXTVWHdW6gr$3++TCv{|Q3P?A&J#(vucVynH;oX@JYj|H~pN0=+?$_{VnFlp|
zEb}m7ibn3p4Do@*z0O1aj`}p)WyDA62K1xbMZQY}T6%OQj+<N<`VzAK1-q^>|3ZIf
zHqqKo28Q&Lv*u^T4t72fb8H`BT~S4h+%Ip%0rUzT*XS<`CepC<7jB%nQAVA=(^Img
zrw~qdd(3p{S)~vwoo2Q(_B>`=&xxvgi-b1gtGzxFIIXZB(qrEjSsHbY&Z5T6`7^FD
zGVeJJYUK%-6A2Nn8K0$ef5#Yw<hE#5{)0<7WITaA(BM@%1{i4&M=T>^)0pf?N7Ds0
zo%K>|%B=ShA!+k&X}y#Vry4NliT*z#nT*G|J>#|Hmr1O<6>_)dHKICIsCIg#?O?pr
zk_PTb>QAX!_Sv%B)qexMMDW!MKCbGZza>Q2d&Q5}+{nnV%SNL1Ia7lsa4uJ*E7d95
z|43iI^fsp!oLc>iVEp+Y2j9IuF?$#n5a4gd+{Ad)XunDAW>UP{Et*KV6dCW43hI5V
zDc#JgDk$?wC~_hD!KwE_KEq9rbcp@n{GYK-<ctp!u9UuDtdn-MF~Y+luD`=CLV?)%
zB#i$R$=9J8qsAH+B8$eTKvX?5Bg5%sLXQLHTv9r>o~gD$v%JJ4wt-ppw9f?%d)YkM
zzS@fQ(u(g(D_$iHDAzaX2yEK0p%qFgV4@bVd}S=pNXfq%dr@AslN`u!a`2a$uqi1z
z+nGfEWt!#c{wmtuTc;c$-$~>fcwEPY6uilSUbek?VEueZG2@D{FP}B`rTe}Uk19N#
zVq*TEyg09Cv_@*bUFRm-??tGR_A_=N?dKiRqWxq@K34l3`JA@j8e#8FZA*Q6^Z3t9
z6kQ<}W9mR8PaeT&W1meS((w00j11N<yO67t!MH<;J=z|m|K5KZ*rScfmd^y0zNaMZ
zE=s}eO%I)~W9@xroNm>8ER@PP>u4IymDuWyc(S!f=UPub8E3giXwbQydYR=3oGL}q
z^vY{W>6LQbqJH+JlvIMyyBJ%yEA8O_zfx0)w0WsKc2Imhsoe37lMgTJn5PRQM;Pz8
ze44|uzvdEVYLXp_SN5dz&4PX8-!MVUgIAb1I8FR4Oxwd~9PEi8%!S>tjKcOk=i24<
z!uFRB>q<8Z%9CCzjB_zKc0DggzUk~5Z)}Xaz|h&ZvMQPb>!)N0>#q=k5`D@w_@J%&
zTyHRi8<#M(x_UXj$@{z(jrl{};pbSgFg~#yi<k)JP}h<k9M_)LD)tCUd2K+Ln~H8J
zJ<!@ql8~`Sx$&&oe2Txb?GeiE4U$dhH~cAx@8Ke9=WZqsI(?CKVh-}YMxhFyPL=}h
z6Iq!rJ5Vn=r<;VaVyd~wKT+iO-$)_|6SLQ$Up4?GEjj?V=?k#{mamj4>5xH81Q=<;
z4&apPU$);ZvUJZlEj@OCLjHQH7BayW;?4?m@L^NuIw|u$w;1OTQv-9k>5xKXWWLiN
z>ZCNG)<u+Xw1L3TyV^yAaNGqVS$aAKz2FN8KCZ)3T+e|nSfN!-WI&R!M_WJ$t`cz3
zPlll~79H1Xr^<IK30s;WK}}BXl?JER2?VXn)tZz<!V52v#}f#+G$oNVl9xyt%f)mC
ziBPttJ%)~#@h9ba-5{4Icj(~2Wy0q}nQa4m<MDkU?mZjsZr{l-=V~mfA$R(tU6SLG
zk<4ND*}n35ZFaC{2(Mh<a27eV#mwOpx75VbQr?ALd9O0iN_j~x581Ew?q8L<IM<%;
zmUODUKGgObC-NC$W}hFO>fKxW2IZLMywoe~CJM6|&G?i!xSmu267=f&i?9I3SCUR{
zZb0u!pP;^Y@^Tu7tEfe8oFAMfS|h$|gMUbc>$akK>2PQ#ai9>?V(mM}i!qVPng6oA
z-eKgSAH&k2?^#g0pcEl18x#@niugXpuFLq~N^gDXSn?44@8O^8;m<n;e)N^SFTXH;
zMBhJ%KglJroM+JfC9l6Y&%!NJnF*;}uxAH0!F+L|`Cg4X#PnGK73Z6b4MCiGm_NVo
z^f9Ef(D7L6c{phw+C|z2)9@2*ocatgi0o5v&PgbGW5`8Ecn2x9y(+xQUM0o@?S<Qr
zQAbIBsyyh!3BSklg*6K;@?F0a`Ql!wiqH8bYLFsLc^-mI5~mMBys4JebGosgm`w$p
z@n{+;5D!dJtblr5!_~(ZkLrI~-(+<+QnpvyPhhpJt-N=fQUhy`rO0Q!SKm4&M?+J4
z`ebDJ{|0567Clw+d2AXY|2KK~kGJ@}bV>P_`vO1J+p*t?|K9o3;En1~Bl^R+>s0C2
zpA|>cuL?d{REeIH_@Rq?h2g0B=k?#itVOKeq54Ysg>a}glmokCIMR2zk;$mi@3j&7
zYBvji{S;@qabg<<nP@AN{c|WJNx!aN{Z7OX(*^neZT$D%bG~DoKc7O|Sg}BPi*xEr
zoTmK)YD~^mFuUO9ZzSdOIL;-mLlU$Qw|hHJGH4HJ7u#hP_!7T!8Q>-U9*GB@8os_Z
zWd7t{r!OPI*XS3f2~T#L1-&8MacPk2T9=GQ(d2Uo3uUuKBy}F840$9c$!p;}{qU`v
zzW9;tGM#mb4U?ss$5ROBYn)$?mG(S8b~xB0NfHlBr33ux&ETKyxf@mgKErS|@LSs7
z!*_^S=LkL9vdzVJLlU1PNgVX>iEFQmuk$E;e-nH^J{sReNqmwdkpV%5KHZP7^v!bd
zwGW=$a|KD(pTtRbju$PsUXK@f>$e=vID11nn*ba)m`Qz#y1T@yg@rH}dM}BMch6^q
z*82gSlSTD(-Q^2l?dW+n=><t1t6jlGsquFcV@QG<$eCW&O*e>1`**m#O?+<T9>wmH
z!Pfn#6v@txes(s>x32V;Mo;uT-Yy9xkj<1({OsTIF%)l?(#@$_O3zO{-zI`C%2xb^
z%vFotN#qWDRjb^*(h;Sb`X9My!KP0yi$?f&VzkM)&U}nWAn;$3Z*U>8hf4c9en9b(
z*5COkzu4>(Vd$O9KZYys(&u_W$*SBiw<mw+1$<{FWn7=E^9%i$OD5D;=PO!Z?5pk~
zu=4;P=yQ6e={tf_+{2YY-2aNUu~Ul!u!+Mg(Is55CkFJbEY}Qdf;3&f%k@aRkol96
z)_)x)F!7?HdKY-{CwcJ;h*yRbOT_~>*xuf|)J==w@h9x}f$n5`Yx;8}{Rc40l)X45
z{ez@8rOOr5+*k7pO-72|95<PB8;SaxiC1|TE>9w&&m3n&^g2#z4_rhF{M5|0<IR_0
zt?8b*if7{+sp1)(UeI|c)cqr2U-UP|GEe+bDA4w+bt#}?7mId!V5_Lol;d%F|F4_?
zm0{pn<cdN3xAC`~0@^|JVuULZX(+A@$&UI(zih#R;JTAJJ7e$Wyg>8B`~&mNI>#>V
z5cx9~4C)yM*$@BgiQt&CCo1P5okJ&xdp8Z>ZjQR=If&awT*?`8O*L@Xj+f|9Sz~4a
z`I&M~V{eki4KjmcJSk-Ubru5_D?FtO{JrnWC4m261ZVG5w%)|wk;4LKJIjzH(p<bE
z?%18#r2n@wk4OmorI6-42_*y1NqrO^_^lW7Gl}V~6Mx&yuiYsUKg>~Y3*TUK<4M}R
zW;4&ZE^VUB^2FC2U9->=H`QZT06Hz7MR=s(fz|GKAL@QEbF|cPDG4w`oW){HamaN0
zYCh-*)-&)|e53tu2itcoc>CXD#g8ta067*T*<{)D`NSqEOC_L0BtXmBb*<Q^;`S$$
zdh1`YtLVB?AA3*b_N(1uD1@`J-`id-AC3o)e&~_XIG#Vy&D|EnxR-Exm4XLjs$u2#
zId&s*-2U3^gxpyk?4b~FaML0e2h*o{dV<xTW^kx$+j@SaEHtq4jE^O&d2DDiP|W%Z
zhuP(qx#^tSt7Uh9T381%xtMbHE@vu*Ci||mquAeK4^&ic59Y9oi0>huhqU3nAWJFF
zy;RaUGhHR$-_ZuW9JrF(jM2bLP(t1FM-@(beAA7i2B-NuWPXns8SMFfrPN@DG~+g@
zBD<dO;LvE$+*vf|aNA9Ep`z|sn!iI8(_BsRzOxH~QbUoY^H=zWXP2D*m+oFPNfc*@
zt)QYge=qc3{toz_mgH!`PmVX_b*`m6K5Tn>g-lET?)=myc!31{#YCF^(>q#mzvzr&
zToqrmX3dwp(|LeiD&ILBE?!O(Hoqh%-!^~b+eABeipms~e<xUy+^$Au?&XWI%dlFK
zJeRu_v<}LJbA+fnb!XDf6TLdBQm0}c3%yKvExo2Y-0sx!S=z6>_aHm@_+3Zd*N!#K
zISI~+XTy{gi3g^+D)}s^*}h-ov9JFOj62Uh)T6w#AFO){4D=4M^zJ9+3S(7>e7QMa
zWDYxQycK)QkdPbvG{F6Y?+F<=EMljMWngH~9-EcKB(eQF=-ux5O!d)U)|LC|CjnY|
z==H22xbO`{8$B}xojBiF!kl%W3gIF+CUnu+FA0jS(V2Kl{7!z-N2IIkkLmhj^T*;c
z5#nm2fc&#SR#$mgj_n%%S4A6%Q_mJLuJXGY@egbN^f>=*;#XYMa8Pamkq_&+D}7hs
zdnfop+g_OY$g{U{yB>3~(2kGo1$v+1*yt7Aqt8RX`|s(K&KUB<gFOs?=N(c``|f4d
zviI6U7vBn4r2PxMvG+YvZGV$ruwWHtLC%4J2aMdhNz7v1p_FuUNmsac_k>T7n=3uJ
z(NSshfI3=;^7r&9z6(@EzcUvYbWTQmQvC6yeY<k&J`VVL_akV|*msZFzIqDY$e6b8
zUzufcU+MTDnL`(ize0kp^otZqpDDrSkE9`PIhpg|8$SCs;<5mqFnVr&Rp_y>(6`fr
zD|xP6o!$Q=!hE1tgbEs$ZGROwMPKD-ir6%>f{eL2aHhxK-gimI*yNnfK!ko_y%CT1
z1%ic-e-W+3$LHmoviQ8~xqU(H{9aHEX~(z|ljQ=MFr|O1r^3KaXZLZYe?r>?++&Zw
zaTs-Dpl&O@-}Tb|oZueg$w+*EY$LcQ>>_Uld7WC)<{W@Dj>{La#?q6;*Mvlwbs?p(
z<V6a7WL##?2I@0uf9yj4BNdrxJz)c#CD3s_%?3Kv|44r3sP`GnH}L^hqU7$_sYgwm
z6O?%UF7|ZJd(0a@Rktf)^-)}YZWPYAdJn}U=#gdb$E_CDdn?3#T|f~qn6@a4A9B`{
z0XF+PE@eOvt$jQN%1uwZj7RBh#B=mB5`PYl(%3crN1ko}=$2?L(~a{IbU<HkF6Cf)
zy#4R`42S=lJN#eUIr}MpXD^YM#M9?E{yX~UXG0sz->Dlc$zF$k%IU*K+Yc?@kn{sj
zwtvb%B>OQpFOh!Vv74VceVacW#6KqbFjmWdd=L<;<=6V1rLIH}T1+pzm2WDC&Leas
z)ztmhYhPOcRk5AUo1lsB)PbHI-p-ZM-!9@?|Bd`I{knH7=(LhrKmRxTsM@6c{@y-p
zoHP2ej`Ix;G6Hi)0KE%)`f<G9`xBVX-uPks<D5KLin4!0qZas_U7`<O12W|}HB#=M
zfSofyDN71HQWN)<YOgNH>9S=>eW4o#=KbWN?yP(64frZU-BTpQba)RVv}lrUVuW^l
zI?DOsCr4=K*P{Ws6Ql#~$mq`z-uLpsFgT7|Q#cUM4N0$xzHkRi@j6P5mt2M6%~e%D
zbf;JUFd&|8y!Y9ak@H^vNA%fb8qRON*Z&HiC`)vgVBV!An}5>u1`OIV9Ek?n!e5H<
zZbT#yiMGXRqJgH!ml|p>nORjE2}D~0_0{XbfoMJdH8h2*>Kj(q2kIKajkOWql=^`A
zD{X6Nj*_^(Arhz$H@5mpTB8ju&5@IQQ_SB<KKrJ{+J?r)fEL=?)>0FWM8c7YC;19C
zG(@8f&8q{k=9<QEb#vp!sZ*z(<jaao<2{RMzGx&`C3&XS$fvr7#;{NR3DmSSN5jog
z-<d0>H~B(^#T9b{{LYzo@x@Ifl>hk(o7Yu0Hq-{9(T%O)0Ka45Kvn~>bF&&qEotTk
zNGE|$eg(3#YA5*`8=7MqrmSv=`c5j3H8oYYZJg_Ct%llKDx6h&lCQ2B0$d=nwxP9E
zAc<LD-PTN1A__D$M_XIq&9s(vjlP=3mPk0ep|z%}u69zuV9>e|QM0ycbr>Erg|odV
zSat!8(GqKp3SrgyZ+2E>(ny(nk%raH)s0X;Ijhw}QB+Y{Ralx=RT``a`BH%ZEhTS^
z)Q0OCn!~leMZ!-Csck_FBqF?_ArhVF%d2l_tc52HljKX3N>;CGZfR?(ZrtcA3%9nk
z$){Bt12tYc7|;++R-!T5S`}_;jc%-}Zd<+1SKOkluY%PUYj)v49W5^+6Nt1zQB4CR
zN%|GjuN6ua!9*)nG<#!XLqrl^kQKSWYvLA_Ip0YY)vFOr{<KlE5W)%(^5$^Z$n&aj
zfRY2%5q&zvm)8<&tQAJXh+4%MXlM@b)+ihkhO{-T3%4mts@Kuz)vJ)cX|>^X(<1dv
z-j8Wg&8$dORxNo_fR@&9v$j|rJ*&B<IvUmnYD~6&YNO;Lh|MkF_C=do>mt5IM#$)c
z)iv5fX|8n*HDRyHBGd?Nt#9hoX$^FpSZ#Qkb{6EQZEC%?ctzoof|AOLswI_0K9R4M
z7%~-uA)tj7m*xg?CK{oyu(7SwS2zUYYa1d`;aXo^OWWG)Ny5>&5E%*6@77VV$pQT@
zS)H<2bM^XaR~}#_Nn@?qlO~!*knSI@r94Z?Ws_3Biy&o1Oj6MXv@nI$)iuT<_1TeV
zZMdz?lkDVID&&1tEg`f<s*FTxO{peiOth77dtSp_-;{<xvudz{4dI$t6cwkEqM8of
zG1r$j*XqpjaC5DYR9<-b;=-aLVV<V7T1?fIBvnzfl?&HSrraU<&~@f7ucdi)TXi(n
zSS?aNInda!Hr%+;;H+<m2C4&V!)?vs#=xrBYBZs*IJ|*oLtj?&1P~1qZD|QKf+J9k
z(7Li!JJ+|oB^Ib!5?o#-ZQIlki3rgaRb9h|FfA4dhv&Lv`0At4*2vsx(@=F&O|q#i
zZL6oX##T*>)HF>~JvhxoNSbNUmNt}VEix_|a;ki)X=!RAxU8WT`E?Nwp<`XFIou|4
zBy7vOsvtWu$tA-rzh+%{Dp=aWT71pwhAFEWny2x#xw<Jl75FmwkxS+&S_nG1H9M<y
za@O^+$)fVi|5N&v%V$q71&r*8j2TravgP%pr2bMpmmDc99(NqEtVAWK0ut#DZ)oMo
zCDdS6R_#>#pRYp3%OPW{&525BL7jxxhuZ|T@TsP{+3H~=9wBIHws~EpNV?)!(<-`U
zOPyk6l#13gBlfO%UmDOU-BI`?l|f3U(5!S~`E%=IlqPDg=7K<Wq+WEP>bm-BMzrQh
zuF9Q~RTHq|UsJ3x+R!R(iMoJ;=C88ZV*`3S*2J((E2}!CZ(wKGA$-cE?vUuwu3fWY
zeT(p=siiF}l~iS2bwgWA9Slb4*#O;lQ=pn8<T2%<C@~S}5u(8(v4*IMnN+r>Ell4+
z`i;&6kB+4BMYU^SeM6M`GBAk7wYo;k6mQHm$v{&(McQRDii3fN{Hv;K)~foHaogh8
zS`MkFjN4VF@YK3mx{u8dB@>maf5{=BwYn`54#;qkqS4iMk%Ys(r)qf24^PWaol$4n
ze*|5h6{`<qO`j2K(tmBs7S;teBBH``h6FKegj12mmi2+AYC27Gcrxl|qjUmn0f`<?
z$)y2V;8wjTmZY$^%{3gbIgutbzKPFjP-F8LNt7S-D@YM?np<e^R%?NXImp9kyoYA#
zo>CataI|I@xsV|V!x8gU{-)#wf@PPJl7Y(_F;=Ckd}yRA(Db^PSb#7T-Ha@3G`v(q
z!~S_VcY%KCv*Chy2HtPsfDK*ve>&Xqe;NOOMen_~{4K?%-VYxmJY4k8<A>+F?ihH6
zr~CgKeD4y&r%g5-JtOFozwlHOe&J#ho^Qi^8~Wy$@0VLR+rqp+xZStltVQw?p(65K
zpHEmdO{AY8y}7Po_0-kZ`xfVw6fY{g+)N<sZ*TB0$z;|j9bb)c(erC<_8Q-`RXk2;
zu`zD@uo_mm)`UqUU$4h5Ho249P7G)B4UMdiA*%YbgXmO~*_XS~m)qnkB}xdek(MeY
zXUR|th{6^dvx;HZ&VXbnDb~4xH$qP~bKb0)V?}@_g)g~M)UcV8;i)e<yI`oO#=smx
z<3tuwS6Q`L%fuAxDAw!^VndRuy~NzBWnGwD@<dLg1`Q;W)j(BMaamPObt@A{9lJfX
zc#L$^_`go4vr%IUB=Je>Qc(4(hQ@~IMyBKT1BtOK^4nTkTcshgB07l{uDZWV!)=&%
zIzZUi%4S}wY+2phAS$)mO#Yb3Sd7r9^QL@e8pgPa1Y)VJoV36+%Ua-?rdC-YzzCE7
zPtkvUB}KC;3l{szLIp*$04{NXOMFwqjk99mwHnGlmssEu-({Cw=F6Hgn<@NECiN*l
zbwu&$k^!p+*aFgK#t@g)3i)3kFqd_J2x|$<R+?KdiDmMv<MiA>ML~H*RY6%<amfhZ
z%L*zg%ZgJYDwYPzilw-$T2?27GYptikpZcyt|=Orm>VdrEGqKR0UMcTMzP0M2QCWm
zds09w!V2bnrIi)F;*!!}dATpYusknVmJdRv=V3GBsSVV%wKR!6O4pp|t88A|+_JuT
z2u6deEZkJxpyPi{HH$WZRc$S6!_7Vnh7C;Oo2LjN0bRU_waNtA#h9lCxI3n{F&kuB
zQyZvIijEbzC|FozmmZGJxv;Ec@i8N%Te1Xqd8o2f0@j2ixU#ZPLuPIQR+I%zY)Qp5
zz~I6%ja^t-F0qSB3nY+fo`jX<WjPX-7hHaog=a`uT4>S*i^`S=Tv1@c@`}ZaiWFa7
zs3>1zph@BKiV`ihqP)U{6@|r`lXjA@vg~pRmgSWyxNK4R)dF8t;TBO^R-%<#T3DPH
zlBmKGp}(}mP+GdQOg@$`FPE>C#g*j+lwX;bS3u(zlnQ+X#U%w0Q&3(8f&#cx#;0Y4
zCBA|g3kxsT=w$_YzJi6p{6)Tkyig%EC<tC2EG(W@u(YJID1Tv5N#0^fx1<1ULBZ`S
zSQM<J#(b<;SVSazT<$9<SXNlh$7T5iS4or&D)I{{vas9)#a9K3h+I@yRNyOEVgj&K
zkiBAA#X>=|$kJ6_3R&gK^a9vGsY{9qiz&@~$}fSOvS9J$Aj&TY<_jIg!6gM1B_%~A
z#ago>LpbbFQVW)pN;yR(G>X)xoJ58B!lS%UndB&%QCz;fm{N-_4oUTjE-sS_6%}i2
zWpS`VcvxJLS6(QIH4S`&0RE+t%N9xBBtftk{>ry24QI;*+rmX66~vZn8<gbZA4#oQ
ztkI9sE+xeUnxb?u)RYx0DXGvnQ|(|rY%MQaB1rN|mOwVrQ9(hh^Hdauq*D1M75ra|
z*4mX^RZzC5sAQ?2uBa?7yi%hU(ZV3l3rUp=7t*8}La&D9dBqwo2`<yHK;@&bsJwve
zW$3dYorj>zv;#6%X82pKf|4&O^7G5eBso-+7hX*zl+=plbRbAkprjNm`U{R!mX?+%
zR!~%=z$K*+F0mwCl=3||1faA+k$uFIpX6X~A9YdyH}gxDQX76$7MCHs(tHIKR6_Vn
zFD(u(q+B|U0`_}x$-+tzH<TwSgy0JEqdZh;5h7$ug2l_r3M8F0VLpo2MY2e{VL^z7
zHpR;?uY9^TWFm)!#nk?C$^->0lMYdtS5y!*B_hg{Y%5Y&uAq?!>AU$?R!Tcdr_3*`
zB&7)rgY$yLc?CsMsp68w1(d`;1<Ohc%j6Tk%L=aIyZif!f;?paj4CLTj-(YXgCPh{
zaG{V@wn$ZDL1<}dNnv?Ou@5!2NE}Gy&kj=AjCeYd>*DqNz;xHz($#p<$r$RcK~&gP
z%&CD&9pNif!z()0n1>EKVhXY}fu+&bAoi5b^wnC8v7E+In#txf>p6DtP%A09{KIOL
zyJX|71gXJd^Gaaqp^L6n^1`+oCEr)It*xrEAC3VxrN%R8H&xY#H`Mac;EfE)ukk7P
z)={aoZh<M^#a?QwH4B@OD2s<oVFh1ma)D)`-pwvBtYVYI{0ZFBSX-rQs&1nHM)>Ih
zGml8KX-5YQEN5io?_>+hwxs->ZsE}e^nKpK=@vfE!s0L_e>oOD!GONm79L~a%Pf4N
zg)g_TyWUu0;gfCrQVWl@aFvBmvG8gOpK9S23;Qj+-oolK!MDv8KF!9*E&Le^|BHoB
zxA3<tJkG-3v#>b3%HIPP7Kc*#`-z3QdqV$uEUa!#eCf0B88&{Og+FiM0~S8h!hf`|
zIK0T;-z<E#0e%0l@HrO#z{2NR_{4>#eJ$ua&BAW`f6l^g`=4WBxBW9M?6$vCVDP!^
zf1!<c+kd)+-S)r4!fyLtYGJqi^DXSQ|6&Wf?Z48(Zu^HV?6!ZSh28d#SlDg<8!YU#
zzlGiQ-(q36{r{JR-S+>6h28f5j)mR!zt6&M`~S$oZu|eIh28c~SlDg<J`20;zt6&M
z`#))6xBZ{7u-pEBvas9!FIm`a|9%SxtN^@e;fWT0$HM1X_+txy!NQ~ROnYZqIK#qO
z7XF-t&$sY77QVp3*%p>lpCkQEwec6)$XOP?$ink1JlVnvEiB$r^0(N+Qw``Vv+y(v
zFSoE=R`*?JVOh(Rzj_PLFrcr+!WUb3orPyw_(lthbCCSqYT-)^=!;wUix%E$;n^0x
z)53EsJUqD9#?P}6KeX_C3;)={xfXuJ!gAzF{vNaNWd`)^wD1B8KVf0hsy^R-3oo?s
z&sjLn!UruZi%RnMvV{u_=zGn=EI{esTNb|D!XH{VWZ_ZyrsP5kpKRePEPT3!7hCvj
z3l~}Vd<!qJ@DvLdTX>d*T{|Y%!lgF8z`|Erc!`C}EL>^fatp7taD|1#7Ou2#vxTp+
z@Olf2kGcHaY~f`F^xbCR<rcof!dF}PI~HDH;rlIojfH<^;cG3t+rld?{IrEJQS|Rc
z3twm9*DPFZ;SVjm%EF_qey_3cXDnQ6;WI59w(tcOuCs8Cg;!hnQVZ8xxX{847QWKL
zYb?Cn!fP$O%EFBnZnSWdg*RHb*~0A>Zn5xI3%6SM+ZO(kg@0(_HVZ#&;fRGFvvAbH
zyDS{D@UJbr&ceU9@OlfsVBrlGe#yccE&Q5=ueb2q7QVs4pIZ1v3!k{i^q-q7e7c2i
zw(#dIe2az8x9}zl&#>@j3twj8TP=Krh1)HBwS_w@yvo9z7QWZolNR*-a+rPjM++b4
zCKwj(!T(wQMi2Y`{|eY>`Qh3Z|F6*fKSk&JwtWK@p}Q+Qjh)4Co0--`s#pb%$(pVg
z%Z4AZ9=Kj6N-T-DHCAtQ!@7udnW|Io8H-=hvQwPv<<&2f72%NY`em|U9`ad>(s`>a
z#@aF|%kCnWO@~+;OPefysw13Pzn7iavJ$4}_yvhWfUcfStF4Y!Ph*u>repG3rkDX%
z(QDS56>z46EwQ#5JRc;Vq|hDCq3I*dI<u=&4<M3(Z%83{P_VDs#1<+3Yq;_-f5d%*
zU-)>*9;>=|8MiW4m<^+nJ1{jZtsB{?HFW4!Ofu;-wjbPmoTjE}^|96ARvc3z##PS+
zA>M2!N$Pb?(`uQuvwcugACCBzgqs$%;fNB*YOJ-Xn!-&D&2=rlkc+M1dK-V)5H!tg
zRc;AXxG^UG1>7&<bO6!ewsmF)y$shzxK6V)s|Q6ki6@DNftx{FP#5u8RcAB1v4MRG
z*~DNoX7==~EOoiSnWL$CgO>*nH1)}&>{Ma`xzr{$8J8X5tvH1UZ20=^Z^>W3HLnil
z*+u<2>mW86uRhl=DN<b*uEN`?p+#F?7ys*w?_i2&pGD9*0s<+~Mps9Sh={8e9tvI=
zZu|(@=LSlk9}dwTNQ;|t6|4T@f+M>!E~U1RntEhwr0?qQC_7ZPE4t~$Geanvp4Bou
z4ot@=#q<vA^D{gfk*({=I06;8Dzf*Mjib=;Oij|mk3mOU)5vvdiZv%akA@@k+M;%(
zs<k$>hO=)_Po<lN=S0zkS2xsVXB|bP#KevjbIdFw=ZH14Wwmw$9@)>SQfS*Mva#u(
zL`K`9E$l%aB@t{$MR6rcjd2(I)CG6$Fn!_`77;zF%XPy<roO2K?u;lhbu}h(M5fo&
zvz;XwmG8sZuCA&noeGi1TX=P|71*T0vjoZ-BGiq*r>3=a4RtM2P+$b9Zgabi_)B_3
zG)M9A3~#8bj{4N+XKGf&Em(Y$#80`RZKLQSSwj{FBQKfmIO`6#r7WgVsSLLfB9kMF
zvZ@q~O8N`iOycu2a!g%hV>6uzci^E7gqTK<(&3+**iIbbtN2YFofh#N@jITaxP>Lt
zr|38OeOpX?BDGbL^>DS8RK!Gyr=UySWQGX451Dnn8Tf3)1s^_1(%)KXEB(*SrHXt=
zI_-Y{G@bMv(RCs+DuVKFD#8?od;Ltk8dDP`_4)cXe6WwMkf-mp<7vN3F0X5kQ{t0&
zQqwU4ixnfTaA^Iu>SjDl<=Yhbccgr#W6RJT8zEy%GrIE}TR(AEuswTjfDyS32k(IO
zJ+u~-=Upv+fE+i##Y<z1Yb4b+L$f8w;-&9v|F#~WNv7F&>ENx>nk0a&N!HtVx7S!d
zW_quV;3+C0wLG!V7*AVhgpKq85-0mXYPz}NoVKAl8f|l3)Wj&nSX2*3Ob06OdLQCZ
z)>dWGS_gK;Wa*<ojZ?)U%0)#oDao#!)BXNi=^BrfaClu@{wC8)b&~`fBYhh-!@6)P
zDaj^DtyklJmC!AJNIE6KLuiw5qQE*?a&(}kfukwLghnHauS7CcU8G76fh3b@61AGu
z$g04VqbXKXACT`>I*o}gehqEbmouq{^b|mItg+E81pO`hQ*~H}It_3S5h(Vfl{+ro
zGt_aDz459=<yE?0XXR*-oUw5IWsEB#2#}D7@iroFTXhn4kJpH{PqFl~BJ*4~6ecay
z)Ym8*M=8U^@c5%lgkcFxdmI~qIE$)NvUn#2WO`#fbcJgTZ4q}lME#yMooS7Y__5>N
z6lrM`FZ|Z(XuVj0y1U0ggNC-2X7MP-E1O+E@guKTQYsz<zLX;pW_QduUCU%m#!bdB
z%TL5Wy>G}BSkKW9aaWlq-Bc@7-N;an^JptQQ|DNQXvD`BB(tlj7e|)qpKlt`(&h+C
zt>j8!hki!8)^g|}WvG|LBbmv8wx*U<Yf@60Rx<l~tubaKRi+NYNwrCBeUhB@1;m$k
zF5XcA-$_{)Ms5r+u|mZ**KEWm=|Vh~12+atrAXK29;9;Zu}EV$+^W9Z#@){QUfm>4
z-e#twmWGOZO>3;GwyC;`a|=>}Z@n*z5>85K2Q@2bY%*H|1$W_at8@$Wy7iXwO=%67
zzf#$p#0klg9B6H1vo*re4Dt7pB;_7~zUH~Uy19k{Sr^8LzA=y!h!{eddrh5H7r5ZU
z3s6n^>mu*h6n-`1qjY_^ttD{5)C<@&$`e19swE}t=9d%~=IKNi*^@&>Sq#MPGM=xs
zttQ%-U0POkc|nCbUYC^@1@jh9Vy-tOXR>uk%Yqi$F8?HbRs*S$^J_F~Knb#}gw@Rm
z4o+54guq>=q|<8)i8KoXh1*m-i;)*6WZm&bDM#zETI$)?rRp>4gc#+DW^xZ!8GB8R
zD;PgKL+~QiRXAQV{8Mj^HONr4LW-Fz|6FSf0>nD7UL3vxcz2--Ii&yzdIG>Cn46jh
z)J)|qt@zzDbvAVKJ6zj9S9d`@xxz>Jq?8A;IdW7}-B!yG$z;fPRYO}ehD{#Ps-o$Q
zJ0R|ma^_AdC`&O$h*?;uS!)|&Nw_+qt1*T~aTu2oSJ!4NuQcTpY9s;}NFJ~-0;MO^
zqSb5dg7uWTK%J_jrDA~z#Rk2b7#y6^Qn6RY$^m)#dne6=`|ZZ23vW5ye4lLNGwjBf
zYjE9PZQ^H`z$Z_&$seMte+w3xoywu>qZcnAk~M}+Z0l^2->QzXYSBHgMo%Jgj*!8(
zx^^S&%t8mOy<S#IbeIgtX%utZv&EdBz`s!rv51lzzKW#kJdk~qo}VPe8hmpD$2|6?
z<)J{6lW8+U(|=Qr@z`{t?viz=GV?Z;S}?%0IJdl`(yhf>mUK4l(0KHF3eq};o()y9
z&QT@WEA>nrJ!_gS%W&qQttG<AI#q_!eO-rQ>m*CpG$w=RG+Slu4lzbF7yUDwoXK74
zSrLI5m!6;Flc}EZCAJs@p*2*7`xp=TtgCrm%He3S7cOS58J+3dz@&3kw2gn)$;{LK
zE%FXfP@cP}>D9sKD|fq_(kEvpy@fRnRO#tp1jWVX^W9e+R3KxG3CG*;^EN!khM6{e
zV1-F{pAB71(qLi^RMl5Us#v?lafRcZbJau;N{6gvlId9KjrNm8JvEWcf}&dgrn!zT
zLz+wcho;$7vP28h<akRSK80mCvQ=6CT0L_-qsg2-&avSv8_sl9xmzU-o7S58#)gIR
zz_a|_WWT%c|8&^-e;NOOMem2Up3+{cVs&-saIv;T*)Z!fp5CitW*o5b$`>Ycbo#lh
zu}U6R`fJtV53pW=TBrB5uE@H+;abzv8e3XgSwxXC%oKql^7RC*S$|?QkiKZfKunOZ
zJCjhug^5MVH<o5(s7xZB!gw8RYiS%II|^4Z=z5_1nj9#pD$8G5=FMF+CdEEXngx1n
zO^#x_GXs3FvDm$w$=+EVSS9NvmS&$tX^JW-E?VwoF>A-EXU<`>aAayj(`uI??x<i-
z8rS;lijt7;Vshspa%$Voxo9ly9}L%eKHaBV14<bC5z~bB)K96u#in*sfQ_A>mey%B
zmnuYq!8RZ*Uo3uqEaa}IAg>d<x!k6h8VEAZ%M?U9tFE;t8Eg9e@GL4+{4?|vxVF0#
z?lRZc&?0uAOn}8<xC)Qaszv#XE6LS7gK30xcyn?U->|g9(&ZJEDZc5GI052%Ct_q-
zwI!yDnHd~AA9ERX<sNEh8;?pI#BGa-0%O9d(@3AKR~;vnaoxto7605zW=;+a*({)H
zp8n6Y`8h;;y{r?(mMoOzG<TQ9eC4BMtUbLm^!&QF_~FeBjnrd@B-=~p+<{p+GuB!;
zH>bfZ-hU#U=0IZBj0RaTEi&h-S95~2b_&*Yq+aw3dY#R&)p|%_qbI;}$W&H%F|9?$
zn3*DM*t^2Lh;<Z7(l>;H>N>3Pz^v(Tg2PbZR6Ad<6{v}|u?Ea_3+^VIt%lFt!=r=S
z)3<7WCD$iqA%Xp?YL?6D<fOm-Q%z}GR63bjo+2X26$nkqgfKATf2`ek-`S)(Ha>gM
z!!6hio6I=%<7N{+YD3YrHBGfBTJ>Ue1z2^1Y%<yfxud?T_F`j>d4RVF?qxCx>{zi%
zk$XmyMM5)#$Yh>X1-Uar${pIjMXAX=M;B<4iNIt#9L+BWWCB#h3>6+CTYtqMQz=A5
z7wfB&Gt8QnT6%_6h*CIz$`?`BDc5{phI5o!mN}9;)gz^=ZP5EETzhcX)U~QCh||zW
z`I=f-jcRFbs7WaxnU49V6pr8xr$f@LN7=&mnzgi~TE1cuSGBatD2=To2VkWm$uf#)
zHmPMzYv8=B$a(rtN<UV;D@Qv<WTc#vPe!s;0Y6(=lfk>WO)f+j&i4Y>bDJqE1F$^>
z7746oeBe_O)v%1oerwhzj+HQ(ZW!G%`IdQ;sErid$@IF>Dtco?)X8)s;FVSVW8&3)
zcojErYnW2}a6Ws>E~zw%{3Xjb^*>g^lytJImR!dfhA^2f){1)q^F$i5x<+pF!C)4n
zjN^{7nxX<uI6{GTZigVY>Q2hg1$B|a)H#>8lq-wyCcSHy_$;QnY6QNaZex{9ZIdPw
zE+dha=4!V7lk5K!+GciKS?FLGOD^PVjP3vpkD=hzvOAr!T<6noN=*uintHK6Qj>A4
zvz|2w_90||PtL1Szt<TpK>5vbW)P~9M71(>)ue8Lxm9(iYO=f1uzCdl6FY8k(7~Ls
zgetx51@uSnZuv}ohSrh&968}HmmlcG2biYG`y)KU%!uXQo8fI7$)@*=;k({OW6DfU
z7$V|1!g*F#Sz^}fn3iPPKTod$C(H0dG8}zgR`J8^5z>1~QnX#698xRHpH^ACxR_Hh
z0ad?t{gAUe9JX3gFnl@D!Z`lO*}EzZ^hv6!!h9Q15t36sM}PO$BUPyzMemlutTR}~
zsixuTf5_*Bcp9Y;<mC+(1v%Mfvbt%iQa@G%3$-2Gf3DkT#`P8(-eSW$ZTPSaciZrf
zHvESTeb<}(<83H+Z_D3>7DftLv9(Jj8@a6q`87j}8fZFtbFiCTaA``NdKsqyP6S2p
zViI+!dDP~aaw)iUX)LLiM$ofXe+wPSbn=nihmEp0$QrAhh7~RA<02y&9d%?iu3XS}
z$xII4Hm#ez$``qK&h!liXk;~~R!qvUZ;I<rs=24yD>69K>mK}O%*<+7l{}x5Ct?_o
zNiBVz4eB9+D|gjcFESBHk<>PbFv}9G#H+iM#IQpmm!n<D;lF@gF%8HmQj>B6=X7;i
zR?k7Jwsj4WmbPiK6Xwghn5&%h){NRIW@UAXVDhb9*W_!k7pKVwvu`H-6>iu1(#{+;
zZv*R@Z@|aVKRz<Jo8J{ZM+Qf8_~L28*MJWZ-XS4(@{Q&Y$INX<2G1gl63!&NkFbca
z<Iy97QNpJQZ<qMTjto91-+y^z@EyWKgyT;1`R?c?AK^PYjtu^caNN!#gHIDaP5236
z#p6c?CnEv(5#|$)+Y3IzLxjH}oVoAF;32|V!n1@<!bZY(o}fI!=&zxhF!MK*!=aHV
z;WdQ$zoj08qo1T)!V0bmJVf};pTTnq<-B-ga6Vz?LCPbncp16{eg%3?g>J$k!kG?u
z2!BTS8-cly@DqtYOgffw4-pm-&in^-5kCDkbP<kw=g8on2s3%L^DLZ2cN1PiIP*R5
z5$5x5;&0?T;U|QLKA`@mK_6ERj{XesX@i3mgi*pq!utq22%jdrTfTEW;$wt|2%jb#
z$EAvAu{K>xIFs-`!Xm=a+`HL9Siv>GPZRFu+R)MCs1Mf#7ZK)j(_@tI5aAv2or}TW
zA<X1j>df)v=Qh>~!V1DDVF%&ugm-WW?_-3S++6z!;nRe*9Ez#s-IJdY-Z5ctaNOs>
z$L;KQ5LWPn%{zqe5LR$F<_<3S{~6)Tv!I*9F;5fTNZ4`q;NT&`%yW44nL{$W2_Gb^
zJ$G<$EQe%92cU!SKEkI7^Cu1t&gZbq|Ht0DfJaqbedFhxnM`I9au~TLfHIH(;bI8)
z0YaQ)a^oH#K)44;02L%A5KvHKv51NaN-0)Uw5X_9X{A&xtyEEY6_qL~w$`HZ@_M0_
zTB>+szTa=}btaQ!K)-&k&-4F3PbbgGT6^zx+iS0VIs5E0Q_vN3fX4vaoR9K!)ElrM
z1M&d*d&vbCKz_GKWIJF+cle<*@&OkEZtnqkfCZWGUjX@lTLE|XguE`W7eC~;8gO85
z$OAkDIHoJ)WJMw;2(#grbhJZ1)Dv(w;LHrv8$T4hAF$1UNTg3U)Dv(M;Ie_B0~|OA
zba<KOFyL;$>juLgJs@ug><8Qrc!KF+ke`V(;0eIW;n3d`b^vY#+?|7V0IVE=cIX8;
zxsk{_fZH#Ezk5S|2=xPW=Of(*e1N+FkA+dc3sGJGzXDbk!d}2*fbJ~Ry9oXTY*UQ-
zGYz;GFrx(e01uCiL=N_aJiuds1>-@V4LbqL01GBS4`3PKLFNOV06Yxn?gv-~y@2~C
zqx}FYr@&6YWq>CD2hM=J{>TTM3AleY>;TM|gL(rVo{#n#0R4bt0NYfe{(##7R|94&
zMEO9_0agMo!`I;M26SJHcp3ycz)HYV_`dC}fMtu}H$r@mcAvqZ2P^<=vlMm$Zm))Y
zfCDdw--f^+fCYfN0V@Hw*PtGN%W7di;K1e3AB4U-v?t*H74QQfe-E|IQ0N8h19;sP
z@E73jRcL3xW2?~)fNidVJ%E*f-vDm98u5x}smrc`y?~YVum|wEYvHHikozN)6Rt)5
za!`H)>;c>kco?wYM#LT9vYQZRBcT6gv?ri@BkaS|r#73Aj~%$fKY@I}Q$K~=5X$d>
zT)=`mVJDUZ+X1%%w%H1KfSUmOVDsn{;A+6KyHHQS-GH6K@Wb8kAK-St{eT(wp#BBm
z1FQr*1-KiqY#aOrxEnC15b1m255WC^#{k>hhq%GZN0opXfV%<ll?TRQz?py<KZkz6
z?SMN0m)#F}fTsXE6+_<xs0U!igD3|q+X4Rq9tQk|<qtz%3G_SyI>0i(^?;{#qCS8F
zAB8-?>j2#&k^TkR7w{Bd8KC=@=-+_L0N(+;4)7EphE(-2ubgO@EB$827Kz>sW}=_@
zop6=>@=OHXHTsE954%A@`rrd+A|cF+hV3u1Q%AK-Ug51bF6uD6*MJO+Mp_@-XdK;j
zCSo(A!1fbR?o3=qpl=*A<iq@Bxct956G50M`en9P(XU4`h<qg&a%Lf)c5KI0iu~6A
zjXc}G*2=R}*SN~<fc0xT6&ZQ9mvRr{@;-hhf^fiwu<f4@e%9d_t`PEXXFlXwB}uk7
z50g2QxZEb*pGCP3(8#y_>nVS&tH2JdanG=K1+1UjPXzMqeSsN(dB~WaWCy}ZbG{>p
zdd7f%-R?7y$-t>+KGcj%u7DNVmy1z;0OdPaUThyVtvjQJtVY&)l$ZbdOk{=&3D|L~
zm2aos;wrQQH@oxg%=HO*cJ^9No*i71SZts4TDRM$z4PpP-#oy4WK04qKzcr49tp+)
zsYFHz;3#HXo@56hB+t&ww^5^1C_xQI!WFc?g$4g(UDg^n{k+B+t88bI?a)Wcf5Qw_
zK9ZGqAW5}=b|{8=qYQM1Ag6})7-{=&VLfhkLFIZkRIg14+u3V86r$tgI?xBOu0yv_
ze!Ci4*)Cg=Uyl6w%x}^zvy&YEmn0Y1nI(4iOgpp4M)NQrP$}}@lY{FR<kUmX0cN0G
z=ECcvlhJ@P?Z6mCKMpxXkdr#f4pgcf-D=vt4AjGqb!M3Ss@~dPImj<TetI;Y5vxBc
z{#pL$naGvQDzLMy<+gVW&}GOEfv<}BsMpQ(&w9q&TKZ>A!Z<s7Vv?PS3{*$AQBm^z
z#u?<rhxOYJc@>ZsXdJ)r#u~TvtEi(UCL@UQ?d(E3m~V&X*#U>&?S?&AKd%&iu_rHT
zPk|kB%`;&UvZ5C0_GUX3fWQ9fGm%Fq5au>(Z`6H_r^pUjRY@xNASN1o`MMuwfOS3O
zd<Z$El%xC%4_F1U;bja&(QeTB_nnD6N4kc%fYdc^m}*s{dq(4+K+9)*p8($u@coW_
zY>$~}_7YvrxNVVu_QL%`AqO((Uu%U^Jf*j~ZgJn7u->yK(RFcB5{6S%aoUjs`bDpv
ziENAG_mOsm^<JzU>}2@Rj%DCGbm&Z^Gx^Xz)>zgkSTdOujE_w$|KpiRGRsFr$2+uV
zm7Qso+SyZ7OBAtXpGDt$p5crTj;2bI7unutp9i;5iR&2TZFmj$5rFiUj4SAm&Bm1i
zyVT`EOUD@{3X@$$rd^(ASIoD|^X<}d{;ycb95fjHF$R6Q{4LyXh(DU?fzM_98fk~X
zfDip~9r#WjITKmJ4D`=R)hrlf*(Z^;9p$07&qOw|9R6Bwp{K5OsrGId2lA4~Mnk<M
z*(y}sI64r}z7vqM1#(tUPD9+Nao(zkG8ZKyc)~J>FfK9@F~5QDa{AASi;*#LvC9>W
z3(}W?J{$La90#NHB@TT70%?s&hC(#Bsz2x}-a8W+3v$x0v1Xy}x?`|>JIXhlr921a
zyuaRu@}E*4>eXyK8EMy>u9T)7cr@dU_VWHaa18T2aLh~2{5sMOT-p#*EW?NTcz>P^
zdj3j4TzzBF2`_0fT#VB3Pk!Fd8@LbN3J{lnv|VbgZo)6~wd()iuK<6Q@W;;AqwQTT
zYh-N4(~PS9!M6o`s$VHTkGD&#1$OC7yJVbQT49&u!SHaS@kX`3&oHWwpNXudKGpsR
zkTtF`c3={M1_6uphg46^TV<f%2l`gx9~loZkIVe0#>27pA&>QN^8qoe9JLp!wnEMp
z><{=bZqZNY=uczpqkiiW`$K<$ebRp^U>-6m0Y@WUXrIPaf8Kl&%|>PsG8YPwRUEgs
z7bGthZb~TxC)N&H{G?>-M?fj$GC*pw!a%SlQ5pHjP~+H4tQ$Z4_)MgzvHcC}nTGLT
zjJ>Os>!<Mt9_5fWaKTQ>!@fvQ;LeBn`?)^-w0ZtJ$WKLncZV3T6RuOp&qn?x=A-$n
zQgpX5IzB0{4bWXEUo7Pc;9no)d$AAGRr*={b{%7HXyuxMs&JVVJJYE^r2J)&a}xVF
zBSk)jGqrwQkNnKf&O~rqrR=K1YGNSJ?Z_`h{%nb-*mxgf*SE4FvGJ}WaSZt00pCjO
z6O9*p&k;Xk>HqiR`(FuUKj_l}^02=&|7`t!JgN>lemHJ(f9whDL!BUfL%$h`nfE?D
z+M?s+C9kl9SQ|`NbB?uFMPq0lOjn-_{ND~a71+00!yLBPWVBatG8P8TDqgqiLC_rl
zozt#UKv0xyE#;zYCRk6PyyVL>k(VeZ{y3R!ap8qli!O7Dk}pP1I3}k!d3xgvitB@G
zObY4?`CR8?9Np%<#NOd8vUho_0P~QxCcq*+u9JQ>=udxjCh|6L?H{Z+qVvRrHHp@q
z=)A(X-3j^~Ut|A{^zg%6NE@9zNv$~<R|ipk1m)>0FSGsQP(nS&kbe^SX59H`Ec7g)
z9@Wk{pl^fq&!KPO?<l<*@31Ph&{kC#BS)#ma&<z$aJh|URFesKE0t=@Cq^W4AMluQ
zD_*}ZwL@iSaSQ}a?n#Q1$8b0<ou>xnuw8-`M}b;#P^exf?S-9-pyxVfpgrUF$9Z<J
z#173+7GrF0(j{>>g~hOrj~3WR-2r)765sLVmD=@|b$|2jU6?%1UT2lq8>|_Cd7vr*
z%txB$t;WTD+m&V{a=yry{us|MqwLb9as4tXd8%52%~R{H@+7;wz^*7u&I5v#S%JMM
z->#mE1x!PV+9m#>Kh=up`{1+s3+t{XJ{o5Si|x=%-Av6&wFlY1#^BDs9P)3Y!n4YU
z&5h)T;Wv?w`$ANtQE49P!WN?ZoshrfJLRL-H<G}1`EL1)+ZN}c|3LoF#Qt-%58@Vc
ze~<<@zL(DXj<{t#mO+o-^~1CS>v0(JOCkS<?0>9B4hH)zKVUuh{DHrj^*!2S+}YYA
z{5{&kjSUaK`-f|fO2{vT{O?hZ|EIV*2tDhd=ZENjjH^DFWDfkm^;ir&d_H6(L?T}S
zeCPbJ&E&2^u=%c59{T+bv&7zI=G#x0MfN^(y1mUDiM)K|6(A2=dM4}TZj1XX=(|hw
z#UJ;Zk6Vj4B8E!zFwkVwQRCJeJ5-=%E{y$<y%>59K+n^n=bYn9X^k4%^@u(XlV9BF
zfND6@7u$>S?CKJGWj=28D4zZE9q3E-d{;dDd*h|*|Lri||A6whLjIN?Q2sZNf8+;}
z&$yb|9{x{^L>^~@U_Lx|dt(D4&U{jUC@vpmSLEA^3he6X&LT*M1;kR%e(0(Gf%UMx
z``|e$e`EQF8ei5!zSsN1j+4t!k5kYSf}WRwe@DBFw@b17KU=%ZR4XpDOTN7l8}Arg
zO6SD%+Jc7esM=|98sZsx-}r95rFQ9}xE+3U@@%`jSj9uJiifaT6c?(6ALKF~4nvRM
z_rv;;dU878ehPY?`d;-}?$}+V<2Y{h)Odz%#b|tQh3xInvkiK>a3y{2el!-_uJ!h!
z(ROt?N5l#&X5&l^qmyf6Xf9K}Lt|mhZqBzWu#L!7bfIp&VtXAXiVfy8uCbXv4?`{?
zD~&xGTm?8EkewWfocTWM`U>l2d(lX{dWO9yY*);Qv14jnTZ^!Op}KI?KF~3v(lH2z
z(sIYp8I9~?I~{|48*mQeeHwgj|6yNtUfhN$NuFYtU|+6W-H(m3OG@n08452_GaU7d
z>4fnv<%f^E-Oy9|{q+3X>q6G2)A?9WLC+68e)Igu(eI}R<Ix<nPxJeZqVJd|W}-eP
zpeJbmaO3wFoOf9X`QO7||8_mfP><cva|n7i17|!p+waCB66~}zdVW@zjQi<EInJFW
zh3Ij!1<vK9wv0sXXU4hv$vNU`Qp~<ZiNa&|Ef`nJpr-<Qe)ipZ{_Xn#>Ujrxw*0_)
z)c6-bdq7XccaP7d_EE2OrTw9o53q~nd3C<M&R1-2@Rg$w&&=Zt*x1Dz3no6~t^>rD
zv)8&7`_W2F0mNY0i>KV{d>E;H8~`;fe89Lr2KzRg_rt_J<rj28{UQH$;EbF2_YeQx
zzRDPg+z$DE{G|MK=am2b_qk3%UMb`~De}&-F2z1n{B=lP@-(}=#IBg3_Mu9mJ9CV?
zvaZ-ahy0!2Ex*Vvy+Yl<VBLh>K0b?Rz8B~$3UHGXop-s8+Y3FXp(pLT=UuF)xV~;K
zJB)da&oQy!zztNTUAh80X-Jo-G$vi%P%)yI37ynC5F4!9a4xaK_tLvev0{Oy<?}wS
z`S4wmjEB~uS5Nj$^sa{9ozPo?pR>;VUV2y9<yfEU`-VKdM8HF?__vYhUwD2@{n`(p
zr~Xk5^``zl8SwY_(~t4}%Kr=f1>dQk{cI=n?`Vr(;s$>9ezt@INC>?FTLMk@dyA7V
zgZr_asBg<>qkc?59Obv@hWWAG4<~;y<RAD>`Inx<{*h<3pX0<q$S-dniTnsS{nKn-
z9BpS$i`flFEHrws5j!L1Ktv}zINJhwbs{hJxf33fq+;hE&({lRli-w)i6bWZJOIy|
z9s&O^;_%~P!WFSkt%|TDXH!t`Ch(QwT<_I!_^=Bjx{BiJCI4aYZ}@-UZ_@+gIr!Jc
z(LW=qe{@{^2f<SY{s7J+KbU|-!#X0~d5iJ(uGX&mOax`~4Xn}0t{Y7IiPq!neXSP)
zV%w_qe84eC&y=)vi9+_ZUI2)rX{|>m0htbp3A{Zx8=41#68k{wGW$?t!u$pvR$k6O
zWdgY%62WppJ$IUp=Sp0M<sjdS{E;#q#h>?zad6K1YxCzN1sHh`1V-A20@D@T7ohky
zxHeH==SbulX2^&Ab0_i_A%BJFi;c(e*vqqSv=87O{19&94w$H-iNypT<T-JQeL`J6
zilePY<yel=+X4@k*99W_9HZ#%1ek&RdgL!)-b~wnY0QI1+FO9~Ln!yKTt15dXCnUq
z^8d+oQN#03v|qrwO2-kNoQ0D|qW(qj!$LqFGqm0n$IJpmJp#Dn(-at|pCFzGYTW+`
zMwJ6`9fZE}^ho45GaB?^(z8}Y)fM8HTM*02St{hzxjuI<tS>TTeZ(VIxW&Me)grE!
z(UsMQ_3Q(>b)bu_C&!%v<kutraW@j@j`s;TFzDK8#f^9Me4PH?1bHVjBasV%8+gvC
zk7?l{Ig%{jjdG)BBr@5h%0sRp5U5Vm=<>rT5B0%0Srqd;3(i-KQOrng!gY%FqWsab
z*^6pN&nZ<{*V&8kIInuN+EB0xVLMJ6HhJtbI@$VI?a<BQ8l}Rz!(N1Kj)jV4S=`#9
zDRJ|Ujev=Yi2hyQ8{;j`_hWl1`eFWd<ZnYh9*0Cf%-@Ur9mrSXy_D<*<oWwRKb(VR
z+?{njibr}i&3om@WNSZiailW#=)$z*QgxTVNZs*IR=8gCVV#8a3O2g2bSvTWS`IrU
zcvu@nG~FCTE3;#{WQRpr-Ut8J<KKt<W!)GXzai_!X#DEqJO<-#FX$KHJ%>9fp`o7Y
zoGB`>HUab98jtftKjy?CZw_Ot2bpCM(E<VY1mxWum4`!QH@k|X=XNkgukl<QGe4uQ
zO$1><fz^kz>yNnrvMM3>B;@`yDp#F{ZE_w6a!1=CcnNFb>G2+f;@oC~=z);67jlCG
zBasqm=f>mVF4MZQ@%TseIk--NuXJ!EGKU$;Z>pZko?`l~i1oZeou`d@jkNgC?*p^2
z-wggQ8m~he=C_9agPlrOfr$>#e95a1X10O6>mV->j6|@F9sQtbjjhPfM85Ld1l5lV
zlAh&RgE0gJ$qVpbIA#JK1pOA!-*h&+(0<YL)1}rvm{r)UC+8(wtJNKe-crSr7o~xI
z>(dwG`B2DbPD8w5#FTSgDn6{`&4PlwxE6yy74Ox|5`JkfL?X`VPIl%g7V2?qE9gr=
zkL?aMp0BaWqxCI7)?O(;$#U2u>pjSmbHp6^C)q)4R!ml-y|qY%YxHaj*jO(&2KkfF
zv%j$%)Jx=)V@|bh($$JG7bTONb`*fWemM4l#qVcZ2b}b|S|AoUcE<L;VhUnht%sb`
zIg!W<z+>uzvo~T#8R~;coZL|}M)Dj`Ci-YJhsP?FUGG5N$`N?pc22u+bk4M%Y;Kkk
zqvT}tgMV@{?};2~H`s-ClZhM);ZbTqSfm!kqmuECL8?APszxlv`C`a<;v$K2%xe?T
zni<Hy4*C0#ug38)D$a4X7e|+H`+{k0E*qWwo$oDWh9Z%^jr+Sg=UvPu`aHJ3>-Hhv
zG4KWQBa!a3zhPW0R!i_y7=l&E$Ycx_g41By+o?a|HH`aB;5<*nlSZ9@4n%%7@(Y;{
zd26g`%G^qnFD5C<D^Q-^*zamwM%%AVKwPfzEVhH#ZPv?>g=j*!GdkGhtKGWTAQ_d6
zRac|1(Gvmt)qdy;6htCNfydNuDqr3BS#;viCzR-qQ=mTt`uBx?jWyoh7FuNQ2;uZ-
z2#2*oc}U~A4;`b!Ks{IKGXU$K!bqf@)T`P3)fmJlR?tmusw(Z^7#m`_#FvWV-2?Pj
z#LUR#ay86GGgzNZ&=V?(L`G3hG0u-!SpIv<?S0;ffLP^w*$ed9x2+)A5BiGYNW^d>
zq1pp4mv~)C=xe$L)<kTGjm72}4u5)aJkx8vEE%%^xtoU5px#0d5HgM1JH3Tgm5d7M
zvWqp!O}Iw6m;^QLXl%scNrZ1cUNmqv;AkJ;hub#_^Qy${x%Zo_c^H=wAx&0T#mSX+
zIUet<;x<JoHf_eK%_ra%cA}7&t_oJ#<)wB7&Zc86G9d=X_6CJwdP5jS<E%KD{m(rJ
z`&DBiks$Dx_!(yh=Bqx8C{S_V2XqHOcNgi<Z7hAjkSW!V$Dq7qEcz$g4gJNs9j!Dn
z85@7-%Zf@rFIon=(s7Z<<=^d(u{b_vow2vzEZH_JLU&j=PH0U>CT?IDPfeVZ4<~K0
zMuK(*U>@jZ3-3HhPXru=^67v)n}(y(TKEKQ;eOcJW-$79X(Zz1`WkV1j`kW0QLc6-
z48uVSD0~72?t^d`5ZA!sWSoh_YJ3-_vK^q`W=#bgr7E=p25m#A??451p#r)b>q;WK
ztV)KTMsaupS^KQH4Ox}R#Zsspy$RqQ)MMpDyr1~p^%!OE%XeL7+6VG6kmeWINAhvx
zIe!*%&$=PK0K{WJjJwx-R5~B$7!QE+5IB$IqYvdP>vWd7SIf^w;cD2mYzXF)vhSKN
z$MT%vYt84S(YS$I2N!Oz=E*t334lCzI1{i4T!?j@QO3DZqtd+UdF3hS&z^$&jPH)W
zQi!$oBSd0jDt^=E;|bIj*tHE!t7C5xU~H_7VXU!@=ds<Qs9?I?)cA*vxNB-ezmKQp
ztJrg~qi|mJ+3300V_@44`VHlg$dJbM!TLqsZ$ZbGbzd0{uTHQ_#yAf$;h#9&Xk_xm
z>H#O-3*d@7E=@u5L`5@;w>4*>83~v0K`G>%l_rnAfEwH|#X(dFJyU>d=TO`qO^ZY(
zF{5Gq+2lTA3Tx!-e>R>n!B&Rr6yzAwBhmLKn$2UlZ^DuIM$=dUw+-|uPz*cR8i-wk
zK^*7RF~hK4fZVHq)4tgI5e${7Xi7|ZB{BPEIOPk{>%dn5zNy03%$~7!_V_0DgmDg{
zk%8pJhw}KIay8_YGvlm&YJQ%pqM5g}ybK)3um4|?NB=K_ybX}IOzb<y_==@FJQwHg
zsRX-52&&TADnzxN2O;+f$Xz6IoB45+osF%XMo&Qt=|}XG=<1og_|T7?a<G33d9}=d
zADhWTyI^moQ7Duo&rz#!yrBgSG&gzip}fVA=bdp5`|xG}-sfs$PVqVH+Y5P_kaw=Q
zX&T4*XNeoeZ;KJQpN71NG`LCp#_o5|vs3XFnywq`RRF$<?_o!5mtlX(oEYEln;@?m
z@-~Vc=Z+7)%^YXFB<ohj+cC)72YK^EUi|wrEK}H$(X~+?d;BOnRPKadY@u2Y<>Vqh
zAa^X~s&yxK>h$|doscyX<=&ZRFJF!F;91JsfPX8>7oofz<;#b1cO$<V`C;ZMy;u!M
zp!Gr4VU%w}`Q<Ec(vEoDOU5A<%Kh&}n2$mKY~yu3>MQr1SRDkcTbe|=-oK!}0`S+*
zjzpGIV1qvJ<Nk0-V||Ple)H%d&^yon<F^NQVfjXLv_XoKvAN%*iPZi3e#i^Vi9~J@
z{UWbnUqan)Ss`%8-eg7J>v4zRPw-#J`m6aCqrn>Nd*M~OL(%&u9Z>ZDK+;!4A~nFV
z4h~s(MC`nY!+EL<<%dwdSNz$merkUS@4uO@P@Me$b)%L6Ia?v8WS+F6YG<rGyz1N&
zUjNbWz0jWhpxXvIxPkWgF|uQGh)*eW`yNC2K9v9DZ0%c&XPwqRo3yWTkBak*JovXV
zzI?`M0m?%tXWKd-#>GtJuSEV%W;XbBid`MEA1^P?upa9{e;V}axjb4AoA!=dRXguQ
z`IaiI%VnJ-<8j0O$Y|E%*(UYSamsc%0sch`8|M9H;|lh**LrZCc}*hT;H-(aGE(~j
z1M@L|K@QDuKJ>#F<gY_M9z*=+^B)iV#{>WIz<)gO9}oP;1OGqpfPZjES$T4hhK|Xm
zAP#IH>0mESmm=vFSy)`)lO}2ZD{~drQPR$RU<XO3N;%g({5a)!y?iOtTdWX)!6P*M
z>}VBI&^dc>$kOQ~m1`LPC4|mCYpUe873ctN1**>>ZJ)D-DQT&*xsKrnU#X!!?FF9f
z5K@?vzf#hU-7AI8C(zM<CZg+eAWic}B<=X~q@-(7b-A$r;2=}{-&9eZwCh@dn*}}~
zaF4*}1->cpxWLZ^dV1^nv=i7};9!A80;dREAh1s0T7jDdJ|J+9z~=?NDe$<!&jot=
zh<<_H1r8QiByftr1p?~?t`)dh-~$5p2z*}Pn*xsu{9K^tLeVd<yTHK$iv&&)xIkc?
zz_kK53w%J}9)Zsbd{f|Yfu9TXWQl%(-31O7SR`<Yzy$*91g;ghS>OW#_XvDm;F|)E
z3;bN5r?2Q2*j?aYfkgtR2wWhrPT*RBn*}}~aF4*}1->cpxWLZ^da^~o!0rME3oH^i
zMc@K~bpqE4+$`_`fqMi#FYrx)#|3^a(9=)!3+yg%u)rdLQv@y$SSN6;z|8_55V%L+
z^8()#cwFG;0zLgjzrgMS2Ma6`I7Q$Bfpr4c3fwI40fBo2J}>Z1fyV`YF3>YT^b71R
zaInB4fl~x75LhR0t-#F!9}u`l;PV3C6nI?V=K?+4q`;@0!0rME3oH^iMc@K~bpqE4
z+$>ND`(OB%Df8t2f~fybhzJ#gv>os0`4l^0PxEr-x3d|^^6#RF<^8{*CEr!z=XIUu
zDKXnB^A!BOz?G8!2T8vnuv+pn7i#(=l3y?RrIN3N#rcQ%U43Y8aX36IkU4oCe$aP$
zU{Kb;tn3R1FITC4SN9v7l|3-4U;m!EAkaU%-{9=Q*+bPqA-yQ^D)HH}AhY8rV^$6>
z%h>65mQW#C$mL~ehFucCSL$T5|9uqy;Yx>pLuE+Olxg*6q2Im2p+C7;)7M8=R*hM-
z{KR^PzPeh|KLd;7eKh@>H#zj7<(htyvodSKr0M^($D!YLgQmaqED@vWUw+D=_ur)H
z|9DP&vJN=(CvVmC>dSGO*utcizxSX+Uw@mXzxka0x#|sv-oIJXFOc@5%-D~X-*bQ|
zOXm9hAyxdUvr>*F2CnJv%5~^VU)1#T&e^_yD|hJky{75=pCtgb{D*5DdgDD!|HV1|
z`QP<X`s14ZF=r)iH2!G$sW&?GyFL{8=WO4{H$>?_*7Uz=EH;|b^6$Ofp|Ac#({DIu
zdv)9D&>Np>`d<F1$VP~kzvdZ-K0Bi64>)%+ji{aWI)2EZH#~YEdi9+3J^zS9e<)GY
zztFOYU`c9wo;vB!Z)>mVYtCuU=>$vSEpUOR_ngz7oj!*?yR)Wmdrp5IY30zDcGdLi
zOPJzRLEE2+vkN+a>(e#;edn}i$psF5b~jD09!{K9eyE2-f3mx#KXK0ZOwM-bkM`8`
zE6-Bj9q1RjYk1AwklBK#fWmPMu|DYv$|D0&<nkuoh3dK83HTXV!)1CGA?30X|3u(U
zWYt}!=Mt5fkgXUJ5}5KP4nr!z>+!B)uIag4=WbCTfirO8L6mr{A-^U_ge}%kJVpjS
z3x(D&;%>v^-2mt#jmP^u{wGmh;>Y-x>T3B7Kr(*l#c;K*1!{QT!dUHU-;=2KDE_-T
zlEe>QinD$T$q55WfhO8O{hqEP0KE0BAwAs!Y9wD=X?QY-y1jomAKBfOBiC!R@OVk;
z@iLjnb9kv{<thO0M*K6Ym~ABEx4sN>K>@S9-4P|`LgxF8#1W{T-(0?pB@}Dc?IVNt
z9^{)Vh<lC1I+T8Bu0DwN^S(i;SJP6%yAN9pX1&Vx-ir+LNBi*K@BN(kkBO(IFlf!|
zmCwx1ft1yhyG|!B2&A-Q@&=teKag?_iEq@&PJxtLDd#4g>=;PdNaFQ6*&&cp$mGpB
znHEU-ioCbzWNIK~ER(nDWcxr0BpK!goop9K`7f4k)XBDil-?9|n@+X~qy$KOr%tvG
zc<=Qg`5>b%)5|YDHh;<LXM4L)$Zp~Ty-Vnd-|Pb(^rF!W^GULYypNG)?`z;H@lK+a
z-w`kM@(UBqeWWk<UQhfFlvCjyPWopUGmE?<x&wcXa;m-0VJ<UYz?5aI^j?O}Vjdt~
z@2$@O{vv-md7YQdYre$%4c<cLzp@X!TfB>j|Iq^1Ht#&@I!qgOc==Gxe2e%l@88J#
z7vfKN?<dU%#P@l5@Ywv&3*G}>On`>@HyijN??MLAXKjEV@xDQtf06zu;*du)J>DZo
zCGA6jP1{<kc=34u0^H9E(U_J*THb(vp#M8cJl>ZSo}wgl07()9`MevEYYsC>-gN0_
zZoLU)t=7{rO#vdK)qb6(LwK;Kb*`)!w}H5gIob73b8;KA44|xyIl<?ucw;Wv@M%kb
zCiZ1_Xvl8&FiLotUmF<}?EDv?T*j)mu>Ca{&e(<ka6T>+TW<GUKl(X`tfV8V&U(nQ
z^jKx-vC7h8m8Hij%Ti;NjB1uw4_U8b-b!Ax7}8w>&jWg$LXROTlYd-=TuYB>t}97*
z6AKf(t{t!^`7tIus-dAljdZIpskO+aqZ3yEJ(BVdzANF~)5kDUKBF|lI|_EEeDOF@
zZ&EVw)5QJW4XA3$m&8-OFF||CSHuI}Uo-z};+fvj@NmjE#IwEpF_)BYi3h#!qJ2}&
z5D)qKz_b*@WTM2^o(fErDE0M+MJbj_l>1T<@+od}Kg_G}T}zuh=8H%y^1VYcuSsjG
zeY;uGLM4{@R#T;I)}myk&kJXzv@%B`QSbYh2DCP(BJm^NQYPA%hahc@?{aKRrlguj
zkyz)er+_Zz)gas8;}@W&^fVtpVvFw>mG)AJZN7yp>8%nwe3voNM<sUomNSuMW`pMm
z-&Jjq=&Nko=gXxz{mkRgv)@SS2B)>mO#E+*OsTf99+}=JVU=x^f)le3?9jN|TMo^(
zK`Xr8pQ?P~ej}-d9@?CE8sV3kvXzeVeujA_<u0Ozw-w?c<!-vn>pj3Wx{n^?oO3(!
zbZ<-MAi%1(*aU>RG)3ip?&P*c?l(xJkk-`)l3I*s(765x1udr2+4gb7gFn%{0eA|v
zc)a|N2<C+9S^}%jYsZ{KFPh8WYGoDb>b(S_T3vZ3vJLNW;;VKLWk7Q}Zs{gRx2_??
zlz$yWnEpu#5b7U=0CM|(3hiG1{iwX({}7}G{5|nM<WB=-{dr%42|uB8Im8;?^D>ZU
z_|F>!tw!Lyfy@k@r+&ntzSS6*4%tSlX=;|Rj8^&_z1wIthx9P0RUW0mb*=72^FoBt
z>RZ*{Lq@A)m;{AJtNx0{Fk7jY=wN57FIABdYW*jusK;le;aUnyT4xS|VAnphYwO8V
zz~=GJ#Q!!6@vklGY_#)unMnK$TKsL2ZwKBUKV53HX~9-8yq6=tO$u?ZZmjK~NM#d7
zTFN4%ZOb>v#YITl)(jZE2x;3so2d6F{<rOz2|N6Ti_4F8G0TtkUHvd!EkD|)Q;g9b
z%a8UMMD_BceK&SrtPKtlqz)NGdajjHhpGywwNmOZ;#@0HTpDRSUh>(`pz7`|ChM-(
zENPW%P^#7}X;maK+H=j4wjji8wPs0M$b4tblD2#YOSoo9tJ6;5nk8+8c8XrJq^&-T
zrdDf~w3szZTD{6vYnHShkwLFn(tb=lwFB2IY1daln;UDE4qUUOt<%X10v*~hd4o=#
zALzg}OWKV(*(uQBR&b@=q>~*39k^ymTd$KH0v)(!NxNAm(*hm1W=Xq6CsP9*xMoSa
zRVUjAIzW<<wm~P`1v+relD1JN+Xgyt&60MTPPPej2$1+ros>08+Jl^S^qM6tX3dfo
zvt~*A4XdozENM@YU9VZv_WlW;(`%Nr-x1eqmb87O*K3xvm^Dk<GYm1kW=VUFa`c)d
z?S(~XW4&fcJ3w5oS<+rS37LA$lJ*kw^_nH^70TCZmb5=6abi_#mbAmPL9bcT-XgBo
zENOosuGcJS9}w4Tmb4H3;MHrEw7<0juGcJSpYbQv^qM8@U!*^Zn4Flv$UKUa>QilK
zTia4p0=fSUydx__V^r^Ko5f+l<NX{Z9xr<yc-8-|AW2~$yLw`9^3CV;>-ry}3wod^
z@oS)d-y&`_sKL*7aettC@bg_l+-tagNBSkyk$5M%iQl*MwkUnI+M`f|rSEc*;5Cde
z%y83K-|}CB&_6?sb$`HMX8O0az&K=_zpNHwu6iG(7u<t<-_;?oUa%3PlJA-k%w0va
zehE+`F^sZQ-zpEXyjP=p`BqcE(H=s4*HQy|{kIqf+n9sLlg0%j%^~!V;oXFB$qW*A
zd)@GZsYU~@Hw;2kjRr0BvUWHP_8Xl$AgKN3gXRhvpzc_9sOjJEsoRu?RKjZn=3#x}
znnS^^dqCP{E9`L1xu2-1(1(F`MMLZZNg7Gg7)a@F(G5o|GMaB7H)Af73Y+I(;9_M1
z{P7ak0;S_L(pvBWEx6lzXkhay%WQ=jX4GO(MS>cP?q8$+ma4yN5DI%-EU6xKKsdk}
z=`+woR)JavxF%2liV93s*6jvbc#qq>R0+Nq_i6X2dC%yUk3cYQa+^PnmfWOEx=%n8
zyFX%&bDc(Emwr8&ra4`@!0Yah(xJA?^faI!ld8)^C~<$xk-y7r<o$%T?D88pRiix?
zR63d0s&c*{l9}2O<$t39BXBv4ag9*U>5azkF=tLK(t=(FR0&sYF+#g6jl*@|aV$t&
zqZHqgDBq|CzEKT)qsZ6g=ctft6lu{e{GRrn{L*x@t!eH>UN2S^3D&h2>k6Ee?KPpD
z!l@`@!IEW$*-p`9)S<!KnMz#xaL6~mP|ao@qcC-!@P)-Wrgybrerc(hC%rXV)XZ>E
zmf0Q3GdT4kLn&2vZrwD_Y1r(p@ZR&5FEG%goT`oP9l_=M6FaCY4`>heoj<Yv8Qspq
ze_w0UwSa<|-`Z4YZPk3@GPaPm`+H~#-w7q<dPm9$B_(|#MEfpL)UKZ^NlfapS*VV0
zxJtNQbhHdN+2?yNGkha7S+|Q&OJ5Ju^{GSBLmATR1hw|ihNRz%>iGIu6zobz5M|&O
z<0PH2tiOZy#xKqqz5$BNNdE-~uxd-$J=)=^R)va3qedVF&5>{$UGAy@S(i6pP{M5t
zjV`;PFX1-EgVAS@ACb^bcb*NP>-8kZTHU<Hg&8PK?7;7Vcky2r7AAI3J=5~KU+9e9
z_Y_;{6SEY;%vV9v`(oV2s-zKU0Y%=PY-!gQWcTBrx2Nh!o1#TsjlgP%b#+#Bo#7uH
z{+*SrD&{-um`@+i!T1id2u+|?y((Uj5sg>iDqi0w;m=g9di^6y;bh8EeQv7~V5Fai
z%K2(_E8hsUDqd<;OBy{h8O;YQ^GOu+uIq<w05#0@uIt}`4scMTuiA(?u1CW3N8x1O
z6}pK|YQbpND=fwcl%QcXZuEQ$6*tQh%p^3bGR~ZyKsOlO7sEg9Z<I?WpimD&-ze9q
zLFgOSQw=QNl1Pt1-!=>^`emE!9x%n+?mVLzN74A0Tc1GP`>9^No$Ti1{v2Ir4Gyu`
z0F(NdkGurk1By^ogN%V3o}1EGMdpCs$p0w_26P3oSFtL2i$oskqCV#Cj?k;*9Yuzc
z*ObPQM*<~}8;gda<Si3<81>Z0{Kch?yq=&^@|w~(^2UHb$y=)A4Pt%Qi9B=-E$^3u
zSyxwei+hx;rsa+-Y~E{GPbgW&kQdmFea#IbZ>S@0>oM3Dd{VM+o`L+Kf5M1h-r+tZ
znO&o_0o=k4!|!6Vl#TKZga<zmvMq`?08g5~G>su4#r0a0cU3FH7>=IzxaxUrF@EQ8
z(zk>#07CQE<`!rea2xX1f?&k;KyrHv#dgTQ$eiqRT_X=NFEY!_eixY&%pg{+l;u!T
z7C+`5^Fv48ucGpbn#x;uHhH6kvXd5vO+9k}YN70VH!5$TP(7~f(<b>`zJ7VaHISxl
zXe#PyQ;A7JAJNs^`5j`6Jgyv$3RS*i($*8SXf}!lLsWh#@>S|bNQJFnNYVWsro9C^
zxX<hlxA|P91GIT?pXE(A3Q~pgMX3biBacgxY$>>134%|zwrK+uD^c`Ys3^Qj%8R7@
z>DI7>rEYAp-4oszV?jBJ8Z6it_4)*Jj1j&+hVVy?2)D(Wnq`EajG=s_5#=vpL>3vj
z&kEriI&jQ>@JLAv^GA)CSH`O8VuYs)B|XA3{*1PvMsB5KGum01LGTmT5{D$;r~4cH
z)CVh)0slhLDfnrCi9R(6eQ-bukb8g>r2%nmJTxbVOSspCy&lTU{;ogJ#}|P23|U$O
z>6HM)3#1fCZkM4U5E{mN+6rq0&2uFges%}+iHRC7_qm>n`ed3_3yu)A4Hx#VN(eL#
zat&xJ8rM=0HU7%cc!U~feQ%9NnrI9=+D^jQOQA+};+LaTuzP@uc4xzGRg-d8Qp7aE
zSBT25!S_&HzQIlSe6FJ+)(GD&+@6_mQ(W#LO}MqzUkcxO;JW}#*xcHo4SaPdE{9()
zGN)OqF&4fp%$>k&<nb=zsN_s`T)j2a9z7%ht&rsUOsu^p=g%PhOh}J{)cle40ORKq
z<bMtS7ql1_QWCmBGUE=7jBb4OMbU2Ti%P>W3;qsSpE!C-sK+m&LLf5ht-;ih<TCqe
zQTG%KimS>gM@#u!Uq)MRVuN0|!sq&%(*TH>ze|O(9h>o6b*DMEOfy5GV~45~vbG+A
zxuewTewtb>^}v)jO0DpxsTETN(`r31O|6>lKzf*3=}%YmuOZ!aG?)7`O%pxNwQ<|k
zV_p(9&p<d^Y6aTpL&;NZlzlxK!hG_i<f-2orTe%3sgq%hRpva&B~3DxYh#r)PjXqq
zS#GQ{M(vsGKysY2<tY+RfkVg9lBamz@h(#1)!o5f3UzJVwW3trK>qG=Xu1#jOKYld
z!}9woBul|Cfe#CH@(w0nMa^__Hk>!%350`A@>kX;bb)xC?1#1MgqLBc`82I~5J^a`
zHB7Z<Q-x*TM0WmLhKHaC8#HYGk1kA;e(&Wviv4~d5soy|f#g0X)Xqr5Sm#LNju~ly
zqvbnG0HH6qH*Vm=1*Ps25wMNw{=UUgce|tRX-8cu79zRra<p-dy46(YtuwrV3~!*j
zqto(5l*%5W5~{Lc@cF`wlLChMc}fS=V=l6Xa|Jd9$ZR5`fovuc0`e(!hJ|go4pVgG
zv+Hzk+_J*M-p(fkg$^g0Kz%NP%F;P#_%GO&t+4heor7%#l^TSU_Q*WZhn*S2JhO{t
za;U$QOBFW2Pl>PrP6El@DAeE2BZC?m!MX|x3mtZdQ=j)86V>v&H5LWRM3owhl%b}h
zM@1=~;TxvM9MMs1oW{ilZTvA2+W0Pz+-HP*l=5Js_VT%QMn{DH48PMOLduYA^&jH@
zvD=Z}1{1Q99wI{NcL2%ll&d+up9iuVJmB8AjbRwRNkVWM%zG8eFn%U%+__?t+X%lU
zMI54z>mswi5q5&M3fX6Lwsj38eIga*f~rR+JrZ+4rKW%h-qjMPMzBz7Sq%Zf@sgna
zV0BC){C7!kPPj?S^SNTCM$7vqV;(9n&U&LYE2lBRe+u&|hz;lEYA0Qb9lL{Cl52&5
zP%TT?xC2$Cn1M>nAzA1c!O_B_Mnd(>=M!-1#|SPXuNDnZDkNwJ^)a_n!GL-c?PVkJ
z2m1a+WDAfiu3EMOSx96TkZnN1GeibQ_(kA``}qVGrtt|Z3<H?JHOoKEiRjh<<wn7L
zVdAYN7(5{HvU`o3jSO?VSuN$ii5hnO1<nLAUQGyZL${tl#;XaW6&3+{0vWF+kkLr%
z38YlfKa8}VKqf{fkR1BpEm2j$&M?`$0(w;CJ^+KNt_L&q2s%Ky<08)6bkIs5Ve6uh
zvXGUp1m|~Do-<UgPk5y6YTXv>A(^VNy75lT{IO;FI_v$6>#b6#$x@Hy*IC@-&T7Mn
z;bwKiKj|<uXAPz2ZnfC)veG&2Y1}B&C3nY^XuK@zPR`bMThx+uo5ne^;p6ePL}p4p
z(8-tb-tvsgoYJ0BuQmsvBvVad^{SUo{Ss5A`G}P*Rj5IdA9L&fWS|Yy?DvQ=^p|j%
zS_`cdQvOt&x!2kTiE1tM6$o-~l)}w3l|Oy1k<ob|#0AbqDUSy2@2umFfUanV-0ecp
zcri7pv6M%I2w|i?=I^aO0Wo77r92&1N=0KS&o`Cwv{mCsxsp=;6j#cU#!}vEDrKMb
zgd^nvO8Hk@DOX0N<g|eU9HM=6>a*5uUE%EWkv};UGSr97)W)5F{9*(64PEf4rzZ$r
zgNopEp}HSl4=$F(FOdjumc;Ln=m(zYfM^cHjhz%8K;g(}p%H#v@?S^(5|xizd*jGl
zWe6mg*+%YrLi1P9pyM=@L#ZcE8_n_PRfoUP(7BdFOOo4Eqh8zTc_JB06-SMcdslvg
z6s4h&gf+1eHbtEo>??MC0=t3(CGj~D;jkpkSy<$ERaT=SLC3=_kR9wOmbYgjTM}K7
z$Q><-3z2AQ4Zgfg4dT2@^0}^$8k56uuT&Vhe`h{!y@qa;PrQ5+3Ol9(xf{rHL>>n6
zArRG5HV7XER`oG|YWdS8#vj5`E%$yQXxvjW2Wn?xeX&mnFyg2WzX^WYZ=s|71^jyh
zGPI^cLWdDTeazdeB_LIu`b%p1lMn=T-OXXb_*cot=%X1oS-)@?yTR_<kAxsP8k}|}
zIIY>AA5x6bIzC{Xas-T}fNnz2xQ;s->KGCNjJfKQ1NTmQgLQll|E_?H=}k$>|BjNo
zP*VOCkbO$G^7ssq74^ft)^dnbe#pm4BezNjn)=}q$w$+vkNI<JkHdHw8J7t`)DQL1
z8U!6Da!(@YNMZtfzX^p1jr+9YtvcXC@8)g9WcRN85K<ft^vB$KT{lGev-u&F{smZi
zA_K81H>9DXb2Vl7{rr%^*gxlMnnp_-S5i6SIod%Vaw0nTKf?JWq!)Z431?$!nC!P0
zVJ&{XQUYVQPVEjia=&FWyrK46F6ab=`z;Runa2H=aC>2U4zmBItx{{ZGE^JZsI~t@
z?nIQM+s?R9sJZ3U2I5gqtWKJ&T#VeQLdL2#@3wuoUEoUc>v3qmR1+GM;%VC7|HRFj
zImT5jk`6>`^)}RoUzBX_No>=0H1XvOy(eLWlM1w74xxfC#U(8j(wRXa<@S{^>oFHB
zz*8d03`Z?^t%tL&8m`t!S*WF6R}EL|s)bCed*R_~U9}Bqy{^hp^bw|cH=Ls$!v)bF
z!X=KCm{_ia{AP|-zG<`~43`PdpJy4yZJNjO_Ar7~lK(%*53i5}gZVc?REwBjE%{uU
z1h16@A2Aq1-@=WtnQm^7ObiX`V{V<E=~O&jRpfG5t}C9dD$bEqS3F%+`~#$Q#WNIr
z8g!|OXQ+x#r0PdR3zvg4AD0BzdB*JH39w_Bn<t}o4Gbw8u2lb#z4cSrG8#_{%^Ww!
zb!%g3_>V%wPWT{-oleLlWcZ{M^2XvlUDzaIF4Dcv(qZ{-wD)xzq;;!xW*#4Q?GrPr
zqSk!Y6CEoDMK_^N14@7x0U%{S)&VK60P-!6!P!8PqBk`66rL7QU{jyBAgC#k5>wPg
z1Ybjhs-6Hcy(#}RYRYY27*f($*{1!^x(Zq7ep1iRV!9uDyxO*dh<C)Wf5Mp%p+<u;
zZs{3w{s9%{t=Xa@U@BE;k_Y-=yQLNT?M805`~&vsotxXZ=pEJ-vofBlo43<#KSpXI
zpX2{b#8jgZ&AV>yjmrH5+3%rzz#~9<BK!vY0mxh;2Z7u{<UOb8Eg*kn&K@8gIR5kC
z>3ksh6j^=(sk@LWG>SsXP_+ODHp@|UoJ>^J3d5gLHJAuhO(#NCs)(wtW)4-|ON6TS
z1DW1b_%y1`?I|kbHiP%B*k(8?Q<EBJ*$U{RoQlLdXLKuY9F|*aa{!h-oMXz>5Iqf}
zGon0K=zX*CRe-3VYW&3PJPJc+E0SWaSi>_V!S&{wnpU?mM1`-GLYm$h?b<Agym!ES
zxew141vCbeW!P!cwy>fkF7usaR@>WZ!x%dZGfs=f0GMjxGTp0~uqZsITQ@h@)yAo~
z(XCetgx7r2JPOGf)i}F{M0><Xufe*Y3hu!}d+a(^siAAqyCAH<-^gihaIQ8>Md`|D
zxcmAdC>8tFipAPkFkDH#MoIn%agoC=u|YU@L7n+yliy@M;A!NScL(w~kXwKhvveGa
z%3ngxTgWMN_;OU+8O942BBqamEc}Q_><w4lgk1K|s}L;*B|l!gxsoo%z~;1=caRPV
zX)(i?7jQ#xVsS_*Q>_kTnzp(tX=RL%%tk^Gv<W!#a5}@ty*oxsa}i5oM3gj+93%Jg
zbFwZ6E7tmzO}K(frQ+ON3jatFL*Si<bS2O<M)*7t&HO*a<d2O}`E}e%-%5+4Bjze6
zs)7fEQ_T$X7h>`>$Ev&bLsIaFG@ZHi0D@(h+T<Rqj@y*>P*dSza<J?<rk7lN8Pkiw
zH4IbKuqAU>I_W!*uH;b&bG$0IF;9%Hx(sn#s?O+G8$&^NiEcgRh4UqmkJ>&31&k53
zRgKw@aWKpXt`ZVuzQ;?o^GCFRiV><3^-^3Kt;A-GF}e~XR3-SMCYaAri4hjhZe7K+
zs)UyCUn<Q?=(N=fJw{dHB2@`%W5saQ=L(d<;V2G2B3jwI)<GZamKCNp+{b+{+54V|
z#6+Dif`^1rH^x*pMwM<1DR?egkJ5flJ*reaW<#;AN0r60*O^xJsIpK6qXeU)ZVa8i
z25H?G3oV|p*@Luhj78EIr9t<|kkY3bqk|;IqA~KJprJ7~mKwpINU5{~HRkbf%QngX
zof3rlY@Oa8k4bsr-P$;_=spE2iXK(4vM_s;)`+n~eLjGqX(XOT%4sCaogy^xM~K4~
zBE#|qR41#K-i<bST?{FQ`H3)rlhDSQq}^BnT5Dq^9wG_Ne9(lmL=D&fV-y3nDq=Pg
zTuHA|mF&NkI+}vBgim>*+d~PcGoHiYSe4OxKHh3GTezxNwQf9UYPPh@11RaW9wRam
zEYauJTI%y_I9hR@#o*0KU{DLbk<_g$a`s+Y4VkSKr#>|P7ILdLDHR8jK=-z3CJfN~
ziGNn7G<siRm>SF4%LseN<iTm9+e|MK&zR;aq28~k_3q<yCU+kvRiH@kE54%UYQ5vA
zaoJaVMeSbdeZ^PQoPsY()I5h`cr*^J2a=)n3)6fSqI;=IexdYcsEU1|B=l;}1=$zs
z*eK6=eW@)|)_<j~pK?EEritc<5Tkb~%h2(Rvdn?>)%3^d52M?966Lzg4g;Y~o%zdE
z=lrsGXc8x|n4h(Ze#q0Ul*~n7FXXB>DNLi=8}!(xmYI({n(`0TI>yjv*v=KM3Tga8
z1S&t~)_)Y?enK^Gg%Ww9H`3~eVudRNCL42K4*SFh!di++%)HdKZV)C^;*UU6`9ct6
zXF*_i>evtk8;t%BP}F>GN>#Ul`su<BXPgh$#PD^5?B;wOWBHtL4x6P7`X<HYyC8<|
zki(ZdEQYVSt}Zb=ryU+6hlfE&jMfS_&<{&o$%C=Ncp3RuqWbyFEPorRaty8EnL>IQ
z`s*9oHklv1eX-9tUJHtU1OJWcydgDAJnMJ~O~H<Oi^$za6KY(1S#iM4$X^Ae1Fi*f
z3P>?aFF;ZG9mrXNXq)zPAPXMDKQ{V%$SMCV5(yZ?avnznJ7TjLE9Y4^qGtKT%lD)3
zXP`o>viBy9(S|Q!4nAgE%RK}O^rrdc$3UEnYuexOulzLrEy9&MTKMA+kpCUCba^AD
z;yl#3N;vCjVFxP=tpgSy|89sKFayX1=w7+&gz8GTowLBzurWmT!%~1gqCV#N)>=nI
z9ypbV)f90|C~t@nk;8%KBPrNL3kF%^g5cVQ{CmjGAB^~z$U6KBAoz<(_6Agx??lcN
z_LMz9?ge6mdyfw(E7U>|a+*h>rD8z$l)&JI)#PeeSS{S~qbDI|=r3u^X@q$0wO+bg
zYh?oJ(#u*08%C@_S?=vp$aRg{6xWLxBZmX^{ZeRnz}3UL4SQqx#LHWu@C2*a3CK)@
zyLzUwSIDzT{-Sw`4&&L6+dz=}Us4#|J^U)#;A-E}DaSmaKITj2prIn*DGGSKsQ@E-
z0<O3M8mmA(?Lyd7J{14n2TMM)%ZrfefcP$-2xLAGL<k?^d?oVQYJE7mYd+#A{BMxu
zwj38yMQ7c%?JETEqx!r`3+B>-CHQw9VnJ&v5V}r6Xa3P_3s)-Nj09Egw78lYHo^5)
zx<o<1k@C7Z!;!L_QtlUm#`Y#ey)=-u-X%m)H@|5rJMN`~r=&1uYZz7Fndl0!&~}tx
zXuSaCBetO|_cAHua!fy1F~SMr-A9pk5|oJegt|?0_?)=RUAJWp9vn|#Zw)#z#s`kU
zn?({6xqlFAWZ#%Gc6f&nup>>ufY-burN?xnPn;0TT~iuTmd785hQ;tyOBcdJW_Ph+
zybQk-J|)~2OYMi^9&-5nCAeEyrRMAl5b1N(PR(j{J|9PL=I|)$Rce~eLuoi7BA$Rh
zzSV~7`N37UZw`FH^K?dTmkH-G^IFbS&U&(!v@35pYhhPmU*RnmBlp3`%0FPmX#Q9k
zSp_p_)LLZ}M}Y8rVR;rtT?cZGppcdOW66*2ts7&_C~9Ix4i`^*gnt7Ef;(N=`4}FF
z{|)0>`Kut<3GM2z##=&}B}SW5XO2M6;Bl3X?2J4LQcQ%0HI@L$H79Bp$zhF#XKe_q
zxW|STMms=%9?nk?{&tSWs$Ws#$0)jkiv9}Z_f*tT2w#D7RG2vr^`OY|KBL;K9xJ+u
zJh?tbh)=S{m+)KI2XsL8$CTI&NPqU!VL%oW$p&&CkbIJt7b0~8sqj=0@)u}Kg9tW<
zIxD0a<(;Xz;_({A@?N6skxj@AF^xh2vi+qt2p5Wy0N4DBe{m7a;RfN?w2QlTVXiQ^
zLAZ(tckLc0!d*L6#9g~jn8RJWE(jX6Yc~~0K1Hex!i`83W|eDuF<-0C)sCt^k%_82
zbUan{B0^Q;h)|U(qN*C^P}NU}aD(s(Ak&))*BgXWMP+;!Esk~3SvCl-74MvLgOEGE
zdV{b(-|5&PJYA%sX7%|Y*xCwX<zHxYA`l;%GxxuQ@FTRZj;MF$Djp7+*m}eukcsgT
zJ2DS7G+;x3qbHQY!>1s;{Lkn_gCJ9NqT<QO!l$?Tk7liSFa*8o%ok|%nJ*&jM85-)
zTO%CbyAxd*HAru02m6ZzK9mk#B#G0rk#MY0k4vtU64x9Ye}Yjuq>W(C6eRFziF_mY
zTNwq^KI)5-;65t9I7WGDc2qx~+XtOtL+L0KxAGuvwZjl|cWikV!MAFAw85DeHeE@3
za0vKy;qCxSZgsc~X&58?u@rL~^+~6=k?=Yt+{n$8s&<DUWpg8{+U6#p9eSQKU>B;8
zkUo8V)B~~S3yej4J7?&m5S?k%vrlhx6)u)^hRQXJ6&Qf^RIuH}S5iMh3<R$gqJC_G
z5N|A(m4y@of>wRZ|8e~poYR};mk$B)z>8r2CgI45Q)gGwDK)Livrg#X4e__q@HaU+
z_PU-6BQ*bovW*Zqy(vKv&Uo;w?VR!yAiF^lPM49e7+Q<K3~#HQeEyr@s@pZk2$u>8
zm(15`k|sMQMe4RMq`KROG0Wy!RI6IJ`8c#`Q@WCh6(@JwsZgG>`dm*-1EFH!{c;1%
zf#^(J^$TJrQRkGk5qw7&C!%V>>qm!_mu4~Xpe!J`lNIbQZMTRe6C}Z|7~U-jo`t`>
zAfEY;I_AqM_+)8A+WJsjjwcj{zBk$BERTYFg|8Miggp}c6!Q1DLgvQ^+2X9r!aotd
zt05$<FrK;ZE53e4`1u$W6XKHoHAcm@A?U39gpUi~4N$R2^Kl62ErH0V`oX1=*u=Wr
zAqm#yw{aCMry^$|mg2N~@L^%xMk!BAf)Bq>IBLNb6DZ-2goaU?Q53KC`&E^6lm??!
zdMsusFf%USuVP%W!D+JaH!*yh;_|%{!?)7W7p#(DilcRKsU*0m7+fZaM^KWx?Hr?-
zE9sS3r#<I5O>Y!(rG4=xw3hlZrW9i7saO{IUes@yjzD<^UM<zh-s)A>gX*=#EcG_&
z%ld87`QM;(m=CI#)pv<8+e}6QvbXjgiEZV}maZ_&htxA}pX<<Db5&VoPB#!dtoYu#
z2zRs3L(Z!rU>66~$J~cXFiL%Z{I5VTfY0<F4q+=h9SeY1O5Z9ghcCQ3d3@8~S7W7t
zJD+%YJ23F5ScwmH`bKnQdqEYn26RB)C=9vz%$Sye)U<5;<EMmg==Po#Qi*EP*H}4x
zdDzL@#=OPmH6>_?&xMX5tOl@8qq7IruE!9D@~H9MXg;5NLd#-E%n|NGl(@vqedV0e
zK0muO2n@d<RpcpxQ?QMLwSKq6@xGBee7dey{0)vr^+5tTXBR!jW6Xbst-VLJTB%6r
z9Bu7&qu@&Q4Og1tehkCImn_G_l_%Vf!?5-krS#L1C)KNlW04NuA!6varw}g92mhC7
zj5x1df3zb$m;^AQgr5;+J}iFQVfF}(5&lq$`P9dTaai>ET;*@-2)xLgn|P|H8&mj2
z7n$=E8tPPJgnP^gDHSxRNHI0t`9Bb2(8*|z9U^=@5uQ6aMo9A-?TZm`z!6}Ke9jN&
z9&%R;Z*tVJ+eSN%J)|7BhK~EGkg<=wqV42OOW2sH?Ptq+z}Q^<yGngX&BKA9cBm0d
z5I!#OW_EBA8Qg4=1mBMfPmu)Ob7@@hM`CIh(_S>LV3lyk54+c63>)aQqHzgdcsFOc
z%|lSfUH3UE{<2<AMs|fdT$A;-3;0~+9AokoNl5(7Wp>-+0aD;L`TKiWNlX-}K+HNX
z5qPni+xuCM`+%3Ie4|@O7PNPpeZfIhX<F46RMo-Fuaqz@eU9cFSGww@I(-sU$Y8|V
zTjo4c|4>n2U*eh^p19c~qz2V}>RvDwLmH3L48%mGj>oJf!gDwKiST&LH$d`9uMXb?
zF?$r2&eo0FN9!{R95I)nREhZ+5sG=92*rF1WO`FZeadEqh>H$dF$-u{(x+^W=tJX}
zV>axJ)9_;65N!->$$d_$Cx>lFfxZ?)p`4I3OLJt?2@&^<aWIii@MFYP)|V5Z^&5!L
z`U61nNw1vX#&A{`5UbIv)hEvpGYq9l%mN}5b0ZOo`2~>aO&PTl3eM?-$T^*WK?s#^
zC)J9ryegSj0mJ8Qz`w$v&^Rsk3XGnfBbk{}lVFi#@LWW0r6l6FPI5xSu=sGavluxX
zES`}n?W3Q+a=RzNhs4VtMd4w%qWm{N`i}(iERYRAa^42=g7BRrU!{9~Dfoz&A4j1Z
zgG~8nK*j<oIs=5k9sZ;6a15R`UdEd|XR#4{TZ;G0!QkPY6H+z(0}_upw2fkJtQrEi
z(x-3?^FG(q=$NlIRl=P`$Uz8s-4Ws_q))JN9V0Y!T?f>n`5-u<QM=BL>VQH=mJysP
zVt6l|d)M3s<D1JHA2nP(<%gJQ4UH1w(B%lbMjG3!a(@HUf-^;ly0gAU5=Wr%=gROh
z94!iNj-`2060F>ZaVvK^c1`J+k^5$hY_<P^8$=F`{VR0EEN8-5>Aq_sqO)m!c`Aq>
zW)yS<@*a@TV+f8%gx&AdYmobv3Fvk&qU>SRdjKQvWgycZ6Ur7ssYw3ikPLuO5t$^e
z#(GqJ%<k^@9Fa3XrbJ#1WO_@XOcF{Z@&SkBm=ZbW7Sa1J$Uw_+CJNpzdGva4yCitF
zD*U!2=-#pLL-V#CtlC=c&SV1Bx1~n#^H{kqv5s<c2TCG-ckU4*bAvM}!!)N$^0k`a
zr_zEv#u^+d@>EHQBvi>1N$@aic$Or%r~fZq9o~#R7{dTz&h*4JT=1|A<{uyk!>(B&
z<=an@D8oR~+#TOKq0g6b^*&wL8R@xZxKwj-!S-7b#`*u}afNx*uohB_lM=@d;Wvek
zzWZ}rzQmZ}@HQvp@%y>jc=ENy)ZE<of71BqBv%^cyjeJTN;jxET}hvVxXjGuAcM->
z9YZq1A^Ad)3=@*aVo0ubNKPvfgpZQqjMZPkzrToU;+Hg0ZKko|=1Ie;6DH}mVgYOV
z)z`O}C&8^x0Jc&YT)?zWzyM)nA$af_Py%<Nj9CveF(hG^2s-F=`>ma(Vx6f@D-2Nr
zT3~gdPb&;b;Aw?&rcG)bl0e$+Nb3dtP(^<d=}Pr=y2F&(9+=}6f8zrEq=d!uLr{x(
zhAX5|^FqXp0J^O?I^l{b*k~nQ0Hpk75X=T=`P)D~C-MQ1D>2dsC(a9z%}A&~;t%se
zKrya%N8<T;A>sxXZov=cg@EGKKZJbv+j$}422W&vK3NX{-hdGvF9tC*`a*B>&}h$)
za`qgKII)<!S{Qlm98A_V5T5(Xc_9G9h`+Gy7!%aLb3)7rz9cQ6M*jCD!LudXwLKW9
z5O3;0s(W6D;thu5tGd*c6oyzGjy{+3r5;8&bzX>+iu5aov_O$EEO8G$SQB8)FIAz}
za+fu!*Hw_=@$Nvo=kfc5>ZN!IW#eOReFq^>{w<0=LfaHqqy26|&NSu}yeic32fKOn
zN3_$u*Wi&2!sf3)Gj5AX<bHBafwLP4d?_k$KEH>{+@y}Po)ifimHDi|o8<__x4epi
z_X7RVSM=Keo75Sj50KUeVmB)Zn=pR_TU3UW0Qw|&o+LO@275`OBa9DEk^~)aGxRhM
zuRCInVtnCP94wC&KPyIj?v*hT8FxH)%=7HAu5259Pip)!9udBf)$+M2<Q1MJ>(L3!
ztSVFhnQ|k%WV{ENeS50RnNH>jIxbshI=9SACb7Tv<EdkxYo;Uf6S7NYxs&-zc*pFo
z6_q)e_cL>V&Mb8@%@kw~3@Mq;t42%sWrSufztazq?NEM(P&7lDJySB(E6%S>lUJO3
zxQ!+Evx>#PLlz!A$U}uCYnVBT-__9YJfcne>6jGgptk(}2mL*eD#@>SFy>a%0|E0w
zQ2AUX;unwiG$beUTN1-4PzS?Y#@u~$%){n1MSFC39{BMl?Eoa_j;5GI7r)`#=Q=6d
zUvnR&)9T&YmB*aip{(H=_ckp?axV*kb?IXmx?AkvH~%i}4c-<HDfC$w-r`|}@|0YM
zp^roF(yg$jLoppyeJ?9sqNAWx>TvmIwASlN#N6z2oz9p?W6{-V;^l45L)joTe8XHR
zs~&**nqwD(4F2n;8LHP|d0~#x?csGY>qyyME8HhFsID`S*_%^_&*c}&rKNOC{sWM?
zG@CIH=1f)70x`m??TFfE&<wo%kK+I(Jd=sbHi*?cg-*-MHM#bmJq?4G|8leDt&TW(
zj;r-GwO_+Cy!^ARWj}+V8*teMv6{h<$*bewn*N~R)v15Y6#%?CUQ<&CDqbD$TD}mL
z@v4~#pYd`{t*M9Myv}d4%nz4&aM=d2WtYR-3vt;7vD#bEP`uL8&6;75$LsvoHMgM#
zye{ZpI}8$ed0bXq%H7FHla?=8GPmXmWGy=kTVBLv8^mh=3MyXyH(a$hKo>86rCIZH
z2;$XwTFr|AaNz1ZruHPN$IIW<tZf5RdHF}UYW{*eUV*}zUm=TEmjN{=&}O{4`fE(6
z;FX?I^C>j&>e8(S{mS4Km{@ZO=y-L!ZyCSI<W^j^L9DLN-MywQT^^V-HgDRTz`Ux!
zl8b9=FTQMH;L@s^%c>R!7F@its<uy{wyJ7aQj$^E`|h5NsOy$rR#h{1-r}mjvZaCW
zl)}u~o>Agjt|54NI$JfL!->2y?Aq60J}>{3R?RA8@#=PC%}BU|S9iPig$wmt2mWsE
z+C>n+%fG^^DMN4K)p|kA6a*Wu&O>W=AcvP{pjDHI=;GBeRC66_&Z}dW+8dC=D=ovU
zS$Y8?7gvu3HGl7bXE3-tzp0suhUewkUb7c&;+5H|rWn17S7v(cbufWfPs?0(1C(8Z
z%QlED<F_ZeaM=d2I^W%iNo8{v*1}ufyFC};lVsHFgCV>+Y_9nTJiK~cSF;i!%By$l
zW&HX>eou_IBeB}c@sF4PYuB=m0gvLc4PrG1@Q+uQtlDQGhL`69v!*w)cy;MqTZ)SC
z^5k1JE#YWh9cS0@`{j6bZCP^xH1X;)pk^qX$m_xmH6i5i${JjA6&iw9-`+Lls1&cZ
z-D*}NV0fh`*VLnf@ai<7W)gCE1+r@Yi5y=3hpd{rz{4xMZOz39O<sZXYu<ugyt)jo
zse?aw^*g^d0Km&rV%4kx53lwUYA=Q1y!>BSHJ3mvua39W?1qiJ+}GB;1RHtv`gzSK
zP{6CjXSG{U$jg&x8Sk_Lp>Zd?B)=0d3K{&JfDM%)j9dsP;Qa8+i~3y?*O4HSO@7zJ
z`6ZJ^KW`H6cTFt*NPv6I#SmffM*`f}5smq^lb<l@{Mw2BR(Aa@>lS|zAR+tLDA&IT
z;Q2>?OdRSL0X&~wglzqb0G=;yC8~ZAz;l|o{zU-Km&Eli0(ib6u7450^EGk(ivXT)
zi0fYj@O(>L|000r3~~L703N(#hlKt`0FS8>`WFE_mP+Vf1n{`cOJJV<MF5Y-tVTlr
zB7nzh(pvqC0G<{qp??v;W1H0|(Z2}bX=UOLL4Fay)7r$mCcg;aX=Bzwn*K!qPpZkU
zAk@DI;OSzn0-63r08dZzW+e140(g3<g#JYUPj8jbzX;&zqZ0ZT0X$jeh2YV@2;k|f
zY}3C8;OS@b8~5>x05u3Gk9?cIXDchIzRllr7g7Cf{+_#8UHxtTp8Hr^ew+VL<axYo
zz+|>E&2F(42y@w#DtD`s%Ww0)4~Z1g+U_F!Pwwl+7}N6a2vNLRu%Ezcc@v_@aJSq<
z;BEO7GyN?uXDZP0Wu`(cCoxs;{|LbJ{}OqYKLXtC--G{N<Gc!Ftu+&~XF|HSFA|9Z
zh~n1`S_2<UJkNWa`9q2S$lHVXaN^IlYDGMkxZ7;?83ZO4GEr#i`YZ;nY8f&T4^pOg
z$VOzT@1XY%)nUuu>+udF&hMZnM{Clc{`j9lk0ibcEq<TxAX$e1_a)IS`uA^q$qYz*
z+cgVP&8gplsLkRkytFipjcK$|?*h%B9B2oPIZHQ5TTbZK2qs+F7+>1)%aW}Tf?fuc
z{O$S0vDSz|AV@V@Q&nq<N>h@SD`tE{k<nhK6}qu6lq@Gzdw%zqS@$y%?9U*|+z#^>
z;JZ0jDO4G^hG<76;U3hR)%18D#Q(NkV6UaRqU$vX(I$S|VB)tlpgq54+xqqh2*CF+
zO(b#J^{nh0tb}PHYTG{oE#@0rA-4mz5#CbXN!v&wKMgQ*NmQ-UtY`ZX3ME-5bu6=$
zvUoW>+nSMRoZo>26*R#aFINEP$K3iFgk7NCEvq0~&O{_tWmWRWNOs;y_IZ^56_SDb
zWXwH*DB2G0F6xHJ==!kapGJQA%aU+`mjt!=&)exPxUF9eNojY1${fi0o3;lvU4U<l
z9?WD1_2q6unAu5HGT51@s@YJQs3Vq{8EcWk;z)JLY$qdvW%5i)A8!^TuN@_ir(~o1
z5oT}qSA~$k+zjLSF}L2E0y)a<+v)Z&wz+z!`=I+75*v`bK)phAKb`OwBr`d6^~T88
zxtz{<kOHnnQdMIImGwl^JyZnpCz0I~Z~myn4U;j=sR};K3b^piZoR*OM)QxiFA9Me
zv-u%Re}$Ooda71<lr?@GTwU)GtLgT@Q!$B55Yxq1!|nD0EydPuch{|3jL{ZP!AD?m
zz^0xp1pLZh^Y=V7*N5o)P@45V$~$4#qVEYHG_CI!8d;ic!PpBKoDP2}`G+3B6yNWB
zWG@6;zg9q=1k#6vTy13Ww&5Avdh{It#I>=0aewyu8!y&I4rG1tF}n^&$LN<1ul2+2
zdcRa4vxuYsSpy{f_rh_$t`=-tidyjiEaJ)R*F}9pCva^2ug%eSfL-KebfvM~B_XA$
zyZR4}nU6XeUvo5`aWrP&E;BtxIKGF*%}q207KxAhz}kb*gT}#KtWX(&Yo$1d;*WGO
zx&-QjEyh5d)RcvM=E;VQ7CMeAKw)QHNT(WsgE3qqoC4(|$V?w4b)ihi6YrtK2viE=
zcoc2Yj6T=OXobqmk#z7tIN0Z^7~yzUot{X)Sj3W7RWXLo@?J>BkYZdXjJV%p^Y54X
z4|W<OJQUHVn!gsVSIvJ95jOvGY>cmjLmC6yeya5|V_Kg$T7PHMbbWF&@Sw2L$U3NL
zZfI_Up(mo;s)m8x!aN<!cWP$c7(Q1)v^f(O>eyNUBJM@7#gu_Q*PqL@$BguM7ippz
z?JGx0lmG{Sq$RG_6pdQJ@{WR$+_Y2v+|$@hqyIKIDj;U0I$nLIE*Vd2o<~u?-{M~e
zHa7b00x}9ndQhlu(AwN}CoknVAw9}ncl1(r_+cQQCX^c>&D{S6=E;7ekiC@Rq6ojT
z?0)7{069fuGLT_d3=Sk;7Vi+MkjlCi$a6pjtq1arhz`^VLO=6OM7Yqg$mg0I_4GqR
z#yO>jL#76}3GTZ3#U3N@H=*DRIj#`}o`@fh3YsOYL9#0~nU5nSg>;1*e6DmSWCN>W
zXzy(*@}sE8FQxf7I{#M4HlBtT(^I6IY|*avFgG1bDdR%USkAD2l<s})d`u(#a*&-j
z6D_(^RBs1oOOz<Luw}ZwC)yrEi4iDSpo5E{GgH$w37=hz@%}1!W;FzlnjMV5U=c?4
z+vBqDYhZuTsd3k9rCz_K4ar;!aZVh(7O9P>fssNi?P1Qi?{ev3+PFb&r@le;UA54f
zr;0eg=|$OJxmIkaX1%{McStAo6?-3Di0uDE+Izr9Rjlvh=j?8F&u-eLL3&w22mwL}
zB>_Yi5~Yb$A=oY;C@KO10xBf}B4Q(AK@CN0=(S+GV!I-WqGG>ZyCU{$1Kafq>i>D(
znX~64S<&D3zn{-Z-gnA7?>z52b7tn8Gn3yT1PMaoHqQC2xqppTU>wH;_?gWcAW_}M
z_wzP>89=O%`}X&gVU8`o2MNALXp!99e~|QeP{Dikk4GWNMlePHMTN|tsB+{aSm`}@
z>Ly)O7?w4^|2rzu<7))Jf%skwtNa<<FW_+Vi-JFZ8G5bMBw(^C1%E@t8bn-<h`us_
z44JI%QbhDCJtNAT29%TEK#X_$OWl)Yp3_$<ujrqU;jq>j`pU+F$tEWXgC?PbE2w9(
z%!``9<I|;w0NFrY&dZF&*%;8J2fqaIO$Na)LB^8!7l=(Ho&_;#3iKPN^JP*Je)mAX
zs-F;BWdex~({(gwI;!)7PtKkZm9*@4e?WRfwDQTlPQP0jyR%HRmKs)Vsa0EMba>Gv
zqHXs7IN1j~+0pX?AMB?mg$L!Y4QAK{rlOxl?b;+(V1@<E^pkBcvELMgO$Lu&ah|R+
zhgo+6MroPbmfAzD;zk|+8seW(@zkutvpPKfE%TsLrGVZ47{#Ay-{V-e2nHs^i}80H
zp7<gIM%G5LM^~6lxIv|9fwni4Z!)b_EPcQhTYB;JE{xa2&B%L>eIw7Y^F=<^`BdZQ
z6o^er8vo!FAS8|7Z#{~@<PqQxe;kxqO_vXPr|Sm@M{r?1VGAeWM|45$5^f_I<$4^i
z&}wtw22_Yw;>dy1@sC&N@<A&g>|9()2B|^z8gr7YF-PsC#N=L{=st9-yiy|Oz^}Wb
z@#6}N9>`r!d8JlHPlp6vAyhJwhc=HZVY)Y3ga5n|!sbBkvdt^Ceh?>m=iu^uPbzBR
z53g`q!oWdD%`4&SXkrFb#+5MBTW2q04|)ZqJcBFAAQiRO{gOX2jgb~7)xV&R)9YKe
zBQw{xS|5J?1e{6Mw><9kExj<M5A2Pd;;W9R)Q9=nYhQ6r@#XQon51xhYn{n|vY;iW
z=z4pii5P*YP{;DMe+sm$D)?kqTO3P+2VK4#8rWw9`XN!0FaJj-x)8Ll;7X8&^(5&+
z(mtz+bP;JR1f-y_urJaP|KxByUkAw$q|j28{)qyl@7So)@8-XR8Xk!%3lj-_S+Y7v
zIH8}?!f#PrNFAF>RT6Vhq#413NN7h@%!rWGP?I-R3W>zYCr`#?vBPypiy1mq@LQX}
zq)<|7cV<apIoR6)iKkD+xm777lUBAvVCn}T!)cE&S(>PZ>>EW0kxMOQM5g4=fupPZ
znNI#JhU)z7?fgXuOJVl(^~mn8#w^e9jz?e;5BTv{3&{h1{MAz!dXuE;hEzs~Y5mq@
z1ZRYf$KTAGp`h(jssL!zJQ~e6>j6YPf$lA9JBZ||xD)g6p0|;!{ceOzL`b&x%qZm=
zJalO{Vsg+GS&MUI=iy^>Fha!!#71tGPE~+ZMqaMwI!I33$ytz`W|7a5K#kkjCQ$*4
zEbOndmO~JV3VO#MK2W5fL~|g@Lw}aTnaLjAFXiC-6l*b)WPSnxQJvqZX@4Io_#>h&
zM|H9cRN)=gl;eq~07CmDgmjvQnvT_3S<`<YMryjGbxo(~RH~+@Yc5t(7Nly*l2lDw
zCn{i(g%|6racer*RZ}a50BTC}8i_~Kt8&fLP_^W_+=D7t{9BwlmoBWFI#-;!XdzQq
zuF>UPgTnbUn>VAwEf(*uJQix72oOrdzpLoLm}M?4Ir(h3doL!$40377%xU<xptoYT
zE{#k+8AbPDd5<D*WcHDUSwlq<P9ZnSFl)&@1+Igr)|W|_p9=J61O0v&iFc5OQ%!6A
zi16%xY9(m{zU3=6c-Y9@IV*}J7*x@}N{@%soin2hFt$RHdE|#kn{_IJyG#eM3dH#&
z7K3<@#2gS`gUI%3K|L*eqpJ#N;bR`FGoUx4;$v$x@<w67Y*ku3V|lDHm$g>dd5n(q
zys$2Bh$stH2Mt3L&N>lMb*F(C1L71CgF$QrQ8>({VVf2(!clHstf1^NjRl+fX%J7;
z7U1tV8qLT)Pe)VvO)9!oorh3twbXgDEjIgdo$YXB+o`fqo`~Iwf1}MIM)owVE!*D5
zEsNfYqA%6aEV=+*)Ve|*Ya|45mMeun6f68bSH|&iGajZgdL-kiv5eokGF}-sBkCFJ
zMXGc@=|$jYowS{YLSLioDg3z?GCFY_Xc|R)x@C^3(rKay<j-uTx0W{m0dou+(yK6I
zIgjcw$4o(d;^}A&(#*y&b^_SKDOv_wFs(IrHfALD)6+mlU&R&hO<q=Yg*_4p)>qhL
zm|$f^I^^>T4eVl%HjL*n>hT$!l9A24AI&^zdZrpu%+|&2Kym!-PLDUFum=(Lu;H&g
zGV?l*%)EzqWahUBq8?}HQHS692f_jzAzJE5hp#FF5CywKKVMIhMvzZBe0@j{4Dv~b
zuP^Ck!A_+6lYTP9Cmp`SN&CzYpLF<+By*&G(!r^>e$tUFM|LOd-voGqJhD4MJ)jHn
z$nFI7fG)@*yA#v{y5JhvKS4d93qB9~C#VN>K_1zipdQc#hXd9G^?)we6+__!c`8sF
z<dNM8>H%F!R}Azp#=0C;8j{kU1?UHKDb;8;3HkwDN;Yhs;KKo%ctDqOK6Ub&JSb~=
z3Xkkg&=2TRcw~2ien6M9h(+oLbSXTtJ3&97OW~2-3HkwD3Xkkg$TUBOwB;#0vO6K$
z`~l3Wltv2B59m^OWOssoK$pTMouD7krSQn^1pR<6g-3QL=m&HuXOqzn=u&uOcY=OE
zm%<~v6MC4xpq!_S)H$r()yZ<)c0w~N8RT)>3F}E3K_0iAuz}UJg1d-s>;c`a2=iOC
zqpbT=?bri4no>e}5}1T$U@ii&VSmT&2nxOe5Av50c_SD_xW5x=%LoqxW9E}F`KCge
zJQB&@3O)@lbLBUKNXN02-2B2wm%a0fL`p_CW^80alkXN}KFy9ncq4=F9hg(3$M`3O
z&cV5Y!luo^v4Wbyse(dfy#w9MsgFRC(T*=KnBADuZm(ffm_M_58jx$>p2c=!vAfWT
zWb?$rZd7u>8RQ^cxMtx{f^Y}G<w(W4GvjeH@W6toTroQe7B48Ew=jEO2oKI1hT!Bg
zK^y_13Pe653&w&w1zh0?Ah2y<(E~c`Ik0*$J1_j@%(NJ{gnkey@_lDTDc<1sCT9Q7
zZ21@2^6#L0MvDA{Zuyxy>mSK4q5cDPqHa<O${0QY5J?@1X6iZ&0ugDQP|Cw2NT)ud
z|D?PQjXJ>!RM=>jKr4)<ne1@dfIqXDZvwRcDuW4#_9_&UO$U(Vp9u#u3D<KL<6tJ?
zmVzstjFe-gn{0Y?Y3XF76b_h|V$&U)sqZ+R8jNGY_mQn5PY+S-gR^nh+NQOo_i?$A
zCR$7rc_FnJ_r9iRG56rBH_G1DNiRjk&QwW*-mmmMkw&#9B7@lr>2ctl-a4!pBW?`1
zJLJ!aLIb>ALsUAk9Te-3X%bF6c<58!m5BNpn&oW(ar9Xrwt)CMh{Ah8-~_itWg~P}
zo&oZzRvHg1%O=|*VccI;xVP!m#ng>%HyV!@S(!!9=K`HnS!oYJIfEFj(c#Vqep7M3
zZvU$!*op+9Ibc(X=^13lgDpK7rZ|(i3I55jgl6hXPlhElGo<w7UNPqA(vy3~m{C0C
z)tspWjN_TDHq%f#4+3<|38nKOKr@p{=RtsGrsl{#m$N8gGZZQ-nHvR(m(KuD4)ljr
zIrRb%LGLdyi#f)nm70bW<B3?)(MH*DSMKpDw`#VnGD99bqd_vCAeko_9j@1zm7&>F
zZqgxuU4CYBHTtf+g@{@<7lR*jUR1)dG9tgHQDkSvnq!MnbliQYNUZk=dTaGLY^dse
zS~^pF*;3gKcB-=XT#3Rc+$E}uov7#sS0Yz}Dm#JEu9#+TBFe>Duk=`-dm_r0)+_NJ
zqGH+X!i5_@Pq$v-9st*V2ZWeS%#?XHY=rgYwUm1in2vITxRTy=C)f(<^{-;DkI$~o
z>G%R&@oL5%Gau+(qBTL)<>$xHAxqYVH?g<NlBHoGi>}m39~Us?-F2gcP0>0#DtSA|
zUx;774pOAy-HtM(DZW60jdLG}Nb4NBZEjywmZfE}ZO(!ex?a=vMMhB<9l@KE1n!WA
zxd_Z?>2k)%c6CPCc&#QSY*i9)zc9*9*5UN2XKl&%o@<mnt|QnnB}v_|6wsn$+RTnA
zDjn0VnEP`#X?iXEvg~;+f?ZIlh>+dL%ls~-M=H_YrhCt2kJ3u<4%IrTIKJQF_@WEf
zF9TaRM(M)!%fM|UyWW(K_abmvk94y~<6TdJYw-%s?`khY`bJmIN61oKf$b*A?yj}S
zDtomsQC1640tT|igQ*a!hVvebthhoL)q0JE0RH}s{~opG=kWyIh68)l7~W$A){|53
zyLmhbRY>jiC7d>Mp5d_)5)kL(Yj6JLe2(GcYj6G)LVk=U<-cG8LLq}UbuJiQMOM85
z=le2(I=nfE**-;DtK)ef{nj@8l>vQ#d94ZUF$@b1{|t2SF=!baLDC5BCw&ZQ3z>G{
zzwb>{E;y2;H4%f;^56;6pk8n`=-^2dW(2=!hd+Po&(y)!Nl%hOf^%~~Phogca52MA
zVR$&0!SLy$KxYO|q4?8Cw+n7#_~~DR&Nf2j!Q(DRL5VAvaq-UxOnjZ%Es@ZtNG>HL
zMiQ&P5lLmCyOZJjnyNKYOJKxRR6uIrUy6^a<aRj#I&~4sGE#2<4rc1p`0Gji6@R^{
z?eNz~9e`LfwKt0Pq`m=hM(U}c0f9_YLi^cg$}}bP-2{fqG$rJkri5J6l#pwh5^_yb
zLau2_$Tdv~xuz*0HBAX~niA5}lrX0$Aw5kAbDDyA`sL7~A<StC&IS4b>P-rBniBGx
zzkrz@<}@W_nbdZ6nA4O{k}&haoTh|QOb!kfhB-|MrJKFLG=@1%31yf=!7K}Nni9%1
z;rYh$FsCV@Y%>gIRhZM1P>H;VxF*bLN=Q#r!kngr^fV>RX-Y^>Q^K64g!D8e%xOxf
z(riXK+rpftgu07v+rylugnF3mP|j0ET1T|;q;l(%WH?Bo@hB7uK7>Ds2JMO&DfCdZ
zFW7*R6OBs|Yz4V>vZBKn_7kD2Et%?snhBIlbwcY&s;N$B10hpWozP|?#&;3<je*~y
z?})>(>f&$=r799yW`|}NzOK+Vc_cl>Z`B|?J;QI+;=k_<I9Ey)ZyCOwsBB6PqV0Qx
z9@>*Nv3B!MYRv^m9K;*9MrvQ>WGB*b`;q2bf0GcM$uvn6wF!ji6TkvLd^Ma;sn(M)
zR5<P0mnrI^_L%lu&xA&BD|AR}X0S(TzQ@j=4AFlFlgW^*Jf!nmUy|QPemLX-1@Z=v
z%(@#D@LP!>GsEQll0J`oG5%P810PQRb~@-_BFazSugY&E{aq9gd4e}V-SqD}f%XMc
zNdL43^4S4(p&aJ5svsvn{kJDThi9YAbi))u;YY}rrbr4u0PWH}cw+&g!p9;@y4SoJ
za;@-Qmgke0YzUr9!4#I&MJlkH{43;t68>HCvUs@<8T}UD!phvw_<6z~ByYmUtY@L{
z%#4B_po3n}8AYmsCqhm}@jqEX<WE9$CevhnA@ccNLFPdG@mpi?Hz0r?E&LSn0{98S
z&mk{><E;v$Uq)U4UnKk$<OT3cgx^eFfNK{1Uh-1kJA~gsUh4a(@UN1W`tBBfFL|l&
zyTX4*Uh4am@E%ktkOVUGpz!JB4<nxh%J&&M=JY~Zz`7Z5_|l7Ln&1T5wIm-T!oH_v
z7VwRgP&obdvk{p1F0;KMWP2L%tqT~s9AKrteHC*h9f9Nw6emwLl9-(_+Ub*6ByBCc
z*RaNm=e<S?1aF}9cZY-2?es-E;TeWC3l<HVOTTAAKI1YQ?`1mm_QUxTKw3uoYoU~x
z?fD&v{8j?)_1VSvlf#rbkMR%F37c!=sh4CK;vI`r`RXNEP4XpK_H+g6CD{ff$Tc$A
zeP>cy-eKr4JaVJ-o{Kn@>=c!(@EE{oUdD9h4UCk-i7sPFMe7)~<{t<(lJ3D@UV=rj
z5ny!#%uvYhaJ=~<U@!RmX>;a)7Xd{8+gtb@LX`kgBH#iez_fW?%VE12)YMyup+x~7
zdiiFsS_ORQ<(okzjl4xLgr`Vqe-x6b+80SOsdAC3OWu7jif5Rl;{vWqH_Sn4n1j+V
zW+}K4_dw4uriBfb0;WQKgOZRgwb@D$b5A=Jywv7Sz>$#2Z|+rXNJ(vqi~!RXcWDp2
z-ZssVkXq8CvoMrYQi8UP2wJs7@O@iuMkQ;35B7}ji|Um$(H-6~nLamiF_{lUP-F|~
zJ(8ir0F*Er(pgf6T11?!nbMAYw7J*h-9kI$Bt(_11P2dG+J^tkDEbDC03+p3r-2lo
zWJb@9A_@Fe1R$vSV%*WoU!#UeqE*HM@Moyh6Oi&Z@=_ah+uykmyeO{H&p!t<K{|t(
zBFdj~E~Xw!*cwtrUWHUFEODPBu1oLsh)a`7W3Du-LJq}DmwR~rB8<FQUn+&eU55-5
zWxLUxH=i99W)kknW*3vgfXdYf@3a_WZU$Ce1up2_G)85@yDw~L59@4L7?z*e!+e5S
zk3!sXWUb^|t9O&&{#CDosQy%ExfQ1EDN8Lq<)u2rccaLR`B4$Im74T7d9I9zOTnW&
z5!VkyFN&)kqLXS-35$*SMg-C@0mK2$`8_e?>CqDt^x*G3`Qqc;*fh4=BglT8&b@~P
z{mq=rf}ThC<&fW<fmQzo7xYGlwW#tPI$OD_F|+a`FVS(Qt>b<Y)bXgL(DPqy^qd>h
zb8cHb?}+Is7&k0XfK=KA9&QfBNJ|Qw1MvdN1`;grdltA-XZef3EYJn^#8eQ9E7NY%
zGK%eDE6wxmVv8DevBOEQ*t0<3B}z~|7DhqBi{&q%9b@idK0<qYBVKE4oghBU6Wfa6
z*IQES7a&Gz{XY^c{+RPo>+^LMr`Csr`AP@o6CvU%og3~eKWymwHx_s%;?9M5Rl6-Z
z6`WV48f@OeRIJ@CNY%S_g7~$2rLCCusSv|<^DM+j?S3S|+6`NV+WqqXR=e|C)-Ls&
zsOXD6RDR|Na{vou?dC(g(Tx~n>QrGwnS;!=_}7OiLf#X!xQ*2nI?X>+`(+EmlA0Zl
zHs|y#z>HFR=^VJ(sj{b;57}jJX4#Uef9q6z%n$5TFEUlleBE<Afs$*zx=rl{<3)dl
zt^_;l)Y`oVk9o^e!Cc*_wHy0hYOTZPBiyIG{2PQ1*Wu`;YPx8&nZDMxDVf<i5t>;|
zcdha-2(Phg>92sUa#tvRv^`*)WtyD4MRv2(KTA65$VLz7IWjlw`x*pBWVLFk^wJSo
zu2Qs7s$y2SVia8(k@p!_DB1EZ;|h_D!u?hX3Jh@e(Qk7WO8U3ih=2mQ?fiQJg4Os$
zk#e*7H}9B5axZz43HqLj3`L^V`@G#3iBduur7HXbCtOIpLb!lc+&D_3a#ZXlcn<FQ
zhsmvcBg^>();vt^<{KXayKXsHxdm=y(S25cmHYT6CN8@GxAFm^<V_qB;5Cbxhs!5X
zH#2oR+?$UOy>B5q4{TT7-&thPyKeA61Y!Xw3Qyu$?*n;*zn%AYZ`0>z4mv7`;B%vr
zW;T+Tw_lr%MzH|F9WDeh1H=g=CWBZ?Vmyc^KvYlA*-~L{`!?pj-Jl~ycgj-WKnoYE
zG76FSO_YEPLGOF9UKj1>wHSkE?YHBm<tT4dH@UJ))~{o!|0F98C4qa**1B$G6(6`0
zICLjjcN^k9MrEqjg9v&X|2<ids6YHXr7pT{`OQF%BOgYZx~K6ccNGHb$F@qdhH3uA
zG<)!84AWHi)oD5_jDp^TsImtl2W7y+Ht7UmWHFyT7QR~98^NoQyRrhrYb5wWXUB`6
zGgH+?!Oa9W=)V>=7S#DCG5`J^nMj=u1AU43$^eLz)zIQ2ov62HF%B=8qLY&QoXF_C
zC<=A(*n={DJlmGh16f7JILa8N6WKBriHy0(R=-L|!Qte08zdY#3R)g{JpNQ~(9wrW
z>H0j9?I`Olrkl=mbD3_4wy{p<YkKocKYCVnUPkQ>U4;=4!lghu96F#{yZ#dq9t3&}
zUxIMEP7E*6;ZU}Ar&i|N5SqA?zUCDjJ`L$>-g7Y+z;H@2Ne7kdI-0jVMqBko)PmI@
zDnZ-`qI#)Lcoqaf88%i_g7*l#v|?D|*U!hCmtT-@%z+NqsNJi(jYedBSLue~rgllA
z_BrjtRNVm9#AY%6@`)D5c<kgq(P=J$h$2aYX6A@kt5KwgK}v*K)lx#awgQu!;Ywom
z64e(TrTw?&YMs#O?FVxhy-5dmwt;HC7gA&-{oU%egXqB=FumL+&!^185k;4a+m1p9
zUj(p?B~dA%ELKh~I=#wk5jB;0ZUTXks~+JSL)OA+%>PyCTvx_&eTrONFGg`cfe3oD
zb%xp#bjo!=@=`=euT!I2FD**k%xVE8KNgHJwk^S^Jw=P4J@2qZ#EemMo{qi|(L*oN
z3=Q{Y+qBzswAfx|VN_RUVaY~-br|NsAM;Z4Wu0<HtcJH`>l!`;0^5n`J3{S2osu=2
zg{Z$=LtBDT>t7m`Vpzk=Y!OZk6LmB#Q&XmyyO35*B&m;70dM(I$>BR;v#3rM!2p3j
zvw3YE?D{IA*2Auq?}Io<;y)mczXZfjAYLHh38A8wqI<4N1%)@yX4d6_n1-M}j0<_~
zO~p4>bpnrf%rzEOy@YMBZ<hPeJ9%^AMS~FTZTk7lZoE&vpjE3vZ-qJX(>W-UH_H1_
zfZQm*CcztJ&SfBYqdWpcbz);ws`7A!?h@9pOHjQ5#)`I5a3vOn3@4tiGVo?8RyiW(
zU@h-<-q2oCJkYKPMw0BU9?~V2O1aSX3v(f=Bi+?P>c;NsChGQ{PN}=Apm+NobqlmR
zEsr%yO4y_uzRV+SpxAZs7ErrWLqkWn1|^BsF-NG4>QXoedr3u0*ELSY2)YAvBhf(X
z88ypwz5{Te+AB1}CUT%{89(Z1Hjz@eOstKnj?1o>QQKalOJ$CggnZip$y+M3%kJrF
z2e~p_&^Cka1V(Ec88uUMdg&RD9*3UXTyNeAm}cvUp|)9?d*!2x%l9C~MoD3glD>$+
zLGR~wOKsNq*iv&4^_N?!Ey1X{L5q;4c#CG9g*?^tj$TJCcZ&|&b!`8bmb+1==tUyv
z-Dd0cl}oRC{$KR6B^WjP-Fp3`nb$=xt}Tt=<4`lvV=Rk`HYb@%DYKaeftSmOI?=;X
z^2_k%av4%5dL9Gc{c`X!rcU%s0RJ_48B`}p`oFJ1N6|$_)hQk|tll(J2F{cm^lq{H
zf=O_b2?#od1Lv?ujht7_lpf*YWl@O6$ca5d*z<M)nihM6;wH@bICPfYU?Mo_4VHqa
zesNipSqwdF#xV}A-auAsRL{_Wmo>)70GjUv)kc@AZ0r+qq0XQ53t^A6TDulT^+Z>G
z$@@oxZ*Qn|UZeKsWvcKGQTXMmaI||i84f-8t-h4z^kitio6vqc>O$GnYEIIOGhi6;
zFz&l%o@bJd8Ht9#pV@p-iEZ6HvDP*qr>vVN);;11+q!vT-TT3hlrQG<Jv}hD>AV*4
zvhbJhX@<nR$cy#!MIN`)*VZr8)^D6S>LjXD<YD2SQM>7R#lnOu&QAeTBBGWdD?bH{
z2)7Mf#qGEgm>oRuFk|dh;4f!mD)n&Pe%jS&I-HJefY6|KmF-n81Cg!8+N-)~uliiw
zXA)LKAqhXslguujp2ga$u7@nS&-{x7?=#8QXwT{iqI!tVXHUpz8~ZlX%CROoGqa`(
zqAbgxW6dr8Q^$fnoSNAcF{*EO<^L1MYMs~U#+%g#TJ0#S+t(8SP;#Rh&&u&ewTzYX
z>SFYbO6D+XSS^d2P-(i|0UM*A(IN*z7IgA1FgTM)z>MNbAN)0;>0Kd^$>p-}Wn*+d
zUCep^uQ_Y();X1X)9GZKM!U-(C&dU{271`f^s7OhtvdP1Cc#Hg^Vc2Vqtc@d5+A)8
z)mA<~NPPYs^3tOX5}&VG2VR!`>pWcgUrSzmyiW3e3ts#9k=n=Cs2+|b;mbeU7rB4N
z00c=7H(2|k9`n?$jEZ`jXq>^G?Gf07J>2MPL9mBgO@hAoBnggrz5r3ZQ0I&Fa_%ut
zD`#vFXXMDI_8py#&S*fTKk4NLD`&K8VpRX&%Ks<M*g7vZ8P=J3n>|w%?(XIEef~__
z&1xTWrN6mt`nbI!M>RWiJ}#P7r(LK3{wD^&(AZs|5+Gv}%qtvE#hMDls1>#mYja?j
zJIrD&=Bt=Hg*(9=xMLt<=^l~mz{^nM4!O;r559|>Eq|9Rn|YeXsYfY_ExKOc^NS$|
zTawz&@-iG@SsBLZMh3i~BWyN&m8!uj7y;Z-s%_@1=AZ|95`$E{dL<plo)~<mx$=D+
zH{Zjqd>6&?UFyo04+X@|Ey{b$mG2fiU-dn%d~Ne=cjbA~&STWSuW=nBtpMA3qre`V
zf7%h?<!3%^-U(VJpzDBL@74)g&q$5xGOZB(t*t`4L?Jc7G&K4ce9L&d_v1RNt(K@{
z2Lel5r6?>VDm_A#S|@0$QsAPfWW5nR)uB|9`#zk~QB0qwS36k)#!Br(=_2K?%$scw
zGin!W5nn-s2j16Kk$Z`a=rBea3|?Fvhfc(-GHQ}^4Wt{E9+(a+J#afCz(z6Ry>@66
z4W6)0xm=-z9yqsL`+NlmEFNgoYY)>YS*L4lh5kyNYzaoqKrQ0G5HWP7OWp^zycQmO
zB04sHawJVAcA8T4TAeYzd0d&eIsx;<a;kd~t0hQ;jR5O9pgocJ8{be1##V_2RH7#`
zr%eDVL2u@VlLegt6-+75{;@%*9k__&oKscG6?&aYUN%~57c|lsa6ZMIzFZKsCt(AA
zW#BB8bCaHN4tSB`&f+KvOTTttC-!f1RLU#uz+p@|R|T%I10QF~c`ExV9oVHGQ@$x3
zT+q8hhmPSZnaNxDF4Y*ml9_xP$+17Nj<qLA`Q>^O)Uh3?sl4SB^cL&DG2AXSvo~h@
z#@Jt3>U^b2qn1DReFpYpJl2C^nb2#P=TX0L_P6MX@-6zY_SU7I3CG%Bab;B>+n8j?
zE~f1=kLA9kyxL`q{|`j-YQN4LKe|1-U|h-fc*ge&AqlQ*uV;e&Lg~0L`h7pHMA`lH
z*tJN@E9c1Z_UG@}y*v~6$uO^RE#D>`Z+~LneziG%YZ1n)xUye0$J^heXMbdlvv;ga
zlpQO_Cjo9=xxaYEKMO5+<tBKKwZBNq?02lad1LZ-;|~ILUfD&SaeU{33&)8DsqyxH
zka_?0jBkcOUU|QJj<vsM%ZwgtZxfk+*?4<1%Dme=#<vjYGsZ)Reh0P~YXy7<c9U*A
zXTW&;jm7=y|N0KBe#O;(wY7fe7{j-834|teM``{EpaK?Vq=tV6{<M7AQ@upzsd*YP
z@)DiL^%9*&zeE?XZa{R1X%dql5-&e|0Xk{wX?PJLOcDjm#oy#t@W-y&l?=zvY(4^0
zsg(CXzK@PSwF=fvM@X0<Y42(vZU$1EP^a@*%;S0&B76vD4ob)Ex+<OH{H?KI9F6z2
zX{7z^%6xsi%ymxY7h7k}Tpfi1cpC~OzZoxcy_5O9R+%$;xiYs=`A8?@h1~~AA?ZBM
z5-J;McWIrsqSzjQL2}zQGcq67(T^b7$ZAA~VCK<+QC;BkB95q1?{+do&s&ASOpNl|
z$(lpna<E^L4bWJUeaCvVQu!vMfYK&yfTK^)B5Aa=vo!NGr1JYTQR~ZCwXxLaR0ZpV
zP7DrNMCH&CAFFC=WG}JhLR8uY&AbbyAFkG5d8|sH#ZPF(#NX=@jkMQY8JEP(SdNUi
zElIuxT{=|3NHtwO#mM<h%lIsA{w_3A6n%od#k03hZZTF(c==Z5ewc@2OK|zF%C)x(
zPFS65_lf@MT)Q6$)aTkgL7>t&F_}&N4s;Q^$=B&7AHEo6;r9yqK>p^TnEz{&m)G8X
z%Xxc{*WP{d+Pmvr_tl88I|RP#o*?hKW8+JN2N>yk!QDTc9w0Bc`$v#eFSz@UA<g$o
z@4$a~!QDTSq<X>Kf5J$(v%KK$cfH{5cfH{5cfH{5cfH{5mwUH*!QJnA!QJnA!QFrQ
z8z_n|xciSg2L;Is?*7Gl5hyRX`<F;4UvT&97u;E`i;y(=JP`T?cYh<bY}Mz<+v$P*
zMequFJ3a6n+k|>MJ@DTZAT9ZbHt;j)uzW-t_#f$P`G_{~3+ZC{h&FJ5bh&&)8#qY1
zN<N|u{7PDVL>u^xbW}c~4d9zgFzO@PfGNx<`G_{)5vD;tq7C@W2~bacL>us%CxTHQ
z(FXL}>GBb6K);<XAJJlWl4%gVP(Gp!=(p45Biev|J6%4a4P=@pLz?=CHjr)31*1Nq
z4d}Pi<s;faXLA{(t&@*v0~Nw-l8<NuU4+>pAJGQ73bR!{q777<O~|uNKB5iix6|b#
z+CUGJ+okJ|XaoAq@<1~yDQ}hs){|6kmIpSly6VmHz-HQpZ<d!K3=Rx)CehMVTP)2`
zno>e9vO_cQ{j5bU&GnioUrtX~ubFC+ubEQi40-2rz%C@nG_q)+EOeko8W)+pyU2U_
z=6eR8Cn!FHpILZ!F|*O`7Iw6QnZs;9m2_vjwa<XQ{F%+SpfArpfstL9a4)*xocUzC
zGRE7qXF>LQvhv+)myPI`q`$6Y{U?LXTLT3K=uV`PGVwEeJ@3OCo!s!_F{H`=JBTkx
zYyy$GiLaUH98Y5eSIC=du^urO%6goy5S?I;LbV-bAv^Lb?2g>XdjUdT(D~7=$<OSY
znE?5pBdR~-=f4MHGKhk=bwX~qhl22hlrBN5zPGjN(UlZL)mKmuRo_a2s{fl3y_ZA{
z{{FJ+&&5<P>ZMEj7~0&7a-{03?f9ZiI(i?X`Bt|?Kcb_dx5ug{Fx3Di=zYV^R=iVZ
zJAiCOJ+*q25rGNY%IFUnytRpxTVqlN=!||~T6B_TxLqDL%8Mf<rioc428yXuu*jA7
zkfrOKF%?u}c@V{wu(SN#YedG-_r}oK8nx87h&_I0^D!0{z+|W~hOX<m0jvx)#@q^a
z6xqehK6W)scQ;wt`*ti7r{I>;L5@usM|PI5DA*MCMX<T@{?K@~q;5CzJ7SbJ3WVBL
zcLEDP8*E4V|8rWmNf<<$6CcOaNgU`-#ES#HMS>1=5JW-3rBMitIS{7jwzp%QR<PV3
zGx<b5;($FK)g|P@9&bTDaP`f{MrlUTGp?BZDh6W>qbOaMQidEUP!>6)q;dE@sHnS+
ztVU#1Mf&D%UFxTgEv7nn&<FRB3=MpXq<EsvLGMs@A|Pe7(?FDJ1myO{-e{6eS&vZu
z%;wLLvS_9b9smKGRFP=)pG;PXiq6;3d~5abHqpgb>1YgMjDn4>wBlefF-9k9uvN!*
zP_m&xS`bxuRtKK~@kTj!{5PlW(P5@Xr8S!y&~B7hO{HfP-2_&=YU-_Emyi{&nntgB
zkF2=SDNKCW&1C6D!d?$n^{sOl`!U$gx6>o%lFjCui{=WF6K{bdQS+6TMZseKQ##Vz
zXQ=h!%T<tQU4i?6u{LCT;dxYc5i`>ZU(uPXkj7km6jF&7-j8_k!aXGDg<jO8;Afp$
zcVp5qsy^5D!v8v6sC>;RdRAwm8}i{}%nb`twVG_bbhSnJYx~kt@g?@W4dPd7A*_@W
z*fOY6oT;TA3#mm%YKHySSE`7hw?!X#hSLXH;|B^}l*|(4HK8IKMfS3ZiK0)?>-4f)
zbqQ2;h>C8juKSMU(z-Zb*HiViu1a6<2a;Twi%!?+S+`xbVlC=+kyE!?SKZhe<qO=R
ze`pcxm=hsJ{J({W7(8gV(wjISiHPDyv<Nokf)8Et+RBQlW6N@sQg4CF@J0;D_D|1L
zJwcAFn|0*C*J<TB;{0VCSUB*?$G_GVj;-Y5U+Xp@=QC&TWsuipKAM5qX$8ox_Nq`w
zR)xB99JC4z%KJE}ZuW{zVlPjnJq-%>tK<nAypsBKx0ih?`G|>E@``Tu8cxb;vzxum
zVQR#z><_`b!u`70Yc^@Wc)HnZHfago%6nk|UP(QT)jm$Jx??F!Pq5xbR<5b+(*Q5m
zJxuT7|N8_>Po;d;9Dt!GQY~i@3A+(vd1~&!KOXpD=#>-yiNModIq_K+B09h{77ryc
zQwM=;t*F`j6>JjRje4jA!_ihlvKea{(|ejmCGKLRaN7}?H0x~aUDo5<rYNF;?c6nr
z=qW7Dwt)^QnR&=k$T=beq~4&DbOC%}jsq8JuMcC9<(M!RS;F`@phuWvz&m4cIJtL|
zW>C&8T1dGr=cBgey!d}E=aE=BX<1rGA1F&~Md6cTN^#%uv}1IdK}b_)r*T(msIF84
zD>X3`{$2l;VyhgTcLegTjF)$W4G7jfV#NZOjME3Is;31s_6-p6WE>G5s{>_30V-a>
zpP;fq58UaEv@tsK$;iCd&isO1|Fi`<n(A@d)7oAhtBa%Gi*EfskI7i4W$>xn?6@+z
z{)r4KJ0HqEsU@8QN!&NJtu~dER4p}~u4`(feXg?+p!efugTvVXeP!#NKKF{KAj~tA
zjEvXl_DM59Vvh~Ic%5+{1Cv!?)DHC1+Y<*#$|@b0`6E*D@|I=U9gZ(zW`2PnUI}Ms
z+Gl!st26CI9Dik|eP&T0HFF!%@$!~r+C81WzMb8@8IPgk@foLJX<7G1v!Mrjqefki
zOHp<HhL@lnb_^hOx!(NLCtqlLjfIF!;1}A8#BN$CHtkE`7usF}<3j8s$}hAP9mX~Y
z0ZxVeR)8N+`{b;PfLiIf28mI`dPIBmR;p@S1swl#Is?^43YOYP0ehMyATXddQg{M+
z18O4$l0oZZ3R9aV1h_p=pz0@t_!fYC)7n25zMH^($gJ-kMzE2<eaNi;z7Nt$;67y5
z&!oc%+=tBiAL;A_?n7q%Lb^EN0frwSU7j!;7Pk(Pu1erOWY({wYZK@^)^DVvA%5U*
zVS8>cLqhz(-!g?66{?0tmPeR|5I^v@d?wGwm=xj%{+8do2h8*kzt*)ZliJP>@dJM=
zNtk&de&BDVn7a_OFvM>}taKCONTV^t5B#kRlfC$|5I^v@GR+4eZF%S{-i5NwXTYoq
zHBvx{`5Ka~3GoAetFuYNtqbu3f2%^6O(A~ZZ*>u7ONd|gSzU$M8sZ23R;76f@@xz7
z1AnW#=(at?5B#kj<_jq2DZ|5$^R26WKf}wit!7p-f%}kI>q+9vPTYa54Xmz}z<tQ9
z&8%%0#yl5cL5l`Vq+O|YQZEn;r70!!Jv%f5p&x-sX4;gX^*QL4JK!Z#aL}SPQp@4@
zo|hQl<vMTp7~zGKwUw8SVCapopXa4|kVcvZf74i6(CQC9y&5^p-0AQFyX|a7Fn?w<
zLo;LsnkzZBfR(vI?ynFqovh3ia=!rk3|X0h<}q>EZD5xGPE*(mz-FFem<5#iF_^3^
zx~WbFpdUi1b{JL9$6tBfKkFwQI}fpC$bwi5lXW-8L{_Aon&!7-SHCG1!+oaOp$}bx
zrT56%sMKUBgd9=;hJWpN2X@4$7xIJFmk^LXfEbk%<ti<4g~%mF3*Z(CqjFaJl-t1y
zM&-n4Ct1O$oEVk<9nJ$3IunKEU@~R3sS8E#1)FuWme0>lxu<~w#mHKw!wE-kl-Ra5
zJ=}2Ya>20(iKRB}?>{6QE&%{f;BdsKQ!>(dK7(09ZMSP#mFUIzGn@Z|=B9wCArOb7
z;VK|%2*i4_0z?ggI7oIVVXdV@9)BlsITNF+TIRhKY>rxp>&L?K=1(@v{^x_j#}rHQ
zE#&BPWfUyB6Es2d@bM_Spc29UyFhdRaTtkg5OYAZpQ=;y`&~fCMF;qh$tsJ_jluK~
z=x^7_i1PIi*%swGH_ArCK+yqMVS=SmE__xC;UYl$Z!{C%16|T=$Q_v)@&bZ1l>V|$
z%PNRLJ{UzP$cGZPzoV)O@}Y#h>TVnIp@jSaVJU4G6W_cQvGNhMu)cdRH{Aev=Fu$c
zWU}L!cmze&+>4o5##K?N?rlhwRiPPvT)z?B9UXNp{>pYzSr_S80?ADdS^#NeeXOI2
ziWgUlXldNX0cW!sP21OmWgBtE;uzY>o0G3r>coe3ykjUw#D}qFp_+HG+L(!*cCp%+
zNk}y}<4vT5JG=7=gw2RO5DE5+*wd@fiio|Nd*JKHBqZeJxuJtSQi<44t`e(DB8cJ@
znC>;UoX7zT`(8bOnb}nhV8Xgqr&J2oM!OD>_kZ1{>0Hbj{fh=clFwTLa&do>DGXgA
z<U55Rmr8=y@nFn<zJ&h8-JN{jG52c8axU(E{)<ndc%HfKzm#Nx<!j0VbBBa)!A;12
zH%Y(cg$vsc$`(PLz+uyvHB55gc_iO}I)S5_NG3q_z^K_IKgA#>Fa^$N_<kq^IsGY;
z{5&LZ=4T{17PI83Ti|I(2nP!<L{Zl1@WEj5OGtrDr;ssN@;1p<kEnuHXvh6X9{LXi
zhMuCTp%kPJ?fi~85&hh2jDDvWe|AfB7ReXv=$F4^^l*l~D$#dChtO+w^uN>KXrb>J
z_NGJ+0aT&4?CAHZ7(E#ngg%hyZiOKC*wG*H-RRI4%>9W(pF#3dJNk>6jGk12KVM4p
z^UVE~9lh^TMnA{`zmw=2sO9%|^iOv%I-j|Jmgsz@{GT0t@OefjGRtogJ(6YrF42h=
z*4n>De9|(i?lYMn>3F71FzpnUnTozR$-`_RmEvrsNQ|Wjn?0B!filuniosMTBbK7Q
z$z4U0#up+qN2U0IhRRhb0{xM7P3V!`NMuc5)_+bhp^CMfg>EMuPQD6%i<4>O@?_ew
zDw!s$O{Qg{$uz)_Wa2z3nQ%5F6SYan1ZR3OF_@jqnl4OcZ5orQ@hT(5KH+ZyN=xmA
zKVKj`{1}LU5jYD0Rf%#0l69aMqrINLBEqm<A>E6#WmN*~#NPDqur-e1eb@#vtr4hd
zVhz(|TkBA}#9GqD)*jM*Ntf%>LzDJD!{I3>1xf0;s>Mk`(tlL}oD?MeOj?~Dn)E-?
z>h#d0Ur4LdLz51WR;Pz19VD$z4^8@&v^qUB={M5RG)@YV43o@|G)@YVOkqZ)aZ-@v
z5vC!HlY%6l*&Sh%(l{wd@|(TEOi$yaAW1)0P2;2>Nk3Oj<D?)dMZWi5n8ry#l76n5
z#z{evey*CvNkLMk*&lM2r*Tq{lx+?Nvnq{~f}|38$#qQ{Ck08J%}=1{x-?D-k}8DR
zl*UOxQWs&iq;XP^)K!?RX`B=!Rhkpv9NW@3DM-@KRns^rNa|sZhMcF2bWSak%hh&T
zQ)q$=I)UH%m?V2Szx6H1Oi$Ri14d5gBqB+lHk#B-P~^1Hr1d1#X`@LS2#-2#G%5BR
z_BUkoTijPDm10><@i2z+^gRikY=>fpuRq(!E3lgdrq<lb!noR_H}bN$lICpWwG7c&
zOw(>5^vAAh?G7?SyAqV2vl1c<>+xdHxy>Z4k4YEx0v)y%72t0%+e5nbIO!5*%}}ax
zKPIWb??!vRJ5{!{Jwmei?v!j1mL^+-1!Rk`^lOhsoW(7|(yy0onk;S+mfp-@kCJzS
zEstA-al5W8hGeTP!cHYWgZyxKiQig4ei3=KMc9SpFCnkC2)l-SGyVi*i?EDuKL%}a
zi?EFS`5<u&3F+^+`Lf627GW9R-w4`gaf`5wpWcFF@)eF-DTjFjvPD?NZv!ycN#hn_
z8HOo>(zr!fhG~kVG;R@=;W0VQ_oZ=*Ft|_&nwgcxEy6N<62mRRzNKIa%T`;24FQ=o
zg1p)yj9U_AaodUPeaPsyILFH3CKlOhi?D^{7voPrwg}5CxD&L+Ey6O3R0X+3SY|O_
zC*&4ktC*f?veg!0+sHqLKYr^){LK)+cM1PKc>(-Q;lCj-fPXIhZ{!8=pM_5WZW#i&
z1<G&ndyotPE?anh{*fW|Ef@Z9@<Wg{t5*19$TyH5BK%3@r<3Q&l74F@`Gw@C3%`W?
zD)I}3zl{7g@~c3}7GW8Mv_L?%2+Js<X)JCLmQk_}B+_t;u#5#WkR}+;czr(tL);=P
z;|(FXMOemLCXfqpi?EEh(?A-jY?}-er%yFfnVm8EK9R~IX=~xVMnJX*%Xp0zu((B7
z#=Cr6rW^V&JK-5d4j&D8cCj1wo`v9CzAT~mT)r&f*~L!G$l*!j-p&)4>{=!ZCzF34
zT}SSfv8X&FXBzG~p2*S2<9(j#>d@>x5$02pBcG6*Q7oY%`D>=QSaSSoOZHqWr08<7
z2c2my&ztdFEV^W|)GTV8!`DQ714OHSNG1Dh`35ip$eD~n5xHE-@C~5EJfolnMJMc)
z_j$duk+6_8K>&poMoWa|xUsMZH9`0^&_>bM$YtiTOnZdAmf`qe1MVc;|I{)Eg`9sc
zShdXY7TDl@U}feiZ)P-+Rm&VwgZp8&Yz#xp0<t%NjdZ;_O2Nj)<M37=H0&TN8#vuW
zhu@Cyz9<vnLGRP^2TI}&T+`^#L9J<Y;F`uTJ>lsf)5{KO5?^|w7V-du98v&gl*s88
zqh^#vX|R`BLCm*mSyzY#gkmMIR8Uk9ieK-yp{O7f7d&7?QNfo~lK){t(S?bx0;{0t
zM&Shy0*c+bgzeDwcU5JsZb!n`M5RnZQI9g))}*H!ifM777^H>7hr%VmhQbk}q2O}2
zDev2k(y|;VnlOe?Q1oN%&OvpQSM(zk<~AFOeuUy8vNsXf{;Yf2LpBuR+t-4PoUTjQ
zjVgyA+xCjBE+|H-@K#<?=Z0c&TqyP)5(<|98wy8^hQd$fWyiaHTGn-9A%r&HgI21b
z7)B_5M0FGt!wAK=hixc^5sLfB&Z4y8Oq~7*SXl=gUW~SU7FgvZBM8*XU?bV<qEghG
z$KlIK6s3@1gII*vlXNUyWtNI<h0j<wK3BQ$SqxFK5?H!g3yJS4E&*5xlvd-2QA-6y
zDFvv}M7HrYT9(s+Jc_}q!e=6@Jmyib(t%7QK5vti4&*rEGvzU`(t#XDY5xJM06Br|
zoPVOqcjyv6LX~?%w(TnWbU2|nSB1BNVu~Azdt6W~5-1j939`erQIv!AAP8yO>|6qD
zS8>E>S9u0^9CJFgt<thKi$uE0Zx|jcD5evN7f~Gr#dJc^?Qt85>4f4EupQ-_-P0)T
zOUBA4yQi_+AGRG!ztXjy!Pri`=|y#cTQgDEnF~-@`7{LIhNR`kf%pJKX@gGmjjAC!
z9PLX+<Q5%81bOISTL8{-Blx@vLC2Y1)k5MU=n`N%lOsku(<KE^e?c(AF!pF!jx#Y-
zA-I4DW<6mexPS<*Co9ghkO+3%0rm+>Tgb$Bf>q9RF2(eI63%o`m+&j9ye!>urs#E1
zpo;zI5dMq`Z{<vlZYVx?LE$*lTrDI%6fOa_GdW_EGx;q}mWz7Qr7mQT(5NL|C(0qT
zxjSsF0J)HLY(k}!OI=7n_K_7pE+il$u_DxQ!Sq>%xr);60$Y3-g|DKR<efG?s~I~3
zY~&VQpmn@qYyoI3d!KJyD1EJBTcNbZjnbYI28!OiXFCp)dwo<w<D=vfU^|Q>Mmdb%
z;?hUa-`T5P{Rw0hYl&+`E>VhRAyfu2R}-agP&I|p)kJCj(_jUqtBKNYWTmBD!<M%4
z85@>sDLiEtU^z^ekO5d80(5pC)TqPhHovLxR)B1D1LB?N0OGjKeTM|ZCBSwYM~v=+
z`1OD(yPs{>vK)t*)Xs+DW<qf~s-vK|nNU1SR-m|<P?SFlR&H0fF!6<C<#u&TF_8Hb
ztZGnO=rBh<2V_3i1r`FCw}5&}hpB9iicN?Q_quM|!`$V@r@)1e<1oi*A@Lo?CBSwV
zM~v=aRuu!E`>FFJEz23%oY5Y26j!;QRelDQQuy3Yd`3PGR`9u>_`E?@@OglV|F+u(
z<UtDm3~XePE};T|e5|T0gS_o7C_1Cewop9ghN7<v3ddExJ0uh?0k*3+VzjI5Bot3l
zTVs8ce+|b~xci5K;z`!7?gbl)Cke%7vI51Egu;9g>~T3Dp85n*CXpS3!K?Wc8`0xn
zm8(3>vI<`UGUd9!K0wBYqFTDjOdU&C8LDDiHKpBdd`7$Qaa`p(EhN6HxCGd);)v0%
z62R=re3d$H(z1R5%^z0aa#2Tdl~;++CR9qf%B#fZcd~-dtHkG|m%)mwyvD>=lkLjB
z_caRt5o}&(ZlUt}i-`3$?OUSm?y?1AiL|*liUH)fS8%iERCcRYXCJy5bMNT@zWfpd
zuSR_N`5?A~D77|3sj4v$5WC?8a;PzEFjXfY%6CIXTQB_7jq=QRC|AtVLPnvK((5!6
zA99y8U(@GH{4$($q-xO3V$|s?0bNU54`uno0Z4fOPC);PIR1ocD$u_o=u2J&E1-Wx
z(EYE0m6^xauYtV`tn$KdDZJgkfWV`=go#jo1q`ZSG9uoMQ5Gm8fM->BEC2h^jm#x3
zWSsUnKnsZvhD(6mJ{>W-eNHMwr4MlZAgX0OE@}~qrTI1#2MEO+R7XK^fKa?bR-iaQ
zD5_ou`+foP9poD6bh3iXK|*l@ST)!@_zC6z8?RnoCyCj5JxzM7`5P7K$|aIfS{vS3
zO~d4~hVsV|{x{?-zaPYM61RbP2t?@|oqQTlCc=b>PeTb|lY!Np$iq4XJ+U7u*4h)j
zczEIl+&FQd0MT+V@w=815Ac=}d`)<RUfj=-q};FDJYpVFo271wN-56$;fexm86f@_
zl2w&&QN2o;&xB0EzTge;0(;0L?!S}2w-OQ)%`BjI;hWfeNe1r8QbOumsC=$2W**=P
zq5#_oC+Tp4!lz1YLCI(V%9glZc!ib{9~8F)+YKE#$_=~qK;bx1l&-R=4J0=MF9k`C
zKyn7Eq#(%=NWLd8kmLv?=e-U7v~G}?i=D*L+r48$k}oA(3_kL(E~XKX<f8x^65|GC
z5kfLWg|}#z-cY0kBs=0lQmv)Lhr}(xhQyJhA^8bTYL<(_Q7z5!l5IscB;^9hXQ+~b
zq+B4G^{x#`xj^z?@KvXthC>oNi<c~Y&xWLnln{6ykQ}Frxdf1OM*%h@n_Q5bt-@PD
z(xU|=@5Y7X)k8w!mS98T$kC8+_cyaf6yDPYlIM$UNNNO<lTjrFNsU1AC3*3Z8i8c)
z2Y}>kLQ*SUasa$)IQ^uA<$D0hFS?j@fMgH~upx<VjvD;YOE}tV+i;>SAo(#aBy%=L
zAtU~3fH&lpU_;`_(U4pPdzeRw!i}4w6lUBfe-YfA6tN*WN+9`Qj}6ID0?FYY+K?P2
zkgO*^j7@Q{$-D>2OG8rp@q58<WQmG@7`%dPsA%vV_{i4HQBmL~K(@TZhD<F2po5iu
z(TMnNRH+Eyvno|9pBmW$z^b_2aZfEJelv4Rum@m{9Mu`)C>aw=BOjrqWB+dUKT$2y
zfpKgHR9m{_V+F=}AAy%H`B;JRHS*$F#|n(qAA|pi{m*!ld7H>f7p?ex<iBQ#iXVwv
zqJptOG`J9aWVTjgD`0#Mwosne8pfw|D#92>QEmP3q!utX#D(#DEhRpTZV5JwjvO0C
z-g~;GVwKsPDwQy9QU-SVtQn=Kw!k=5U<`f=USOOmFgB4F7^e!1IiG=-5$!Zde*<_0
z)2UKI=g$FCzAolb!1R#<K&C&FbU1<OjDp(&b7l)*QjQxaUd!9PGrqb)ONkGRTY}v{
z9XYyzE@g9>Ckk)U(yo(|5ZruKM;nrPQpF2UB?ZYmf#hTI0?F9|N!=IVf1~G|E$KIt
zZ(s@Yg*X3WL$pvzoCH3yOBcHf5GA2Nw<j5ql$({E2-FxA+o~ZhZ2?p#7f{YbsGpV+
zA1Jp3+k+fAdQ@~@F{*Kas2$bPFawmI+3f3tii+=CAQjz<iYcHj5TFKr30{C&DL`!^
z{{ewnDH4AtFTkyo{AYay{<IRrUnub(f$t$eUMTSxk@k47Yb@H+WGT<PNK)s04Okay
zCI1Cj&ns&QEBd(voZWh*56_Y~{)AWgnyf2*M&xy!i*P@oa<ziHsRi7PaT{#%El~j`
zKHP2zHr$RJ4fp2+=Ngj(?y#1IF}nQB=CjHHkHCG6z_A_`R&ZY<a33TuaIX`%kN*a|
zEUT}R^lQOa$=dR@@+Qi6j6Z_|nrr2?j?v#@>opmqUN0JS<<rh$twtk<{Oiq6Ve<0*
z2;Yjt<)4E1l*BtA^7moLAJxhC0DrnPpB?a_1+ZriU_|cM2?%vpRH$tiu(<`)TjE0f
ziIx%{YPSSu#P3MbV86zy-z~ngPs?*Uf$KU090B`o0dEXyr@+2jz`lpPfW1|~4(|sq
zzPwe^&mu3rdynuhf>+*ppOo0`JAjdWYgBCeEzn9sfh{|MlXNVhnxJA^dF8_`pc)vr
z6IiXK#D~f)!S+f=js_}`O>(>V#2PK_VbL4G&0kiaq5{-*sp#FPm;!3M0G0ARcmZm=
z0CgsLnUX$Xa!z_Pd6|<wA;7#3UU}&g<`)UrY2XKR0x~N_Jkp~RP&hs*3N<4-vO{Zi
z060#9K5iU2edJ^_6567`CY-mZM6KX_wgsFo$Mw8nT1tF4-4Yznb0ld%`OS~{lDx1t
zO3N$pC`8TXsoemG0Q!;u`ZH>%0DVaSo$w=g0rX`7^dI1><Y@AjrCDeF1pds^W*X+p
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%0ARUb%2%dt=QQ!_*^lnr{;G_KK6?2ES+8
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%0A&mV>DbZ*B3jN(qUjrWE
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

literal 0
HcmV?d00001

diff --git a/testcases/kernel/syscalls/ipc/semctl/.gitignore b/testcases/kernel/syscalls/ipc/semctl/.gitignore
index b6899acf5da6..6189a04cc3c6 100644
--- a/testcases/kernel/syscalls/ipc/semctl/.gitignore
+++ b/testcases/kernel/syscalls/ipc/semctl/.gitignore
@@ -5,3 +5,4 @@
 /semctl05
 /semctl06
 /semctl07
+/semctl08
diff --git a/testcases/kernel/syscalls/ipc/semctl/Makefile b/testcases/kernel/syscalls/ipc/semctl/Makefile
index aa211d37f8ee..150f581825c5 100644
--- a/testcases/kernel/syscalls/ipc/semctl/Makefile
+++ b/testcases/kernel/syscalls/ipc/semctl/Makefile
@@ -5,7 +5,10 @@ top_srcdir              ?= ../../../../..
 
 include $(top_srcdir)/include/mk/testcases.mk
 
-LDLIBS  += -lltpipc
+semctl01 semctl02 semctl03 semctl04 semctl05 semctl06 semctl07: LDLIBS += -lltpipc
+semctl08: LDLIBS += -lltpnewipc
+
 LDFLAGS += -L$(top_builddir)/libs/libltpipc
+LDFLAGS += -L$(top_builddir)/libs/libltpnewipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/semctl/semctl08.c b/testcases/kernel/syscalls/ipc/semctl/semctl08.c
new file mode 100644
index 000000000000..90a88989f2d3
--- /dev/null
+++ b/testcases/kernel/syscalls/ipc/semctl/semctl08.c
@@ -0,0 +1,52 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2020 Viresh Kumar <viresh.kumar@linaro.org>
+ *
+ * Description:
+ * Cross verify the _high fields being set to 0 by the kernel.
+ */
+#include "lapi/semun.h"
+#include "tst_test.h"
+#include "libnewipc.h"
+#include "sembuf.h"
+
+#ifdef HAVE_SEMID64_DS_TIME_HIGH
+
+static void run(void)
+{
+	struct semid64_ds buf_ds = {
+		.sem_otime_high = 0x0A0A,
+		.sem_ctime_high = 0x0A0A,
+	};
+	int semid;
+	union semun arg;
+	key_t key;
+
+	/* get an IPC resource key */
+	key = GETIPCKEY();
+
+	semid = semget(key, 1, SEM_RA | IPC_CREAT);
+	if (semid == -1)
+		tst_brk(TBROK | TERRNO, "couldn't create semaphore");
+
+	arg.buf = (struct semid_ds *)&buf_ds;
+	TEST(semctl(semid, 0, IPC_STAT, arg));
+	if (TST_RET == -1)
+		tst_brk(TFAIL | TTERRNO, "semctl() failed");
+
+	if (buf_ds.sem_otime_high || buf_ds.sem_ctime_high)
+		tst_res(TFAIL, "time_high fields aren't cleared by the kernel");
+	else
+		tst_res(TPASS, "time_high fields cleared by the kernel");
+
+	if (semctl(semid, 0, IPC_RMID, arg) == -1)
+		tst_res(TINFO, "WARNING: semaphore deletion failed.");
+}
+
+static struct tst_test test = {
+	.test_all = run,
+	.needs_tmpdir = 1,
+};
+#else
+TST_TEST_TCONF("test requires struct semid64_ds to have the time_high fields");
+#endif
-- 
2.25.0.rc1.19.g042ed3e048af


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 4/5] syscalls: shmctl: Add new test to verify the _time_high fields
  2020-05-21 10:47 [LTP] [PATCH 0/5] syscalls: Add tests to verify the _time_high fields Viresh Kumar
                   ` (2 preceding siblings ...)
  2020-05-21 10:47 ` [LTP] [PATCH 3/5] syscalls: semctl: Add new test to verify the _time_high fields Viresh Kumar
@ 2020-05-21 10:47 ` Viresh Kumar
  2020-06-15 13:33   ` Cyril Hrubis
  2020-05-21 10:47 ` [LTP] [PATCH 5/5] syscalls: msgctl: " Viresh Kumar
  2020-05-21 13:08 ` [LTP] [PATCH 0/5] syscalls: Add tests " Arnd Bergmann
  5 siblings, 1 reply; 32+ messages in thread
From: Viresh Kumar @ 2020-05-21 10:47 UTC (permalink / raw)
  To: ltp

The _time_high fields must be reset by the kernel, add a test to verify
that.

Suggested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 configure.ac                                  |   1 +
 include/shmbuf.h                              | 273 ++++++++++++++++++
 runtest/syscalls                              |   1 +
 runtest/syscalls-ipc                          |   1 +
 .../kernel/syscalls/ipc/shmctl/.gitignore     |   1 +
 testcases/kernel/syscalls/ipc/shmctl/Makefile |   7 +-
 .../kernel/syscalls/ipc/shmctl/shmctl06.c     |  51 ++++
 7 files changed, 333 insertions(+), 2 deletions(-)
 create mode 100644 include/shmbuf.h
 create mode 100644 testcases/kernel/syscalls/ipc/shmctl/shmctl06.c

diff --git a/configure.ac b/configure.ac
index c513fdf440c2..f1ee98b23cbe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -152,6 +152,7 @@ AC_CHECK_TYPES([struct if_nextdqblk],,,[#include <linux/quota.h>])
 AC_CHECK_TYPES([struct iovec],,,[#include <sys/uio.h>])
 AC_CHECK_TYPES([struct ipc64_perm],,,[#include <sys/ipcbuf.h>])
 AC_CHECK_TYPES([struct semid64_ds],,,[#include <sys/sem.h>])
+AC_CHECK_TYPES([struct shmid64_ds],,,[#include <sys/shmbuf.h>])
 
 AC_CHECK_TYPES([struct mmsghdr],,,[
 #define _GNU_SOURCE
diff --git a/include/shmbuf.h b/include/shmbuf.h
new file mode 100644
index 000000000000..f8c1294c60d6
--- /dev/null
+++ b/include/shmbuf.h
@@ -0,0 +1,273 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2020 Linaro Limited. All rights reserved.
+ * Author: Viresh Kumar <viresh.kumar@linaro.org>
+ */
+
+#ifndef IPC_SHMBUF_H
+#define IPC_SHMBUF_H
+
+#include <linux/posix_types.h>
+#include <sys/sem.h>
+#include "tst_timer.h"
+#include "ipcbuf.h"
+
+#ifndef HAVE_SHMID64_DS
+
+#if defined(__mips__)
+#define HAVE_SHMID64_DS
+/*
+ * The shmid64_ds structure for the MIPS architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * As MIPS was lacking proper padding after shm_?time, we use 48 bits
+ * of the padding at the end to store a few additional bits of the time.
+ * libc implementations need to take care to convert this into a proper
+ * data structure when moving to 64-bit time_t.
+ */
+
+#if defined(__arch64__)
+struct shmid64_ds {
+	struct ipc64_perm	shm_perm;	/* operation perms */
+	size_t			shm_segsz;	/* size of segment (bytes) */
+	long			shm_atime;	/* last attach time */
+	long			shm_dtime;	/* last detach time */
+	long			shm_ctime;	/* last change time */
+	__kernel_pid_t		shm_cpid;	/* pid of creator */
+	__kernel_pid_t		shm_lpid;	/* pid of last operator */
+	unsigned long		shm_nattch;	/* no. of current attaches */
+	unsigned long		__unused1;
+	unsigned long		__unused2;
+};
+#else
+#define HAVE_SHMID64_DS_TIME_HIGH
+struct shmid64_ds {
+	struct ipc64_perm	shm_perm;	/* operation perms */
+	size_t			shm_segsz;	/* size of segment (bytes) */
+	unsigned long		shm_atime;	/* last attach time */
+	unsigned long		shm_dtime;	/* last detach time */
+	unsigned long		shm_ctime;	/* last change time */
+	__kernel_pid_t		shm_cpid;	/* pid of creator */
+	__kernel_pid_t		shm_lpid;	/* pid of last operator */
+	unsigned long		shm_nattch;	/* no. of current attaches */
+	unsigned short		shm_atime_high;
+	unsigned short		shm_dtime_high;
+	unsigned short		shm_ctime_high;
+	unsigned short		__unused1;
+};
+#endif
+
+#endif /* __mips__ */
+
+#if defined(__hppa__)
+#define HAVE_SHMID64_DS
+/*
+ * The shmid64_ds structure for parisc architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct shmid64_ds {
+	struct ipc64_perm	shm_perm;	/* operation perms */
+#if __BITS_PER_LONG == 64
+	long			shm_atime;	/* last attach time */
+	long			shm_dtime;	/* last detach time */
+	long			shm_ctime;	/* last change time */
+#else
+#define HAVE_SHMID64_DS_TIME_HIGH
+	unsigned long		shm_atime_high;
+	unsigned long		shm_atime;	/* last attach time */
+	unsigned long		shm_dtime_high;
+	unsigned long		shm_dtime;	/* last detach time */
+	unsigned long		shm_ctime_high;
+	unsigned long		shm_ctime;	/* last change time */
+	unsigned int		__pad4;
+#endif
+	__kernel_size_t		shm_segsz;	/* size of segment (bytes) */
+	__kernel_pid_t		shm_cpid;	/* pid of creator */
+	__kernel_pid_t		shm_lpid;	/* pid of last operator */
+	unsigned long		shm_nattch;	/* no. of current attaches */
+	unsigned long		__unused1;
+	unsigned long		__unused2;
+};
+#endif /* __hppa__ */
+
+#if defined(__powerpc__) || defined(__powerpc64__)
+#define HAVE_SHMID64_DS
+/*
+ * The shmid64_ds structure for PPC architecture.
+ *
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct shmid64_ds {
+	struct ipc64_perm	shm_perm;	/* operation perms */
+#ifdef __powerpc64__
+	long		shm_atime;	/* last attach time */
+	long		shm_dtime;	/* last detach time */
+	long		shm_ctime;	/* last change time */
+#else
+#define HAVE_SHMID64_DS_TIME_HIGH
+	unsigned long		shm_atime_high;
+	unsigned long		shm_atime;	/* last attach time */
+	unsigned long		shm_dtime_high;
+	unsigned long		shm_dtime;	/* last detach time */
+	unsigned long		shm_ctime_high;
+	unsigned long		shm_ctime;	/* last change time */
+	unsigned long		__unused4;
+#endif
+	size_t			shm_segsz;	/* size of segment (bytes) */
+	__kernel_pid_t		shm_cpid;	/* pid of creator */
+	__kernel_pid_t		shm_lpid;	/* pid of last operator */
+	unsigned long		shm_nattch;	/* no. of current attaches */
+	unsigned long		__unused5;
+	unsigned long		__unused6;
+};
+
+#endif /* defined(__powerpc__) || defined(__powerpc64__) */
+
+#if defined(__sparc__)
+#define HAVE_SHMID64_DS
+/*
+ * The shmid64_ds structure for sparc architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct shmid64_ds {
+	struct ipc64_perm	shm_perm;	/* operation perms */
+#if defined(__arch64__)
+	long			shm_atime;	/* last attach time */
+	long			shm_dtime;	/* last detach time */
+	long			shm_ctime;	/* last change time */
+#else
+#define HAVE_SHMID64_DS_TIME_HIGH
+	unsigned long		shm_atime_high;
+	unsigned long		shm_atime;	/* last attach time */
+	unsigned long		shm_dtime_high;
+	unsigned long		shm_dtime;	/* last detach time */
+	unsigned long		shm_ctime_high;
+	unsigned long		shm_ctime;	/* last change time */
+#endif
+	size_t			shm_segsz;	/* size of segment (bytes) */
+	__kernel_pid_t		shm_cpid;	/* pid of creator */
+	__kernel_pid_t		shm_lpid;	/* pid of last operator */
+	unsigned long		shm_nattch;	/* no. of current attaches */
+	unsigned long		__unused1;
+	unsigned long		__unused2;
+};
+
+#endif /* __sparc__ */
+
+#if defined(__x86_64__) && defined(__ILP32__)
+#define HAVE_SHMID64_DS
+/*
+ * The shmid64_ds structure for x86 architecture with x32 ABI.
+ *
+ * On x86-32 and x86-64 we can just use the generic definition, but
+ * x32 uses the same binary layout as x86_64, which is differnet
+ * from other 32-bit architectures.
+ */
+
+struct shmid64_ds {
+	struct ipc64_perm	shm_perm;	/* operation perms */
+	size_t			shm_segsz;	/* size of segment (bytes) */
+	__kernel_long_t		shm_atime;	/* last attach time */
+	__kernel_long_t		shm_dtime;	/* last detach time */
+	__kernel_long_t		shm_ctime;	/* last change time */
+	__kernel_pid_t		shm_cpid;	/* pid of creator */
+	__kernel_pid_t		shm_lpid;	/* pid of last operator */
+	__kernel_ulong_t	shm_nattch;	/* no. of current attaches */
+	__kernel_ulong_t	__unused4;
+	__kernel_ulong_t	__unused5;
+};
+#endif /* defined(__x86_64__) && defined(__ILP32__) */
+
+#if defined(__xtensa__)
+#define HAVE_SHMID64_DS
+#define HAVE_SHMID64_DS_TIME_HIGH
+/*
+ * The shmid64_ds structure for Xtensa architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space, but the padding is on the wrong
+ * side for big-endian xtensa, for historic reasons.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct shmid64_ds {
+	struct ipc64_perm	shm_perm;	/* operation perms */
+	size_t			shm_segsz;	/* size of segment (bytes) */
+	unsigned long		shm_atime;	/* last attach time */
+	unsigned long		shm_atime_high;
+	unsigned long		shm_dtime;	/* last detach time */
+	unsigned long		shm_dtime_high;
+	unsigned long		shm_ctime;	/* last change time */
+	unsigned long		shm_ctime_high;
+	__kernel_pid_t		shm_cpid;	/* pid of creator */
+	__kernel_pid_t		shm_lpid;	/* pid of last operator */
+	unsigned long		shm_nattch;	/* no. of current attaches */
+	unsigned long		__unused4;
+	unsigned long		__unused5;
+};
+
+#endif /* __xtensa__ */
+
+#ifndef HAVE_SHMID64_DS
+/*
+ * The shmid64_ds structure for most architectures (though it came
+ * from x86_32 originally). Note extra padding because this structure
+ * is passed back and forth between kernel and user space.
+ *
+ * shmid64_ds was originally meant to be architecture specific, but
+ * everyone just ended up making identical copies without specific
+ * optimizations, so we may just as well all use the same one.
+ *
+ * 64 bit architectures use a 64-bit long time field here, while
+ * 32 bit architectures have a pair of unsigned long values.
+ * On big-endian systems, the lower half is in the wrong place.
+ *
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct shmid64_ds {
+	struct ipc64_perm	shm_perm;	/* operation perms */
+	size_t			shm_segsz;	/* size of segment (bytes) */
+#if __BITS_PER_LONG == 64
+	long			shm_atime;	/* last attach time */
+	long			shm_dtime;	/* last detach time */
+	long			shm_ctime;	/* last change time */
+#else
+#define HAVE_SHMID64_DS_TIME_HIGH
+	unsigned long		shm_atime;	/* last attach time */
+	unsigned long		shm_atime_high;
+	unsigned long		shm_dtime;	/* last detach time */
+	unsigned long		shm_dtime_high;
+	unsigned long		shm_ctime;	/* last change time */
+	unsigned long		shm_ctime_high;
+#endif
+	__kernel_pid_t		shm_cpid;	/* pid of creator */
+	__kernel_pid_t		shm_lpid;	/* pid of last operator */
+	unsigned long		shm_nattch;	/* no. of current attaches */
+	unsigned long		__unused4;
+	unsigned long		__unused5;
+};
+#endif /* shmid64_ds */
+
+#endif /* HAVE_SHMID64_DS */
+
+#endif /* IPC_SHMBUF_H */
diff --git a/runtest/syscalls b/runtest/syscalls
index db14ba4baf9e..297b225448b8 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -1352,6 +1352,7 @@ shmctl02 shmctl02
 shmctl03 shmctl03
 shmctl04 shmctl04
 shmctl05 shmctl05
+shmctl06 shmctl06
 
 shmdt01 shmdt01
 shmdt02 shmdt02
diff --git a/runtest/syscalls-ipc b/runtest/syscalls-ipc
index f912cb067f74..5ba3b1449a6c 100644
--- a/runtest/syscalls-ipc
+++ b/runtest/syscalls-ipc
@@ -55,6 +55,7 @@ shmctl02 shmctl02
 shmctl03 shmctl03
 shmctl04 shmctl04
 shmctl05 shmctl05
+shmctl06 shmctl06
 
 shmdt01 shmdt01
 shmdt02 shmdt02
diff --git a/testcases/kernel/syscalls/ipc/shmctl/.gitignore b/testcases/kernel/syscalls/ipc/shmctl/.gitignore
index d6777e3b8f1b..46b107344cf4 100644
--- a/testcases/kernel/syscalls/ipc/shmctl/.gitignore
+++ b/testcases/kernel/syscalls/ipc/shmctl/.gitignore
@@ -3,3 +3,4 @@
 /shmctl03
 /shmctl04
 /shmctl05
+/shmctl06
diff --git a/testcases/kernel/syscalls/ipc/shmctl/Makefile b/testcases/kernel/syscalls/ipc/shmctl/Makefile
index dda6d636f755..44e38d8fa760 100644
--- a/testcases/kernel/syscalls/ipc/shmctl/Makefile
+++ b/testcases/kernel/syscalls/ipc/shmctl/Makefile
@@ -3,12 +3,15 @@
 
 top_srcdir              ?= ../../../../..
 
+include $(top_srcdir)/include/mk/testcases.mk
+
 shmctl05: CFLAGS += -pthread
 shmctl05: LDLIBS += -lrt
 
-include $(top_srcdir)/include/mk/testcases.mk
+shmctl01 shmctl02 shmctl03 shmctl04 shmctl05: LDLIBS += -lltpipc
+shmctl06: LDLIBS += -lltpnewipc
 
-LDLIBS  += -lltpipc
 LDFLAGS += -L$(top_builddir)/libs/libltpipc
+LDFLAGS += -L$(top_builddir)/libs/libltpnewipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/shmctl/shmctl06.c b/testcases/kernel/syscalls/ipc/shmctl/shmctl06.c
new file mode 100644
index 000000000000..342c5ee3504c
--- /dev/null
+++ b/testcases/kernel/syscalls/ipc/shmctl/shmctl06.c
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2020 Viresh Kumar <viresh.kumar@linaro.org>
+ *
+ * Description:
+ * Cross verify the _high fields being set to 0 by the kernel.
+ */
+#include <sys/shm.h>
+#include "libnewipc.h"
+#include "shmbuf.h"
+#include "tst_test.h"
+#include "tst_safe_sysv_ipc.h"
+
+#ifdef HAVE_SHMID64_DS_TIME_HIGH
+
+static void run(void)
+{
+	struct shmid64_ds buf_ds = {
+		.shm_atime_high = 0x0A0A,
+		.shm_dtime_high = 0x0A0A,
+		.shm_ctime_high = 0x0A0A,
+	};
+	int shmid;
+	key_t key;
+
+	/* get an IPC resource key */
+	key = GETIPCKEY();
+
+	shmid = shmget(key, SHM_SIZE, IPC_CREAT | IPC_EXCL | SHM_RW);
+	if (shmid == -1)
+		tst_brk(TBROK | TERRNO, "couldn't create shared memory segment");
+
+	TEST(shmctl(shmid, IPC_STAT, (struct shmid_ds *)&buf_ds));
+	if (TST_RET == -1)
+		tst_brk(TFAIL | TTERRNO, "shmctl() failed");
+
+	if (buf_ds.shm_atime_high || buf_ds.shm_dtime_high || buf_ds.shm_ctime_high)
+		tst_res(TFAIL, "time_high fields aren't cleared by the kernel");
+	else
+		tst_res(TPASS, "time_high fields cleared by the kernel");
+
+	SAFE_SHMCTL(shmid, IPC_RMID, NULL);
+}
+
+static struct tst_test test = {
+	.test_all = run,
+	.needs_tmpdir = 1,
+};
+#else
+TST_TEST_TCONF("test requires struct shmid64_ds to have the time_high fields");
+#endif
-- 
2.25.0.rc1.19.g042ed3e048af


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 5/5] syscalls: msgctl: Add new test to verify the _time_high fields
  2020-05-21 10:47 [LTP] [PATCH 0/5] syscalls: Add tests to verify the _time_high fields Viresh Kumar
                   ` (3 preceding siblings ...)
  2020-05-21 10:47 ` [LTP] [PATCH 4/5] syscalls: shmctl: " Viresh Kumar
@ 2020-05-21 10:47 ` Viresh Kumar
  2020-06-15 13:38   ` Cyril Hrubis
  2020-05-21 13:08 ` [LTP] [PATCH 0/5] syscalls: Add tests " Arnd Bergmann
  5 siblings, 1 reply; 32+ messages in thread
From: Viresh Kumar @ 2020-05-21 10:47 UTC (permalink / raw)
  To: ltp

The _time_high fields must be reset by the kernel, add a test to verify
that.

Suggested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 configure.ac                                  |   1 +
 include/msgbuf.h                              | 306 ++++++++++++++++++
 runtest/syscalls                              |   1 +
 runtest/syscalls-ipc                          |   1 +
 .../kernel/syscalls/ipc/msgctl/.gitignore     |   1 +
 .../kernel/syscalls/ipc/msgctl/msgctl05.c     |  48 +++
 6 files changed, 358 insertions(+)
 create mode 100644 include/msgbuf.h
 create mode 100644 testcases/kernel/syscalls/ipc/msgctl/msgctl05.c

diff --git a/configure.ac b/configure.ac
index f1ee98b23cbe..05032d1cfd8f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -153,6 +153,7 @@ AC_CHECK_TYPES([struct iovec],,,[#include <sys/uio.h>])
 AC_CHECK_TYPES([struct ipc64_perm],,,[#include <sys/ipcbuf.h>])
 AC_CHECK_TYPES([struct semid64_ds],,,[#include <sys/sem.h>])
 AC_CHECK_TYPES([struct shmid64_ds],,,[#include <sys/shmbuf.h>])
+AC_CHECK_TYPES([struct msqid64_ds],,,[#include <sys/msgbuf.h>])
 
 AC_CHECK_TYPES([struct mmsghdr],,,[
 #define _GNU_SOURCE
diff --git a/include/msgbuf.h b/include/msgbuf.h
new file mode 100644
index 000000000000..779362c4f07a
--- /dev/null
+++ b/include/msgbuf.h
@@ -0,0 +1,306 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2020 Linaro Limited. All rights reserved.
+ * Author: Viresh Kumar <viresh.kumar@linaro.org>
+ */
+
+#ifndef IPC_MSGBUF_H
+#define IPC_MSGBUF_H
+
+#include <linux/posix_types.h>
+#include <sys/sem.h>
+#include "tst_timer.h"
+#include "ipcbuf.h"
+
+#ifndef HAVE_MSQID64_DS
+
+#if defined(__mips__)
+#define HAVE_MSQID64_DS
+
+#if defined(__arch64__)
+/*
+ * The msqid64_ds structure for the MIPS architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous unsigned long values
+ */
+
+struct msqid64_ds {
+	struct ipc64_perm msg_perm;
+	long msg_stime;			/* last msgsnd time */
+	long msg_rtime;			/* last msgrcv time */
+	long msg_ctime;			/* last change time */
+	unsigned long  msg_cbytes;	/* current number of bytes on queue */
+	unsigned long  msg_qnum;	/* number of messages in queue */
+	unsigned long  msg_qbytes;	/* max number of bytes on queue */
+	__kernel_pid_t msg_lspid;	/* pid of last msgsnd */
+	__kernel_pid_t msg_lrpid;	/* last receive pid */
+	unsigned long  __unused4;
+	unsigned long  __unused5;
+};
+#elif defined (__MIPSEB__)
+#define HAVE_MSQID64_DS_TIME_HIGH
+struct msqid64_ds {
+	struct ipc64_perm msg_perm;
+	unsigned long  msg_stime_high;
+	unsigned long  msg_stime;	/* last msgsnd time */
+	unsigned long  msg_rtime_high;
+	unsigned long  msg_rtime;	/* last msgrcv time */
+	unsigned long  msg_ctime_high;
+	unsigned long  msg_ctime;	/* last change time */
+	unsigned long  msg_cbytes;	/* current number of bytes on queue */
+	unsigned long  msg_qnum;	/* number of messages in queue */
+	unsigned long  msg_qbytes;	/* max number of bytes on queue */
+	__kernel_pid_t msg_lspid;	/* pid of last msgsnd */
+	__kernel_pid_t msg_lrpid;	/* last receive pid */
+	unsigned long  __unused4;
+	unsigned long  __unused5;
+};
+#elif defined (__MIPSEL__)
+#define HAVE_MSQID64_DS_TIME_HIGH
+struct msqid64_ds {
+	struct ipc64_perm msg_perm;
+	unsigned long  msg_stime;	/* last msgsnd time */
+	unsigned long  msg_stime_high;
+	unsigned long  msg_rtime;	/* last msgrcv time */
+	unsigned long  msg_rtime_high;
+	unsigned long  msg_ctime;	/* last change time */
+	unsigned long  msg_ctime_high;
+	unsigned long  msg_cbytes;	/* current number of bytes on queue */
+	unsigned long  msg_qnum;	/* number of messages in queue */
+	unsigned long  msg_qbytes;	/* max number of bytes on queue */
+	__kernel_pid_t msg_lspid;	/* pid of last msgsnd */
+	__kernel_pid_t msg_lrpid;	/* last receive pid */
+	unsigned long  __unused4;
+	unsigned long  __unused5;
+};
+#endif
+
+#endif /* __mips__ */
+
+#if defined(__hppa__)
+#define HAVE_MSQID64_DS
+/* 
+ * The msqid64_ds structure for parisc architecture, copied from sparc.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct msqid64_ds {
+	struct ipc64_perm msg_perm;
+#if __BITS_PER_LONG == 64
+	long		 msg_stime;	/* last msgsnd time */
+	long		 msg_rtime;	/* last msgrcv time */
+	long		 msg_ctime;	/* last change time */
+#else
+#define HAVE_MSQID64_DS_TIME_HIGH
+	unsigned long	msg_stime_high;
+	unsigned long	msg_stime;	/* last msgsnd time */
+	unsigned long	msg_rtime_high;
+	unsigned long	msg_rtime;	/* last msgrcv time */
+	unsigned long	msg_ctime_high;
+	unsigned long	msg_ctime;	/* last change time */
+#endif
+	unsigned long	msg_cbytes;	/* current number of bytes on queue */
+	unsigned long	msg_qnum;	/* number of messages in queue */
+	unsigned long	msg_qbytes;	/* max number of bytes on queue */
+	__kernel_pid_t	msg_lspid;	/* pid of last msgsnd */
+	__kernel_pid_t	msg_lrpid;	/* last receive pid */
+	unsigned long	__unused1;
+	unsigned long	__unused2;
+};
+
+#endif /* __hppa__ */
+
+#if defined(__powerpc__) || defined(__powerpc64__)
+#define HAVE_MSQID64_DS
+/*
+ * The msqid64_ds structure for the PowerPC architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ */
+
+struct msqid64_ds {
+	struct ipc64_perm msg_perm;
+#ifdef __powerpc64__
+	long		 msg_stime;	/* last msgsnd time */
+	long		 msg_rtime;	/* last msgrcv time */
+	long		 msg_ctime;	/* last change time */
+#else
+#define HAVE_MSQID64_DS_TIME_HIGH
+	unsigned long  msg_stime_high;
+	unsigned long  msg_stime;	/* last msgsnd time */
+	unsigned long  msg_rtime_high;
+	unsigned long  msg_rtime;	/* last msgrcv time */
+	unsigned long  msg_ctime_high;
+	unsigned long  msg_ctime;	/* last change time */
+#endif
+	unsigned long  msg_cbytes;	/* current number of bytes on queue */
+	unsigned long  msg_qnum;	/* number of messages in queue */
+	unsigned long  msg_qbytes;	/* max number of bytes on queue */
+	__kernel_pid_t msg_lspid;	/* pid of last msgsnd */
+	__kernel_pid_t msg_lrpid;	/* last receive pid */
+	unsigned long  __unused4;
+	unsigned long  __unused5;
+};
+
+#endif /* defined(__powerpc__) || defined(__powerpc64__) */
+
+#if defined(__sparc__)
+#define HAVE_MSQID64_DS
+/*
+ * The msqid64_ds structure for sparc64 architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32-bit values
+ */
+struct msqid64_ds {
+	struct ipc64_perm msg_perm;
+#if defined(__arch64__)
+	long msg_stime;			/* last msgsnd time */
+	long msg_rtime;			/* last msgrcv time */
+	long msg_ctime;			/* last change time */
+#else
+#define HAVE_MSQID64_DS_TIME_HIGH
+	unsigned long msg_stime_high;
+	unsigned long msg_stime;	/* last msgsnd time */
+	unsigned long msg_rtime_high;
+	unsigned long msg_rtime;	/* last msgrcv time */
+	unsigned long msg_ctime_high;
+	unsigned long msg_ctime;	/* last change time */
+#endif
+	unsigned long  msg_cbytes;	/* current number of bytes on queue */
+	unsigned long  msg_qnum;	/* number of messages in queue */
+	unsigned long  msg_qbytes;	/* max number of bytes on queue */
+	__kernel_pid_t msg_lspid;	/* pid of last msgsnd */
+	__kernel_pid_t msg_lrpid;	/* last receive pid */
+	unsigned long  __unused1;
+	unsigned long  __unused2;
+};
+
+#endif /* __sparc__ */
+
+#if defined(__x86_64__) && defined(__ILP32__)
+#define HAVE_MSQID64_DS
+/*
+ * The msqid64_ds structure for x86 architecture with x32 ABI.
+ *
+ * On x86-32 and x86-64 we can just use the generic definition, but
+ * x32 uses the same binary layout as x86_64, which is differnet
+ * from other 32-bit architectures.
+ */
+
+struct msqid64_ds {
+	struct ipc64_perm msg_perm;
+	__kernel_long_t msg_stime;	/* last msgsnd time */
+	__kernel_long_t msg_rtime;	/* last msgrcv time */
+	__kernel_long_t msg_ctime;	/* last change time */
+	__kernel_ulong_t msg_cbytes;	/* current number of bytes on queue */
+	__kernel_ulong_t msg_qnum;	/* number of messages in queue */
+	__kernel_ulong_t msg_qbytes;	/* max number of bytes on queue */
+	__kernel_pid_t msg_lspid;	/* pid of last msgsnd */
+	__kernel_pid_t msg_lrpid;	/* last receive pid */
+	__kernel_ulong_t __unused4;
+	__kernel_ulong_t __unused5;
+};
+
+#endif /* defined(__x86_64__) && defined(__ILP32__) */
+
+#if defined(__xtensa__)
+#define HAVE_MSQID64_DS
+/*
+ * The msqid64_ds structure for the Xtensa architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct msqid64_ds {
+	struct ipc64_perm msg_perm;
+#ifdef __XTENSA_EB__
+#define HAVE_MSQID64_DS_TIME_HIGH
+	unsigned long  msg_stime_high;
+	unsigned long  msg_stime;	/* last msgsnd time */
+	unsigned long  msg_rtime_high;
+	unsigned long  msg_rtime;	/* last msgrcv time */
+	unsigned long  msg_ctime_high;
+	unsigned long  msg_ctime;	/* last change time */
+#elif defined(__XTENSA_EL__)
+#define HAVE_MSQID64_DS_TIME_HIGH
+	unsigned long  msg_stime;	/* last msgsnd time */
+	unsigned long  msg_stime_high;
+	unsigned long  msg_rtime;	/* last msgrcv time */
+	unsigned long  msg_rtime_high;
+	unsigned long  msg_ctime;	/* last change time */
+	unsigned long  msg_ctime_high;
+#else
+# error processor byte order undefined!
+#endif
+	unsigned long  msg_cbytes;	/* current number of bytes on queue */
+	unsigned long  msg_qnum;	/* number of messages in queue */
+	unsigned long  msg_qbytes;	/* max number of bytes on queue */
+	__kernel_pid_t msg_lspid;	/* pid of last msgsnd */
+	__kernel_pid_t msg_lrpid;	/* last receive pid */
+	unsigned long  __unused4;
+	unsigned long  __unused5;
+};
+
+#endif /* __xtensa__ */
+
+#ifndef HAVE_MSQID64_DS
+/*
+ * generic msqid64_ds structure.
+ *
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * msqid64_ds was originally meant to be architecture specific, but
+ * everyone just ended up making identical copies without specific
+ * optimizations, so we may just as well all use the same one.
+ *
+ * 64 bit architectures use a 64-bit long time field here, while
+ * 32 bit architectures have a pair of unsigned long values.
+ * On big-endian systems, the lower half is in the wrong place.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct msqid64_ds {
+	struct ipc64_perm msg_perm;
+#if __BITS_PER_LONG == 64
+	long		 msg_stime;	/* last msgsnd time */
+	long		 msg_rtime;	/* last msgrcv time */
+	long		 msg_ctime;	/* last change time */
+#else
+#define HAVE_MSQID64_DS_TIME_HIGH
+	unsigned long	msg_stime;	/* last msgsnd time */
+	unsigned long	msg_stime_high;
+	unsigned long	msg_rtime;	/* last msgrcv time */
+	unsigned long	msg_rtime_high;
+	unsigned long	msg_ctime;	/* last change time */
+	unsigned long	msg_ctime_high;
+#endif
+	unsigned long	msg_cbytes;	/* current number of bytes on queue */
+	unsigned long	msg_qnum;	/* number of messages in queue */
+	unsigned long	 msg_qbytes;	/* max number of bytes on queue */
+	__kernel_pid_t msg_lspid;	/* pid of last msgsnd */
+	__kernel_pid_t msg_lrpid;	/* last receive pid */
+	unsigned long	 __unused4;
+	unsigned long	 __unused5;
+};
+
+#endif /* msqid64_ds */
+
+#endif /* HAVE_MSQID64_DS */
+
+#endif /* IPC_MSGBUF_H */
diff --git a/runtest/syscalls b/runtest/syscalls
index 297b225448b8..e6e354bbf797 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -796,6 +796,7 @@ msgctl01 msgctl01
 msgctl02 msgctl02
 msgctl03 msgctl03
 msgctl04 msgctl04
+msgctl05 msgctl05
 msgstress01 msgstress01
 msgstress02 msgstress02
 msgstress03 msgstress03
diff --git a/runtest/syscalls-ipc b/runtest/syscalls-ipc
index 5ba3b1449a6c..c3a35896c5a8 100644
--- a/runtest/syscalls-ipc
+++ b/runtest/syscalls-ipc
@@ -2,6 +2,7 @@ msgctl01 msgctl01
 msgctl02 msgctl02
 msgctl03 msgctl03
 msgctl04 msgctl04
+msgctl05 msgctl05
 msgstress01 msgstress01
 msgstress02 msgstress02
 msgstress03 msgstress03
diff --git a/testcases/kernel/syscalls/ipc/msgctl/.gitignore b/testcases/kernel/syscalls/ipc/msgctl/.gitignore
index f179f2606a3e..0157f4611bdf 100644
--- a/testcases/kernel/syscalls/ipc/msgctl/.gitignore
+++ b/testcases/kernel/syscalls/ipc/msgctl/.gitignore
@@ -2,4 +2,5 @@
 /msgctl02
 /msgctl03
 /msgctl04
+/msgctl05
 /msgctl12
diff --git a/testcases/kernel/syscalls/ipc/msgctl/msgctl05.c b/testcases/kernel/syscalls/ipc/msgctl/msgctl05.c
new file mode 100644
index 000000000000..db13b19f9248
--- /dev/null
+++ b/testcases/kernel/syscalls/ipc/msgctl/msgctl05.c
@@ -0,0 +1,48 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2020 Viresh Kumar <viresh.kumar@linaro.org>
+ *
+ * Description:
+ * Cross verify the _high fields being set to 0 by the kernel.
+ */
+#include <sys/msg.h>
+#include "libnewipc.h"
+#include "msgbuf.h"
+#include "tst_test.h"
+#include "tst_safe_sysv_ipc.h"
+
+#ifdef HAVE_MSQID64_DS_TIME_HIGH
+
+static void run(void)
+{
+	struct msqid64_ds buf_ds = {
+		.msg_stime_high = 0x0A0A,
+		.msg_rtime_high = 0x0A0A,
+		.msg_ctime_high = 0x0A0A,
+	};
+	int msqid;
+	key_t key;
+
+	key = GETIPCKEY();
+
+	msqid = SAFE_MSGGET(key, IPC_CREAT | IPC_EXCL | MSG_RW | 0600);
+
+	TEST(msgctl(msqid, IPC_STAT, (struct msqid_ds *)&buf_ds));
+	if (TST_RET == -1)
+		tst_brk(TFAIL | TTERRNO, "msqctl() failed");
+
+	if (buf_ds.msg_stime_high || buf_ds.msg_rtime_high || buf_ds.msg_ctime_high)
+		tst_res(TFAIL, "time_high fields aren't cleared by the kernel");
+	else
+		tst_res(TPASS, "time_high fields cleared by the kernel");
+
+	SAFE_MSGCTL(msqid, IPC_RMID, NULL);
+}
+
+static struct tst_test test = {
+	.test_all = run,
+	.needs_tmpdir = 1,
+};
+#else
+TST_TEST_TCONF("test requires struct msqid64_ds to have the time_high fields");
+#endif
-- 
2.25.0.rc1.19.g042ed3e048af


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 0/5] syscalls: Add tests to verify the _time_high fields
  2020-05-21 10:47 [LTP] [PATCH 0/5] syscalls: Add tests to verify the _time_high fields Viresh Kumar
                   ` (4 preceding siblings ...)
  2020-05-21 10:47 ` [LTP] [PATCH 5/5] syscalls: msgctl: " Viresh Kumar
@ 2020-05-21 13:08 ` Arnd Bergmann
  2020-05-21 14:25   ` Cyril Hrubis
  5 siblings, 1 reply; 32+ messages in thread
From: Arnd Bergmann @ 2020-05-21 13:08 UTC (permalink / raw)
  To: ltp

On Thu, May 21, 2020 at 12:47 PM Viresh Kumar <viresh.kumar@linaro.org> wrote:
>
> Hello,
>
> This patchset adds a new test to three syscalls to verify that the
> extended fields, _time_high, are cleared by the kernel. This was
> suggested by Arnd.
>
> I did run them, but on a 64 bit machine. Please see if you can check
> that they work properly on 32 bit machines, where we really want to test
> them. This is rebased over ltp master.
>
> Cyril, This conflicts a bit with my other time64 syscall tests, I will
> rebase one of these, after you apply any of these first :)

The known bugs we had here were actually on 64-bit machines running
compat 32-bit user space. You should be able to test this on most
64-bit distros using the compat libraries and building ltp against the
32-bit version (not sure what the best way is to configure that, but it
should not be hard).

     Arnd

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 2/5] include: Add declaration of struct ipc64_perm
  2020-05-21 10:47 ` [LTP] [PATCH 2/5] include: Add declaration of struct ipc64_perm Viresh Kumar
@ 2020-05-21 13:11   ` Arnd Bergmann
  2020-05-22  7:10     ` Viresh Kumar
  2020-05-22  7:16   ` [LTP] [PATCH V2 " Viresh Kumar
  2020-06-16 18:56   ` [LTP] [PATCH " Petr Vorel
  2 siblings, 1 reply; 32+ messages in thread
From: Arnd Bergmann @ 2020-05-21 13:11 UTC (permalink / raw)
  To: ltp

On Thu, May 21, 2020 at 12:47 PM Viresh Kumar <viresh.kumar@linaro.org> wrote:
>
> This adds declaration of struct ipc64_perm, which will be used by
> following patches.
>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

Like the other structures, there are multiple definitions in the kernel:

$ git grep ^struct.ipc64_perm
arch/parisc/include/uapi/asm/ipcbuf.h:struct ipc64_perm
arch/powerpc/include/uapi/asm/ipcbuf.h:struct ipc64_perm
arch/s390/include/uapi/asm/ipcbuf.h:struct ipc64_perm
arch/sparc/include/uapi/asm/ipcbuf.h:struct ipc64_perm
arch/xtensa/include/uapi/asm/ipcbuf.h:struct ipc64_perm
include/uapi/asm-generic/ipcbuf.h:struct ipc64_perm

Any reason you can't just #include <asm/ipcbuf.h> to get the
kernel's definition for the correct architecture?

        Arnd

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 3/5] syscalls: semctl: Add new test to verify the _time_high fields
  2020-05-21 10:47 ` [LTP] [PATCH 3/5] syscalls: semctl: Add new test to verify the _time_high fields Viresh Kumar
@ 2020-05-21 13:20   ` Arnd Bergmann
  2020-05-21 14:26     ` Cyril Hrubis
  2020-05-22  7:16   ` [LTP] [PATCH V2 " Viresh Kumar
  1 sibling, 1 reply; 32+ messages in thread
From: Arnd Bergmann @ 2020-05-21 13:20 UTC (permalink / raw)
  To: ltp

On Thu, May 21, 2020 at 12:48 PM Viresh Kumar <viresh.kumar@linaro.org> wrote:
>
> The _time_high fields must be reset by the kernel, add a test to verify
> that.
>
> Suggested-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

Right, here you do need to copy the struct definitions since I forgot
to add a way to detect the presence in the kernel header files,
sorry about that.

Possibly you could just have a check in the Makefile that lets
skips the test if it fails to build because of old kernel headers?
Or maybe check LINUX_VERSION_CODE to see if the headers
are at least from linux-4.19?

>  configure.ac                                  |   1 +
>  include/sembuf.h                              | 234 ++++++++++++++++++
>  runtest/syscalls                              |   1 +
>  runtest/syscalls-ipc                          |   1 +
>  testcases/kernel/syscalls/ipc/msgctl/msgctl05 | Bin 0 -> 498784 bytes

stale file

> +       /* get an IPC resource key */
> +       key = GETIPCKEY();
> +
> +       semid = semget(key, 1, SEM_RA | IPC_CREAT);
> +       if (semid == -1)
> +               tst_brk(TBROK | TERRNO, "couldn't create semaphore");
> +
> +       arg.buf = (struct semid_ds *)&buf_ds;
> +       TEST(semctl(semid, 0, IPC_STAT, arg));
> +       if (TST_RET == -1)
> +               tst_brk(TFAIL | TTERRNO, "semctl() failed");
> +
> +       if (buf_ds.sem_otime_high || buf_ds.sem_ctime_high)
> +               tst_res(TFAIL, "time_high fields aren't cleared by the kernel");
> +       else
> +               tst_res(TPASS, "time_high fields cleared by the kernel");
> +
> +       if (semctl(semid, 0, IPC_RMID, arg) == -1)
> +               tst_res(TINFO, "WARNING: semaphore deletion failed.");
> +}

The test looks good to me.

If we wanted to get fancy, you could check that the time is actually
correct when setting the system clock past y2038 with clock_settime64()
at the start and then setting it back at the end.
That might risk crashing the system though, depending what else
is running at the same time that relies on the time fitting into
a 32-bit time_t.

     Arnd

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 0/5] syscalls: Add tests to verify the _time_high fields
  2020-05-21 13:08 ` [LTP] [PATCH 0/5] syscalls: Add tests " Arnd Bergmann
@ 2020-05-21 14:25   ` Cyril Hrubis
  2020-05-21 14:29     ` Cyril Hrubis
  2020-05-22  9:08     ` Viresh Kumar
  0 siblings, 2 replies; 32+ messages in thread
From: Cyril Hrubis @ 2020-05-21 14:25 UTC (permalink / raw)
  To: ltp

Hi!
> > This patchset adds a new test to three syscalls to verify that the
> > extended fields, _time_high, are cleared by the kernel. This was
> > suggested by Arnd.
> >
> > I did run them, but on a 64 bit machine. Please see if you can check
> > that they work properly on 32 bit machines, where we really want to test
> > them. This is rebased over ltp master.
> >
> > Cyril, This conflicts a bit with my other time64 syscall tests, I will
> > rebase one of these, after you apply any of these first :)
> 
> The known bugs we had here were actually on 64-bit machines running
> compat 32-bit user space. You should be able to test this on most
> 64-bit distros using the compat libraries and building ltp against the
> 32-bit version (not sure what the best way is to configure that, but it
> should not be hard).

We run LTP compiled with -m32 in our automation in SUSE precisely
because of these reasons. Not sure if somebody else does that.

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 3/5] syscalls: semctl: Add new test to verify the _time_high fields
  2020-05-21 13:20   ` Arnd Bergmann
@ 2020-05-21 14:26     ` Cyril Hrubis
  2020-05-22  7:12       ` Viresh Kumar
  0 siblings, 1 reply; 32+ messages in thread
From: Cyril Hrubis @ 2020-05-21 14:26 UTC (permalink / raw)
  To: ltp

Hi!
> > The _time_high fields must be reset by the kernel, add a test to verify
> > that.
> >
> > Suggested-by: Arnd Bergmann <arnd@arndb.de>
> > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> 
> Right, here you do need to copy the struct definitions since I forgot
> to add a way to detect the presence in the kernel header files,
> sorry about that.
> 
> Possibly you could just have a check in the Makefile that lets
> skips the test if it fails to build because of old kernel headers?
> Or maybe check LINUX_VERSION_CODE to see if the headers
> are at least from linux-4.19?

We usually include autotools checks and fallback definitions in
include/lapi.h in this case.

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 0/5] syscalls: Add tests to verify the _time_high fields
  2020-05-21 14:25   ` Cyril Hrubis
@ 2020-05-21 14:29     ` Cyril Hrubis
  2020-05-22  9:08     ` Viresh Kumar
  1 sibling, 0 replies; 32+ messages in thread
From: Cyril Hrubis @ 2020-05-21 14:29 UTC (permalink / raw)
  To: ltp

Hi!
> > The known bugs we had here were actually on 64-bit machines running
> > compat 32-bit user space. You should be able to test this on most
> > 64-bit distros using the compat libraries and building ltp against the
> > 32-bit version (not sure what the best way is to configure that, but it
> > should not be hard).
> 
> We run LTP compiled with -m32 in our automation in SUSE precisely
> because of these reasons. Not sure if somebody else does that.

In addition to a normal runs. And we also run syscalls with various
kernel debugging enabled, I guess we have one flavor with SLUB_DEBUG
etc.

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 2/5] include: Add declaration of struct ipc64_perm
  2020-05-21 13:11   ` Arnd Bergmann
@ 2020-05-22  7:10     ` Viresh Kumar
  0 siblings, 0 replies; 32+ messages in thread
From: Viresh Kumar @ 2020-05-22  7:10 UTC (permalink / raw)
  To: ltp

On 21-05-20, 15:11, Arnd Bergmann wrote:
> On Thu, May 21, 2020 at 12:47 PM Viresh Kumar <viresh.kumar@linaro.org> wrote:
> >
> > This adds declaration of struct ipc64_perm, which will be used by
> > following patches.
> >
> > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> 
> Like the other structures, there are multiple definitions in the kernel:
> 
> $ git grep ^struct.ipc64_perm

I searched with a { at the end :)

> arch/parisc/include/uapi/asm/ipcbuf.h:struct ipc64_perm
> arch/powerpc/include/uapi/asm/ipcbuf.h:struct ipc64_perm
> arch/s390/include/uapi/asm/ipcbuf.h:struct ipc64_perm
> arch/sparc/include/uapi/asm/ipcbuf.h:struct ipc64_perm
> arch/xtensa/include/uapi/asm/ipcbuf.h:struct ipc64_perm
> include/uapi/asm-generic/ipcbuf.h:struct ipc64_perm
> 
> Any reason you can't just #include <asm/ipcbuf.h> to get the
> kernel's definition for the correct architecture?

Because the libc header may not have the definitions, and so we need
to define our own.

-- 
viresh

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 3/5] syscalls: semctl: Add new test to verify the _time_high fields
  2020-05-21 14:26     ` Cyril Hrubis
@ 2020-05-22  7:12       ` Viresh Kumar
  0 siblings, 0 replies; 32+ messages in thread
From: Viresh Kumar @ 2020-05-22  7:12 UTC (permalink / raw)
  To: ltp

On 21-05-20, 16:26, Cyril Hrubis wrote:
> Hi!
> > > The _time_high fields must be reset by the kernel, add a test to verify
> > > that.
> > >
> > > Suggested-by: Arnd Bergmann <arnd@arndb.de>
> > > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> > 
> > Right, here you do need to copy the struct definitions since I forgot
> > to add a way to detect the presence in the kernel header files,
> > sorry about that.
> > 
> > Possibly you could just have a check in the Makefile that lets
> > skips the test if it fails to build because of old kernel headers?
> > Or maybe check LINUX_VERSION_CODE to see if the headers
> > are at least from linux-4.19?
> 
> We usually include autotools checks and fallback definitions in
> include/lapi.h in this case.

And that's what my patches are doing. They check for 

#ifndef HAVE_MSQID64_DS

and then only go define them.

We can't work with kernel versions due to possible backporting of the
patches to older kernels.

-- 
viresh

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH V2 2/5] include: Add declaration of struct ipc64_perm
  2020-05-21 10:47 ` [LTP] [PATCH 2/5] include: Add declaration of struct ipc64_perm Viresh Kumar
  2020-05-21 13:11   ` Arnd Bergmann
@ 2020-05-22  7:16   ` Viresh Kumar
  2020-06-15 12:43     ` Cyril Hrubis
  2020-06-16 18:56   ` [LTP] [PATCH " Petr Vorel
  2 siblings, 1 reply; 32+ messages in thread
From: Viresh Kumar @ 2020-05-22  7:16 UTC (permalink / raw)
  To: ltp

This adds declaration of struct ipc64_perm, which will be used by
following patches.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
V2: Include definitions for other architectures as well.

 configure.ac     |   1 +
 include/ipcbuf.h | 199 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 200 insertions(+)
 create mode 100644 include/ipcbuf.h

diff --git a/configure.ac b/configure.ac
index 1d3ea58d0082..eaf33dd60350 100644
--- a/configure.ac
+++ b/configure.ac
@@ -150,6 +150,7 @@ AC_CHECK_TYPES([struct file_dedupe_range],,,[#include <linux/fs.h>])
 AC_CHECK_TYPES([struct fs_quota_statv],,,[#include <xfs/xqm.h>])
 AC_CHECK_TYPES([struct if_nextdqblk],,,[#include <linux/quota.h>])
 AC_CHECK_TYPES([struct iovec],,,[#include <sys/uio.h>])
+AC_CHECK_TYPES([struct ipc64_perm],,,[#include <sys/ipcbuf.h>])
 
 AC_CHECK_TYPES([struct mmsghdr],,,[
 #define _GNU_SOURCE
diff --git a/include/ipcbuf.h b/include/ipcbuf.h
new file mode 100644
index 000000000000..caf1491df27f
--- /dev/null
+++ b/include/ipcbuf.h
@@ -0,0 +1,199 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2020 Linaro Limited. All rights reserved.
+ * Author: Viresh Kumar <viresh.kumar@linaro.org>
+ */
+
+#ifndef IPCBUF_H
+#define IPCBUF_H
+
+#include <linux/posix_types.h>
+
+#ifndef HAVE_IPC64_PERM
+
+#if defined(__hppa__)
+#define HAVE_IPC64_PERM
+/*
+ * The ipc64_perm structure for PA-RISC is almost identical to
+ * kern_ipc_perm as we have always had 32-bit UIDs and GIDs in the kernel.
+ * 'seq' has been changed from long to int so that it's the same size
+ * on 64-bit kernels as on 32-bit ones.
+ */
+
+struct ipc64_perm
+{
+	__kernel_key_t		key;
+	__kernel_uid_t		uid;
+	__kernel_gid_t		gid;
+	__kernel_uid_t		cuid;
+	__kernel_gid_t		cgid;
+#if __BITS_PER_LONG != 64
+	unsigned short int	__pad1;
+#endif
+	__kernel_mode_t		mode;
+	unsigned short int	__pad2;
+	unsigned short int	seq;
+	unsigned int		__pad3;
+	unsigned long long int __unused1;
+	unsigned long long int __unused2;
+};
+#endif /* __hppa__ */
+
+#if defined(__powerpc__) || defined(__powerpc64__)
+#define HAVE_IPC64_PERM
+/*
+ * The ipc64_perm structure for the powerpc is identical to
+ * kern_ipc_perm as we have always had 32-bit UIDs and GIDs in the
+ * kernel.  Note extra padding because this structure is passed back
+ * and forth between kernel and user space.  Pad space is left for:
+ *	- 1 32-bit value to fill up for 8-byte alignment
+ *	- 2 miscellaneous 64-bit values
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+struct ipc64_perm
+{
+	__kernel_key_t	key;
+	__kernel_uid_t	uid;
+	__kernel_gid_t	gid;
+	__kernel_uid_t	cuid;
+	__kernel_gid_t	cgid;
+	__kernel_mode_t	mode;
+	unsigned int	seq;
+	unsigned int	__pad1;
+	unsigned long long __unused1;
+	unsigned long long __unused2;
+};
+
+#endif /* defined(__powerpc__) || defined(__powerpc64__) */
+
+#if defined(__s390__)
+#define HAVE_IPC64_PERM
+/*
+ * The user_ipc_perm structure for S/390 architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 32-bit mode_t and seq
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct ipc64_perm
+{
+	__kernel_key_t		key;
+	__kernel_uid32_t	uid;
+	__kernel_gid32_t	gid;
+	__kernel_uid32_t	cuid;
+	__kernel_gid32_t	cgid;
+	__kernel_mode_t		mode;
+	unsigned short		__pad1;
+	unsigned short		seq;
+#ifndef __s390x__
+	unsigned short		__pad2;
+#endif /* ! __s390x__ */
+	unsigned long		__unused1;
+	unsigned long		__unused2;
+};
+
+#endif /* defined(__powerpc__) || defined(__powerpc64__) */
+
+#if defined(__sparc__)
+#define HAVE_IPC64_PERM
+/*
+ * The ipc64_perm structure for sparc/sparc64 architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 32-bit seq
+ * - on sparc for 32 bit mode (it is 32 bit on sparc64)
+ * - 2 miscellaneous 64-bit values
+ */
+
+struct ipc64_perm
+{
+	__kernel_key_t		key;
+	__kernel_uid32_t	uid;
+	__kernel_gid32_t	gid;
+	__kernel_uid32_t	cuid;
+	__kernel_gid32_t	cgid;
+#ifndef __arch64__
+	unsigned short		__pad0;
+#endif
+	__kernel_mode_t		mode;
+	unsigned short		__pad1;
+	unsigned short		seq;
+	unsigned long long	__unused1;
+	unsigned long long	__unused2;
+};
+
+#endif /* __sparc__ */
+
+#if defined(__xtensa__)
+#define HAVE_IPC64_PERM
+/*
+ * Pad space is left for:
+ * - 32-bit mode_t and seq
+ * - 2 miscellaneous 32-bit values
+ *
+ * This file is subject to the terms and conditions of the GNU General
+ * Public License.  See the file "COPYING" in the main directory of
+ * this archive for more details.
+ */
+
+struct ipc64_perm
+{
+	__kernel_key_t		key;
+	__kernel_uid32_t	uid;
+	__kernel_gid32_t	gid;
+	__kernel_uid32_t	cuid;
+	__kernel_gid32_t	cgid;
+	__kernel_mode_t		mode;
+	unsigned long		seq;
+	unsigned long		__unused1;
+	unsigned long		__unused2;
+};
+
+#endif /* __xtensa__ */
+
+#ifndef HAVE_IPC64_PERM
+/*
+ * The generic ipc64_perm structure:
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * ipc64_perm was originally meant to be architecture specific, but
+ * everyone just ended up making identical copies without specific
+ * optimizations, so we may just as well all use the same one.
+ *
+ * Pad space is left for:
+ * - 32-bit mode_t on architectures that only had 16 bit
+ * - 32-bit seq
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct ipc64_perm {
+	__kernel_key_t		key;
+	__kernel_uid32_t	uid;
+	__kernel_gid32_t	gid;
+	__kernel_uid32_t	cuid;
+	__kernel_gid32_t	cgid;
+	__kernel_mode_t		mode;
+				/* pad if mode_t is u16: */
+	unsigned char		__pad1[4 - sizeof(__kernel_mode_t)];
+	unsigned short		seq;
+	unsigned short		__pad2;
+	__kernel_ulong_t	__unused1;
+	__kernel_ulong_t	__unused2;
+};
+
+#endif /* ipc64_perm */
+
+#endif /* HAVE_IPC64_PERM */
+
+#endif /* IPCBUF_H */
-- 
2.25.0.rc1.19.g042ed3e048af


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [LTP] [PATCH V2 3/5] syscalls: semctl: Add new test to verify the _time_high fields
  2020-05-21 10:47 ` [LTP] [PATCH 3/5] syscalls: semctl: Add new test to verify the _time_high fields Viresh Kumar
  2020-05-21 13:20   ` Arnd Bergmann
@ 2020-05-22  7:16   ` Viresh Kumar
  2020-06-15 13:31     ` Cyril Hrubis
  1 sibling, 1 reply; 32+ messages in thread
From: Viresh Kumar @ 2020-05-22  7:16 UTC (permalink / raw)
  To: ltp

The _time_high fields must be reset by the kernel, add a test to verify
that.

Suggested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
V2: Remove stale file.

 configure.ac                                  |   1 +
 include/sembuf.h                              | 234 ++++++++++++++++++
 runtest/syscalls                              |   1 +
 runtest/syscalls-ipc                          |   1 +
 .../kernel/syscalls/ipc/semctl/.gitignore     |   1 +
 testcases/kernel/syscalls/ipc/semctl/Makefile |   5 +-
 .../kernel/syscalls/ipc/semctl/semctl08.c     |  52 ++++
 7 files changed, 294 insertions(+), 1 deletion(-)
 create mode 100644 include/sembuf.h
 create mode 100644 testcases/kernel/syscalls/ipc/semctl/semctl08.c

diff --git a/configure.ac b/configure.ac
index eaf33dd60350..c513fdf440c2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -151,6 +151,7 @@ AC_CHECK_TYPES([struct fs_quota_statv],,,[#include <xfs/xqm.h>])
 AC_CHECK_TYPES([struct if_nextdqblk],,,[#include <linux/quota.h>])
 AC_CHECK_TYPES([struct iovec],,,[#include <sys/uio.h>])
 AC_CHECK_TYPES([struct ipc64_perm],,,[#include <sys/ipcbuf.h>])
+AC_CHECK_TYPES([struct semid64_ds],,,[#include <sys/sem.h>])
 
 AC_CHECK_TYPES([struct mmsghdr],,,[
 #define _GNU_SOURCE
diff --git a/include/sembuf.h b/include/sembuf.h
new file mode 100644
index 000000000000..00263abca995
--- /dev/null
+++ b/include/sembuf.h
@@ -0,0 +1,234 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2020 Linaro Limited. All rights reserved.
+ * Author: Viresh Kumar <viresh.kumar@linaro.org>
+ */
+
+#ifndef IPC_SEMBUF_H
+#define IPC_SEMBUF_H
+
+#include <linux/posix_types.h>
+#include <sys/sem.h>
+#include "tst_timer.h"
+#include "ipcbuf.h"
+
+#ifndef HAVE_SEMID64_DS
+
+#if defined(__mips__)
+#define HAVE_SEMID64_DS
+/*
+ * The semid64_ds structure for the MIPS architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for 2 miscellaneous 64-bit values on mips64,
+ * but used for the upper 32 bit of the time values on mips32.
+ */
+#if defined(__arch64__)
+struct semid64_ds {
+	struct ipc64_perm sem_perm;		/* permissions .. see ipc.h */
+	long		 sem_otime;		/* last semop time */
+	long		 sem_ctime;		/* last change time */
+	unsigned long	sem_nsems;		/* no. of semaphores in array */
+	unsigned long	__unused1;
+	unsigned long	__unused2;
+};
+#else
+#define HAVE_SEMID64_DS_TIME_HIGH
+struct semid64_ds {
+	struct ipc64_perm sem_perm;		/* permissions .. see ipc.h */
+	unsigned long   sem_otime;		/* last semop time */
+	unsigned long   sem_ctime;		/* last change time */
+	unsigned long	sem_nsems;		/* no. of semaphores in array */
+	unsigned long	sem_otime_high;
+	unsigned long	sem_ctime_high;
+};
+#endif
+#endif /* __mips__ */
+
+#if defined(__hppa__)
+#define HAVE_SEMID64_DS
+/*
+ * The semid64_ds structure for parisc architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32-bit values
+ */
+struct semid64_ds {
+	struct ipc64_perm sem_perm;		/* permissions .. see ipc.h */
+#if __BITS_PER_LONG == 64
+	long		sem_otime;		/* last semop time */
+	long		sem_ctime;		/* last change time */
+#else
+#define HAVE_SEMID64_DS_TIME_HIGH
+	unsigned long	sem_otime_high;
+	unsigned long	sem_otime;		/* last semop time */
+	unsigned long	sem_ctime_high;
+	unsigned long	sem_ctime;		/* last change time */
+#endif
+	unsigned long	sem_nsems;		/* no. of semaphores in array */
+	unsigned long	__unused1;
+	unsigned long	__unused2;
+};
+#endif /* __hppa__ */
+
+#if defined(__powerpc__) || defined(__powerpc64__)
+#define HAVE_SEMID64_DS
+/*
+ * The semid64_ds structure for PPC architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32/64-bit values
+ */
+
+struct semid64_ds {
+	struct ipc64_perm sem_perm;	/* permissions .. see ipc.h */
+#ifndef __powerpc64__
+#define HAVE_SEMID64_DS_TIME_HIGH
+	unsigned long	sem_otime_high;
+	unsigned long	sem_otime;	/* last semop time */
+	unsigned long	sem_ctime_high;
+	unsigned long	sem_ctime;	/* last change time */
+#else
+	long		sem_otime;	/* last semop time */
+	long		sem_ctime;	/* last change time */
+#endif
+	unsigned long	sem_nsems;	/* no. of semaphores in array */
+	unsigned long	__unused3;
+	unsigned long	__unused4;
+};
+#endif /* defined(__powerpc__) || defined(__powerpc64__) */
+
+#if defined(__sparc__)
+#define HAVE_SEMID64_DS
+/*
+ * The semid64_ds structure for sparc architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct semid64_ds {
+	struct ipc64_perm sem_perm;		/* permissions .. see ipc.h */
+#if defined(__arch64__)
+	long		sem_otime;		/* last semop time */
+	long		sem_ctime;		/* last change time */
+#else
+#define HAVE_SEMID64_DS_TIME_HIGH
+	unsigned long	sem_otime_high;
+	unsigned long	sem_otime;		/* last semop time */
+	unsigned long	sem_ctime_high;
+	unsigned long	sem_ctime;		/* last change time */
+#endif
+	unsigned long	sem_nsems;		/* no. of semaphores in array */
+	unsigned long	__unused1;
+	unsigned long	__unused2;
+};
+#endif /* __sparc__ */
+
+#if defined(__x86_64__)
+#define HAVE_SEMID64_DS
+/*
+ * The semid64_ds structure for x86 architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 2 miscellaneous 32-bit values
+ *
+ * x86_64 and x32 incorrectly added padding here, so the structures
+ * are still incompatible with the padding on x86.
+ */
+struct semid64_ds {
+	struct ipc64_perm sem_perm;	/* permissions .. see ipc.h */
+#ifdef __i386__
+#define HAVE_SEMID64_DS_TIME_HIGH
+	unsigned long	sem_otime;	/* last semop time */
+	unsigned long	sem_otime_high;
+	unsigned long	sem_ctime;	/* last change time */
+	unsigned long	sem_ctime_high;
+#else
+	__kernel_long_t sem_otime;	/* last semop time */
+	__kernel_ulong_t __unused1;
+	__kernel_long_t sem_ctime;	/* last change time */
+	__kernel_ulong_t __unused2;
+#endif
+	__kernel_ulong_t sem_nsems;	/* no. of semaphores in array */
+	__kernel_ulong_t __unused3;
+	__kernel_ulong_t __unused4;
+};
+#endif /* defined(__x86_64__) */
+
+#if defined(__xtensa__)
+#define HAVE_SEMID64_DS
+#define HAVE_SEMID64_DS_TIME_HIGH
+
+struct semid64_ds {
+	struct ipc64_perm sem_perm;		/* permissions .. see ipc.h */
+#ifdef __XTENSA_EL__
+	unsigned long	sem_otime;		/* last semop time */
+	unsigned long	sem_otime_high;
+	unsigned long	sem_ctime;		/* last change time */
+	unsigned long	sem_ctime_high;
+#else
+	unsigned long	sem_otime_high;
+	unsigned long	sem_otime;		/* last semop time */
+	unsigned long	sem_ctime_high;
+	unsigned long	sem_ctime;		/* last change time */
+#endif
+	unsigned long	sem_nsems;		/* no. of semaphores in array */
+	unsigned long	__unused3;
+	unsigned long	__unused4;
+};
+
+#endif /* __xtensa__ */
+
+#ifndef HAVE_SEMID64_DS
+/*
+ * The semid64_ds structure for most architectures (though it came
+ * from x86_32 originally). Note extra padding because this structure
+ * is passed back and forth between kernel and user space.
+ *
+ * semid64_ds was originally meant to be architecture specific, but
+ * everyone just ended up making identical copies without specific
+ * optimizations, so we may just as well all use the same one.
+ *
+ * 64 bit architectures use a 64-bit long time field here, while
+ * 32 bit architectures have a pair of unsigned long values.
+ *
+ * On big-endian systems, the padding is in the wrong place for
+ * historic reasons, so user space has to reconstruct a time_t
+ * value using
+ *
+ * user_semid_ds.sem_otime = kernel_semid64_ds.sem_otime +
+ *		((long long)kernel_semid64_ds.sem_otime_high << 32)
+ *
+ * Pad space is left for 2 miscellaneous 32-bit values
+ */
+struct semid64_ds {
+	struct ipc64_perm sem_perm;	/* permissions .. see ipc.h */
+#if __BITS_PER_LONG == 64
+	long		sem_otime;	/* last semop time */
+	long		sem_ctime;	/* last change time */
+#else
+#define HAVE_SEMID64_DS_TIME_HIGH
+	unsigned long	sem_otime;	/* last semop time */
+	unsigned long	sem_otime_high;
+	unsigned long	sem_ctime;	/* last change time */
+	unsigned long	sem_ctime_high;
+#endif
+	unsigned long	sem_nsems;	/* no. of semaphores in array */
+	unsigned long	__unused3;
+	unsigned long	__unused4;
+};
+#endif /* semid64_ds */
+
+#endif /* HAVE_SEMID64_DS */
+
+#endif /* IPC_SEMBUF_H */
diff --git a/runtest/syscalls b/runtest/syscalls
index edd3e8de7861..db14ba4baf9e 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -1156,6 +1156,7 @@ semctl04 semctl04
 semctl05 semctl05
 semctl06 semctl06
 semctl07 semctl07
+semctl08 semctl08
 
 semget01 semget01
 semget02 semget02
diff --git a/runtest/syscalls-ipc b/runtest/syscalls-ipc
index 54d8622d4223..f912cb067f74 100644
--- a/runtest/syscalls-ipc
+++ b/runtest/syscalls-ipc
@@ -33,6 +33,7 @@ semctl04 semctl04
 semctl05 semctl05
 semctl06 semctl06
 semctl07 semctl07
+semctl08 semctl08
 
 semget01 semget01
 semget02 semget02
diff --git a/testcases/kernel/syscalls/ipc/semctl/.gitignore b/testcases/kernel/syscalls/ipc/semctl/.gitignore
index b6899acf5da6..6189a04cc3c6 100644
--- a/testcases/kernel/syscalls/ipc/semctl/.gitignore
+++ b/testcases/kernel/syscalls/ipc/semctl/.gitignore
@@ -5,3 +5,4 @@
 /semctl05
 /semctl06
 /semctl07
+/semctl08
diff --git a/testcases/kernel/syscalls/ipc/semctl/Makefile b/testcases/kernel/syscalls/ipc/semctl/Makefile
index aa211d37f8ee..150f581825c5 100644
--- a/testcases/kernel/syscalls/ipc/semctl/Makefile
+++ b/testcases/kernel/syscalls/ipc/semctl/Makefile
@@ -5,7 +5,10 @@ top_srcdir              ?= ../../../../..
 
 include $(top_srcdir)/include/mk/testcases.mk
 
-LDLIBS  += -lltpipc
+semctl01 semctl02 semctl03 semctl04 semctl05 semctl06 semctl07: LDLIBS += -lltpipc
+semctl08: LDLIBS += -lltpnewipc
+
 LDFLAGS += -L$(top_builddir)/libs/libltpipc
+LDFLAGS += -L$(top_builddir)/libs/libltpnewipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/semctl/semctl08.c b/testcases/kernel/syscalls/ipc/semctl/semctl08.c
new file mode 100644
index 000000000000..90a88989f2d3
--- /dev/null
+++ b/testcases/kernel/syscalls/ipc/semctl/semctl08.c
@@ -0,0 +1,52 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2020 Viresh Kumar <viresh.kumar@linaro.org>
+ *
+ * Description:
+ * Cross verify the _high fields being set to 0 by the kernel.
+ */
+#include "lapi/semun.h"
+#include "tst_test.h"
+#include "libnewipc.h"
+#include "sembuf.h"
+
+#ifdef HAVE_SEMID64_DS_TIME_HIGH
+
+static void run(void)
+{
+	struct semid64_ds buf_ds = {
+		.sem_otime_high = 0x0A0A,
+		.sem_ctime_high = 0x0A0A,
+	};
+	int semid;
+	union semun arg;
+	key_t key;
+
+	/* get an IPC resource key */
+	key = GETIPCKEY();
+
+	semid = semget(key, 1, SEM_RA | IPC_CREAT);
+	if (semid == -1)
+		tst_brk(TBROK | TERRNO, "couldn't create semaphore");
+
+	arg.buf = (struct semid_ds *)&buf_ds;
+	TEST(semctl(semid, 0, IPC_STAT, arg));
+	if (TST_RET == -1)
+		tst_brk(TFAIL | TTERRNO, "semctl() failed");
+
+	if (buf_ds.sem_otime_high || buf_ds.sem_ctime_high)
+		tst_res(TFAIL, "time_high fields aren't cleared by the kernel");
+	else
+		tst_res(TPASS, "time_high fields cleared by the kernel");
+
+	if (semctl(semid, 0, IPC_RMID, arg) == -1)
+		tst_res(TINFO, "WARNING: semaphore deletion failed.");
+}
+
+static struct tst_test test = {
+	.test_all = run,
+	.needs_tmpdir = 1,
+};
+#else
+TST_TEST_TCONF("test requires struct semid64_ds to have the time_high fields");
+#endif
-- 
2.25.0.rc1.19.g042ed3e048af


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 0/5] syscalls: Add tests to verify the _time_high fields
  2020-05-21 14:25   ` Cyril Hrubis
  2020-05-21 14:29     ` Cyril Hrubis
@ 2020-05-22  9:08     ` Viresh Kumar
  1 sibling, 0 replies; 32+ messages in thread
From: Viresh Kumar @ 2020-05-22  9:08 UTC (permalink / raw)
  To: ltp

On 21-05-20, 16:25, Cyril Hrubis wrote:
> Hi!
> > > This patchset adds a new test to three syscalls to verify that the
> > > extended fields, _time_high, are cleared by the kernel. This was
> > > suggested by Arnd.
> > >
> > > I did run them, but on a 64 bit machine. Please see if you can check
> > > that they work properly on 32 bit machines, where we really want to test
> > > them. This is rebased over ltp master.
> > >
> > > Cyril, This conflicts a bit with my other time64 syscall tests, I will
> > > rebase one of these, after you apply any of these first :)
> > 
> > The known bugs we had here were actually on 64-bit machines running
> > compat 32-bit user space. You should be able to test this on most
> > 64-bit distros using the compat libraries and building ltp against the
> > 32-bit version (not sure what the best way is to configure that, but it
> > should not be hard).
> 
> We run LTP compiled with -m32 in our automation in SUSE precisely
> because of these reasons. Not sure if somebody else does that.

Okay, I tested LTP with:

LDFLAGS=-m32 CFLAGS=-m32 ./configure

and the time-high fields got cleared on my x86 machine with 5.5 kernel.

-- 
viresh

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 1/5] syscalls:ipc: Move libraries to libs/ director
  2020-05-21 10:47 ` [LTP] [PATCH 1/5] syscalls:ipc: Move libraries to libs/ director Viresh Kumar
@ 2020-05-22 12:39   ` Cyril Hrubis
  2020-05-26  3:08     ` Viresh Kumar
  0 siblings, 1 reply; 32+ messages in thread
From: Cyril Hrubis @ 2020-05-22 12:39 UTC (permalink / raw)
  To: ltp

Hi!
> Move the ipc libraries to libs/ directory. One of the reasons to do this
> was to add the capability of adding tests with both old and new test
> frameworks in the same ipc test directory.

Pushed with following diff, thanks.

1) You cannot build two different libs in one directory
2) Setting LTPLIBS instead of LDFLAGS generates proper build
   dependencies as well
3) Limit the linker flags for the kill and mremap tests

diff --git a/libs/libltpipc/Makefile b/libs/libltpipc/Makefile
index 11f38ea0a..9fdc57894 100644
--- a/libs/libltpipc/Makefile
+++ b/libs/libltpipc/Makefile
@@ -5,7 +5,7 @@ top_srcdir		?= ../..
 
 include $(top_srcdir)/include/mk/env_pre.mk
 
-LIB			:= libltpipc.a libltpmsgctl.a
+LIB			:= libltpipc.a
 
 include $(top_srcdir)/include/mk/lib.mk
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/msgctl/Makefile b/testcases/kernel/syscalls/ipc/msgctl/Makefile
index e2b305573..a11cbcf2e 100644
--- a/testcases/kernel/syscalls/ipc/msgctl/Makefile
+++ b/testcases/kernel/syscalls/ipc/msgctl/Makefile
@@ -3,9 +3,10 @@
 
 top_srcdir              ?= ../../../../..
 
+LTPLIBS = ltpnewipc
+
 include $(top_srcdir)/include/mk/testcases.mk
 
 LDLIBS  += -lltpnewipc
-LDFLAGS += -L$(top_builddir)/libs/libltpnewipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/msgget/Makefile b/testcases/kernel/syscalls/ipc/msgget/Makefile
index e2b305573..a11cbcf2e 100644
--- a/testcases/kernel/syscalls/ipc/msgget/Makefile
+++ b/testcases/kernel/syscalls/ipc/msgget/Makefile
@@ -3,9 +3,10 @@
 
 top_srcdir              ?= ../../../../..
 
+LTPLIBS = ltpnewipc
+
 include $(top_srcdir)/include/mk/testcases.mk
 
 LDLIBS  += -lltpnewipc
-LDFLAGS += -L$(top_builddir)/libs/libltpnewipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/msgrcv/Makefile b/testcases/kernel/syscalls/ipc/msgrcv/Makefile
index aa211d37f..f62cd1f48 100644
--- a/testcases/kernel/syscalls/ipc/msgrcv/Makefile
+++ b/testcases/kernel/syscalls/ipc/msgrcv/Makefile
@@ -3,9 +3,10 @@
 
 top_srcdir              ?= ../../../../..
 
+LTPLIBS = ltpipc
+
 include $(top_srcdir)/include/mk/testcases.mk
 
 LDLIBS  += -lltpipc
-LDFLAGS += -L$(top_builddir)/libs/libltpipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/msgsnd/Makefile b/testcases/kernel/syscalls/ipc/msgsnd/Makefile
index b4930310f..17960cae3 100644
--- a/testcases/kernel/syscalls/ipc/msgsnd/Makefile
+++ b/testcases/kernel/syscalls/ipc/msgsnd/Makefile
@@ -3,6 +3,8 @@
 
 top_srcdir              ?= ../../../../..
 
+LTPLIBS = ltpnewipc
+
 ifeq ($(UCLINUX),1)
 FILTER_OUT_MAKE_TARGETS += msgsnd05 msgsnd06
 endif
@@ -10,6 +12,5 @@ endif
 include $(top_srcdir)/include/mk/testcases.mk
 
 LDLIBS  += -lltpnewipc
-LDFLAGS += -L$(top_builddir)/libs/libltpnewipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/msgstress/Makefile b/testcases/kernel/syscalls/ipc/msgstress/Makefile
index 551463829..f62cd1f48 100644
--- a/testcases/kernel/syscalls/ipc/msgstress/Makefile
+++ b/testcases/kernel/syscalls/ipc/msgstress/Makefile
@@ -3,10 +3,10 @@
 
 top_srcdir              ?= ../../../../..
 
+LTPLIBS = ltpipc
+
 include $(top_srcdir)/include/mk/testcases.mk
 
 LDLIBS  += -lltpipc
-LDLIBS  += -lltpmsgctl
-LDFLAGS += -L$(top_builddir)/libs/libltpipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/semctl/Makefile b/testcases/kernel/syscalls/ipc/semctl/Makefile
index aa211d37f..f62cd1f48 100644
--- a/testcases/kernel/syscalls/ipc/semctl/Makefile
+++ b/testcases/kernel/syscalls/ipc/semctl/Makefile
@@ -3,9 +3,10 @@
 
 top_srcdir              ?= ../../../../..
 
+LTPLIBS = ltpipc
+
 include $(top_srcdir)/include/mk/testcases.mk
 
 LDLIBS  += -lltpipc
-LDFLAGS += -L$(top_builddir)/libs/libltpipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/semget/Makefile b/testcases/kernel/syscalls/ipc/semget/Makefile
index aa211d37f..f62cd1f48 100644
--- a/testcases/kernel/syscalls/ipc/semget/Makefile
+++ b/testcases/kernel/syscalls/ipc/semget/Makefile
@@ -3,9 +3,10 @@
 
 top_srcdir              ?= ../../../../..
 
+LTPLIBS = ltpipc
+
 include $(top_srcdir)/include/mk/testcases.mk
 
 LDLIBS  += -lltpipc
-LDFLAGS += -L$(top_builddir)/libs/libltpipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/semop/Makefile b/testcases/kernel/syscalls/ipc/semop/Makefile
index aa211d37f..f62cd1f48 100644
--- a/testcases/kernel/syscalls/ipc/semop/Makefile
+++ b/testcases/kernel/syscalls/ipc/semop/Makefile
@@ -3,9 +3,10 @@
 
 top_srcdir              ?= ../../../../..
 
+LTPLIBS = ltpipc
+
 include $(top_srcdir)/include/mk/testcases.mk
 
 LDLIBS  += -lltpipc
-LDFLAGS += -L$(top_builddir)/libs/libltpipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/shmat/Makefile b/testcases/kernel/syscalls/ipc/shmat/Makefile
index e2b305573..a11cbcf2e 100644
--- a/testcases/kernel/syscalls/ipc/shmat/Makefile
+++ b/testcases/kernel/syscalls/ipc/shmat/Makefile
@@ -3,9 +3,10 @@
 
 top_srcdir              ?= ../../../../..
 
+LTPLIBS = ltpnewipc
+
 include $(top_srcdir)/include/mk/testcases.mk
 
 LDLIBS  += -lltpnewipc
-LDFLAGS += -L$(top_builddir)/libs/libltpnewipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/shmctl/Makefile b/testcases/kernel/syscalls/ipc/shmctl/Makefile
index dda6d636f..cfa5d6e76 100644
--- a/testcases/kernel/syscalls/ipc/shmctl/Makefile
+++ b/testcases/kernel/syscalls/ipc/shmctl/Makefile
@@ -3,12 +3,13 @@
 
 top_srcdir              ?= ../../../../..
 
+LTPLIBS = ltpipc
+
 shmctl05: CFLAGS += -pthread
 shmctl05: LDLIBS += -lrt
 
 include $(top_srcdir)/include/mk/testcases.mk
 
 LDLIBS  += -lltpipc
-LDFLAGS += -L$(top_builddir)/libs/libltpipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/shmdt/Makefile b/testcases/kernel/syscalls/ipc/shmdt/Makefile
index aa211d37f..f62cd1f48 100644
--- a/testcases/kernel/syscalls/ipc/shmdt/Makefile
+++ b/testcases/kernel/syscalls/ipc/shmdt/Makefile
@@ -3,9 +3,10 @@
 
 top_srcdir              ?= ../../../../..
 
+LTPLIBS = ltpipc
+
 include $(top_srcdir)/include/mk/testcases.mk
 
 LDLIBS  += -lltpipc
-LDFLAGS += -L$(top_builddir)/libs/libltpipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/shmget/Makefile b/testcases/kernel/syscalls/ipc/shmget/Makefile
index aa211d37f..f62cd1f48 100644
--- a/testcases/kernel/syscalls/ipc/shmget/Makefile
+++ b/testcases/kernel/syscalls/ipc/shmget/Makefile
@@ -3,9 +3,10 @@
 
 top_srcdir              ?= ../../../../..
 
+LTPLIBS = ltpipc
+
 include $(top_srcdir)/include/mk/testcases.mk
 
 LDLIBS  += -lltpipc
-LDFLAGS += -L$(top_builddir)/libs/libltpipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/kill/Makefile b/testcases/kernel/syscalls/kill/Makefile
index 3e32978fc..00cadabef 100644
--- a/testcases/kernel/syscalls/kill/Makefile
+++ b/testcases/kernel/syscalls/kill/Makefile
@@ -3,9 +3,11 @@
 
 top_srcdir		?= ../../../..
 
+LTPLIBS = ltpipc
+
 include $(top_srcdir)/include/mk/testcases.mk
 
-LDLIBS  += -lltpipc
-LDFLAGS += -L$(top_builddir)/libs/libltpipc
+kill07: LDLIBS  += -lltpipc
+kill05: LDLIBS  += -lltpipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/mremap/Makefile b/testcases/kernel/syscalls/mremap/Makefile
index 3e32978fc..7bdf425d2 100644
--- a/testcases/kernel/syscalls/mremap/Makefile
+++ b/testcases/kernel/syscalls/mremap/Makefile
@@ -3,9 +3,10 @@
 
 top_srcdir		?= ../../../..
 
+LTPLIBS = ltpipc
+
 include $(top_srcdir)/include/mk/testcases.mk
 
-LDLIBS  += -lltpipc
-LDFLAGS += -L$(top_builddir)/libs/libltpipc
+mremap04: LDLIBS  += -lltpipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk


-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 1/5] syscalls:ipc: Move libraries to libs/ director
  2020-05-22 12:39   ` Cyril Hrubis
@ 2020-05-26  3:08     ` Viresh Kumar
  2020-05-29  5:39       ` Yang Xu
  2020-06-15 12:20       ` Cyril Hrubis
  0 siblings, 2 replies; 32+ messages in thread
From: Viresh Kumar @ 2020-05-26  3:08 UTC (permalink / raw)
  To: ltp

On 22-05-20, 14:39, Cyril Hrubis wrote:
> Hi!
> > Move the ipc libraries to libs/ directory. One of the reasons to do this
> > was to add the capability of adding tests with both old and new test
> > frameworks in the same ipc test directory.
> 
> Pushed with following diff, thanks.
> 
> 1) You cannot build two different libs in one directory
> 2) Setting LTPLIBS instead of LDFLAGS generates proper build
>    dependencies as well
> 3) Limit the linker flags for the kill and mremap tests

I don't think you pushed the changes you made. I still see my original
patch there. :)

-- 
viresh

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 1/5] syscalls:ipc: Move libraries to libs/ director
  2020-05-26  3:08     ` Viresh Kumar
@ 2020-05-29  5:39       ` Yang Xu
  2020-06-15 12:20       ` Cyril Hrubis
  1 sibling, 0 replies; 32+ messages in thread
From: Yang Xu @ 2020-05-29  5:39 UTC (permalink / raw)
  To: ltp

Hi  Cyril

> On 22-05-20, 14:39, Cyril Hrubis wrote:
>> Hi!
>>> Move the ipc libraries to libs/ directory. One of the reasons to do this
>>> was to add the capability of adding tests with both old and new test
>>> frameworks in the same ipc test directory.
>>
>> Pushed with following diff, thanks.
>>
>> 1) You cannot build two different libs in one directory
>> 2) Setting LTPLIBS instead of LDFLAGS generates proper build
>>     dependencies as well
>> 3) Limit the linker flags for the kill and mremap tests
> 
> I don't think you pushed the changes you made. I still see my original
> patch there. :)
It looks like you miss this change. It still uses
LDFLAGS instead of correct LTPLIBS.

Best Regards
Yang Xu
> 



^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 1/5] syscalls:ipc: Move libraries to libs/ director
  2020-05-26  3:08     ` Viresh Kumar
  2020-05-29  5:39       ` Yang Xu
@ 2020-06-15 12:20       ` Cyril Hrubis
  1 sibling, 0 replies; 32+ messages in thread
From: Cyril Hrubis @ 2020-06-15 12:20 UTC (permalink / raw)
  To: ltp

Hi!
> > > Move the ipc libraries to libs/ directory. One of the reasons to do this
> > > was to add the capability of adding tests with both old and new test
> > > frameworks in the same ipc test directory.
> > 
> > Pushed with following diff, thanks.
> > 
> > 1) You cannot build two different libs in one directory
> > 2) Setting LTPLIBS instead of LDFLAGS generates proper build
> >    dependencies as well
> > 3) Limit the linker flags for the kill and mremap tests
> 
> I don't think you pushed the changes you made. I still see my original
> patch there. :)

Indeed, I messed up ammend when I was in a hurry, sorry for that. I've
pushed a fix today.

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH V2 2/5] include: Add declaration of struct ipc64_perm
  2020-05-22  7:16   ` [LTP] [PATCH V2 " Viresh Kumar
@ 2020-06-15 12:43     ` Cyril Hrubis
  2020-06-16  6:41       ` Viresh Kumar
  0 siblings, 1 reply; 32+ messages in thread
From: Cyril Hrubis @ 2020-06-15 12:43 UTC (permalink / raw)
  To: ltp

Hi!
Applied with two changes, thanks.

* The header is moved to lapi/ where it should have been

* I've removed a piece of GPL header that probably ended up in the
  source due to copy&paste

> +#if defined(__powerpc__) || defined(__powerpc64__)
> +#define HAVE_IPC64_PERM
> +/*
> + * The ipc64_perm structure for the powerpc is identical to
> + * kern_ipc_perm as we have always had 32-bit UIDs and GIDs in the
> + * kernel.  Note extra padding because this structure is passed back
> + * and forth between kernel and user space.  Pad space is left for:
> + *	- 1 32-bit value to fill up for 8-byte alignment
> + *	- 2 miscellaneous 64-bit values
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version
> + * 2 of the License, or (at your option) any later version.
> + */
            ^
	    This part.

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH V2 3/5] syscalls: semctl: Add new test to verify the _time_high fields
  2020-05-22  7:16   ` [LTP] [PATCH V2 " Viresh Kumar
@ 2020-06-15 13:31     ` Cyril Hrubis
  2020-06-16  6:40       ` Viresh Kumar
  0 siblings, 1 reply; 32+ messages in thread
From: Cyril Hrubis @ 2020-06-15 13:31 UTC (permalink / raw)
  To: ltp

Hi!
> Suggested-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> ---
> V2: Remove stale file.
> 
>  configure.ac                                  |   1 +
>  include/sembuf.h                              | 234 ++++++++++++++++++
>  runtest/syscalls                              |   1 +
>  runtest/syscalls-ipc                          |   1 +
>  .../kernel/syscalls/ipc/semctl/.gitignore     |   1 +
>  testcases/kernel/syscalls/ipc/semctl/Makefile |   5 +-
>  .../kernel/syscalls/ipc/semctl/semctl08.c     |  52 ++++
>  7 files changed, 294 insertions(+), 1 deletion(-)
>  create mode 100644 include/sembuf.h
>  create mode 100644 testcases/kernel/syscalls/ipc/semctl/semctl08.c
> 
> diff --git a/configure.ac b/configure.ac
> index eaf33dd60350..c513fdf440c2 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -151,6 +151,7 @@ AC_CHECK_TYPES([struct fs_quota_statv],,,[#include <xfs/xqm.h>])
>  AC_CHECK_TYPES([struct if_nextdqblk],,,[#include <linux/quota.h>])
>  AC_CHECK_TYPES([struct iovec],,,[#include <sys/uio.h>])
>  AC_CHECK_TYPES([struct ipc64_perm],,,[#include <sys/ipcbuf.h>])
> +AC_CHECK_TYPES([struct semid64_ds],,,[#include <sys/sem.h>])
>  
>  AC_CHECK_TYPES([struct mmsghdr],,,[
>  #define _GNU_SOURCE
> diff --git a/include/sembuf.h b/include/sembuf.h
> new file mode 100644
> index 000000000000..00263abca995
> --- /dev/null
> +++ b/include/sembuf.h
> @@ -0,0 +1,234 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (c) 2020 Linaro Limited. All rights reserved.
> + * Author: Viresh Kumar <viresh.kumar@linaro.org>
> + */
> +
> +#ifndef IPC_SEMBUF_H
> +#define IPC_SEMBUF_H
> +
> +#include <linux/posix_types.h>
> +#include <sys/sem.h>
> +#include "tst_timer.h"
> +#include "ipcbuf.h"
> +
> +#ifndef HAVE_SEMID64_DS
> +
> +#if defined(__mips__)
> +#define HAVE_SEMID64_DS
> +/*
> + * The semid64_ds structure for the MIPS architecture.
> + * Note extra padding because this structure is passed back and forth
> + * between kernel and user space.
> + *
> + * Pad space is left for 2 miscellaneous 64-bit values on mips64,
> + * but used for the upper 32 bit of the time values on mips32.
> + */
> +#if defined(__arch64__)
> +struct semid64_ds {
> +	struct ipc64_perm sem_perm;		/* permissions .. see ipc.h */
> +	long		 sem_otime;		/* last semop time */
> +	long		 sem_ctime;		/* last change time */
> +	unsigned long	sem_nsems;		/* no. of semaphores in array */
> +	unsigned long	__unused1;
> +	unsigned long	__unused2;
> +};
> +#else
> +#define HAVE_SEMID64_DS_TIME_HIGH
> +struct semid64_ds {
> +	struct ipc64_perm sem_perm;		/* permissions .. see ipc.h */
> +	unsigned long   sem_otime;		/* last semop time */
> +	unsigned long   sem_ctime;		/* last change time */
> +	unsigned long	sem_nsems;		/* no. of semaphores in array */
> +	unsigned long	sem_otime_high;
> +	unsigned long	sem_ctime_high;
> +};
> +#endif
> +#endif /* __mips__ */
> +
> +#if defined(__hppa__)
> +#define HAVE_SEMID64_DS
> +/*
> + * The semid64_ds structure for parisc architecture.
> + * Note extra padding because this structure is passed back and forth
> + * between kernel and user space.
> + *
> + * Pad space is left for:
> + * - 2 miscellaneous 32-bit values
> + */
> +struct semid64_ds {
> +	struct ipc64_perm sem_perm;		/* permissions .. see ipc.h */
> +#if __BITS_PER_LONG == 64
> +	long		sem_otime;		/* last semop time */
> +	long		sem_ctime;		/* last change time */
> +#else
> +#define HAVE_SEMID64_DS_TIME_HIGH
> +	unsigned long	sem_otime_high;
> +	unsigned long	sem_otime;		/* last semop time */
> +	unsigned long	sem_ctime_high;
> +	unsigned long	sem_ctime;		/* last change time */
> +#endif
> +	unsigned long	sem_nsems;		/* no. of semaphores in array */
> +	unsigned long	__unused1;
> +	unsigned long	__unused2;
> +};
> +#endif /* __hppa__ */
> +
> +#if defined(__powerpc__) || defined(__powerpc64__)
> +#define HAVE_SEMID64_DS
> +/*
> + * The semid64_ds structure for PPC architecture.
> + * Note extra padding because this structure is passed back and forth
> + * between kernel and user space.
> + *
> + * Pad space is left for:
> + * - 2 miscellaneous 32/64-bit values
> + */
> +
> +struct semid64_ds {
> +	struct ipc64_perm sem_perm;	/* permissions .. see ipc.h */
> +#ifndef __powerpc64__
> +#define HAVE_SEMID64_DS_TIME_HIGH
> +	unsigned long	sem_otime_high;
> +	unsigned long	sem_otime;	/* last semop time */
> +	unsigned long	sem_ctime_high;
> +	unsigned long	sem_ctime;	/* last change time */
> +#else
> +	long		sem_otime;	/* last semop time */
> +	long		sem_ctime;	/* last change time */
> +#endif
> +	unsigned long	sem_nsems;	/* no. of semaphores in array */
> +	unsigned long	__unused3;
> +	unsigned long	__unused4;
> +};
> +#endif /* defined(__powerpc__) || defined(__powerpc64__) */
> +
> +#if defined(__sparc__)
> +#define HAVE_SEMID64_DS
> +/*
> + * The semid64_ds structure for sparc architecture.
> + * Note extra padding because this structure is passed back and forth
> + * between kernel and user space.
> + *
> + * Pad space is left for:
> + * - 2 miscellaneous 32-bit values
> + */
> +
> +struct semid64_ds {
> +	struct ipc64_perm sem_perm;		/* permissions .. see ipc.h */
> +#if defined(__arch64__)
> +	long		sem_otime;		/* last semop time */
> +	long		sem_ctime;		/* last change time */
> +#else
> +#define HAVE_SEMID64_DS_TIME_HIGH
> +	unsigned long	sem_otime_high;
> +	unsigned long	sem_otime;		/* last semop time */
> +	unsigned long	sem_ctime_high;
> +	unsigned long	sem_ctime;		/* last change time */
> +#endif
> +	unsigned long	sem_nsems;		/* no. of semaphores in array */
> +	unsigned long	__unused1;
> +	unsigned long	__unused2;
> +};
> +#endif /* __sparc__ */
> +
> +#if defined(__x86_64__)
> +#define HAVE_SEMID64_DS
> +/*
> + * The semid64_ds structure for x86 architecture.
> + * Note extra padding because this structure is passed back and forth
> + * between kernel and user space.
> + *
> + * Pad space is left for:
> + * - 2 miscellaneous 32-bit values
> + *
> + * x86_64 and x32 incorrectly added padding here, so the structures
> + * are still incompatible with the padding on x86.
> + */
> +struct semid64_ds {
> +	struct ipc64_perm sem_perm;	/* permissions .. see ipc.h */
> +#ifdef __i386__
> +#define HAVE_SEMID64_DS_TIME_HIGH
> +	unsigned long	sem_otime;	/* last semop time */
> +	unsigned long	sem_otime_high;
> +	unsigned long	sem_ctime;	/* last change time */
> +	unsigned long	sem_ctime_high;
> +#else
> +	__kernel_long_t sem_otime;	/* last semop time */
> +	__kernel_ulong_t __unused1;
> +	__kernel_long_t sem_ctime;	/* last change time */
> +	__kernel_ulong_t __unused2;
> +#endif
> +	__kernel_ulong_t sem_nsems;	/* no. of semaphores in array */
> +	__kernel_ulong_t __unused3;
> +	__kernel_ulong_t __unused4;
> +};
> +#endif /* defined(__x86_64__) */
> +
> +#if defined(__xtensa__)
> +#define HAVE_SEMID64_DS
> +#define HAVE_SEMID64_DS_TIME_HIGH
> +
> +struct semid64_ds {
> +	struct ipc64_perm sem_perm;		/* permissions .. see ipc.h */
> +#ifdef __XTENSA_EL__
> +	unsigned long	sem_otime;		/* last semop time */
> +	unsigned long	sem_otime_high;
> +	unsigned long	sem_ctime;		/* last change time */
> +	unsigned long	sem_ctime_high;
> +#else
> +	unsigned long	sem_otime_high;
> +	unsigned long	sem_otime;		/* last semop time */
> +	unsigned long	sem_ctime_high;
> +	unsigned long	sem_ctime;		/* last change time */
> +#endif
> +	unsigned long	sem_nsems;		/* no. of semaphores in array */
> +	unsigned long	__unused3;
> +	unsigned long	__unused4;
> +};
> +
> +#endif /* __xtensa__ */
> +
> +#ifndef HAVE_SEMID64_DS
> +/*
> + * The semid64_ds structure for most architectures (though it came
> + * from x86_32 originally). Note extra padding because this structure
> + * is passed back and forth between kernel and user space.
> + *
> + * semid64_ds was originally meant to be architecture specific, but
> + * everyone just ended up making identical copies without specific
> + * optimizations, so we may just as well all use the same one.
> + *
> + * 64 bit architectures use a 64-bit long time field here, while
> + * 32 bit architectures have a pair of unsigned long values.
> + *
> + * On big-endian systems, the padding is in the wrong place for
> + * historic reasons, so user space has to reconstruct a time_t
> + * value using
> + *
> + * user_semid_ds.sem_otime = kernel_semid64_ds.sem_otime +
> + *		((long long)kernel_semid64_ds.sem_otime_high << 32)
> + *
> + * Pad space is left for 2 miscellaneous 32-bit values
> + */
> +struct semid64_ds {
> +	struct ipc64_perm sem_perm;	/* permissions .. see ipc.h */
> +#if __BITS_PER_LONG == 64
> +	long		sem_otime;	/* last semop time */
> +	long		sem_ctime;	/* last change time */
> +#else
> +#define HAVE_SEMID64_DS_TIME_HIGH
> +	unsigned long	sem_otime;	/* last semop time */
> +	unsigned long	sem_otime_high;
> +	unsigned long	sem_ctime;	/* last change time */
> +	unsigned long	sem_ctime_high;
> +#endif
> +	unsigned long	sem_nsems;	/* no. of semaphores in array */
> +	unsigned long	__unused3;
> +	unsigned long	__unused4;
> +};
> +#endif /* semid64_ds */
> +
> +#endif /* HAVE_SEMID64_DS */
> +
> +#endif /* IPC_SEMBUF_H */

Can we please put the header into the lapi/ and also split this patch
so that we have one for the the fallback definition and one for the
actuall test?

> diff --git a/runtest/syscalls b/runtest/syscalls
> index edd3e8de7861..db14ba4baf9e 100644
> --- a/runtest/syscalls
> +++ b/runtest/syscalls
> @@ -1156,6 +1156,7 @@ semctl04 semctl04
>  semctl05 semctl05
>  semctl06 semctl06
>  semctl07 semctl07
> +semctl08 semctl08
>  
>  semget01 semget01
>  semget02 semget02
> diff --git a/runtest/syscalls-ipc b/runtest/syscalls-ipc
> index 54d8622d4223..f912cb067f74 100644
> --- a/runtest/syscalls-ipc
> +++ b/runtest/syscalls-ipc
> @@ -33,6 +33,7 @@ semctl04 semctl04
>  semctl05 semctl05
>  semctl06 semctl06
>  semctl07 semctl07
> +semctl08 semctl08
>  
>  semget01 semget01
>  semget02 semget02
> diff --git a/testcases/kernel/syscalls/ipc/semctl/.gitignore b/testcases/kernel/syscalls/ipc/semctl/.gitignore
> index b6899acf5da6..6189a04cc3c6 100644
> --- a/testcases/kernel/syscalls/ipc/semctl/.gitignore
> +++ b/testcases/kernel/syscalls/ipc/semctl/.gitignore
> @@ -5,3 +5,4 @@
>  /semctl05
>  /semctl06
>  /semctl07
> +/semctl08
> diff --git a/testcases/kernel/syscalls/ipc/semctl/Makefile b/testcases/kernel/syscalls/ipc/semctl/Makefile
> index aa211d37f8ee..150f581825c5 100644
> --- a/testcases/kernel/syscalls/ipc/semctl/Makefile
> +++ b/testcases/kernel/syscalls/ipc/semctl/Makefile
> @@ -5,7 +5,10 @@ top_srcdir              ?= ../../../../..
>  
>  include $(top_srcdir)/include/mk/testcases.mk
>  
> -LDLIBS  += -lltpipc
> +semctl01 semctl02 semctl03 semctl04 semctl05 semctl06 semctl07: LDLIBS += -lltpipc
> +semctl08: LDLIBS += -lltpnewipc
> +
>  LDFLAGS += -L$(top_builddir)/libs/libltpipc
> +LDFLAGS += -L$(top_builddir)/libs/libltpnewipc

This does not apply anymore after my fix. This should be:

LTPLIBS = ltpipc ltpnewipc

Which would add a dependency on these libraries in the build system and
also append the LDFLAGS, then all we need to do is to add the LDLIBS.

>  include $(top_srcdir)/include/mk/generic_leaf_target.mk
> diff --git a/testcases/kernel/syscalls/ipc/semctl/semctl08.c b/testcases/kernel/syscalls/ipc/semctl/semctl08.c
> new file mode 100644
> index 000000000000..90a88989f2d3
> --- /dev/null
> +++ b/testcases/kernel/syscalls/ipc/semctl/semctl08.c
> @@ -0,0 +1,52 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (c) 2020 Viresh Kumar <viresh.kumar@linaro.org>
> + *
> + * Description:
> + * Cross verify the _high fields being set to 0 by the kernel.
> + */
> +#include "lapi/semun.h"
> +#include "tst_test.h"
> +#include "libnewipc.h"
> +#include "sembuf.h"
> +
> +#ifdef HAVE_SEMID64_DS_TIME_HIGH
> +
> +static void run(void)
> +{
> +	struct semid64_ds buf_ds = {
> +		.sem_otime_high = 0x0A0A,
> +		.sem_ctime_high = 0x0A0A,
> +	};
> +	int semid;
> +	union semun arg;
> +	key_t key;
> +
> +	/* get an IPC resource key */
> +	key = GETIPCKEY();
> +
> +	semid = semget(key, 1, SEM_RA | IPC_CREAT);
> +	if (semid == -1)
> +		tst_brk(TBROK | TERRNO, "couldn't create semaphore");
> +
> +	arg.buf = (struct semid_ds *)&buf_ds;
> +	TEST(semctl(semid, 0, IPC_STAT, arg));
> +	if (TST_RET == -1)
> +		tst_brk(TFAIL | TTERRNO, "semctl() failed");
> +
> +	if (buf_ds.sem_otime_high || buf_ds.sem_ctime_high)
> +		tst_res(TFAIL, "time_high fields aren't cleared by the kernel");
> +	else
> +		tst_res(TPASS, "time_high fields cleared by the kernel");
> +
> +	if (semctl(semid, 0, IPC_RMID, arg) == -1)
> +		tst_res(TINFO, "WARNING: semaphore deletion failed.");
> +}
> +
> +static struct tst_test test = {
> +	.test_all = run,
> +	.needs_tmpdir = 1,
> +};
> +#else
> +TST_TEST_TCONF("test requires struct semid64_ds to have the time_high fields");
> +#endif

Other than that the patch looks good.

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 4/5] syscalls: shmctl: Add new test to verify the _time_high fields
  2020-05-21 10:47 ` [LTP] [PATCH 4/5] syscalls: shmctl: " Viresh Kumar
@ 2020-06-15 13:33   ` Cyril Hrubis
  0 siblings, 0 replies; 32+ messages in thread
From: Cyril Hrubis @ 2020-06-15 13:33 UTC (permalink / raw)
  To: ltp

Hi!
The same comments apply here as well.

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 5/5] syscalls: msgctl: Add new test to verify the _time_high fields
  2020-05-21 10:47 ` [LTP] [PATCH 5/5] syscalls: msgctl: " Viresh Kumar
@ 2020-06-15 13:38   ` Cyril Hrubis
  0 siblings, 0 replies; 32+ messages in thread
From: Cyril Hrubis @ 2020-06-15 13:38 UTC (permalink / raw)
  To: ltp

Hi!
> Suggested-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> ---
>  configure.ac                                  |   1 +
>  include/msgbuf.h                              | 306 ++++++++++++++++++

Here as well, I mainly do not like polluting the include/ with headers
that belongs into lapi/

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH V2 3/5] syscalls: semctl: Add new test to verify the _time_high fields
  2020-06-15 13:31     ` Cyril Hrubis
@ 2020-06-16  6:40       ` Viresh Kumar
  2020-06-16  9:52         ` Cyril Hrubis
  0 siblings, 1 reply; 32+ messages in thread
From: Viresh Kumar @ 2020-06-16  6:40 UTC (permalink / raw)
  To: ltp

On 15-06-20, 15:31, Cyril Hrubis wrote:
> > diff --git a/testcases/kernel/syscalls/ipc/semctl/Makefile b/testcases/kernel/syscalls/ipc/semctl/Makefile
> > index aa211d37f8ee..150f581825c5 100644
> > --- a/testcases/kernel/syscalls/ipc/semctl/Makefile
> > +++ b/testcases/kernel/syscalls/ipc/semctl/Makefile
> > @@ -5,7 +5,10 @@ top_srcdir              ?= ../../../../..
> >  
> >  include $(top_srcdir)/include/mk/testcases.mk
> >  
> > -LDLIBS  += -lltpipc
> > +semctl01 semctl02 semctl03 semctl04 semctl05 semctl06 semctl07: LDLIBS += -lltpipc
> > +semctl08: LDLIBS += -lltpnewipc
> > +
> >  LDFLAGS += -L$(top_builddir)/libs/libltpipc
> > +LDFLAGS += -L$(top_builddir)/libs/libltpnewipc
> 
> This does not apply anymore after my fix. This should be:
> 
> LTPLIBS = ltpipc ltpnewipc
> 
> Which would add a dependency on these libraries in the build system and
> also append the LDFLAGS, then all we need to do is to add the LDLIBS.

diff --git a/testcases/kernel/syscalls/ipc/semctl/Makefile b/testcases/kernel/syscalls/ipc/semctl/Makefile
index 6895fb1967a1..d7002872ab42 100644
--- a/testcases/kernel/syscalls/ipc/semctl/Makefile
+++ b/testcases/kernel/syscalls/ipc/semctl/Makefile
@@ -3,7 +3,7 @@
 
 top_srcdir              ?= ../../../../..
 
-LTPLIBS = ltpipc
+LTPLIBS = ltpipc ltpnewipc
 
 include $(top_srcdir)/include/mk/testcases.mk
 
@@ -11,4 +11,4 @@ semctl01 semctl02 semctl03 semctl04 semctl05 semctl06 semctl07: LDLIBS += -lltpi
 semctl08: LDLIBS += -lltpnewipc
 
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
-LDFLAGS += -L$(top_builddir)/libs/libltpnewipc

This doesn't build for some reason.

make -C "/mnt/ssd/all/work/repos/tools/ltp/libs/libltpipc /mnt/ssd/all/work/repos/tools/ltp/libs/libltpnewipc" -f "/mnt/ssd/all/work/repos/tools/ltp/libs/libltpipc /mnt/ssd/all/work/repos/tools/ltp/libs/libltpnewipc/Makefile" all
make[1]: *** /mnt/ssd/all/work/repos/tools/ltp/libs/libltpipc /mnt/ssd/all/work/repos/tools/ltp/libs/libltpnewipc: No such file or directory.  Stop.
../../../../../include/mk/testcases.mk:52: recipe for target '/mnt/ssd/all/work/repos/tools/ltp/libs/libltpnewipc/libltpnewipc.a' failed
make: *** [/mnt/ssd/all/work/repos/tools/ltp/libs/libltpnewipc/libltpnewipc.a] Error 2

-- 
viresh

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [LTP] [PATCH V2 2/5] include: Add declaration of struct ipc64_perm
  2020-06-15 12:43     ` Cyril Hrubis
@ 2020-06-16  6:41       ` Viresh Kumar
  2020-06-16  9:53         ` Cyril Hrubis
  0 siblings, 1 reply; 32+ messages in thread
From: Viresh Kumar @ 2020-06-16  6:41 UTC (permalink / raw)
  To: ltp

On 15-06-20, 14:43, Cyril Hrubis wrote:
> Hi!
> Applied with two changes, thanks.
> 
> * The header is moved to lapi/ where it should have been
> 
> * I've removed a piece of GPL header that probably ended up in the
>   source due to copy&paste
> 
> > +#if defined(__powerpc__) || defined(__powerpc64__)
> > +#define HAVE_IPC64_PERM
> > +/*
> > + * The ipc64_perm structure for the powerpc is identical to
> > + * kern_ipc_perm as we have always had 32-bit UIDs and GIDs in the
> > + * kernel.  Note extra padding because this structure is passed back
> > + * and forth between kernel and user space.  Pad space is left for:
> > + *	- 1 32-bit value to fill up for 8-byte alignment
> > + *	- 2 miscellaneous 64-bit values
> > + *
> > + * This program is free software; you can redistribute it and/or
> > + * modify it under the terms of the GNU General Public License
> > + * as published by the Free Software Foundation; either version
> > + * 2 of the License, or (at your option) any later version.
> > + */
>             ^
> 	    This part.

I don't see this patch in master yet.

-- 
viresh

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH V2 3/5] syscalls: semctl: Add new test to verify the _time_high fields
  2020-06-16  6:40       ` Viresh Kumar
@ 2020-06-16  9:52         ` Cyril Hrubis
  2020-06-16 10:09           ` Viresh Kumar
  0 siblings, 1 reply; 32+ messages in thread
From: Cyril Hrubis @ 2020-06-16  9:52 UTC (permalink / raw)
  To: ltp

Hi!
> diff --git a/testcases/kernel/syscalls/ipc/semctl/Makefile b/testcases/kernel/syscalls/ipc/semctl/Makefile
> index 6895fb1967a1..d7002872ab42 100644
> --- a/testcases/kernel/syscalls/ipc/semctl/Makefile
> +++ b/testcases/kernel/syscalls/ipc/semctl/Makefile
> @@ -3,7 +3,7 @@
>  
>  top_srcdir              ?= ../../../../..
>  
> -LTPLIBS = ltpipc
> +LTPLIBS = ltpipc ltpnewipc
>  
>  include $(top_srcdir)/include/mk/testcases.mk
>  
> @@ -11,4 +11,4 @@ semctl01 semctl02 semctl03 semctl04 semctl05 semctl06 semctl07: LDLIBS += -lltpi
>  semctl08: LDLIBS += -lltpnewipc
>  
>  include $(top_srcdir)/include/mk/generic_leaf_target.mk
> -LDFLAGS += -L$(top_builddir)/libs/libltpnewipc
> 
> This doesn't build for some reason.
> 
> make -C "/mnt/ssd/all/work/repos/tools/ltp/libs/libltpipc /mnt/ssd/all/work/repos/tools/ltp/libs/libltpnewipc" -f "/mnt/ssd/all/work/repos/tools/ltp/libs/libltpipc /mnt/ssd/all/work/repos/tools/ltp/libs/libltpnewipc/Makefile" all
> make[1]: *** /mnt/ssd/all/work/repos/tools/ltp/libs/libltpipc /mnt/ssd/all/work/repos/tools/ltp/libs/libltpnewipc: No such file or directory.  Stop.
> ../../../../../include/mk/testcases.mk:52: recipe for target '/mnt/ssd/all/work/repos/tools/ltp/libs/libltpnewipc/libltpnewipc.a' failed
> make: *** [/mnt/ssd/all/work/repos/tools/ltp/libs/libltpnewipc/libltpnewipc.a] Error 2

Ah, right, the rule that rebuilds the libraries does not work correctly
for more than one library because I do pass "$^" there which is the list
of directories and not a single directory.

As a quick hack this should fix it:

diff --git a/include/mk/testcases.mk b/include/mk/testcases.mk
index 684655fbf..7e0ec13f9 100644
--- a/include/mk/testcases.mk
+++ b/include/mk/testcases.mk
@@ -49,7 +49,9 @@ LTPLIBS_FILES = $(addsuffix .a, $(addprefix $(abs_top_builddir)/libs/, $(foreach
 MAKE_DEPS += $(LTPLIBS_FILES)
 
 $(LTPLIBS_FILES): $(LTPLIBS_DIRS)
-       $(MAKE) -C "$^" -f "$(subst $(abs_top_builddir),$(abs_top_srcdir),$^)/Makefile" all
+       for dir in $^; do \
+               $(MAKE) -C "$$dir" -f "$(subst $(abs_top_builddir),$(abs_top_srcdir),$$dir)/Makefile" all; \
+       done
 
 LDFLAGS += $(addprefix -L$(top_builddir)/libs/lib, $(LTPLIBS))


This does not parallelize the build but I guess that it would be fine since
when we rebuild LTP from top directory the libraries are build first anyways
and this is no-op.

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [LTP] [PATCH V2 2/5] include: Add declaration of struct ipc64_perm
  2020-06-16  6:41       ` Viresh Kumar
@ 2020-06-16  9:53         ` Cyril Hrubis
  0 siblings, 0 replies; 32+ messages in thread
From: Cyril Hrubis @ 2020-06-16  9:53 UTC (permalink / raw)
  To: ltp

Hi!
> > > + * The ipc64_perm structure for the powerpc is identical to
> > > + * kern_ipc_perm as we have always had 32-bit UIDs and GIDs in the
> > > + * kernel.  Note extra padding because this structure is passed back
> > > + * and forth between kernel and user space.  Pad space is left for:
> > > + *	- 1 32-bit value to fill up for 8-byte alignment
> > > + *	- 2 miscellaneous 64-bit values
> > > + *
> > > + * This program is free software; you can redistribute it and/or
> > > + * modify it under the terms of the GNU General Public License
> > > + * as published by the Free Software Foundation; either version
> > > + * 2 of the License, or (at your option) any later version.
> > > + */
> >             ^
> > 	    This part.
> 
> I don't see this patch in master yet.

Sorry, haven't done git push at the end of my workday, should be there
now.

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH V2 3/5] syscalls: semctl: Add new test to verify the _time_high fields
  2020-06-16  9:52         ` Cyril Hrubis
@ 2020-06-16 10:09           ` Viresh Kumar
  2020-06-16 12:41             ` Cyril Hrubis
  0 siblings, 1 reply; 32+ messages in thread
From: Viresh Kumar @ 2020-06-16 10:09 UTC (permalink / raw)
  To: ltp

On 16-06-20, 11:52, Cyril Hrubis wrote:
> Ah, right, the rule that rebuilds the libraries does not work correctly
> for more than one library because I do pass "$^" there which is the list
> of directories and not a single directory.
> 
> As a quick hack this should fix it:
> 
> diff --git a/include/mk/testcases.mk b/include/mk/testcases.mk
> index 684655fbf..7e0ec13f9 100644
> --- a/include/mk/testcases.mk
> +++ b/include/mk/testcases.mk
> @@ -49,7 +49,9 @@ LTPLIBS_FILES = $(addsuffix .a, $(addprefix $(abs_top_builddir)/libs/, $(foreach
>  MAKE_DEPS += $(LTPLIBS_FILES)
>  
>  $(LTPLIBS_FILES): $(LTPLIBS_DIRS)
> -       $(MAKE) -C "$^" -f "$(subst $(abs_top_builddir),$(abs_top_srcdir),$^)/Makefile" all
> +       for dir in $^; do \
> +               $(MAKE) -C "$$dir" -f "$(subst $(abs_top_builddir),$(abs_top_srcdir),$$dir)/Makefile" all; \
> +       done
>  
>  LDFLAGS += $(addprefix -L$(top_builddir)/libs/lib, $(LTPLIBS))
> 
> 
> This does not parallelize the build but I guess that it would be fine since
> when we rebuild LTP from top directory the libraries are build first anyways
> and this is no-op.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>

Please merge it, I am sending my patches again based on this.

-- 
viresh

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH V2 3/5] syscalls: semctl: Add new test to verify the _time_high fields
  2020-06-16 10:09           ` Viresh Kumar
@ 2020-06-16 12:41             ` Cyril Hrubis
  0 siblings, 0 replies; 32+ messages in thread
From: Cyril Hrubis @ 2020-06-16 12:41 UTC (permalink / raw)
  To: ltp

Hi!
> Please merge it, I am sending my patches again based on this.

I've just pushed a proper fix with a pattern rule instead.

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [LTP] [PATCH 2/5] include: Add declaration of struct ipc64_perm
  2020-05-21 10:47 ` [LTP] [PATCH 2/5] include: Add declaration of struct ipc64_perm Viresh Kumar
  2020-05-21 13:11   ` Arnd Bergmann
  2020-05-22  7:16   ` [LTP] [PATCH V2 " Viresh Kumar
@ 2020-06-16 18:56   ` Petr Vorel
  2 siblings, 0 replies; 32+ messages in thread
From: Petr Vorel @ 2020-06-16 18:56 UTC (permalink / raw)
  To: ltp

Hi,

> --- /dev/null
> +++ b/include/ipcbuf.h
...
> +#include <linux/posix_types.h>
> +
> +#ifndef HAVE_IPC64_PERM
...

> +struct ipc64_perm {
> +	__kernel_key_t		key;
> +	__kernel_uid32_t	uid;
> +	__kernel_gid32_t	gid;
> +	__kernel_uid32_t	cuid;
> +	__kernel_gid32_t	cgid;
> +	__kernel_mode_t		mode;
> +				/* pad if mode_t is u16: */
> +	unsigned char		__pad1[4 - sizeof(__kernel_mode_t)];
> +	unsigned short		seq;
> +	unsigned short		__pad2;
> +	__kernel_ulong_t	__unused1;
> +	__kernel_ulong_t	__unused2;

Since this commit we depend on kernel headers from v3.4-rc1
- __kernel_ulong_t was defined in afead38d011a ("posix_types: Introduce
__kernel_[u]long_t").

I'll send a RFC patch, because not sure, whether we should still support these
old versions, or just drop the oldest distro from Travis and declare kernel v3.4
dependency. BTW current glibc requires v3.2.

Kind regards,
Petr

^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2020-06-16 18:56 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-21 10:47 [LTP] [PATCH 0/5] syscalls: Add tests to verify the _time_high fields Viresh Kumar
2020-05-21 10:47 ` [LTP] [PATCH 1/5] syscalls:ipc: Move libraries to libs/ director Viresh Kumar
2020-05-22 12:39   ` Cyril Hrubis
2020-05-26  3:08     ` Viresh Kumar
2020-05-29  5:39       ` Yang Xu
2020-06-15 12:20       ` Cyril Hrubis
2020-05-21 10:47 ` [LTP] [PATCH 2/5] include: Add declaration of struct ipc64_perm Viresh Kumar
2020-05-21 13:11   ` Arnd Bergmann
2020-05-22  7:10     ` Viresh Kumar
2020-05-22  7:16   ` [LTP] [PATCH V2 " Viresh Kumar
2020-06-15 12:43     ` Cyril Hrubis
2020-06-16  6:41       ` Viresh Kumar
2020-06-16  9:53         ` Cyril Hrubis
2020-06-16 18:56   ` [LTP] [PATCH " Petr Vorel
2020-05-21 10:47 ` [LTP] [PATCH 3/5] syscalls: semctl: Add new test to verify the _time_high fields Viresh Kumar
2020-05-21 13:20   ` Arnd Bergmann
2020-05-21 14:26     ` Cyril Hrubis
2020-05-22  7:12       ` Viresh Kumar
2020-05-22  7:16   ` [LTP] [PATCH V2 " Viresh Kumar
2020-06-15 13:31     ` Cyril Hrubis
2020-06-16  6:40       ` Viresh Kumar
2020-06-16  9:52         ` Cyril Hrubis
2020-06-16 10:09           ` Viresh Kumar
2020-06-16 12:41             ` Cyril Hrubis
2020-05-21 10:47 ` [LTP] [PATCH 4/5] syscalls: shmctl: " Viresh Kumar
2020-06-15 13:33   ` Cyril Hrubis
2020-05-21 10:47 ` [LTP] [PATCH 5/5] syscalls: msgctl: " Viresh Kumar
2020-06-15 13:38   ` Cyril Hrubis
2020-05-21 13:08 ` [LTP] [PATCH 0/5] syscalls: Add tests " Arnd Bergmann
2020-05-21 14:25   ` Cyril Hrubis
2020-05-21 14:29     ` Cyril Hrubis
2020-05-22  9:08     ` Viresh Kumar

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.