From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755548AbdCTR3V (ORCPT ); Mon, 20 Mar 2017 13:29:21 -0400 Received: from mga04.intel.com ([192.55.52.120]:10437 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753172AbdCTR3S (ORCPT ); Mon, 20 Mar 2017 13:29:18 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,195,1486454400"; d="gz'50?scan'50,208,50";a="78490586" Date: Tue, 21 Mar 2017 01:27:28 +0800 From: kbuild test robot To: Kyle Huey Cc: kbuild-all@01.org, linux-kernel@vger.kernel.org, tipbuild@zytor.com, Thomas Gleixner , Andy Lutomirski Subject: [tip:x86/process 7/11] arch/x86/um/syscalls_64.c:15:6: error: conflicting types for 'arch_prctl' Message-ID: <201703210121.YYd7nqeE%fengguang.wu@intel.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="UugvWAfsgieZRqgk" Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: fengguang.wu@intel.com X-SA-Exim-Scanned: No (on bee); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --UugvWAfsgieZRqgk Content-Type: text/plain; charset=us-ascii Content-Disposition: inline tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/process head: e9ea1e7f53b852147cbd568b0568c7ad97ec21a3 commit: 17a6e1b8e8e8539f89156643f8c3073f09ec446a [7/11] x86/arch_prctl/64: Rename do_arch_prctl() to do_arch_prctl_64() config: um-x86_64_defconfig (attached as .config) compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce: git checkout 17a6e1b8e8e8539f89156643f8c3073f09ec446a # save the attached .config to linux build tree make ARCH=um SUBARCH=x86_64 All error/warnings (new ones prefixed by >>): >> arch/x86/um/syscalls_64.c:15:6: error: conflicting types for 'arch_prctl' long arch_prctl(struct task_struct *task, int option) ^~~~~~~~~~ In file included from arch/um/include/asm/processor-generic.h:13:0, from arch/x86/um/asm/processor.h:32, from include/linux/spinlock_up.h:8, from include/linux/spinlock.h:89, from include/linux/rcupdate.h:38, from include/linux/rculist.h:10, from include/linux/pid.h:4, from include/linux/sched.h:13, from arch/x86/um/syscalls_64.c:8: arch/x86/um/asm/ptrace.h:81:13: note: previous declaration of 'arch_prctl' was here extern long arch_prctl(struct task_struct *task, int option, ^~~~~~~~~~ arch/x86/um/syscalls_64.c: In function 'arch_prctl': >> arch/x86/um/syscalls_64.c:16:29: error: expected '=', ',', ';', 'asm' or '__attribute__' before ')' token unsigned long __user *arg2) ^ >> arch/x86/um/syscalls_64.c:78:1: warning: 'alias' attribute ignored [-Wattributes] SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2) ^~~~~~~~~~~~~~~ In file included from arch/x86/um/syscalls_64.c:10:0: >> include/linux/syscalls.h:198:21: error: storage class specified for parameter 'SYSC_arch_prctl' static inline long SYSC##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ ^ >> include/linux/syscalls.h:192:2: note: in expansion of macro '__SYSCALL_DEFINEx' __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) ^~~~~~~~~~~~~~~~~ >> include/linux/syscalls.h:184:36: note: in expansion of macro 'SYSCALL_DEFINEx' #define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~ >> arch/x86/um/syscalls_64.c:78:1: note: in expansion of macro 'SYSCALL_DEFINE2' SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2) ^~~~~~~~~~~~~~~ >> include/linux/syscalls.h:198:21: warning: parameter 'SYSC_arch_prctl' declared 'inline' static inline long SYSC##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ ^ >> include/linux/syscalls.h:192:2: note: in expansion of macro '__SYSCALL_DEFINEx' __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) ^~~~~~~~~~~~~~~~~ >> include/linux/syscalls.h:184:36: note: in expansion of macro 'SYSCALL_DEFINEx' #define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~ >> arch/x86/um/syscalls_64.c:78:1: note: in expansion of macro 'SYSCALL_DEFINE2' SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2) ^~~~~~~~~~~~~~~ >> arch/x86/um/syscalls_64.c:78:1: warning: 'always_inline' attribute ignored [-Wattributes] In file included from arch/x86/um/syscalls_64.c:10:0: >> include/linux/syscalls.h:198:21: error: 'no_instrument_function' attribute applies only to functions static inline long SYSC##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ ^ >> include/linux/syscalls.h:192:2: note: in expansion of macro '__SYSCALL_DEFINEx' __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) ^~~~~~~~~~~~~~~~~ >> include/linux/syscalls.h:184:36: note: in expansion of macro 'SYSCALL_DEFINEx' #define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~ >> arch/x86/um/syscalls_64.c:78:1: note: in expansion of macro 'SYSCALL_DEFINE2' SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2) ^~~~~~~~~~~~~~~ >> include/linux/syscalls.h:201:2: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token { \ ^ >> include/linux/syscalls.h:192:2: note: in expansion of macro '__SYSCALL_DEFINEx' __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) ^~~~~~~~~~~~~~~~~ >> include/linux/syscalls.h:184:36: note: in expansion of macro 'SYSCALL_DEFINEx' #define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~ >> arch/x86/um/syscalls_64.c:78:1: note: in expansion of macro 'SYSCALL_DEFINE2' SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2) ^~~~~~~~~~~~~~~ vim +/arch_prctl +15 arch/x86/um/syscalls_64.c 2 * Copyright (C) 2003 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) 3 * Copyright 2003 PathScale, Inc. 4 * 5 * Licensed under the GPL 6 */ 7 > 8 #include 9 #include 10 #include 11 #include 12 #include /* XXX This should get the constants from libc */ 13 #include 14 > 15 long arch_prctl(struct task_struct *task, int option) > 16 unsigned long __user *arg2) 17 { 18 unsigned long *ptr = arg2, tmp; 19 long ret; 20 int pid = task->mm->context.id.u.pid; 21 22 /* 23 * With ARCH_SET_FS (and ARCH_SET_GS is treated similarly to 24 * be safe), we need to call arch_prctl on the host because 25 * setting %fs may result in something else happening (like a 26 * GDT or thread.fs being set instead). So, we let the host 27 * fiddle the registers and thread struct and restore the 28 * registers afterwards. 29 * 30 * So, the saved registers are stored to the process (this 31 * needed because a stub may have been the last thing to run), 32 * arch_prctl is run on the host, then the registers are read 33 * back. 34 */ 35 switch (option) { 36 case ARCH_SET_FS: 37 case ARCH_SET_GS: 38 ret = restore_registers(pid, ¤t->thread.regs.regs); 39 if (ret) 40 return ret; 41 break; 42 case ARCH_GET_FS: 43 case ARCH_GET_GS: 44 /* 45 * With these two, we read to a local pointer and 46 * put_user it to the userspace pointer that we were 47 * given. If addr isn't valid (because it hasn't been 48 * faulted in or is just bogus), we want put_user to 49 * fault it in (or return -EFAULT) instead of having 50 * the host return -EFAULT. 51 */ 52 ptr = &tmp; 53 } 54 55 ret = os_arch_prctl(pid, option, ptr); 56 if (ret) 57 return ret; 58 59 switch (option) { 60 case ARCH_SET_FS: 61 current->thread.arch.fs = (unsigned long) ptr; 62 ret = save_registers(pid, ¤t->thread.regs.regs); 63 break; 64 case ARCH_SET_GS: 65 ret = save_registers(pid, ¤t->thread.regs.regs); 66 break; 67 case ARCH_GET_FS: 68 ret = put_user(tmp, arg2); 69 break; 70 case ARCH_GET_GS: 71 ret = put_user(tmp, arg2); 72 break; 73 } 74 75 return ret; 76 } 77 > 78 SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2) > 79 { 80 return arch_prctl(current, option, (unsigned long __user *) arg2); 81 } 82 83 void arch_switch_to(struct task_struct *to) > 84 { 85 if ((to->thread.arch.fs == 0) || (to->mm == NULL)) 86 return; 87 88 arch_prctl(to, ARCH_SET_FS, (void __user *) to->thread.arch.fs); > 89 } --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation --UugvWAfsgieZRqgk Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 H4sICC8Q0FgAAy5jb25maWcAlFzbc9s2s3/vX8FJX9qZk8a3uPY54weIBCV84s0AqItfOIqk JJrakkeS2+a//3ZBUgTJheIz02ki7OK+l98ulvn1l1899nbcvSyOm+Xi+fmH9229Xe8Xx/XK +7p5Xv+fF6RekmqPB0L/Acz5Yb334t1q7UWb7du/n/69uy1ub7ybPy4v/7j4uF9eeuP1frt+ 9vzd9uvm2xsMtdltf/n1Fz9NQjEs8jh6+FH/iOO8+ZGkhUhjHjctWjKfF0I+hhEbqkLlWZZK 3dCj1B8HPOsTlGb+uOzdow15wqXwC59FYiCZ5kXAIzbvMwzyYdM4enq4vLj4BfYBRxBHHw+v 6+Xm62bp7V5xfwcgGNpodzh6r/vdcn047Pbe8cfr2lts4SzXi+Pbfn0wTPXux3fe5uBtd0fv sD5a7ZnyaYKfSn5Fk5hOY5vS3W1mnfQM7kwkmsskDTgchD+CcxqJUD/c2izRpZumld8ez4+z mT8a3t50m9NJuyUWiYjzGFdUhCwW0fzh9qZmwEa4MbM6S07qZhYH/UafJ5rlsiHA/eBMTcPt zUCgBJxOC9dxfUUc18xIc9OTSX8E8hGWPx8+LPbL75/eXj4tjXAfKukvVuuvZcuHuqOcKh4X eCIsCAoWDVMp9Ci2F1Gy1BekMpGgPBOLui4iPuFRkQ01G0Rc2YOYBY4YKAcMIYYJixQpH4ZP 8lzxYpQqXUzUXIEGREDg7IzcjKZcDEetwwPl0kCJREItFlRVt5QYGwojaNAMcprZY43YhBeD NMUucOlhajiJYVUWCV1kGo8Ib1493DSj+GmcMV+LNCF6ZqO5KuASZKH7gjBWlNLAhbM80mCe WIbyaro/3Fzcn1Qg4TwoMi6NEI5b1+pHnCVGb8iLCGWaaDVlGUl9ytI0oimDPKAJKoZ7TGmL IYKIFxkbcmNLxyIZEtuNApAeKTJdBPOkubgB3EesCx6FTRv8QBtkKSH8KoI8zk6HBizFiLOA S9Ubq5ymJwAszTWxrqpTLMDWvNgT4nyWaQZ5Dq25wEomKo2sRcZsiBo2V/KxaRyD+QOlMq6i SCWs9+HSsqdw9XC/xKrATQUxa8aptLLUUfVwfZJY7qNcNozgx4ppKsfQYrzA0DjaZxz77bVx kAOZjnlSpEmhWr0TkH+eTEBh4cZEDHJ8eXV3OhWZKmX0QMDGP5zMEMgFiyZwFaAbjuaC5Tpt 5qmvEU81YTEM9tt2t13/fuqLsmt52rmaiMzvNeCfvrZMeJYqMSvix5znnG7tdSk3BZYhlfOC abiokWVWRiwJzCWf7gyMG7h02vzlAF+IyyzFD22j4aiMYn1DcGPe4e3L4cfhuH5pbqi2jXih apROCWyBZgrkATS9HktvXtb7AzUcGFMQwITDUBZMATEbPeGNxmnSUpgntDsiDYRPCycwiMCW ftNmqQvYc/AECuaNSx0tMUmWf9KLw1/eERZqIMvhuDgevMVyuXvbHjfbb50Vo+VjIOJ5osGs WKquwDLK1Odwd0BvaXuXVkyuyevSTI3RzbR8mVmm9HNPUWeYzAugtfyrnxd8BodFXbzqMJsZ sQu5HhwK1gPusrwQetGSc8NpgCdlz3IBphas2pWlL2JcYYteizkpG+ziCGEFxi5PkCmTAJbG hWIh7/KcbJE/lGmetYADqJVPOYNBNK7Ybe6AAxq2aETHkgAmfsQtkBYyIYs2pfGUoSoGoMVT EegRfe7a7kuyVNNmIqCBT0WXYLPdiw7h6p64BSERYXBtORW8C5ykolic5QgBnwi/ZY0qAvCj pJ9bmzlckkEZtFNxMc3oUUbcH2cpSAGqtQb/SBkGMOUKQBK39pRrVSTWbzTbiepYVAlN5LR4 GG3SCRvpzjDm9oyfcQkPGF4QBojlJPchJGuJSZdWTOgQSGIYR1JQbuGCjA+VDjHyizQDiyie eBGmEm0s/BEDkqNOs8ut4C8tF9jyYywBLysQ2FqHbTxPLoJLK04ZZKG9cafx6nSLwV8LvKrW qQ25jsGoFZVPcx564/PsE4cNnOlZuu2TA6kRFTCredy6+rqt6AxEMAwAtOUQjsOmQWmIWU+s AwZhDF63FhMbTBhLaB2nHcAjLG1DVzNKmEfWTYUw/6xzR6atDm+t8bLU7lnGXqFl+czp2A0G D4Qt0YYLP3c/o1YgxYQF01gwEYrXnXtKazBcGBCDwpADJqVoSws08iBwmNjMv7y46XniKs2T rfdfd/uXxXa59vjf6y1ABgbgwUfQAICncdGTuDyBwkCGluCY+E0D8rUuT0Vs0JLJKKehHTIa Ax4JiGsl+JN2IsSWag1RJtrRArCvCAWYE+Fw5mDvQxHR8ZIRCxNKglTDvaNt8xHTdCTH4Moq DChgNG17GFe76TkEA5NF+VC07ajV7DJiJpyBxWvugydwLX4iwLO2ARxiV8ukpEEeAUbEfAFq DipbP2yrcg+07xaKgQaCXmeCXixMD9CUh3APAuUiDOldNXNNMB43O3TnONAup6CKdXwnp7P/ F3MdALk7mWyLBpiv3zWHxV6eape9DAb9dPLxy+KwXnl/lYr1ut993TyXuLs/IvJXQsqdtrWU pSomAQAEijbiEs6aMjagRpiAaWQARCRG22d7LWMzTcLh4aIjKy1wWW4UXKOPoJSRhqjkyROk OzuXZDrlmQZVCEvLTTUOIP1TpOs4p5pT0CisIqO6AsCiJ4MLjmGxoC9BMUYnRUJrgHMt81/h koGiJ7borsC2gTaaD6XQ5wHQE4SZ9GHWHHoEtkN3DV+LzY8DoGNaSap2hqTFNh3QOoQ0PKU0 Y1FPDbLF/rjBhLqnf7y2s+UwnRbaXGMwQVxGCpUKUtWwWs43FK3mMr5PPbX8vl69Pbc8lUhL wJqkqZ2AqVoDzsz++xQ/fHx4scObxyp6qRjOZBqtQa2Yq6ThMs50rQZ/+LBaL1ZgL9anTE38 eG7RiblETDsbJYNAQ9jpsYouoWNFP0cj+05BHrmrs01s926Csfq1xfO/L/aLJeAJL1j/vVmu rctSOuBSgnJ2cn5KWegsyTF0HzFLIPBRqNuk550W3WuZgbOO67bTVSXpKRZjVA4a/ihgS2nZ 8cPX1f9e/A/87/KDzVDSXo+HD9YeiFZ83lDgtYMmKUr9LMqMoI14MaeHea4UWM3ZlqfpBfvN 36UGNInJzbJq9tLTC1e9gBLHjXiU2cil1QzKpkcPHz4dvmy2n77vjq/Pb83jCBgaHWd2zrZu AVsLcMS6RQ14jkVp0oL55UShkPGUSV7mVSz5mRqXYy/txArCXvpsyzLMtGQnDkySNrn6eqQy EK52FoIbGTDypQYT8VNjR600dSeJEkgIWmizWTHwCbiZMwwaovxqGNDBOJ3QLw2Gjal54tfM gBcGNC9g42I0h91BVEHCRusdscp1tBw+ggs1gvMLMP8UtvdnhGrwdvBWJ+W1nm6SpAdVG8+r aW+Vho7MFSyNcrBG/+GHu1eRDwKqJzQXeIRnevpw5ac8bYcWoQt5oVrNu5IB3w93/Wl9Oc90 GnUsf48tkAPKq5y2PQhsh1Q3S0YHSBgYpSgn3JGOOw3QntXcZ7w5LKkLBiWI52jgyRF54kep ykEzFcqe75B7/wrNdW9OzkGiY+/w9vq62x/tWUtKcX/tz2573fT638XBE9vDcf/2YiLWA/gX QN7H/WJ7wKE89KPeCra0ecW/1paRPYMPWnhhNmTe183+5R/o5q12/2yfd4uV97JDJFHzCoh/ n71Y+Eb0S1ta05QvQqJ5Atfdb20GMsUFLqK/2K+oaZz8u6ZMQR0Xx7UXL7aLb2s8Ee83P1Xx 713HgOs7DdectT9K6VubRSZgcBJZmNemKc36uX7lK1GJlHXHtcUCIiLzVsafiQAfiiQtRWY8 F6HoJIjbxITr7nt3Y6QoFYQOjZls2mqH3KhUmgR0lsEojq2+/DFnkXhy+A4cXHOHZsfMn0SM znRMZi4K9FKcfleG2SrE5SJjesy5UCSi6dcS/kK+suo8sfcOP4uJOT/zJuiYduIyXEnUebQp 5ZeBejQ6v2oLe7AB+7D58oaVUOqfzXH53WP75ffNcb3ESh6Lvb4fPUJoodsXDlAlSCUgA+Yj 4rWfMG1yzJ5s/2GT4NoTLRhNlH4Lh1qUXKaSevKwePiTPxIZOXCnAMem3F19ns1IUszkhEd0 t4RpxWNB0zgIQpLGnKTeXd9fkATUB3S8JFECYFFM0TR8nZUkSbFY5fZzpk1LIybDiEl6nRPR SpFlo3knaK8JWWaLNvzEd1HMLtCZyMzUVkRM00KP9DKJ6CTHWebua14PnMYNOFJ3X9aFRi2q gZ66nZKojWokLFykopFvHwlST+kWR8LC8CiQODrLYMgxVh3h3/oYAF3px8NmtfZyNai9i+Fa r1dY+wheESnJ+vjPbv+Xx1aLV4w/e35oGtnhIf46aWAQaz520PTIlhX42X8FJLvFtlbapIGE SAXOjKb6QvkpTepoepcklWi9DZkYkspH2B17hqBF5IFgzpORDGXRQeMscndUgiYoTbdrB//T PGCnsgi+XXx5XnvTTcxm3m+VNGy23+q6z9+94w5OYe0dv9dcjWM4HdqUEd7nlNNYdXMaoDNW WJ2I2f0dJicsYxbxIfPnzsYqsLi+slxDMVQ0OKjqZOlyPgAx5SOUFYNOxtBEax3EiCwqc5a5 I5s/Jd5o6q3GUUVsobrr+9sbcizJpkQ4XeLcK5+KC7CZXHgW09Bw1IaMZZISsCoxdkZAWGyr Cqp3pvqn7lVSdeYtn3fLv8jhdFZcfr67K4uJ+rFPKZiVl8F6HXBFWF6Gjsc8PoKexhliS0tC F6uVSa8unsuJD3/YUw4zkboSzVk6BZjOJo5iAEMFc81pc1zSsRY7ojPUiJ1iRiPGKdP+KEjp jLTkwxx8I5m0aOfBMHHkR0xYJhIsfJGOfFFEQuuIQzgKpqmV2cun9HGABigsg3JA3Ckoo6Mg pXwqFAPwuW3XWKLOmA3y0Koqt1I04E3xuYceNZ8FQmWuCohc0CGaeQgsVagvvJPNHlbRxcXx ZrnfHXZfj97ox+t6/3HifXtbQ1xKiDBI4LAT3JTOF0JVEzqr183WyH9nDt80qt3bfrmm7Knx g0UmaGGLmYgG6YwQCAFoMbc+CWilOw3RyyAEPhrVUm1lleuX3XGNMXN3tfL15fCt26hS3/tN mTI1L92Ctd+8/u6dvhroBNaD/W6xWu5eYMs+tV+ApDNRKFfiBuYCjXeSnlzIMUZLHUruyM3M MMZzSX8qaUkTDknLppTFZzIusDYX/GaRtApwjS1xxIhNgjb2+yZ3NG9VCDbWrUphIoPTRvlt bFOOaJU4vOy2GzDllLRL1lchtl3td5tVS3aTQKaCBrXJxOlZddwb3KShWp/ZWDLbnBFy9bqC WyO2ELa9XRPj1LrSB0ANaskYRFWtcs+ypQCbSgFbBDYtUwu/XbyzULYwAf42SXnysAxV5QPM Mwifvm3DE4uhdMVV5SD4rQMaetqWY/Q35lSAI5L2UYgq0PKZoo0WMNTvmhCf5q5wDtiyhA4U cTEiE+eIQyzW53FOlyuUPJhrSTjticEHgUqmY+HI05YjTBy2CKl5cHYCZAlTuggXj7RgjmIT pHFF712Uy3JG2IZurvvMygxTn94bwsScAKkT1f7srMthRnKSB5x3+6JmdJq0n9XN7XXiKXc1 qc1hoPNZDqSCsCiwvw7I5mOQngzPvcefePx8IKxi5vrxuqY/fFi+fdksP7RHj4PPrpoMkLJb lwQZFKy4D1GoC59pA68BDQISC+ntOeG0g/lMDgaUKvB9h/BhcbOmadIBITUIs+MFh/Ye0ZVj hoEUwZCqcDWlQ0YMVCurVTXRYBKD6LuLq0saTwTcTxzhQRT5dE2vyByVVZpF9N3Orj7TU7DM EdiMUteyBOcc9/OZDj/xLNyF6YHvqNiBS2KmiIUkpxlPJmoqIOShDxlrwrl22l/Mnrg1O84c 3weOlPtZoVwNQEUnR3QNCE6B+BfnuBLX+0tV4W7UUjrwo8VTqq3j1aWQM8w9zIt2fe7gMepg GO8IUUunvM6sYKwBKdKHxGLJAtcCHa8oQga0ujjqo1gIW5AuBQ+Lse9CiJKzmKjKqqNoIXlU Fqk2aw6HKN+XtMaIQY9YHlbdC3OlB0wvfFl7a5OPKBOnMfMNQ4MN6xYEVKZk1CB+UzZ/YQX6 AvNnpCUMx+LMe9I9bd3MAw9J4NmocGU6ktCR0lbgANwPXoUIaVo0PQMrAqWL3seidcCCBUO8 U91tDDCfOL6+jdnc1OxWHHYNVS32vQoqzLq1nq2qhvJBS9tf+9UU2BDZbtL6vdaA8c5HbDVl Qn7rW1NjBMtUt8wnM9DWKmRWbz3cQChfBoOtkBqi26vCUXEMtOsOraHcFHbhkmnAE8fPQHDM VlV9yV19LsF8WgRqLkAsubOC0zDxxNSFuGrWDY/rGeE/g6C1NvztZMZCrIERS6scmAv8sECV 27fi9KrZfIbkSNFVLOYjKiwyPs8G/83wFZ/k+o9hcERsTtIwVM7bHmjp7piI6EzX8MrdE79Z clgzl0ic7hFDh/Yx121lEXG3XKIeF4vBkd76IDPGEjqN39B26PZ6aNE60ZNUA0628Hu3QZQN RfczpJCVBGLUxzzVLWxpGk4Yxjw+hfSXlOZLn4p/ymTS2U9JcH9W94iflU9or1fSqH8bwoza /rAr12mojEGwXi9DYw5oocDyqghsdNhPFfmL5fd26VSoep6hJAcfZRp/CiaBsW6NcavvQqX3 t7cX5bJqtUkj0c5IPAGbY5V5EFIrDFL1KWT6U6I78zbw0pRfO0adQF+nmumeIpWpt8P6bbUz /xJNb5vGmoTdbzTH7ZJX09b7Ft18zIn/KgL4JQGq0UpaIdEfiSiQnFIGrB+1ZzVf0Vklw1Vh axOsmbrW8y6g5HEbvVE+BK0YmDXTgMb80TvD+lqEKp8Oyk+gWstLJUuG3G3GWHCGFrppo7Ok LMqd5MGZ1QzcpDO9fMliB0k95oBGXRJ7xqPgP2Mzc6p5fGb3mZv2mMxuzlJv3VR5btKs911w cwJzNXF1y10SVSdHHEKVnHGooXJ8gYuY3HWBwjWanzn7pAFzC65rX5FdMRSpOlH18GFz2N3d fb7/eGnlqJABpuHGlNxc/0kv0Wb6811Mf9IpjBbT3eeL9zDRaZUO07ume8fC727fs6Zb2vF2 mN6z8Fv6X4/oMDmSN22m9xzBrSPj2Ga6/znT/fU7Rrp/zwXfX7/jnO5v3rGmuz/d5wRIAWW/ oP+5stYwl1fvWTZwuYWAKV84HhCstbj71xzuk6k53OJTc/z8TNyCU3O477rmcKtWzeG+wNN5 /Hwzlz/fzaV7O+NU3BWOJGFNph9ukBwzHz2UI0dWc/gcn8h+wgJxQS7pEPLEJFOmxc8mm0sR RT+Zbsj4T1kk5453hopDwL4gCDvPk+SOcobW8f1sUzqXY+H4Iht5ch22tLisVVgv3/ab4w+q 7GTM5w7kVKUriiDmyrzXm4+cz/KeJZIO2bxDjJgMOH5mj9Gln2Zz86GVzzrI/b+NXUtv2zgQ vu+v8HEX2C1ip93tHnqgHo6VyJJDyVGSi5C6QmK0iQPbwbb/fmeGpF7k0AFauNV8ovjmkJz5 RhPTIQgv0ZS7liNNc/nUlUA4rqaMtEebpbxyzMlSuP/1etxNNrt9M9ntJ0/Nj1dyjBiAkfpP rHqWhoPHM/t5LHqOfL2HNjRIr8JktYilLcITVudDGyph6zz+HjxzAlttyMogm5Or1cpRSLyK HZxGmW8wN0taHLn7tZbG4VA+lMLYgZVHWlnXz125GdsXOF+so6Qg/jd0tyscqVzMp7PPy7Xr oEcj0DvNyhc+tGsOlW5DoTb+EP0wurXO8mmIWJeLmLHp1hAsqDWFiLfjU/OCHLLoLxG/bHBw oEXKf9vj00QcDrvNlkTRw/Fh4ACoM8/caphK9IvDhYA/s7NVnt5Nz8/ci5jGFvF1csM3RgwJ wdbuxrjIBmSK9rz7NvJb1B8OvFUVMvv5VsztV3VW3BcUWpzKyidencjbrf/jMO9X0mEMtXg4 PPHVAUsQX7ULkA4c5HVGTmT0ZpSo9s55bA5Ha7YNZXg+C52DI2RU5Q5QTs8i7sJId0OW7cRU +js64DJy62Gt2P92Ah00TvHXB5PLCKadUwhmv9YhZp/c2muHOJ950ygWYsr3CJDCFxx9AgSf pt72AoRb4zWz1IWc/utNoVqNPqE69Pb1aeDW1a7BrsldEI+id0IFhGIV9qKydZB4x6OQoTeF IM2rOaf5mT4uljFovN41Fu/cvB0QAd5OEXFOvEo8p1/v1LMQ9wzni2l8kRbiRMdTkHfUvVk8 /IsGRz9o5HI14tWxl01vvZdVfqr5NMRRJNVzd8+v++ZwUHTrdqvwLmRmQblnLBuU+PNH73BK 7721DOKFPY3Lh5dvu+dJ9vb8tdlrRtyjuwAiK5I6XEmns6wppAzQODlbW+oUSWgBsgexko1m dhtipXmZlCXRKUnYkjgmMSKNAC2f58gaAwutR78LLBlbtDEOdw+eRbly1UiMR8IpjHWxbOsf koKhbbdh2OyPaNQO6t2BzD8O28cXYrufbJ6azfeRjU2QZELeqSu8uZVYuv26f9j/mux3b8ft S99MIUhKJP6QxUD37cjBOrmjsMb2m4wjy6R/ymtE8ySLkAakKGtFEj6SE/ter6JC0FmhAzhr NiR6xgHYq1xA6uW6ZtI6H+1N4AHMN+l8rIcPAWkSxsHdZ8erSsINVoIIWfFzBSIC5qwCpO7D rDQJlG7GvebWVYiVWbWvJgnUzeFEK98xpnpa1O09miJ6RHUQXrqODa77ns0pXtYNajeXEZOv KGLsQuV1zfrJF5r0nhOyTPEd69xFTZsZR1kKaEBFxf9bj8vx6cGMVnr6ut++HL+Tb9m35+bw 6Doe0uzDaCDr6ouKIwB5iVUIA3OA8E97NRkXBZ4IW4iPvRkjz0vzoWhM8toufdsfzV/EXU2T zoGyvVHP97azgmLS0YR3XUO1T2uk7wk5084OxjdRDxRVQs7dA+4iCjQrvtPcKKOjBTRxGJLj DuXLNVqRof1NJ5pLUPbozS/Ts1mvNvGYDj23l/WYpq4bR7BiUMKCcRnVRHeQQJAzBqV0zp9X mZfqiLmeU8IippAOeHu9FCNzWFOWEUTVVJ6ld+OKIH7koWmKzgLRDFaxuDLxHBzf6QUQ6OIc UN1/Ofs5daGUJ2z/VBE/1nJPKU+65nkHS13UfH17fBytklR98W0ZZwVn7qWSRCAf/4GSgbIX ecaZrqtk8uAy5o4jdHOkwsVmQAuwLt0yXqZQkXYlG4kveYrDsC44CweFunGH60CRjhOAHM89 Cx0zF16F+YAZCv/vy81ixFikDh2wpSbpbvP97VVNMIuHl8fBfIjWVUTpbROw9j6BwnqxzhTv vBNUXfv9Xlcig84GfT9324IN5PWNSNdxR9mphDhp5+uye2y4AhVxcjdj0GPWbo/EFlv/6G3V vDGoWLydoGY3g1xdxfHY1UJph3gW146Xye8H7T96+HPy/HZsfjbwj+a4+fDhwx8DDipKuOMz 9TW8IwzPCHI6kapSIBgzeYVEeB4smfN5BrDMb1qbPbdmhQlg9Xs+gsGhcGpKoV5P5AWpgGkr olUodznpo9C/S6TuYjWtrh54dbUL1eWYNtSsxA55+AsKf5AXjneRDdo3bSanEAwnqxKSUWMS M0RTChOCChEjc89whfzNhLFwz/vU3lwcioKs+ynIhF7QnLCTDUMJxHLuR7wrGSvYxUAaXxce O0w9Wq71Iiyt5XeEVLavsCoSX6QTaBqmjqUkBpPL2AoM1YI1gaoXg4cmWXhXOjlYsfA4YKwg c3OrR8N6UuTzuaovd7OpmdIDWFQYS8sD0Ppg611HSI6wGGV1kYkVBp5xFC6A7RSsnoZkOsuH 9LQt+XQGdU5xGdQLzMzY46r2A1tG49zTt4jJUvHJe4qngmIE0H6LsS+gGoUY2AZ2DKXtCUTk mcQoX+QMxRBBWGnQRSBEAnV+DAUUN4aV0yiH5bv2w1TQBF6uVoC/P/q3xlSkRXyLzKWeMsMO Ajq9ul9nqh9xVwAsc7cJPAHsM6ChXG1Sefl6zfjRk1TisRvF5vKUlTuZU+1/xTDm0MfxfA2N ETz5X3kKZxhnPV+wNrvjdiB7B9ZCg/T6TAU8CHMp17zriHJt8oQOrASMtHodFCJD1n68nXbv DBHh3uniDOCWjHRxM5kJmd51QT3+B96uLj2qdAAA --UugvWAfsgieZRqgk--